From 2afcd9868a42ed8f920cea89231433eb72f9b260 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 14 Jan 2019 16:29:29 +0000 Subject: [PATCH] Fix a case where existing root parameters could overlap with added one --- renderdoc/driver/d3d12/d3d12_overlay.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_overlay.cpp b/renderdoc/driver/d3d12/d3d12_overlay.cpp index 4ab4c3d7a..3053d3fff 100644 --- a/renderdoc/driver/d3d12/d3d12_overlay.cpp +++ b/renderdoc/driver/d3d12/d3d12_overlay.cpp @@ -86,17 +86,21 @@ struct D3D12QuadOverdrawCallback : public D3D12DrawcallCallback // Instead move them into an unused space. for(size_t i = 0; i < modsig.params.size(); i++) { - if(modsig.params[i].ShaderVisibility == D3D12_SHADER_VISIBILITY_PIXEL) + if(modsig.params[i].ShaderVisibility == D3D12_SHADER_VISIBILITY_PIXEL || + modsig.params[i].ShaderVisibility == D3D12_SHADER_VISIBILITY_ALL) { + // use different register spaces for each just in case + UINT regSpace = modsig.maxSpaceIndex + modsig.params[i].ShaderVisibility; + if(modsig.params[i].ParameterType == D3D12_ROOT_PARAMETER_TYPE_UAV) { - modsig.params[i].Descriptor.RegisterSpace = modsig.maxSpaceIndex; + modsig.params[i].Descriptor.RegisterSpace = regSpace; } else if(modsig.params[i].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE) { for(size_t r = 0; r < modsig.params[i].ranges.size(); r++) { - modsig.params[i].ranges[r].RegisterSpace = modsig.maxSpaceIndex; + modsig.params[i].ranges[r].RegisterSpace = regSpace; } } }