diff --git a/renderdoc/driver/d3d12/d3d12_device_wrap.cpp b/renderdoc/driver/d3d12/d3d12_device_wrap.cpp index 72d6ed942..dad62acbf 100644 --- a/renderdoc/driver/d3d12/d3d12_device_wrap.cpp +++ b/renderdoc/driver/d3d12/d3d12_device_wrap.cpp @@ -490,8 +490,6 @@ bool WrappedID3D12Device::Serialise_CreateGraphicsPipelineState( wrapped->graphics = new D3D12_EXPANDED_PIPELINE_STATE_STREAM_DESC(Descriptor); - wrapped->FetchRootSig(GetShaderCache()); - D3D12_SHADER_BYTECODE *shaders[] = { &wrapped->graphics->VS, &wrapped->graphics->HS, &wrapped->graphics->DS, &wrapped->graphics->GS, &wrapped->graphics->PS, @@ -524,6 +522,8 @@ bool WrappedID3D12Device::Serialise_CreateGraphicsPipelineState( } } + wrapped->FetchRootSig(GetShaderCache()); + if(wrapped->graphics->InputLayout.NumElements) { wrapped->graphics->InputLayout.pInputElementDescs = @@ -639,8 +639,6 @@ void WrappedID3D12Device::ProcessCreatedGraphicsPSO(ID3D12PipelineState *real, wrapped->graphics = new D3D12_EXPANDED_PIPELINE_STATE_STREAM_DESC(*pDesc); - wrapped->FetchRootSig(GetShaderCache()); - D3D12_SHADER_BYTECODE *shaders[] = { &wrapped->graphics->VS, &wrapped->graphics->HS, &wrapped->graphics->DS, &wrapped->graphics->GS, &wrapped->graphics->PS, &wrapped->graphics->AS, @@ -664,6 +662,8 @@ void WrappedID3D12Device::ProcessCreatedGraphicsPSO(ID3D12PipelineState *real, } } + wrapped->FetchRootSig(GetShaderCache()); + if(wrapped->graphics->InputLayout.NumElements) { wrapped->graphics->InputLayout.pInputElementDescs = @@ -782,11 +782,11 @@ bool WrappedID3D12Device::Serialise_CreateComputePipelineState( wrapped->compute = new D3D12_EXPANDED_PIPELINE_STATE_STREAM_DESC(Descriptor); - wrapped->FetchRootSig(GetShaderCache()); - WrappedID3D12Shader *entry = WrappedID3D12Shader::AddShader(wrapped->compute->CS, this); entry->AddRef(); + wrapped->FetchRootSig(GetShaderCache()); + if(m_GlobalEXTUAV != ~0U) entry->SetShaderExtSlot(m_GlobalEXTUAV, m_GlobalEXTUAVSpace); @@ -866,11 +866,11 @@ void WrappedID3D12Device::ProcessCreatedComputePSO(ID3D12PipelineState *real, ui wrapped->compute = new D3D12_EXPANDED_PIPELINE_STATE_STREAM_DESC(*pDesc); - wrapped->FetchRootSig(GetShaderCache()); - WrappedID3D12Shader *sh = WrappedID3D12Shader::AddShader(wrapped->compute->CS, this); sh->AddRef(); wrapped->compute->CS.pShaderBytecode = sh; + + wrapped->FetchRootSig(GetShaderCache()); } *ppPipelineState = (ID3D12PipelineState *)wrapped;