From a635b8273f166231464b73b1f363c4c909d09822 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 16 Sep 2016 13:55:18 +0200 Subject: [PATCH] Unwrap descriptors even for NULL case (Thx to @galop1n 92e731465c0e8) --- renderdoc/driver/d3d12/d3d12_device_wrap.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_device_wrap.cpp b/renderdoc/driver/d3d12/d3d12_device_wrap.cpp index b7846b173..6c67b4f71 100644 --- a/renderdoc/driver/d3d12/d3d12_device_wrap.cpp +++ b/renderdoc/driver/d3d12/d3d12_device_wrap.cpp @@ -288,15 +288,15 @@ bool WrappedID3D12Device::Serialise_CreateGraphicsPipelineState( HRESULT WrappedID3D12Device::CreateGraphicsPipelineState(const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState) { + D3D12_GRAPHICS_PIPELINE_STATE_DESC unwrappedDesc = *pDesc; + unwrappedDesc.pRootSignature = Unwrap(unwrappedDesc.pRootSignature); + if(ppPipelineState == NULL) - return m_pDevice->CreateGraphicsPipelineState(pDesc, riid, NULL); + return m_pDevice->CreateGraphicsPipelineState(&unwrappedDesc, riid, NULL); if(riid != __uuidof(ID3D12PipelineState)) return E_NOINTERFACE; - D3D12_GRAPHICS_PIPELINE_STATE_DESC unwrappedDesc = *pDesc; - unwrappedDesc.pRootSignature = Unwrap(unwrappedDesc.pRootSignature); - ID3D12PipelineState *real = NULL; HRESULT ret = m_pDevice->CreateGraphicsPipelineState(&unwrappedDesc, riid, (void **)&real); @@ -362,14 +362,17 @@ bool WrappedID3D12Device::Serialise_CreateComputePipelineState( HRESULT WrappedID3D12Device::CreateComputePipelineState(const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState) { + D3D12_COMPUTE_PIPELINE_STATE_DESC unwrappedDesc = *pDesc; + unwrappedDesc.pRootSignature = Unwrap(unwrappedDesc.pRootSignature); + if(ppPipelineState == NULL) - return m_pDevice->CreateComputePipelineState(pDesc, riid, NULL); + return m_pDevice->CreateComputePipelineState(&unwrappedDesc, riid, NULL); if(riid != __uuidof(ID3D12PipelineState)) return E_NOINTERFACE; ID3D12PipelineState *real = NULL; - HRESULT ret = m_pDevice->CreateComputePipelineState(pDesc, riid, (void **)&real); + HRESULT ret = m_pDevice->CreateComputePipelineState(&unwrappedDesc, riid, (void **)&real); if(SUCCEEDED(ret)) {