ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_tessellation_shader / execution / variable-indexing / tes-input-array-vec4-index-rd.shader_test
blobba0b9bdc42f2a0a70219dd34f2bcb1855701a1da
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 out block {
21   vec4 m1[16];
22   vec4 m2[15];
23 } blk[];
25 void main()
27     for (int i = 0; i < 16; i++)
28         blk[gl_InvocationID].m1[i] = vec4(1.0, 1.1, 1.2, 1.3) + vec4(i);
30     for (int i = 0; i < 15; i++)
31         blk[gl_InvocationID].m2[i] = vec4(1.0, 1.1, 1.2, 1.3) + vec4(16+i);
33     gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
34     gl_TessLevelOuter = float[4](1.0, 1.0, 1.0, 1.0);
35     gl_TessLevelInner = float[2](1.0, 1.0);
38 [tessellation evaluation shader]
39 #version 150
40 #extension GL_ARB_tessellation_shader : require
41 layout(quads, equal_spacing) in;
43 uniform int index;
44 uniform vec4 expect;
45 in block {
46     vec4 m1[16];
47     vec4 m2[15];
48 } blk[];
49 out vec4 color;
51 #define INTERP_QUAD(INi, OUT) do { \
52     vec4 v[4]; \
53     for (int i = 0; i < 4; i++) v[i] = INi; \
54     OUT = mix(mix(v[0], v[1], gl_TessCoord[0]), mix(v[2], v[3], gl_TessCoord[0]), \
55               gl_TessCoord[1]); \
56 } while(false)
58 void main() {
59     vec4 m;
60     if (index >= 16) {
61         INTERP_QUAD(blk[i].m2[index-16], m);
62     } else {
63         INTERP_QUAD(blk[i].m1[index], m);
64     }
66     color = m == expect ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
67     INTERP_QUAD(gl_in[i].gl_Position, gl_Position);
70 [fragment shader]
71 #version 150
72 in vec4 color;
73 out vec4 outcolor;
75 void main()
77     outcolor = color;
80 [test]
81 clear color 0.5 0.5 0.5 0.5
82 clear
84 uniform int index 0
85 uniform vec4 expect 1 1.1 1.2 1.3
86 draw rect patch -1 -1 0.09 0.09
87 probe rgb 6 6 0.0 1.0 0.0
89 uniform int index 1
90 uniform vec4 expect 2 2.1 2.2 2.3
91 draw rect patch -0.9 -1 0.09 0.09
92 probe rgb 18 6 0.0 1.0 0.0
94 uniform int index 2
95 uniform vec4 expect 3 3.1 3.2 3.3
96 draw rect patch -0.8 -1 0.09 0.09
97 probe rgb 31 6 0.0 1.0 0.0
99 uniform int index 3
100 uniform vec4 expect 4 4.1 4.2 4.3
101 draw rect patch -0.7 -1 0.09 0.09
102 probe rgb 43 6 0.0 1.0 0.0
104 uniform int index 4
105 uniform vec4 expect 5 5.1 5.2 5.3
106 draw rect patch -0.6 -1 0.09 0.09
107 probe rgb 56 6 0.0 1.0 0.0
109 uniform int index 5
110 uniform vec4 expect 6 6.1 6.2 6.3
111 draw rect patch -0.5 -1 0.09 0.09
112 probe rgb 68 6 0.0 1.0 0.0
114 uniform int index 6
115 uniform vec4 expect 7 7.1 7.2 7.3
116 draw rect patch -0.4 -1 0.09 0.09
117 probe rgb 81 6 0.0 1.0 0.0
119 uniform int index 7
120 uniform vec4 expect 8 8.1 8.2 8.3
121 draw rect patch -0.3 -1 0.09 0.09
122 probe rgb 93 6 0.0 1.0 0.0
124 uniform int index 8
125 uniform vec4 expect 9 9.1 9.2 9.3
126 draw rect patch -0.2 -1 0.09 0.09
127 probe rgb 106 6 0.0 1.0 0.0
129 uniform int index 9
130 uniform vec4 expect 10 10.1 10.2 10.3
131 draw rect patch -0.1 -1 0.09 0.09
132 probe rgb 118 6 0.0 1.0 0.0
134 uniform int index 10
135 uniform vec4 expect 11 11.1 11.2 11.3
136 draw rect patch 0 -1 0.09 0.09
137 probe rgb 131 6 0.0 1.0 0.0
139 uniform int index 11
140 uniform vec4 expect 12 12.1 12.2 12.3
141 draw rect patch 0.1 -1 0.09 0.09
142 probe rgb 143 6 0.0 1.0 0.0
144 uniform int index 12
145 uniform vec4 expect 13 13.1 13.2 13.3
146 draw rect patch 0.2 -1 0.09 0.09
147 probe rgb 156 6 0.0 1.0 0.0
149 uniform int index 13
150 uniform vec4 expect 14 14.1 14.2 14.3
151 draw rect patch 0.3 -1 0.09 0.09
152 probe rgb 168 6 0.0 1.0 0.0
154 uniform int index 14
155 uniform vec4 expect 15 15.1 15.2 15.3
156 draw rect patch 0.4 -1 0.09 0.09
157 probe rgb 181 6 0.0 1.0 0.0
159 uniform int index 15
160 uniform vec4 expect 16 16.1 16.2 16.3
161 draw rect patch 0.5 -1.0 0.09 0.09
162 probe rgb 193 6 0.0 1.0 0.0
164 uniform int index 16
165 uniform vec4 expect 17 17.1 17.2 17.3
166 draw rect patch -1 -0.9 0.09 0.09
167 probe rgb 6 18 0.0 1.0 0.0
169 uniform int index 17
170 uniform vec4 expect 18 18.1 18.2 18.3
171 draw rect patch -0.9 -0.9 0.09 0.09
172 probe rgb 18 18 0.0 1.0 0.0
174 uniform int index 18
175 uniform vec4 expect 19 19.1 19.2 19.3
176 draw rect patch -0.8 -0.9 0.09 0.09
177 probe rgb 31 18 0.0 1.0 0.0
179 uniform int index 19
180 uniform vec4 expect 20 20.1 20.2 20.3
181 draw rect patch -0.7 -0.9 0.09 0.09
182 probe rgb 43 18 0.0 1.0 0.0
184 uniform int index 20
185 uniform vec4 expect 21 21.1 21.2 21.3
186 draw rect patch -0.6 -0.9 0.09 0.09
187 probe rgb 56 18 0.0 1.0 0.0
189 uniform int index 21
190 uniform vec4 expect 22 22.1 22.2 22.3
191 draw rect patch -0.5 -0.9 0.09 0.09
192 probe rgb 68 18 0.0 1.0 0.0
194 uniform int index 22
195 uniform vec4 expect 23 23.1 23.2 23.3
196 draw rect patch -0.4 -0.9 0.09 0.09
197 probe rgb 81 18 0.0 1.0 0.0
199 uniform int index 23
200 uniform vec4 expect 24 24.1 24.2 24.3
201 draw rect patch -0.3 -0.9 0.09 0.09
202 probe rgb 93 18 0.0 1.0 0.0
204 uniform int index 24
205 uniform vec4 expect 25 25.1 25.2 25.3
206 draw rect patch -0.2 -0.9 0.09 0.09
207 probe rgb 106 18 0.0 1.0 0.0
209 uniform int index 25
210 uniform vec4 expect 26 26.1 26.2 26.3
211 draw rect patch -0.1 -0.9 0.09 0.09
212 probe rgb 118 18 0.0 1.0 0.0
214 uniform int index 26
215 uniform vec4 expect 27 27.1 27.2 27.3
216 draw rect patch 0 -0.9 0.09 0.09
217 probe rgb 131 18 0.0 1.0 0.0
219 uniform int index 27
220 uniform vec4 expect 28 28.1 28.2 28.3
221 draw rect patch 0.1 -0.9 0.09 0.09
222 probe rgb 143 18 0.0 1.0 0.0
224 uniform int index 28
225 uniform vec4 expect 29 29.1 29.2 29.3
226 draw rect patch 0.2 -0.9 0.09 0.09
227 probe rgb 156 18 0.0 1.0 0.0
229 uniform int index 29
230 uniform vec4 expect 30 30.1 30.2 30.3
231 draw rect patch 0.3 -0.9 0.09 0.09
232 probe rgb 168 18 0.0 1.0 0.0
234 uniform int index 30
235 uniform vec4 expect 31 31.1 31.2 31.3
236 draw rect patch 0.4 -0.9 0.09 0.09
237 probe rgb 181 18 0.0 1.0 0.0