ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_shading_language_420pack / execution / aggregate-dynamic-initializer-sized-array.shader_test
blobdeb9bbd2371c91de5a35a2520c166d936849f67f
1 /* The ARB_shading_language_420pack suggests:
2  *
3  *    Verify that the following two arrays are identical:
4  *
5  *        vec4 a[12] = vec4 [] (vec4(1.2), vec4(0.0), vec4(0.0), vec4(0.0),
6  *                              vec4(0.0), vec4(0.0), vec4(0.0), vec4(2.4),
7  *                              vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0));
8  *        vec4 b[12] =        { vec4(1.2), vec4(0.0), vec4(0.0), vec4(0.0),
9  *                              vec4(0.0), vec4(0.0), vec4(0.0), vec4(2.4) }; [sic]
10  *
11  * Of course, it means to include a final row of four vec4(0.0) in the initializer
12  * of b[12].
13  *
14  * This test differs from aggregate-initializer-sized-array.shader_test in that
15  * it specifies one dynamic variable, to further test the compiler.  Otherwise,
16  * the initializer is constant folded away. The arrays should still be identical.
17  */
19 [require]
20 GLSL >= 1.30
21 GL_ARB_shading_language_420pack
23 [vertex shader]
24 #extension GL_ARB_shading_language_420pack: enable
26 in vec4 vertex;
27 out vec4 color;
29 void main()
31     vec4 a[12] = vec4 [] (vec4(1.2), vec4(0.0), vec4(0.0), vec4(0.0),
32                           vec4(0.0), vec4(0.0), vec4(0.0), vec4(2.4),
33                           vec4(vertex.x), vec4(0.0), vec4(0.0), vec4(0.0));
34     vec4 b[12] =        { vec4(1.2), vec4(0.0), vec4(0.0), vec4(0.0),
35                           vec4(0.0), vec4(0.0), vec4(0.0), vec4(2.4),
36                           vec4(vertex.x), vec4(0.0), vec4(0.0), vec4(0.0) };
38     color = vec4(0.0, 1.0, 0.0, 1.0);
40     if (a.length() != b.length()) {
41         color = vec4(0.0, 0.0, 1.0, 1.0);
42     } else {
43         for (int i = 0; i < a.length(); i++) {
44             if (a[i] != b[i]) {
45                 color = vec4(1.0, 0.0, 0.0, 1.0);
46             }
47         }
48     }
49     gl_Position = vertex;
52 [fragment shader]
53 in vec4 color;
54 out vec4 frag_color;
56 void main() {
57     frag_color = color;
60 [test]
61 draw rect -1 -1 2 2
62 probe all rgba 0.0 1.0 0.0 1.0