arb_program_interface_query: set vs_input2[1][0] as valid name
[piglit.git] / tests / spec / glsl-1.50 / uniform_buffer / gs-struct-copy-complicated.shader_test
blob3d3a82a3c44a09877c9784665f7f5fbc0ed609cb
1 [require]
2 GLSL >= 1.50
4 [vertex shader]
5 #version 150
7 in vec4 vertex;
8 out vec4 vertex_to_gs;
10 void main()
12         vertex_to_gs = vertex;
15 [geometry shader]
16 #version 150
18 layout(triangles) in;
19 layout(triangle_strip, max_vertices = 3) out;
21 struct S2 {
22         vec2 v2;
23         mat2 m22[2];
26 struct S {
27         S2 arr[2];
28         vec3 v3;
29         bool b;
32 uniform ubo1 {
33         S s[2];
36 in vec4 vertex_to_gs[3];
37 out vec4 v;
39 void main()
41         for (int i = 0; i < 3; i++) {
42                 gl_Position = vertex_to_gs[i];
44                 S temp[2] = s;
46                 /* Try to prevent copy propagation */
47                 temp[0].arr[0].v2 = vec2(0.01, 0.02);
49                 v = vec4(0, 1, 0, 0);
51                 if (temp[0].arr[0].v2 != vec2(0.01, 0.02))
52                         v = vec4(0.02, 0, temp[0].arr[0].v2);
53                 else if (temp[0].arr[0].m22[0][0] != vec2(0.03, 0.04))
54                         v = vec4(0.04, 0, temp[0].arr[0].m22[0][0]);
55                 else if (temp[0].arr[0].m22[0][1] != vec2(0.05, 0.06))
56                         v = vec4(0.06, 0, temp[0].arr[0].m22[0][1]);
57                 else if (temp[0].arr[0].m22[1][0] != vec2(0.07, 0.08))
58                         v = vec4(0.08, 0, temp[0].arr[0].m22[1][0]);
59                 else if (temp[0].arr[0].m22[1][1] != vec2(0.09, 0.10))
60                         v = vec4(0.10, 0, temp[0].arr[0].m22[1][1]);
62                 else if (temp[0].arr[1].v2 != vec2(0.21, 0.22))
63                         v = vec4(0.22, 0, temp[0].arr[1].v2);
64                 else if (temp[0].arr[1].m22[0][0] != vec2(0.23, 0.24))
65                         v = vec4(0.24, 0, temp[0].arr[1].m22[0][0]);
66                 else if (temp[0].arr[1].m22[0][1] != vec2(0.25, 0.26))
67                         v = vec4(0.26, 0, temp[0].arr[1].m22[0][1]);
68                 else if (temp[0].arr[1].m22[1][0] != vec2(0.27, 0.28))
69                         v = vec4(0.28, 0, temp[0].arr[1].m22[1][0]);
70                 else if (temp[0].arr[1].m22[1][1] != vec2(0.29, 0.30))
71                         v = vec4(0.30, 0, temp[0].arr[1].m22[1][1]);
73                 else if (temp[0].v3 != vec3(0.31, 0.32, 0.33))
74                         v = vec4(0.32, temp[0].v3);
75                 else if (temp[0].b != false)
76                         v = vec4(0.34, 0, 0, temp[0].b);
78                 else if (temp[1].arr[0].v2 != vec2(0.41, 0.42))
79                         v = vec4(0.42, 0, temp[1].arr[0].v2);
80                 else if (temp[1].arr[0].m22[0][0] != vec2(0.43, 0.44))
81                         v = vec4(0.44, 0, temp[1].arr[0].m22[0][0]);
82                 else if (temp[1].arr[0].m22[0][1] != vec2(0.45, 0.46))
83                         v = vec4(0.46, 0, temp[1].arr[0].m22[0][1]);
84                 else if (temp[1].arr[0].m22[1][0] != vec2(0.47, 0.48))
85                         v = vec4(0.48, 0, temp[1].arr[0].m22[1][0]);
86                 else if (temp[1].arr[0].m22[1][1] != vec2(0.49, 0.50))
87                         v = vec4(0.50, 0, temp[1].arr[0].m22[1][1]);
89                 else if (temp[1].arr[1].v2 != vec2(0.61, 0.62))
90                         v = vec4(0.62, 0, temp[1].arr[1].v2);
91                 else if (temp[1].arr[1].m22[0][0] != vec2(0.63, 0.64))
92                         v = vec4(0.64, 0, temp[1].arr[1].m22[0][0]);
93                 else if (temp[1].arr[1].m22[0][1] != vec2(0.65, 0.66))
94                         v = vec4(0.66, 0, temp[1].arr[1].m22[0][1]);
95                 else if (temp[1].arr[1].m22[1][0] != vec2(0.67, 0.68))
96                         v = vec4(0.68, 0, temp[1].arr[1].m22[1][0]);
97                 else if (temp[1].arr[1].m22[1][1] != vec2(0.69, 0.70))
98                         v = vec4(0.70, 0, temp[1].arr[1].m22[1][1]);
100                 else if (temp[1].v3 != vec3(0.71, 0.72, 0.73))
101                         v = vec4(0.72, temp[1].v3);
102                 else if (temp[1].b != true)
103                         v = vec4(0.74, 0, 0, temp[1].b);
105                 EmitVertex();
106         }
109 [fragment shader]
110 #version 150
112 in vec4 v;
114 void main()
116         gl_FragColor = v;
119 [vertex data]
120 vertex/float/2
121 -1.0 -1.0
122  1.0 -1.0
123  1.0  1.0
124 -1.0  1.0
126 [test]
127 uniform vec2 s[0].arr[0].v2 0.99 0.99
128 uniform mat2 s[0].arr[0].m22[0] 0.03 0.04 0.05 0.06
129 uniform mat2 s[0].arr[0].m22[1] 0.07 0.08 0.09 0.10
130 uniform vec2 s[0].arr[1].v2 0.21 0.22
131 uniform mat2 s[0].arr[1].m22[0] 0.23 0.24 0.25 0.26
132 uniform mat2 s[0].arr[1].m22[1] 0.27 0.28 0.29 0.30
133 uniform vec3 s[0].v3 0.31 0.32 0.33
134 uniform int s[0].b 0
136 uniform vec2 s[1].arr[0].v2 0.41 0.42
137 uniform mat2 s[1].arr[0].m22[0] 0.43 0.44 0.45 0.46
138 uniform mat2 s[1].arr[0].m22[1] 0.47 0.48 0.49 0.50
139 uniform vec2 s[1].arr[1].v2 0.61 0.62
140 uniform mat2 s[1].arr[1].m22[0] 0.63 0.64 0.65 0.66
141 uniform mat2 s[1].arr[1].m22[1] 0.67 0.68 0.69 0.70
142 uniform vec3 s[1].v3 0.71 0.72 0.73
143 uniform int s[1].b 2
145 draw arrays GL_TRIANGLE_FAN 0 4
146 probe all rgba 0.0 1.0 0.0 0.0