v3dv: Feature request for improved DOOM compatibility
The goal of this issue is to identify and request features used by Vulkan based DOOM renders built by the community. This is what I found out by testing GZDOOM and RBDOOM-3-BFG on my Raspberry Pi 4 with the upstream drivers:
VkPhysicalDeviceFeatures
:
Missing -
textureCompressionBC
(RBDOOM-3-BFG) -
depthBiasClamp
(RBDOOM-3-BFG) -
depthBounds
(RBDOOM-3-BFG) -
depthClamp
(GZDOOM & RBDOOM-3-BFG)
VkFormat
:
Missing -
VK_FORMAT_D24_UNORM_S8_UINT
(RBDOOM-3-BFG) -
VK_FORMAT_BC1_RGB_UNORM_BLOCK
(RBDOOM-3-BFG) -
VK_FORMAT_BC3_UNORM_BLOCK
(RBDOOM-3-BFG) -
VK_FORMAT_A2R10G10B10_UNORM_PACK32
(GZDOOM)
After identifying the missing features, I went ahead and implemented them. I was able to run GZDOOM on my device successfully. I also tested the compressed textures feature with an old version of Sascha Willems' Vulkan demos and it worked as expected (image below). I wasn't able to fully test RBDOOM-3-BFG because of memory issues with my 2GB model. But the game stopped crashing on the startup with the VkPhysicalDeviceFeatures::textureCompressionBC
implemented.
I committed my patches to the V3DV to a fork. I also wrote a blog post with more details about my tests and a video of GZDOOM running "The Ultimate DOOM" on the Raspberry Pi 4.
Thanks for your awesome work!