From 28e4039db8670bda47fc3723a398a2116b9bed3b Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 6 Dec 2019 15:43:04 +0000 Subject: [PATCH] Fixup secondary command buffer submission events * When deleting events reserved for indirect draws we need to also fixup the secondary command buffer base submission events or they'll be out of sync. --- renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp index 042bffd7d..307d6ed3c 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp @@ -637,6 +637,18 @@ void WrappedVulkan::InsertDrawsAndRefreshIDs(BakedCmdBufferInfo &cmdBufInfo) if(cmdBufInfo.debugMessages[j].eventId >= cmdBufNodes[i].draw.eventId + indirectCount + 2) cmdBufInfo.debugMessages[j].eventId -= shiftCount; } + + for(size_t e = 0; e < cmdBufInfo.draw->executedCmds.size(); e++) + { + std::vector &submits = + m_Partial[Secondary].cmdBufferSubmits[cmdBufInfo.draw->executedCmds[e]]; + + for(size_t s = 0; s < submits.size(); s++) + { + if(submits[s].baseEvent >= cmdBufNodes[i].draw.eventId + indirectCount + 2) + submits[s].baseEvent -= shiftCount; + } + } } // indirect count versions always have a multidraw marker regions, but static count of 1 would