Add D3D12_Workgroup_Zoo unit tests for Wave Vote operations

WaveActiveAnyTrue()
WaveActiveAllTrue()
WaveActiveBallot()
This commit is contained in:
Jake Turner
2025-04-06 15:43:19 +01:00
parent 001539a3cd
commit aefb21fa36
+19 -1
View File
@@ -274,11 +274,29 @@ void main(uint3 inTid : SV_DispatchThreadID)
}
else if(IsTest(9))
{
// Query function : unit tests
// Query functions : unit tests
data.x = float(WaveGetLaneCount());
data.y = float(WaveGetLaneIndex());
data.z = float(WaveIsFirstLane());
}
else if(IsTest(10))
{
// Vote functions : unit tests
data.x = float(WaveActiveAnyTrue(id*2 > id+10));
data.y = float(WaveActiveAllTrue(id < WaveGetLaneCount()));
if (id > 10)
{
data.z = float(WaveActiveAllTrue(id > 10));
uint4 ballot = WaveActiveBallot(id > 20);
data.w = countbits(ballot.x) + countbits(ballot.y) + countbits(ballot.z) + countbits(ballot.w);
}
else
{
data.z = float(WaveActiveAllTrue(id > 3));
uint4 ballot = WaveActiveBallot(id > 4);
data.w = countbits(ballot.x) + countbits(ballot.y) + countbits(ballot.z) + countbits(ballot.w);
}
}
SetOuput(data);
}