From e332b43abbd93c36b3506533f65f02dac9e53db5 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 9 Feb 2022 16:30:00 +0000 Subject: [PATCH] Use a compatible renderpass for fetching stencil data for readback --- renderdoc/driver/vulkan/vk_replay.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index 52a02a1e9..179b90372 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -3281,6 +3281,7 @@ void VulkanReplay::GetTextureData(ResourceId tex, const Subresource &sub, VkImageView *tmpView = NULL; uint32_t numFBs = 0; VkRenderPass tmpRP = VK_NULL_HANDLE; + VkRenderPass tmpRPStencil = VK_NULL_HANDLE; VkDevice dev = m_pDriver->GetDev(); VkCommandBuffer cmd = m_pDriver->GetNextCmd(); @@ -3550,6 +3551,12 @@ void VulkanReplay::GetTextureData(ResourceId tex, const Subresource &sub, { viewInfo.format = GetViewCastedFormat(viewInfo.format, CompType::UInt); + attDesc.format = viewInfo.format; + vkr = vt->CreateRenderPass(Unwrap(dev), &rpinfo, NULL, &tmpRPStencil); + CheckVkResult(vkr); + fbinfo.renderPass = tmpRPStencil; + rpbegin.renderPass = tmpRPStencil; + vkr = vt->CreateImageView(Unwrap(dev), &viewInfo, NULL, &tmpView[i + numFBs]); CheckVkResult(vkr); NameUnwrappedVulkanObject(tmpView[i + numFBs], "GetTextureData tmpView[i]"); @@ -4139,6 +4146,7 @@ void VulkanReplay::GetTextureData(ResourceId tex, const Subresource &sub, delete[] tmpFB; delete[] tmpView; vt->DestroyRenderPass(Unwrap(dev), tmpRP, NULL); + vt->DestroyRenderPass(Unwrap(dev), tmpRPStencil, NULL); } }