ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_compute_shader / execution / shared-atomicMax-int.shader_test
blob642e417d0e94c9c1a8f59c17b75352093a04963c
1 [require]
2 GL >= 3.3
3 GLSL >= 3.30
4 GL_ARB_compute_shader
5 GL_ARB_shader_storage_buffer_object
6 GL_ARB_shader_atomic_counters
8 [compute shader]
9 #version 330
10 #extension GL_ARB_compute_shader: require
11 #extension GL_ARB_shader_storage_buffer_object: require
12 #extension GL_ARB_shader_atomic_counters: require
14 layout(local_size_x = 64) in;
16 layout(binding = 0) buffer bufblock {
17         int source_array[64];
18         int source_value;
21 shared int array[source_array.length()];
22 shared int value;
24 layout(binding = 0) uniform atomic_uint fail;
26 void main()
28         if (gl_LocalInvocationIndex == 0u) {
29                 array = source_array;
30                 value = source_value;
31         }
33         barrier();
35         int local_index = int(gl_LocalInvocationIndex);
36         int v;
38         /* For value, every instance should get 2147483647. */
39         v = atomicMax(value, local_index);
40         if (v != 2147483647)
41                 atomicCounterIncrement(fail);
43         if (value != 2147483647)
44                 atomicCounterIncrement(fail);
46         int first_expected = (local_index + 1) * -4;
47         int second_expected = local_index * 4;
49         /* The per-instance value should give the old value on the first step.
50          * This is expected to be the negative byte offset of the next array
51          * element.
52          */
53         v = atomicMax(array[local_index], second_expected);
54         if (v != first_expected)
55                 atomicCounterIncrement(fail);
57         /* The per-instance value should give the new value on the second
58          * step.  This is expected to be the byte offset of the current array
59          * element.
60          */
61         v = atomicExchange(array[local_index], first_expected);
62         if (v != second_expected)
63                 atomicCounterIncrement(fail);
66 [test]
67 atomic counters 1
69 ssbo 0 260
70 ssbo 0 subdata int 0 -4
71 ssbo 0 subdata int 4 -8
72 ssbo 0 subdata int 8 -12
73 ssbo 0 subdata int 12 -16
74 ssbo 0 subdata int 16 -20
75 ssbo 0 subdata int 20 -24
76 ssbo 0 subdata int 24 -28
77 ssbo 0 subdata int 28 -32
78 ssbo 0 subdata int 32 -36
79 ssbo 0 subdata int 36 -40
80 ssbo 0 subdata int 40 -44
81 ssbo 0 subdata int 44 -48
82 ssbo 0 subdata int 48 -52
83 ssbo 0 subdata int 52 -56
84 ssbo 0 subdata int 56 -60
85 ssbo 0 subdata int 60 -64
86 ssbo 0 subdata int 64 -68
87 ssbo 0 subdata int 68 -72
88 ssbo 0 subdata int 72 -76
89 ssbo 0 subdata int 76 -80
90 ssbo 0 subdata int 80 -84
91 ssbo 0 subdata int 84 -88
92 ssbo 0 subdata int 88 -92
93 ssbo 0 subdata int 92 -96
94 ssbo 0 subdata int 96 -100
95 ssbo 0 subdata int 100 -104
96 ssbo 0 subdata int 104 -108
97 ssbo 0 subdata int 108 -112
98 ssbo 0 subdata int 112 -116
99 ssbo 0 subdata int 116 -120
100 ssbo 0 subdata int 120 -124
101 ssbo 0 subdata int 124 -128
102 ssbo 0 subdata int 128 -132
103 ssbo 0 subdata int 132 -136
104 ssbo 0 subdata int 136 -140
105 ssbo 0 subdata int 140 -144
106 ssbo 0 subdata int 144 -148
107 ssbo 0 subdata int 148 -152
108 ssbo 0 subdata int 152 -156
109 ssbo 0 subdata int 156 -160
110 ssbo 0 subdata int 160 -164
111 ssbo 0 subdata int 164 -168
112 ssbo 0 subdata int 168 -172
113 ssbo 0 subdata int 172 -176
114 ssbo 0 subdata int 176 -180
115 ssbo 0 subdata int 180 -184
116 ssbo 0 subdata int 184 -188
117 ssbo 0 subdata int 188 -192
118 ssbo 0 subdata int 192 -196
119 ssbo 0 subdata int 196 -200
120 ssbo 0 subdata int 200 -204
121 ssbo 0 subdata int 204 -208
122 ssbo 0 subdata int 208 -212
123 ssbo 0 subdata int 212 -216
124 ssbo 0 subdata int 216 -220
125 ssbo 0 subdata int 220 -224
126 ssbo 0 subdata int 224 -228
127 ssbo 0 subdata int 228 -232
128 ssbo 0 subdata int 232 -236
129 ssbo 0 subdata int 236 -240
130 ssbo 0 subdata int 240 -244
131 ssbo 0 subdata int 244 -248
132 ssbo 0 subdata int 248 -252
133 ssbo 0 subdata int 252 -256
134 ssbo 0 subdata int 256 2147483647
136 compute 2 3 4
137 probe atomic counter 0 == 0