ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_tessellation_shader / execution / variable-indexing / vs-output-array-float-index-wr-before-tcs.shader_test
blobfc0e2ebe6bdd278d678dde34c2f26a480f92f3ed
1 [require]
2 GLSL >= 1.50
3 GL_ARB_tessellation_shader
5 [vertex shader]
6 #version 150
8 uniform int index;
9 in vec4 piglit_vertex;
11 out block {
12   float m1[16];
13   float m2[15];
14 } vs;
16 void main()
18     gl_Position = piglit_vertex;
20     for (int i = 0; i < 16; i++)
21         vs.m1[i] = 1.0 + float(i);
23     for (int i = 0; i < 15; i++)
24         vs.m2[i] = 1.0 + float(16+i);
26     if (index >= 16)
27         vs.m2[index-16] = 0.0;
28     else
29         vs.m1[index] = 0.0;
32 [tessellation control shader]
33 #version 150
34 #extension GL_ARB_tessellation_shader : require
35 layout(vertices = 4) out;
37 uniform int index;
38 in block {
39     float m1[16];
40     float m2[15];
41 } vs[];
42 out vec4 color[];
44 void main()
46     bool pass = true;
48     for (int i = 0; i < 16; i++)
49         pass = pass && vs[gl_InvocationID].m1[i] == (index == i ?
50                                        0.0 :
51                                        1.0 + float(i));
53     for (int i = 0; i < 15; i++)
54         pass = pass && vs[gl_InvocationID].m2[i] == (index == 16+i ?
55                                        0.0 :
56                                        17.0 + float(i));
58     color[gl_InvocationID] = pass ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
60     gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
61     gl_TessLevelOuter = float[4](1.0, 1.0, 1.0, 1.0);
62     gl_TessLevelInner = float[2](1.0, 1.0);
65 [tessellation evaluation shader]
66 #version 150
67 #extension GL_ARB_tessellation_shader : require
68 layout(quads, equal_spacing) in;
70 in vec4 color[];
71 out vec4 fscolor;
73 #define INTERP_QUAD(INi, OUT) { \
74     vec4 v[4]; \
75     for (int i = 0; i < 4; i++) v[i] = INi; \
76     OUT = mix(mix(v[0], v[1], gl_TessCoord[0]), mix(v[2], v[3], gl_TessCoord[0]), \
77               gl_TessCoord[1]); \
80 void main() {
81     INTERP_QUAD(gl_in[i].gl_Position, gl_Position)
82     INTERP_QUAD(color[i], fscolor)
85 [fragment shader]
86 #version 150
87 in vec4 fscolor;
88 out vec4 outcolor;
90 void main()
92     outcolor = fscolor;
95 [test]
96 clear color 0.5 0.5 0.5 0.5
97 clear
99 patch parameter vertices 4
101 uniform int index 0
102 draw rect patch -1 -1 0.09 0.09
103 #draw arrays GL_PATCHES 0 4
104 probe rgb 6 6 0.0 1.0 0.0
106 uniform int index 1
107 draw rect patch -0.9 -1 0.09 0.09
108 probe rgb 18 6 0.0 1.0 0.0
110 uniform int index 2
111 draw rect patch -0.8 -1 0.09 0.09
112 probe rgb 31 6 0.0 1.0 0.0
114 uniform int index 3
115 draw rect patch -0.7 -1 0.09 0.09
116 probe rgb 43 6 0.0 1.0 0.0
118 uniform int index 4
119 draw rect patch -0.6 -1 0.09 0.09
120 probe rgb 56 6 0.0 1.0 0.0
122 uniform int index 5
123 draw rect patch -0.5 -1 0.09 0.09
124 probe rgb 68 6 0.0 1.0 0.0
126 uniform int index 6
127 draw rect patch -0.4 -1 0.09 0.09
128 probe rgb 81 6 0.0 1.0 0.0
130 uniform int index 7
131 draw rect patch -0.3 -1 0.09 0.09
132 probe rgb 93 6 0.0 1.0 0.0
134 uniform int index 8
135 draw rect patch -0.2 -1 0.09 0.09
136 probe rgb 106 6 0.0 1.0 0.0
138 uniform int index 9
139 draw rect patch -0.1 -1 0.09 0.09
140 probe rgb 118 6 0.0 1.0 0.0
142 uniform int index 10
143 draw rect patch 0 -1 0.09 0.09
144 probe rgb 131 6 0.0 1.0 0.0
146 uniform int index 11
147 draw rect patch 0.1 -1 0.09 0.09
148 probe rgb 143 6 0.0 1.0 0.0
150 uniform int index 12
151 draw rect patch 0.2 -1 0.09 0.09
152 probe rgb 156 6 0.0 1.0 0.0
154 uniform int index 13
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 draw rect patch 0.4 -1 0.09 0.09
160 probe rgb 181 6 0.0 1.0 0.0
162 uniform int index 15
163 draw rect patch 0.5 -1.0 0.09 0.09
164 probe rgb 193 6 0.0 1.0 0.0
166 uniform int index 16
167 draw rect patch -1 -0.9 0.09 0.09
168 probe rgb 6 18 0.0 1.0 0.0
170 uniform int index 17
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 draw rect patch -0.8 -0.9 0.09 0.09
176 probe rgb 31 18 0.0 1.0 0.0
178 uniform int index 19
179 draw rect patch -0.7 -0.9 0.09 0.09
180 probe rgb 43 18 0.0 1.0 0.0
182 uniform int index 20
183 draw rect patch -0.6 -0.9 0.09 0.09
184 probe rgb 56 18 0.0 1.0 0.0
186 uniform int index 21
187 draw rect patch -0.5 -0.9 0.09 0.09
188 probe rgb 68 18 0.0 1.0 0.0
190 uniform int index 22
191 draw rect patch -0.4 -0.9 0.09 0.09
192 probe rgb 81 18 0.0 1.0 0.0
194 uniform int index 23
195 draw rect patch -0.3 -0.9 0.09 0.09
196 probe rgb 93 18 0.0 1.0 0.0
198 uniform int index 24
199 draw rect patch -0.2 -0.9 0.09 0.09
200 probe rgb 106 18 0.0 1.0 0.0
202 uniform int index 25
203 draw rect patch -0.1 -0.9 0.09 0.09
204 probe rgb 118 18 0.0 1.0 0.0
206 uniform int index 26
207 draw rect patch 0 -0.9 0.09 0.09
208 probe rgb 131 18 0.0 1.0 0.0
210 uniform int index 27
211 draw rect patch 0.1 -0.9 0.09 0.09
212 probe rgb 143 18 0.0 1.0 0.0
214 uniform int index 28
215 draw rect patch 0.2 -0.9 0.09 0.09
216 probe rgb 156 18 0.0 1.0 0.0
218 uniform int index 29
219 draw rect patch 0.3 -0.9 0.09 0.09
220 probe rgb 168 18 0.0 1.0 0.0
222 uniform int index 30
223 draw rect patch 0.4 -0.9 0.09 0.09
224 probe rgb 181 18 0.0 1.0 0.0