From edbcd6d592ab073ad5a2c901075c6f257e96d674 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 16 Feb 2026 15:08:08 +0000 Subject: [PATCH] Clear deferred descriptor buffer copies after executing them * We don't want to do these copies multiple times, similar to indirect copies. --- renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 2f66415e0..4abebd448 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -2649,6 +2649,7 @@ bool WrappedVulkan::Serialise_vkCmdEndRenderPass(SerialiserType &ser, VkCommandB descVersion.copyOffsets); m_BakedCmdBufferInfo[m_LastCmdBufferID].indirectCopies.clear(); + m_BakedCmdBufferInfo[m_LastCmdBufferID].descBufDeferredCopies.clear(); rdcarray imgBarriers = GetImplicitRenderPassBarriers(~0U); @@ -3320,6 +3321,9 @@ bool WrappedVulkan::Serialise_vkCmdEndRenderPass2(SerialiserType &ser, VkCommand CopyVersionedDescriptorBuffer(commandBuffer, descVersion.unwrappedDstBuffer, descVersion.copyOffsets); + m_BakedCmdBufferInfo[m_LastCmdBufferID].indirectCopies.clear(); + m_BakedCmdBufferInfo[m_LastCmdBufferID].descBufDeferredCopies.clear(); + rdcarray imgBarriers = GetImplicitRenderPassBarriers(~0U); GetResourceManager()->RecordBarriers(m_BakedCmdBufferInfo[m_LastCmdBufferID].imageStates, @@ -8201,6 +8205,7 @@ bool WrappedVulkan::Serialise_vkCmdEndRendering(SerialiserType &ser, VkCommandBu descVersion.copyOffsets); m_BakedCmdBufferInfo[m_LastCmdBufferID].indirectCopies.clear(); + m_BakedCmdBufferInfo[m_LastCmdBufferID].descBufDeferredCopies.clear(); VulkanRenderState &state = m_BakedCmdBufferInfo[m_LastCmdBufferID].state; @@ -8488,6 +8493,7 @@ bool WrappedVulkan::Serialise_vkCmdEndRendering2EXT(SerialiserType &ser, descVersion.copyOffsets); m_BakedCmdBufferInfo[m_LastCmdBufferID].indirectCopies.clear(); + m_BakedCmdBufferInfo[m_LastCmdBufferID].descBufDeferredCopies.clear(); VulkanRenderState &state = m_BakedCmdBufferInfo[m_LastCmdBufferID].state;