From 83d996b36967576b78c219a8e06d248a1e7e5f9f Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Thu, 4 Jun 2026 11:36:12 +0100 Subject: [PATCH] Fix incorrect EID skipping for single Vullkan Indirect Draws m_RootEventID needs to be incremented to keep in sync with skipping the fake indirect subcommand event --- .../driver/vulkan/wrappers/vk_draw_funcs.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp index 982972ade..61944e62a 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp @@ -370,8 +370,7 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndirect(SerialiserType &ser, VkCommandBu // for single draws, it's pretty simple // account for the fake indirect subcommand before checking if we're in re-record range - if(count > 0) - m_BakedCmdBufferInfo[m_LastCmdBufferID].curEventID++; + m_BakedCmdBufferInfo[m_LastCmdBufferID].curEventID += count; if(InRerecordRange(m_LastCmdBufferID)) { @@ -389,6 +388,8 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndirect(SerialiserType &ser, VkCommandBu m_ActionCallback->PostRedraw(eventId, ActionFlags::Drawcall, commandBuffer); } } + if(m_FirstEventID > 1) + m_RootEventID += count; } else { @@ -779,8 +780,7 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndexedIndirect(SerialiserType &ser, // for single draws, it's pretty simple // account for the fake indirect subcommand before checking if we're in re-record range - if(count > 0) - m_BakedCmdBufferInfo[m_LastCmdBufferID].curEventID++; + m_BakedCmdBufferInfo[m_LastCmdBufferID].curEventID += count; if(InRerecordRange(m_LastCmdBufferID)) { @@ -799,6 +799,8 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndexedIndirect(SerialiserType &ser, m_ActionCallback->PostRedraw(eventId, ActionFlags::Drawcall, commandBuffer); } } + if(m_FirstEventID > 1) + m_RootEventID += count; } else { @@ -4469,8 +4471,7 @@ bool WrappedVulkan::Serialise_vkCmdDrawMeshTasksIndirectEXT(SerialiserType &ser, // for single draws, it's pretty simple // account for the fake indirect subcommand before checking if we're in re-record range - if(drawCount > 0) - m_BakedCmdBufferInfo[m_LastCmdBufferID].curEventID++; + m_BakedCmdBufferInfo[m_LastCmdBufferID].curEventID += drawCount; if(InRerecordRange(m_LastCmdBufferID)) { @@ -4490,6 +4491,8 @@ bool WrappedVulkan::Serialise_vkCmdDrawMeshTasksIndirectEXT(SerialiserType &ser, m_ActionCallback->PostRedraw(eventId, ActionFlags::MeshDispatch, commandBuffer); } } + if(m_FirstEventID > 1) + m_RootEventID += drawCount; } else {