Skip to content

Commit aefb21f

Browse files
committed
Add D3D12_Workgroup_Zoo unit tests for Wave Vote operations
WaveActiveAnyTrue() WaveActiveAllTrue() WaveActiveBallot()
1 parent 001539a commit aefb21f

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

util/test/demos/d3d12/d3d12_subgroup_zoo.cpp

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,11 +274,29 @@ void main(uint3 inTid : SV_DispatchThreadID)
274274
}
275275
else if(IsTest(9))
276276
{
277-
// Query function : unit tests
277+
// Query functions : unit tests
278278
data.x = float(WaveGetLaneCount());
279279
data.y = float(WaveGetLaneIndex());
280280
data.z = float(WaveIsFirstLane());
281281
}
282+
else if(IsTest(10))
283+
{
284+
// Vote functions : unit tests
285+
data.x = float(WaveActiveAnyTrue(id*2 > id+10));
286+
data.y = float(WaveActiveAllTrue(id < WaveGetLaneCount()));
287+
if (id > 10)
288+
{
289+
data.z = float(WaveActiveAllTrue(id > 10));
290+
uint4 ballot = WaveActiveBallot(id > 20);
291+
data.w = countbits(ballot.x) + countbits(ballot.y) + countbits(ballot.z) + countbits(ballot.w);
292+
}
293+
else
294+
{
295+
data.z = float(WaveActiveAllTrue(id > 3));
296+
uint4 ballot = WaveActiveBallot(id > 4);
297+
data.w = countbits(ballot.x) + countbits(ballot.y) + countbits(ballot.z) + countbits(ballot.w);
298+
}
299+
}
282300
SetOuput(data);
283301
}
284302

0 commit comments

Comments
 (0)