ARB_ubo/referenced-by-shader: pass if shader compiler moves UBOs between shaders
[piglit.git] / tests / spec / glsl-1.50 / linker / interface-vs-array-to-gs-array-unsized.shader_test
blob54498f18002817594cbe416b7d5ee269a4076aba
1 # From the GLSL 1.50 spec, section 4.3.7 (Interface Blocks):
3 #     Matched block names within an interface (as defined above) must
4 #     match in terms of having the same number of declarations with
5 #     the same sequence of types and the same sequence of member
6 #     names, as well as having the same member-wise layout
7 #     qualification (see next section). Furthermore, if a matching
8 #     block is declared as an array, then the array sizes must also
9 #     match (or follow array matching rules for the interface between
10 #     a vertex and a geometry shader).
12 # This test verifies that trying to link a VS output interface array
13 # to an unsized GS input interface array fails, even if the implicit
14 # size of the GS input interface array matches the explicit size of
15 # the VS output interface array.
17 [require]
18 GLSL >= 1.50
20 [vertex shader]
21 out block {
22     vec4 a;
23     vec4 b;
24 } vs_block[3];
26 void main()
28         for(int i = 0; i < 3; i++) {
29                 vs_block[i].a = vec4(1., 0., 0., 1.);
30         }
33 [geometry shader]
34 layout(triangles) in;
35 layout(triangle_strip, max_vertices=3) out;
37 in block {
38     vec4 a;
39     vec4 b;
40 } vs_block[];
42 out vec4 color;
44 void main()
46         for(int i = 0; i < 2; i++) {
47                 color = vs_block[i].a;
48         }
51 [test]
52 link error