ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_shading_language_420pack / execution / aggregate-dynamic-initializer-struct.shader_test
blob0fce9c6e280b7414b1cb2b5742f0c5efc736ddcb
1 /*
2  * This test differs from aggregate-initializer-struct.shader_test
3  * in that it includes one dynamic variable, to further test the
4  * compiler.  Otherwise, the initializer is constant folded away.
5  * The structs should still be identical.
6  */
8 [require]
9 GLSL >= 1.30
10 GL_ARB_shading_language_420pack
12 [vertex shader]
13 #extension GL_ARB_shading_language_420pack: enable
15 in vec4 vertex;
16 out vec4 color;
18 void main()
20     struct S {
21         vec4 v[2];
22     };
24     struct T {
25         S a[2], b;
26         int c;
27     }
28     s1 = T(
29           S[2](
30                S(vec4[2](vec4(vertex.x, 2.0, 3.0, 4.0), vec4(5.0, 6.0, 7.0, 8.0))),
31                S(vec4[2](vec4(vertex.x, 2.0, 3.0, 4.0), vec4(5.0, 6.0, 7.0, 8.0)))
32           ), // a
33           S(vec4[2](vec4(vertex.x, 2.0, 3.0, 4.0), vec4(5.0, 6.0, 7.0, 8.0))), // b
34           4 // c
35     ),
36     s2 = {
37         {
38             {
39                 {
40                     {vertex.x, 2.0, 3.0, 4.0}, // a[0].v[0]
41                     {5.0, 6.0, 7.0, 8.0}  // a[0].v[1]
42                 } // a[0].v
43             }, // a[0]
44             {
45                 {
46                     {vertex.x, 2.0, 3.0, 4.0}, // a[1].v[0]
47                     {5.0, 6.0, 7.0, 8.0}  // a[1].v[1]
48                 } // a[1].v
49             } // a[1]
50         }, // a
51         {
52             {
53                 {vertex.x, 2.0, 3.0, 4.0}, // b.v[0]
54                 {5.0, 6.0, 7.0, 8.0}  // b.v[1]
55             } // b.v
56         }, // b
57         4 // c
58     };
60     color = vec4(0.0, 1.0, 0.0, 1.0);
62     if (s1.a[0].v[0] != s2.a[0].v[0] ||
63         s1.a[0].v[1] != s2.a[0].v[1] ||
64         s1.a[1].v[0] != s2.a[1].v[0] ||
65         s1.a[1].v[1] != s2.a[1].v[1] ||
66         s1.b.v[0] != s2.b.v[0] ||
67         s1.b.v[1] != s2.b.v[1] ||
68         s1.c != s2.c) {
69         color = vec4(1.0, 0.0, 0.0, 1.0);
70     }
71     gl_Position = vertex;
74 [fragment shader]
75 in vec4 color;
76 out vec4 frag_color;
78 void main() {
79     frag_color = color;
82 [test]
83 draw rect -1 -1 2 2
84 probe all rgba 0.0 1.0 0.0 1.0