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