From 0ef2210ab7895559ea1e1d74a67b5a0b1ef5911c Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Fri, 1 Dec 2023 05:20:59 +0000 Subject: [PATCH] Vulkan Depth Overlay fallback to non-stencil mask Fallback if the depth copy does not handle the depth texture configuration --- renderdoc/driver/vulkan/vk_overlay.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_overlay.cpp b/renderdoc/driver/vulkan/vk_overlay.cpp index 31ddfe8bd..0eddfe387 100644 --- a/renderdoc/driver/vulkan/vk_overlay.cpp +++ b/renderdoc/driver/vulkan/vk_overlay.cpp @@ -1676,7 +1676,7 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D if(m_Overlay.m_DepthResolvePipeline[fmtIndex][sampleIndex] == 0) { RDCERR("Unhandled depth resolve format : %s", ToStr(dsNewFmt).c_str()); - return ResourceId(); + useDepthWriteStencilPass = false; } if(dsNewFmt != dsFmt) { @@ -1684,9 +1684,21 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D if(m_Overlay.m_DepthCopyPipeline[fmtIndex][sampleIndex] == 0) { RDCERR("Unhandled depth copy format : %s", ToStr(dsNewFmt).c_str()); - return ResourceId(); + useDepthWriteStencilPass = false; + needDepthCopyToDepthStencil = false; } } + // Currently depth-copy is only supported for Texture2D and Texture2DMS + if(dsFmt != dsNewFmt) + { + if(depthImageInfo.type != VK_IMAGE_TYPE_2D) + useDepthWriteStencilPass = false; + } + if(!useDepthWriteStencilPass) + { + RDCWARN("Depth overlay using fallback method instead of stencil mask"); + dsNewFmt = dsFmt; + } } attDescs[1].format = dsNewFmt;