From 8f4c17c19b1b2f63251607f8119aabff1ed0cfe5 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 4 Apr 2017 13:33:24 +0100 Subject: [PATCH] Fix missing ElementSize for structured UAVs bound on output merger --- renderdoc/driver/d3d11/d3d11_replay.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/d3d11/d3d11_replay.cpp b/renderdoc/driver/d3d11/d3d11_replay.cpp index 0462a7ac4..2325a2f02 100644 --- a/renderdoc/driver/d3d11/d3d11_replay.cpp +++ b/renderdoc/driver/d3d11/d3d11_replay.cpp @@ -1056,7 +1056,6 @@ D3D11PipelineState D3D11Replay::MakePipelineState() if(desc.Buffer.Flags & (D3D11_BUFFER_UAV_FLAG_APPEND | D3D11_BUFFER_UAV_FLAG_COUNTER)) { - view.Structured = true; view.BufferStructCount = m_pDevice->GetDebugManager()->GetStructCount(rs->OM.UAVs[s]); } @@ -1070,6 +1069,14 @@ D3D11PipelineState D3D11Replay::MakePipelineState() view.FirstElement = desc.Buffer.FirstElement; view.NumElements = desc.Buffer.NumElements; view.Flags = desc.Buffer.Flags; + + D3D11_BUFFER_DESC bufdesc; + ((ID3D11Buffer *)res)->GetDesc(&bufdesc); + + view.Structured = bufdesc.StructureByteStride > 0 && desc.Format == DXGI_FORMAT_UNKNOWN; + + if(view.Structured) + view.ElementSize = bufdesc.StructureByteStride; } else if(desc.ViewDimension == D3D11_UAV_DIMENSION_TEXTURE1D) {