diff --git a/renderdoc/driver/d3d12/d3d12_device.cpp b/renderdoc/driver/d3d12/d3d12_device.cpp index 02b6390be..9526fb323 100644 --- a/renderdoc/driver/d3d12/d3d12_device.cpp +++ b/renderdoc/driver/d3d12/d3d12_device.cpp @@ -284,7 +284,8 @@ WrappedID3D12Device::WrappedID3D12Device(ID3D12Device *realDevice, D3D12InitPara RDCDEBUG("Couldn't get ID3D12InfoQueue."); } - m_InitParams = *params; + if(params) + m_InitParams = *params; } WrappedID3D12Device::~WrappedID3D12Device() @@ -2557,6 +2558,11 @@ ReplayStatus WrappedID3D12Device::ReadLogInitialisation(RDCFile *rdc, bool store // read the remaining data into memory and pass to immediate context frameDataSize = reader->GetSize() - reader->GetOffset(); + if(IsStructuredExporting(m_State)) + { + m_Queue = new WrappedID3D12CommandQueue(NULL, this, m_State); + } + m_Queue->SetFrameReader(new StreamReader(reader, frameDataSize)); if(!IsStructuredExporting(m_State)) diff --git a/renderdoc/driver/d3d12/d3d12_device.h b/renderdoc/driver/d3d12/d3d12_device.h index 6ab2f07bd..75a8e40e6 100644 --- a/renderdoc/driver/d3d12/d3d12_device.h +++ b/renderdoc/driver/d3d12/d3d12_device.h @@ -416,6 +416,7 @@ public: m_InitParams = params; m_SectionVersion = sectionVersion; } + CaptureState GetState() { return m_State; } D3D12Replay *GetReplay() { return &m_Replay; } WrappedID3D12CommandQueue *GetQueue() { return m_Queue; } ID3D12CommandAllocator *GetAlloc() { return m_Alloc; } diff --git a/renderdoc/driver/d3d12/d3d12_initstate.cpp b/renderdoc/driver/d3d12/d3d12_initstate.cpp index ba279c738..916811954 100644 --- a/renderdoc/driver/d3d12/d3d12_initstate.cpp +++ b/renderdoc/driver/d3d12/d3d12_initstate.cpp @@ -289,6 +289,8 @@ template bool D3D12ResourceManager::Serialise_InitialState(SerialiserType &ser, ResourceId resid, ID3D12DeviceChild *liveRes) { + m_State = m_Device->GetState(); + D3D12ResourceRecord *record = NULL; D3D12InitialContents initContents; if(ser.IsWriting())