ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_tessellation_shader / execution / variable-indexing / tcs-output-array-vec4-index-rd-after-barrier.shader_test
blob2ce003ff286996f76053a8aa6defcd9d823376d7
1 [require]
2 GLSL >= 1.50
3 GL_ARB_tessellation_shader
5 [vertex shader]
6 #version 150
8 in vec4 piglit_vertex;
10 void main()
12     gl_Position = piglit_vertex;
15 [tessellation control shader]
16 #version 150
17 #extension GL_ARB_tessellation_shader : require
18 layout(vertices = 4) out;
20 uniform int index;
21 uniform vec4 expect;
23 out block {
24   vec4 m1[16];
25   vec4 m2[14];
26 } blk[];
27 out vec4 color[];
29 void main()
31     for (int i = 0; i < 16; i++)
32         blk[gl_InvocationID].m1[i] = vec4(1.0, 1.1, 1.2, 1.3) + vec4(i);
34     for (int i = 0; i < 14; i++)
35         blk[gl_InvocationID].m2[i] = vec4(1.0, 1.1, 1.2, 1.3) + vec4(16+i);
37     gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
38     gl_TessLevelOuter = float[4](1.0, 1.0, 1.0, 1.0);
39     gl_TessLevelInner = float[2](1.0, 1.0);
41     barrier();
43     vec4 m;
44     if (index >= 16) {
45         m = blk[(gl_InvocationID + 1) % gl_PatchVerticesIn].m2[index-16];
46     } else {
47         m = blk[(gl_InvocationID + 1) % gl_PatchVerticesIn].m1[index];
48     }
50     color[gl_InvocationID] =
51         m == expect ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
54 [tessellation evaluation shader]
55 #version 150
56 #extension GL_ARB_tessellation_shader : require
57 layout(quads, equal_spacing) in;
59 in vec4 color[];
60 out vec4 fscolor;
62 #define INTERP_QUAD(INi, OUT) do { \
63     vec4 v[4]; \
64     for (int i = 0; i < 4; i++) v[i] = INi; \
65     OUT = mix(mix(v[0], v[1], gl_TessCoord[0]), mix(v[2], v[3], gl_TessCoord[0]), \
66               gl_TessCoord[1]); \
67 } while(false)
69 void main() {
70     INTERP_QUAD(color[i], fscolor);
71     INTERP_QUAD(gl_in[i].gl_Position, gl_Position);
74 [fragment shader]
75 #version 150
76 in vec4 fscolor;
77 out vec4 outcolor;
79 void main()
81     outcolor = fscolor;
84 [test]
85 clear color 0.5 0.5 0.5 0.5
86 clear
88 uniform int index 0
89 uniform vec4 expect 1 1.1 1.2 1.3
90 draw rect patch -1 -1 0.09 0.09
91 probe rgb 6 6 0.0 1.0 0.0
93 uniform int index 1
94 uniform vec4 expect 2 2.1 2.2 2.3
95 draw rect patch -0.9 -1 0.09 0.09
96 probe rgb 18 6 0.0 1.0 0.0
98 uniform int index 2
99 uniform vec4 expect 3 3.1 3.2 3.3
100 draw rect patch -0.8 -1 0.09 0.09
101 probe rgb 31 6 0.0 1.0 0.0
103 uniform int index 3
104 uniform vec4 expect 4 4.1 4.2 4.3
105 draw rect patch -0.7 -1 0.09 0.09
106 probe rgb 43 6 0.0 1.0 0.0
108 uniform int index 4
109 uniform vec4 expect 5 5.1 5.2 5.3
110 draw rect patch -0.6 -1 0.09 0.09
111 probe rgb 56 6 0.0 1.0 0.0
113 uniform int index 5
114 uniform vec4 expect 6 6.1 6.2 6.3
115 draw rect patch -0.5 -1 0.09 0.09
116 probe rgb 68 6 0.0 1.0 0.0
118 uniform int index 6
119 uniform vec4 expect 7 7.1 7.2 7.3
120 draw rect patch -0.4 -1 0.09 0.09
121 probe rgb 81 6 0.0 1.0 0.0
123 uniform int index 7
124 uniform vec4 expect 8 8.1 8.2 8.3
125 draw rect patch -0.3 -1 0.09 0.09
126 probe rgb 93 6 0.0 1.0 0.0
128 uniform int index 8
129 uniform vec4 expect 9 9.1 9.2 9.3
130 draw rect patch -0.2 -1 0.09 0.09
131 probe rgb 106 6 0.0 1.0 0.0
133 uniform int index 9
134 uniform vec4 expect 10 10.1 10.2 10.3
135 draw rect patch -0.1 -1 0.09 0.09
136 probe rgb 118 6 0.0 1.0 0.0
138 uniform int index 10
139 uniform vec4 expect 11 11.1 11.2 11.3
140 draw rect patch 0 -1 0.09 0.09
141 probe rgb 131 6 0.0 1.0 0.0
143 uniform int index 11
144 uniform vec4 expect 12 12.1 12.2 12.3
145 draw rect patch 0.1 -1 0.09 0.09
146 probe rgb 143 6 0.0 1.0 0.0
148 uniform int index 12
149 uniform vec4 expect 13 13.1 13.2 13.3
150 draw rect patch 0.2 -1 0.09 0.09
151 probe rgb 156 6 0.0 1.0 0.0
153 uniform int index 13
154 uniform vec4 expect 14 14.1 14.2 14.3
155 draw rect patch 0.3 -1 0.09 0.09
156 probe rgb 168 6 0.0 1.0 0.0
158 uniform int index 14
159 uniform vec4 expect 15 15.1 15.2 15.3
160 draw rect patch 0.4 -1 0.09 0.09
161 probe rgb 181 6 0.0 1.0 0.0
163 uniform int index 15
164 uniform vec4 expect 16 16.1 16.2 16.3
165 draw rect patch 0.5 -1.0 0.09 0.09
166 probe rgb 193 6 0.0 1.0 0.0
168 uniform int index 16
169 uniform vec4 expect 17 17.1 17.2 17.3
170 draw rect patch -1 -0.9 0.09 0.09
171 probe rgb 6 18 0.0 1.0 0.0
173 uniform int index 17
174 uniform vec4 expect 18 18.1 18.2 18.3
175 draw rect patch -0.9 -0.9 0.09 0.09
176 probe rgb 18 18 0.0 1.0 0.0
178 uniform int index 18
179 uniform vec4 expect 19 19.1 19.2 19.3
180 draw rect patch -0.8 -0.9 0.09 0.09
181 probe rgb 31 18 0.0 1.0 0.0
183 uniform int index 19
184 uniform vec4 expect 20 20.1 20.2 20.3
185 draw rect patch -0.7 -0.9 0.09 0.09
186 probe rgb 43 18 0.0 1.0 0.0
188 uniform int index 20
189 uniform vec4 expect 21 21.1 21.2 21.3
190 draw rect patch -0.6 -0.9 0.09 0.09
191 probe rgb 56 18 0.0 1.0 0.0
193 uniform int index 21
194 uniform vec4 expect 22 22.1 22.2 22.3
195 draw rect patch -0.5 -0.9 0.09 0.09
196 probe rgb 68 18 0.0 1.0 0.0
198 uniform int index 22
199 uniform vec4 expect 23 23.1 23.2 23.3
200 draw rect patch -0.4 -0.9 0.09 0.09
201 probe rgb 81 18 0.0 1.0 0.0
203 uniform int index 23
204 uniform vec4 expect 24 24.1 24.2 24.3
205 draw rect patch -0.3 -0.9 0.09 0.09
206 probe rgb 93 18 0.0 1.0 0.0
208 uniform int index 24
209 uniform vec4 expect 25 25.1 25.2 25.3
210 draw rect patch -0.2 -0.9 0.09 0.09
211 probe rgb 106 18 0.0 1.0 0.0
213 uniform int index 25
214 uniform vec4 expect 26 26.1 26.2 26.3
215 draw rect patch -0.1 -0.9 0.09 0.09
216 probe rgb 118 18 0.0 1.0 0.0
218 uniform int index 26
219 uniform vec4 expect 27 27.1 27.2 27.3
220 draw rect patch 0 -0.9 0.09 0.09
221 probe rgb 131 18 0.0 1.0 0.0
223 uniform int index 27
224 uniform vec4 expect 28 28.1 28.2 28.3
225 draw rect patch 0.1 -0.9 0.09 0.09
226 probe rgb 143 18 0.0 1.0 0.0
228 uniform int index 28
229 uniform vec4 expect 29 29.1 29.2 29.3
230 draw rect patch 0.2 -0.9 0.09 0.09
231 probe rgb 156 18 0.0 1.0 0.0
233 uniform int index 29
234 uniform vec4 expect 30 30.1 30.2 30.3
235 draw rect patch 0.3 -0.9 0.09 0.09
236 probe rgb 168 18 0.0 1.0 0.0