diff --git a/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp b/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp index e197eba22..2deafb279 100644 --- a/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp +++ b/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp @@ -4192,6 +4192,7 @@ bool WrappedID3D12GraphicsCommandList::Serialise_ExecuteIndirect( (pCountBuffer ? pCountBuffer->GetGPUVirtualAddress() : 0) + CountBufferOffset, MaxCommandCount); + m_Cmd->m_IndirectData.commandSig = pCommandSignature; m_Cmd->m_IndirectData.argsBuffer = patched.first; m_Cmd->m_IndirectData.argsOffset = patched.second; @@ -4223,7 +4224,6 @@ bool WrappedID3D12GraphicsCommandList::Serialise_ExecuteIndirect( for(uint32_t i = 0; i < countToReplay; i++) { - m_Cmd->m_IndirectData.commandSig = pCommandSignature; ActionFlags drawType = comSig->sig.graphics ? ActionFlags::Drawcall : ActionFlags::Dispatch; @@ -4253,12 +4253,12 @@ bool WrappedID3D12GraphicsCommandList::Serialise_ExecuteIndirect( } } - m_Cmd->m_IndirectData.commandSig = NULL; - m_Cmd->m_IndirectData.argsBuffer = NULL; - m_Cmd->m_IndirectData.argsOffset = 0; - argOffset += comSig->sig.ByteStride; + m_Cmd->m_IndirectData.argsOffset += comSig->sig.ByteStride; } + m_Cmd->m_IndirectData.commandSig = NULL; + m_Cmd->m_IndirectData.argsBuffer = NULL; + m_Cmd->m_IndirectData.argsOffset = 0; D3D12MarkerRegion::End(list); } diff --git a/renderdoc/driver/d3d12/d3d12_device.cpp b/renderdoc/driver/d3d12/d3d12_device.cpp index 87768eaa8..6c26b7c5b 100644 --- a/renderdoc/driver/d3d12/d3d12_device.cpp +++ b/renderdoc/driver/d3d12/d3d12_device.cpp @@ -5595,6 +5595,7 @@ void WrappedID3D12Device::ReplayDraw(ID3D12GraphicsCommandListX *cmd, const Acti // TODO: support replay of draws not in callback D3D12CommandData *cmdData = m_Queue->GetCommandData(); RDCASSERT(cmdData->m_IndirectData.commandSig != NULL); + RDCASSERT(cmdData->m_IndirectData.argsBuffer != NULL); cmd->ExecuteIndirect(cmdData->m_IndirectData.commandSig, 1, cmdData->m_IndirectData.argsBuffer, cmdData->m_IndirectData.argsOffset, NULL, 0); }