From e3f7275b85d0a016edb6a136d70d9c9ef0222a78 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 17 May 2020 00:56:45 +0100 Subject: [PATCH] Store D24X8 explicitly as only depth on vulkan, not as D24S8 --- renderdoc/driver/vulkan/vk_resources.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_resources.cpp b/renderdoc/driver/vulkan/vk_resources.cpp index 51b9c4b44..8355e2278 100644 --- a/renderdoc/driver/vulkan/vk_resources.cpp +++ b/renderdoc/driver/vulkan/vk_resources.cpp @@ -1690,7 +1690,6 @@ ResourceFormat MakeResourceFormat(VkFormat fmt) case VK_FORMAT_B5G5R5A1_UNORM_PACK16: case VK_FORMAT_A1R5G5B5_UNORM_PACK16: ret.type = ResourceFormatType::R5G5B5A1; break; case VK_FORMAT_D16_UNORM_S8_UINT: ret.type = ResourceFormatType::D16S8; break; - case VK_FORMAT_X8_D24_UNORM_PACK32: case VK_FORMAT_D24_UNORM_S8_UINT: ret.type = ResourceFormatType::D24S8; break; case VK_FORMAT_D32_SFLOAT_S8_UINT: ret.type = ResourceFormatType::D32S8; break; case VK_FORMAT_BC1_RGB_UNORM_BLOCK: @@ -3135,6 +3134,13 @@ VkFormat MakeVkFormat(ResourceFormat fmt) else RDCERR("Unrecognised component type"); } + else if(fmt.compByteWidth == 3) + { + if(fmt.compType == CompType::Depth) + ret = VK_FORMAT_X8_D24_UNORM_PACK32; + else + RDCERR("Unrecognised component type"); + } else if(fmt.compByteWidth == 2) { if(fmt.compType == CompType::Float) @@ -4208,10 +4214,6 @@ TEST_CASE("Vulkan formats", "[format][vulkan]") { CHECK(reconstructed == VK_FORMAT_R8G8B8A8_SRGB); } - else if(f == VK_FORMAT_X8_D24_UNORM_PACK32) - { - CHECK(reconstructed == VK_FORMAT_D24_UNORM_S8_UINT); - } else { CHECK(reconstructed == original); @@ -4274,6 +4276,10 @@ TEST_CASE("Vulkan formats", "[format][vulkan]") INFO("Format is " << ToStr(f)); + // byte size for D24X8 is the same as D24S8! + if(fmt.compByteWidth == 3) + fmt.compByteWidth = 4; + uint32_t size = fmt.compCount * fmt.compByteWidth * 123 * 456; CHECK(size == GetByteSize(123, 456, 1, f, 0));