Skip to content

Commit 038aee2

Browse files
committed
Add D3D12_Workgroup_Zoo unit tests for Quad Shuffle operations
QuadReadLaneAt() QuadReadAcrossDiagonal() QuadReadAcrossX() QuadReadAcrossY()
1 parent 7240cf8 commit 038aee2

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

util/test/demos/d3d12/d3d12_subgroup_zoo.cpp

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,34 @@ struct IN
9090
9191
float4 main(IN input) : SV_Target0
9292
{
93-
uint wave = WaveGetLaneIndex();
93+
uint subgroupId = WaveGetLaneIndex();
9494
9595
float4 pixdata = 0.0f.xxxx;
9696
9797
if(IsTest(1) || IsTest(2))
98-
pixdata = float4(wave, 0, 0, 1);
98+
{
99+
pixdata = float4(subgroupId, 0, 0, 1);
100+
}
99101
else if(IsTest(4))
100-
pixdata = float4(WaveActiveSum(wave), 0, 0, 0);
102+
{
103+
pixdata = float4(WaveActiveSum(subgroupId), 0, 0, 0);
104+
}
105+
else if(IsTest(5))
106+
{
107+
// QuadReadLaneAt : unit tests
108+
pixdata.x = float(QuadReadLaneAt(subgroupId, 0));
109+
pixdata.y = float(QuadReadLaneAt(subgroupId, 1));
110+
pixdata.z = float(QuadReadLaneAt(subgroupId, 2));
111+
pixdata.w = float(QuadReadLaneAt(subgroupId, 3));
112+
}
113+
else if(IsTest(6))
114+
{
115+
// QuadReadAcrossDiagonal, QuadReadAcrossX, QuadReadAcrossY: unit tests
116+
pixdata.x = float(QuadReadAcrossDiagonal(subgroupId));
117+
pixdata.y = float(QuadReadAcrossX(subgroupId));
118+
pixdata.z = float(QuadReadAcrossY(subgroupId));
119+
pixdata.w = QuadReadLaneAt(pixdata.x, 2);
120+
}
101121
102122
return input.data + pixdata;
103123
}

0 commit comments

Comments
 (0)