1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
# From the GLSL 1.50 spec, section 4.3.7 (Interface Blocks):
#
# Matched block names within an interface (as defined above) must
# match in terms of having the same number of declarations with
# the same sequence of types and the same sequence of member
# names, as well as having the same member-wise layout
# qualification (see next section). Furthermore, if a matching
# block is declared as an array, then the array sizes must also
# match (or follow array matching rules for the interface between
# a vertex and a geometry shader).
#
# This test verifies that trying to link an unnamed VS output interface
# to an unnamed FS input interface succeeds.
[require]
GLSL >= 1.50
[vertex shader]
in vec4 piglit_vertex;
out block {
vec4 a;
vec4 b;
};
out float ref;
void main()
{
gl_Position = piglit_vertex;
ref = 10.0 * float(gl_VertexID);
a = ref + vec4(0.0, 1.0, 2.0, 3.0);
b = ref + vec4(4.0, 5.0, 6.0, 7.0);
}
[fragment shader]
in block {
vec4 a;
vec4 b;
};
in float ref;
void main()
{
bool ok = true;
if (distance(a, ref + vec4(0.0, 1.0, 2.0, 3.0)) > 1.0e-5)
ok = false;
if (distance(b, ref + vec4(4.0, 5.0, 6.0, 7.0)) > 1.0e-5)
ok = false;
gl_FragColor = ok ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
}
[test]
clear color 0.0 0.0 0.0 0.0
clear
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0
|