From 632cf5af46e98953e618664646c5876bc3c6b093 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 30 Aug 2024 11:55:12 +0100 Subject: [PATCH] Fix default descriptor flags for 1.0 root signatures --- renderdoc/driver/d3d12/d3d12_common.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_common.h b/renderdoc/driver/d3d12/d3d12_common.h index 8334e6a7f..761dc3e74 100644 --- a/renderdoc/driver/d3d12/d3d12_common.h +++ b/renderdoc/driver/d3d12/d3d12_common.h @@ -499,7 +499,6 @@ struct D3D12RootSignatureParameter : D3D12_ROOT_PARAMETER1 ShaderVisibility = param.ShaderVisibility; // copy the POD ones first - Descriptor.Flags = D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE; Descriptor.RegisterSpace = param.Descriptor.RegisterSpace; Descriptor.ShaderRegister = param.Descriptor.ShaderRegister; Constants = param.Constants; @@ -513,8 +512,10 @@ struct D3D12RootSignatureParameter : D3D12_ROOT_PARAMETER1 ranges[i].NumDescriptors = param.DescriptorTable.pDescriptorRanges[i].NumDescriptors; ranges[i].BaseShaderRegister = param.DescriptorTable.pDescriptorRanges[i].BaseShaderRegister; ranges[i].RegisterSpace = param.DescriptorTable.pDescriptorRanges[i].RegisterSpace; - ranges[i].Flags = D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE | - D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE; + ranges[i].Flags = D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE; + // samplers can't have volatile data + if(ranges[i].RangeType != D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER) + ranges[i].Flags |= D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE; ranges[i].OffsetInDescriptorsFromTableStart = param.DescriptorTable.pDescriptorRanges[i].OffsetInDescriptorsFromTableStart; @@ -530,6 +531,8 @@ struct D3D12RootSignatureParameter : D3D12_ROOT_PARAMETER1 } else { + // apply default flags here + Descriptor.Flags = D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE; numSpaces = RDCMAX(numSpaces, Descriptor.RegisterSpace + 1); } }