From f704d34d07a2ef03799b4d63ffb000cd97e66c93 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 16 Nov 2016 11:26:48 +0100 Subject: [PATCH] Make sure correct base event appears for ExecuteIndirect() replaying --- renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp b/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp index cfbacb2b4..df763ff63 100644 --- a/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp +++ b/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp @@ -3776,6 +3776,13 @@ bool WrappedID3D12GraphicsCommandList::Serialise_ExecuteIndirect( else draw.flags |= eDraw_SetMarker; + // this drawcall needs an event to anchor its file offset. This is a bit of a hack, + // but a proper solution for handling 'fake' events that don't correspond to actual + // events in the file, or duplicates, is overkill. + create_array(draw.events, 1); + draw.events[0] = m_Cmd->m_BakedCmdListInfo[m_Cmd->m_LastCmdListID].curEvents.back(); + m_Cmd->m_BakedCmdListInfo[m_Cmd->m_LastCmdListID].curEvents.pop_back(); + m_Cmd->AddDrawcall(draw, false); D3D12DrawcallTreeNode &drawNode = m_Cmd->GetDrawcallStack().back()->children.back();