ARB_ubo/referenced-by-shader: pass if shader compiler moves UBOs between shaders
[piglit.git] / tests / spec / glsl-1.50 / linker / unsized-in-named-interface-block-gs.shader_test
blob43b267facadde79d41d59fdb1db0aadfbcb6e15e
1 # Test that when an interface block contains members which are unsized
2 # arrays, the standard rules are applied in order to determine the
3 # array sizes (namely, the sizes should be inferred from the maximum
4 # array element accessed).
6 # In this test, there is a vertex shader output which uses an array
7 # size of 3, and a geometry shader input that uses an array size of 2,
8 # so link error should be produced.
10 [require]
11 GLSL >= 1.50
13 [vertex shader]
14 #version 150
15 in vec4 piglit_vertex;
16 out blk {
17   float foo[];
18 } ifc_name;
20 void main()
22   ifc_name.foo[0] = 0.0;
23   ifc_name.foo[1] = 0.0;
24   ifc_name.foo[2] = 0.0;
25   gl_Position = piglit_vertex;
28 [geometry shader]
29 #version 150
30 layout(triangles) in;
31 layout(triangle_strip, max_vertices = 3) out;
32 in blk {
33   float foo[];
34 } ifc_name[];
35 out vec2 bar;
37 void main()
39   for (int i = 0; i < 3; i++) {
40     gl_Position = gl_in[i].gl_Position;
41     bar = vec2(ifc_name[i].foo[0], ifc_name[i].foo[1]);
42     EmitVertex();
43   }
46 [fragment shader]
47 #version 150
48 in vec2 bar;
50 void main()
52   gl_FragColor = vec4(bar, 0.0, 1.0);
55 [test]
56 link error