From dc96853b39c934bc1dcef3a9afeaeaa6baeaca72 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 2 Nov 2016 16:31:51 +0100 Subject: [PATCH] Look up constant buffers properly via shader details in D3D11. Refs #411 --- renderdocui/Code/CommonPipelineState.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/renderdocui/Code/CommonPipelineState.cs b/renderdocui/Code/CommonPipelineState.cs index 792f38730..cc51ef087 100644 --- a/renderdocui/Code/CommonPipelineState.cs +++ b/renderdocui/Code/CommonPipelineState.cs @@ -943,13 +943,18 @@ namespace renderdocui.Code case ShaderStageType.Compute: s = m_D3D11.m_CS; break; } - if(BufIdx < s.ConstantBuffers.Length) + if (s.ShaderDetails != null && BufIdx < s.ShaderDetails.ConstantBlocks.Length) { - buf = s.ConstantBuffers[BufIdx].Buffer; - ByteOffset = (ulong)(s.ConstantBuffers[BufIdx].VecOffset * 4 * sizeof(float)); - ByteSize = (ulong)(s.ConstantBuffers[BufIdx].VecCount * 4 * sizeof(float)); + int bind = s.ShaderDetails.ConstantBlocks[BufIdx].bindPoint; - return; + if (bind < s.ConstantBuffers.Length) + { + buf = s.ConstantBuffers[bind].Buffer; + ByteOffset = (ulong)(s.ConstantBuffers[bind].VecOffset * 4 * sizeof(float)); + ByteSize = (ulong)(s.ConstantBuffers[bind].VecCount * 4 * sizeof(float)); + + return; + } } } else if (IsLogD3D12)