mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 00:50:40 +00:00
Add shader debug test to D3D12_Descriptor_Indexing
Tweak test shader to exercise shader debug simulation of SM6.6 direct heap access
This commit is contained in:
@@ -137,24 +137,25 @@ float4 main(v2f IN) : SV_Target0
|
||||
|
||||
if(t.tex == 0)
|
||||
{
|
||||
ret *= texArray1[t.binding].SampleLevel(sArray1[t.binding], uv.xy, 0);
|
||||
ret *= texArray1[t.binding+1].SampleLevel(sArray1[t.binding+1], uv.xy, 0);
|
||||
ret *= texArray1[t.binding+2].SampleLevel(sArray1[t.binding+2], uv.xy, 0);
|
||||
ret += texArray1[t.binding].SampleLevel(sArray1[t.binding], uv.xy, 0);
|
||||
ret += texArray1[t.binding+1].SampleLevel(sArray1[t.binding+1], uv.xy, 0);
|
||||
ret += texArray1[t.binding+2].SampleLevel(sArray1[t.binding+2], uv.xy, 0);
|
||||
}
|
||||
else if(t.tex == 1)
|
||||
{
|
||||
ret *= texArray2[t.binding].SampleLevel(s, uv.xy, 0);
|
||||
ret *= texArray2[t.binding+10].SampleLevel(s, uv.xy, 0);
|
||||
ret *= texArray2[20].SampleLevel(s, uv.xy, 0);
|
||||
ret += texArray2[t.binding].SampleLevel(s, uv.xy, 0);
|
||||
ret += texArray2[t.binding+10].SampleLevel(s, uv.xy, 0);
|
||||
ret += texArray2[20].SampleLevel(s, uv.xy, 0);
|
||||
}
|
||||
else if(t.tex == 2)
|
||||
{
|
||||
ret *= texArray3[t.binding].SampleLevel(s, uv.xy, 0);
|
||||
ret += texArray3[t.binding].SampleLevel(s, uv.xy, 0);
|
||||
}
|
||||
|
||||
uv *= 1.8f;
|
||||
}
|
||||
|
||||
ret /= 100.0f;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -198,6 +199,9 @@ struct alias2
|
||||
float4 main(v2f IN) : SV_Target0
|
||||
{
|
||||
StructuredBuffer<tex_ref> buf = ResourceDescriptorHeap[8];
|
||||
int ZERO = floor(IN.uv.x/(IN.uv.x+1.0e-6f));
|
||||
int ONE = ZERO + 1;
|
||||
|
||||
if(IN.uv.y < 0.1f)
|
||||
{
|
||||
SamplerState s = SamplerDescriptorHeap[0];
|
||||
@@ -222,9 +226,9 @@ float4 main(v2f IN) : SV_Target0
|
||||
Texture2D<float4> tex1 = ResourceDescriptorHeap[t.binding];
|
||||
Texture2D<float4> tex2 = ResourceDescriptorHeap[t.binding+1];
|
||||
Texture2D<float4> tex3 = ResourceDescriptorHeap[t.binding+2];
|
||||
ret *= tex1.SampleLevel(s1, uv.xy, 0);
|
||||
ret *= tex2.SampleLevel(s2, uv.xy, 0);
|
||||
ret *= tex3.SampleLevel(s3, uv.xy, 0);
|
||||
ret += tex1.SampleLevel(s1, uv.xy, 0);
|
||||
ret += tex2.SampleLevel(s2, uv.xy, 0);
|
||||
ret += tex3.SampleLevel(s3, uv.xy, 0);
|
||||
RWStructuredBuffer<uint> uav = ResourceDescriptorHeap[10];
|
||||
uav[0] = t.binding;
|
||||
}
|
||||
@@ -235,32 +239,33 @@ float4 main(v2f IN) : SV_Target0
|
||||
SamplerState s3 = SamplerDescriptorHeap[21];
|
||||
Texture2D<float4> tex1 = ResourceDescriptorHeap[40+t.binding];
|
||||
Texture2D<float4> tex2 = ResourceDescriptorHeap[40+t.binding+10];
|
||||
ConstantBuffer<CBuffer> cbv = ResourceDescriptorHeap[9];
|
||||
ConstantBuffer<CBuffer> cbv = ResourceDescriptorHeap[ONE*9];
|
||||
Texture2D<float4> tex3 = ResourceDescriptorHeap[cbv.tex_idx];
|
||||
ret *= tex1.SampleLevel(s1, uv.xy, 0);
|
||||
ret *= tex2.SampleLevel(s2, uv.xy, 0);
|
||||
ret *= tex3.SampleLevel(s3, uv.xy, 0);
|
||||
ret += tex1.SampleLevel(s1, uv.xy, 0);
|
||||
ret += tex2.SampleLevel(s2, uv.xy, 0);
|
||||
ret += tex3.SampleLevel(s3, uv.xy, 0);
|
||||
}
|
||||
else if(t.tex == 2)
|
||||
{
|
||||
SamplerState s = SamplerDescriptorHeap[25];
|
||||
Texture2D<float4> tex = ResourceDescriptorHeap[80+t.binding];
|
||||
ret *= tex.SampleLevel(s, uv.xy, 0);
|
||||
ret += tex.SampleLevel(s, uv.xy, 0);
|
||||
}
|
||||
else if(t.tex == 3)
|
||||
{
|
||||
StructuredBuffer<alias1> alias1buf = ResourceDescriptorHeap[150+t.binding];
|
||||
ret *= alias1buf[0].Color;
|
||||
ret += alias1buf[0].Color;
|
||||
}
|
||||
else if(t.tex == 4)
|
||||
{
|
||||
StructuredBuffer<alias2> alias2buf = ResourceDescriptorHeap[150+t.binding];
|
||||
ret *= alias2buf[0].Color;
|
||||
ret += alias2buf[0].Color;
|
||||
}
|
||||
|
||||
uv *= 1.8f;
|
||||
}
|
||||
|
||||
ret /= 100.0f;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -490,6 +495,8 @@ float4 main(v2f IN) : SV_Target0
|
||||
MakeSRV(smiley).CreateGPU(60);
|
||||
MakeSRV(smiley).CreateGPU(99);
|
||||
MakeSRV(smiley).CreateGPU(103);
|
||||
// index 6 is the resource index from constBuf
|
||||
MakeSRV(smiley).CreateGPU(6);
|
||||
MakeCBV(constBuf).SizeBytes(256).CreateGPU(9);
|
||||
if(namer)
|
||||
namer->SetName(9, "constBuf");
|
||||
|
||||
@@ -153,6 +153,11 @@ class D3D12_Descriptor_Indexing(rdtest.TestCase):
|
||||
|
||||
rdtest.log.success("Dynamic usage is as expected for {}".format(sm))
|
||||
|
||||
v = pipe.GetViewport(0)
|
||||
x = int(v.x) + int(v.width / 2)
|
||||
y = int(v.y) + int(v.height // 2)
|
||||
self.check_debug_pixel(x, y)
|
||||
|
||||
for sm in ["sm_6_6_heap"]:
|
||||
base = self.find_action("Tests " + sm)
|
||||
if base == None:
|
||||
@@ -239,3 +244,7 @@ class D3D12_Descriptor_Indexing(rdtest.TestCase):
|
||||
loc.logicalBindName, a.access.byteOffset))
|
||||
|
||||
rdtest.log.success("Dynamic usage is as expected for {}".format(sm))
|
||||
v = pipe.GetViewport(0)
|
||||
x = int(v.x) + int(v.width / 2)
|
||||
y = int(v.y) + int(v.height // 2)
|
||||
self.check_debug_pixel(x, y)
|
||||
|
||||
Reference in New Issue
Block a user