@@ -90,14 +90,34 @@ struct IN
90
90
91
91
float4 main(IN input) : SV_Target0
92
92
{
93
- uint wave = WaveGetLaneIndex();
93
+ uint subgroupId = WaveGetLaneIndex();
94
94
95
95
float4 pixdata = 0.0f.xxxx;
96
96
97
97
if(IsTest(1) || IsTest(2))
98
- pixdata = float4(wave, 0, 0, 1);
98
+ {
99
+ pixdata = float4(subgroupId, 0, 0, 1);
100
+ }
99
101
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
+ }
101
121
102
122
return input.data + pixdata;
103
123
}
0 commit comments