ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / glsl-1.50 / linker / interface-vs-array-to-fs-unnamed.shader_test
blobc166ecebf4cb34aa70acb4cb13e35e6ed6005769
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 unnamed FS input interface fails.
15 [require]
16 GLSL >= 1.50
18 [vertex shader]
19 in vec4 piglit_vertex;
21 out block {
22   vec4 a;
23   vec4 b;
24 } inst[2];
26 out float ref;
28 void main()
30   gl_Position = piglit_vertex;
31   ref = 10.0 * float(gl_VertexID);
32   inst[0].a = ref + vec4(0.0, 1.0, 2.0, 3.0);
33   inst[0].b = ref + vec4(4.0, 5.0, 6.0, 7.0);
34   inst[1].a = ref + vec4(0.0, 1.0, 2.0, 3.0);
35   inst[1].b = ref + vec4(4.0, 5.0, 6.0, 7.0);
38 [fragment shader]
39 in block {
40   vec4 a;
41   vec4 b;
44 in float ref;
46 void main()
48   bool ok = true;
49   if (distance(a, ref + vec4(0.0, 1.0, 2.0, 3.0)) > 1.0e-5)
50     ok = false;
51   if (distance(b, ref + vec4(4.0, 5.0, 6.0, 7.0)) > 1.0e-5)
52     ok = false;
53   gl_FragColor = ok ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
56 [test]
57 link error