diff --git a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp index b9d1664e0..17fb225bd 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp @@ -631,7 +631,9 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndirect(SerialiserType &ser, VkCommandBu structuriser.Serialise("command", VkDrawIndirectCommand()); } - m_StructuredFile->chunks.push_back(fakeChunk); + m_StructuredFile->chunks.insert(m_StructuredFile->chunks.size() - 1, fakeChunk); + + m_BakedCmdBufferInfo[m_LastCmdBufferID].curEventID++; AddEvent(); @@ -1005,7 +1007,9 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndexedIndirect(SerialiserType &ser, structuriser.Serialise("command", VkDrawIndexedIndirectCommand()); } - m_StructuredFile->chunks.push_back(fakeChunk); + m_StructuredFile->chunks.insert(m_StructuredFile->chunks.size() - 1, fakeChunk); + + m_BakedCmdBufferInfo[m_LastCmdBufferID].curEventID++; AddEvent(); diff --git a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp index 774197ea9..0a84338ca 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp @@ -485,6 +485,9 @@ bool WrappedVulkan::PatchIndirectDraw(VkIndirectPatchType type, DrawcallDescript { SDChunk *chunk = m_StructuredFile->chunks[draw.events.back().chunkIndex]; + if(chunk->metadata.chunkID != (uint32_t)VulkanChunk::vkCmdIndirectSubCommand) + chunk = m_StructuredFile->chunks[draw.events.back().chunkIndex - 1]; + SDObject *command = chunk->FindChild("command"); // single draw indirect draws don't have a command child since it can't be added without