Skip to content

Commit 58ec8fd

Browse files
committed
Simple test cases of arrays of Samplers for the DXIL debugger
1 parent 8a8aaf2 commit 58ec8fd

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

util/test/demos/d3d12/d3d12_resource_mapping_zoo.cpp

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ float4 main() : SV_Target0
5454
5555
Texture2D res1 : register(t6);
5656
Texture2D res2[2] : register(t7);
57+
SamplerState samplerArray[2] : register(s8);
5758
5859
RWTexture2D<float> res1uav : register(u0);
5960
@@ -77,6 +78,8 @@ float4 main() : SV_Target0
7778
uint ONE = ZERO + 1;
7879
color += (float4)test + float4(0.1f, 0.0f, 0.0f, 0.0f);
7980
float4 uavVal = res1uav[uint2(1, 1)];
81+
color += res2[ONE].Sample(samplerArray[ZERO], float2(0.5f, 0.5f));
82+
color += res2[ONE].Sample(samplerArray[ONE], float2(0.5f, 0.5f));
8083
return color + res1[uint2(0, 0)] + res2[ONE][uint2(0, 0)] + uavVal;
8184
}
8285
@@ -85,6 +88,7 @@ float4 main() : SV_Target0
8588
std::string pixel_resArray = R"EOSHADER(
8689
8790
Texture2DArray<float> resArray[4] : register(t10, space1);
91+
SamplerState samplerArray[4] : register(s10, space1);
8892
8993
cbuffer consts : register(b3)
9094
{
@@ -98,14 +102,19 @@ float4 main(float4 pos : SV_Position) : SV_Target0
98102
float arrayVal1 = resArray[1].Load(uint4(0, 0, indices.y, 0));
99103
float arrayVal2 = resArray[test.x].Load(uint4(0, 0, indices.y, 0));
100104
float arrayVal3 = resArray[NonUniformResourceIndex(indices.x)].Load(uint4(0, 0, indices.y, 0));
101-
return float4(arrayVal1, arrayVal2, arrayVal3, 1.0f);
105+
float arrayVal4 = resArray[NonUniformResourceIndex(indices.x)].Sample(
106+
samplerArray[NonUniformResourceIndex(indices.x)], float3(0.5f, 0.5f, 0.0f));
107+
arrayVal4 += resArray[NonUniformResourceIndex(indices.x+0)].Sample(
108+
samplerArray[NonUniformResourceIndex(indices.x+1)], float3(0.5f, 0.5f, 0.0f));
109+
return float4(arrayVal1, arrayVal2, arrayVal3, arrayVal4);
102110
}
103111
104112
)EOSHADER";
105113

106114
std::string pixel_bindless = R"EOSHADER(
107115
108116
Texture2DArray<float> resArray[] : register(t0);
117+
SamplerState samplerArray[] : register(s0);
109118
110119
cbuffer consts : register(b3)
111120
{
@@ -119,7 +128,11 @@ float4 main(float4 pos : SV_Position) : SV_Target0
119128
float arrayVal1 = resArray[1].Load(uint4(0, 0, indices.y, 0));
120129
float arrayVal2 = resArray[test.x].Load(uint4(0, 0, indices.y, 0));
121130
float arrayVal3 = resArray[NonUniformResourceIndex(indices.x)].Load(uint4(0, 0, indices.y, 0));
122-
return float4(arrayVal1, arrayVal2, arrayVal3, 1.0f);
131+
float arrayVal4 = resArray[NonUniformResourceIndex(indices.x)].Sample(
132+
samplerArray[NonUniformResourceIndex(indices.x)], float3(0.5f, 0.5f, 0.0f));
133+
arrayVal4 += resArray[NonUniformResourceIndex(indices.x+0)].Sample(
134+
samplerArray[NonUniformResourceIndex(indices.x+1)], float3(0.5f, 0.5f, 0.0f));
135+
return float4(arrayVal1, arrayVal2, arrayVal3, arrayVal4);
123136
}
124137
125138
)EOSHADER";
@@ -317,14 +330,19 @@ float4 main(float4 pos : SV_Position) : SV_Target0
317330
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 0, 4, 12, 0),
318331
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 0, 0, 1, 20),
319332
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 0, 0, UINT_MAX, 50),
333+
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 0, 0,
334+
UINT_MAX, 50),
320335
});
321336
ID3D12RootSignaturePtr sig_resArray = MakeSig({
322337
cbvParam(D3D12_SHADER_VISIBILITY_PIXEL, 0, 3),
323338
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 10, 4, 30),
339+
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 1, 10, 4, 30),
324340
});
325341
ID3D12RootSignaturePtr sig_bindless = MakeSig({
326342
cbvParam(D3D12_SHADER_VISIBILITY_PIXEL, 0, 3),
327343
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 0, 0, UINT_MAX, 30),
344+
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 0, 0,
345+
UINT_MAX, 30),
328346
});
329347
ID3D12RootSignaturePtr sig_resourceAccess = MakeSig({
330348
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 0, 0, 1, 56),

0 commit comments

Comments
 (0)