Fix CreateDescriptorTable: pass descriptor ranges array instead of using static
This commit is contained in:
@@ -35,7 +35,7 @@ public:
|
|||||||
static D3D12_ROOT_PARAMETER CreateSRV(uint32_t shaderRegister, ShaderVisibility visibility = ShaderVisibility::All, uint32_t registerSpace = 0);
|
static D3D12_ROOT_PARAMETER CreateSRV(uint32_t shaderRegister, ShaderVisibility visibility = ShaderVisibility::All, uint32_t registerSpace = 0);
|
||||||
static D3D12_ROOT_PARAMETER CreateUAV(uint32_t shaderRegister, ShaderVisibility visibility = ShaderVisibility::All, uint32_t registerSpace = 0);
|
static D3D12_ROOT_PARAMETER CreateUAV(uint32_t shaderRegister, ShaderVisibility visibility = ShaderVisibility::All, uint32_t registerSpace = 0);
|
||||||
static D3D12_ROOT_PARAMETER Create32BitConstants(uint32_t shaderRegister, uint32_t num32BitValues, ShaderVisibility visibility = ShaderVisibility::All, uint32_t registerSpace = 0);
|
static D3D12_ROOT_PARAMETER Create32BitConstants(uint32_t shaderRegister, uint32_t num32BitValues, ShaderVisibility visibility = ShaderVisibility::All, uint32_t registerSpace = 0);
|
||||||
static D3D12_ROOT_PARAMETER CreateDescriptorTable(uint32_t shaderRegister, uint32_t numDescriptors, D3D12_DESCRIPTOR_RANGE_TYPE rangeType, ShaderVisibility visibility = ShaderVisibility::All, uint32_t registerSpace = 0);
|
static D3D12_ROOT_PARAMETER CreateDescriptorTable(uint32_t numRanges, const D3D12_DESCRIPTOR_RANGE* ranges, ShaderVisibility visibility = ShaderVisibility::All);
|
||||||
|
|
||||||
static D3D12_STATIC_SAMPLER_DESC CreateStaticSampler(uint32_t shaderRegister, const D3D12_SAMPLER_DESC& desc, ShaderVisibility visibility = ShaderVisibility::Pixel);
|
static D3D12_STATIC_SAMPLER_DESC CreateStaticSampler(uint32_t shaderRegister, const D3D12_SAMPLER_DESC& desc, ShaderVisibility visibility = ShaderVisibility::Pixel);
|
||||||
|
|
||||||
|
|||||||
@@ -91,19 +91,12 @@ D3D12_ROOT_PARAMETER D3D12RootSignature::Create32BitConstants(uint32_t shaderReg
|
|||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
|
|
||||||
D3D12_ROOT_PARAMETER D3D12RootSignature::CreateDescriptorTable(uint32_t shaderRegister, uint32_t numDescriptors, D3D12_DESCRIPTOR_RANGE_TYPE rangeType, ShaderVisibility visibility, uint32_t registerSpace) {
|
D3D12_ROOT_PARAMETER D3D12RootSignature::CreateDescriptorTable(uint32_t numRanges, const D3D12_DESCRIPTOR_RANGE* ranges, ShaderVisibility visibility) {
|
||||||
static D3D12_DESCRIPTOR_RANGE range;
|
|
||||||
range.RangeType = rangeType;
|
|
||||||
range.NumDescriptors = numDescriptors;
|
|
||||||
range.BaseShaderRegister = shaderRegister;
|
|
||||||
range.RegisterSpace = registerSpace;
|
|
||||||
range.OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
|
|
||||||
|
|
||||||
D3D12_ROOT_PARAMETER param = {};
|
D3D12_ROOT_PARAMETER param = {};
|
||||||
param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
|
param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
|
||||||
param.ShaderVisibility = ToD3D12(visibility);
|
param.ShaderVisibility = ToD3D12(visibility);
|
||||||
param.DescriptorTable.NumDescriptorRanges = 1;
|
param.DescriptorTable.NumDescriptorRanges = numRanges;
|
||||||
param.DescriptorTable.pDescriptorRanges = ⦥
|
param.DescriptorTable.pDescriptorRanges = ranges;
|
||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user