From aeb750af42dfe1093142c95daef13a642345859d Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 20 Apr 2020 16:51:05 +0100 Subject: [PATCH] Don't read D3D12_STREAM_OUTPUT_DESC::NumStrides if NumEntries is 0 --- renderdoc/driver/d3d12/d3d12_device_wrap.cpp | 25 ++++++++++---------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_device_wrap.cpp b/renderdoc/driver/d3d12/d3d12_device_wrap.cpp index a28947c17..c7c3a75e5 100644 --- a/renderdoc/driver/d3d12/d3d12_device_wrap.cpp +++ b/renderdoc/driver/d3d12/d3d12_device_wrap.cpp @@ -494,22 +494,23 @@ bool WrappedID3D12Device::Serialise_CreateGraphicsPipelineState( memcpy((void *)wrapped->graphics->StreamOutput.pSODeclaration, Descriptor.StreamOutput.pSODeclaration, sizeof(D3D12_SO_DECLARATION_ENTRY) * wrapped->graphics->StreamOutput.NumEntries); + + if(wrapped->graphics->StreamOutput.NumStrides) + { + wrapped->graphics->StreamOutput.pBufferStrides = + new UINT[wrapped->graphics->StreamOutput.NumStrides]; + memcpy((void *)wrapped->graphics->StreamOutput.pBufferStrides, + Descriptor.StreamOutput.pBufferStrides, + sizeof(UINT) * wrapped->graphics->StreamOutput.NumStrides); + } + else + { + wrapped->graphics->StreamOutput.pBufferStrides = NULL; + } } else { wrapped->graphics->StreamOutput.pSODeclaration = NULL; - } - - if(wrapped->graphics->StreamOutput.NumStrides) - { - wrapped->graphics->StreamOutput.pBufferStrides = - new UINT[wrapped->graphics->StreamOutput.NumStrides]; - memcpy((void *)wrapped->graphics->StreamOutput.pBufferStrides, - Descriptor.StreamOutput.pBufferStrides, - sizeof(UINT) * wrapped->graphics->StreamOutput.NumStrides); - } - else - { wrapped->graphics->StreamOutput.pBufferStrides = NULL; }