A few tests to make sure that interface blocks are defined the same during intrastage and interstage linking.
Signed-off-by: Jordan Justen <[email protected]> --- ...s-multiple-vs-member-count-mismatch.shader_test | 41 ++++++++++++++++++++ ...-blocks-vs-fs-member-count-mismatch.shader_test | 38 ++++++++++++++++++ ...-blocks-vs-fs-member-order-mismatch.shader_test | 39 +++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 tests/spec/glsl-1.50/linker/interface-blocks-multiple-vs-member-count-mismatch.shader_test create mode 100644 tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-count-mismatch.shader_test create mode 100644 tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-order-mismatch.shader_test diff --git a/tests/spec/glsl-1.50/linker/interface-blocks-multiple-vs-member-count-mismatch.shader_test b/tests/spec/glsl-1.50/linker/interface-blocks-multiple-vs-member-count-mismatch.shader_test new file mode 100644 index 0000000..6e05e2f --- /dev/null +++ b/tests/spec/glsl-1.50/linker/interface-blocks-multiple-vs-member-count-mismatch.shader_test @@ -0,0 +1,41 @@ +# Tests that a link error occurs when an interface block member's type +# differs between the vertex and fragment shaders. +# +# GLSLangSpec.1.50.11, 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)." +[require] +GLSL >= 1.50 + +[vertex shader] +#version 150 + +out block { + vec4 a; +} vs1_block; + +void main() +{ + gl_Position = vec4(0.0); +} + +[vertex shader] +#version 150 + +out block { + vec4 a; + vec4 b; // b is not present in VS #1 interface block +} vs_block; + +[fragment shader] +#version 150 + +void main() +{ +} + +[test] +link error + diff --git a/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-count-mismatch.shader_test b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-count-mismatch.shader_test new file mode 100644 index 0000000..7702d3b --- /dev/null +++ b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-count-mismatch.shader_test @@ -0,0 +1,38 @@ +# Tests that a link error occurs when an interface block member's type +# differs between the vertex and fragment shaders. +# +# GLSLangSpec.1.50.11, 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)." +[require] +GLSL >= 1.50 + +[vertex shader] +#version 150 + +out block { + vec4 a; +} vs_block; + +void main() +{ + gl_Position = vec4(0.0); +} + +[fragment shader] +#version 150 + +in block { + vec4 a; + vec4 b; // b is not present in VS interface block +} fs_block; + +void main() +{ +} + +[test] +link error + diff --git a/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-order-mismatch.shader_test b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-order-mismatch.shader_test new file mode 100644 index 0000000..2a3c5ec --- /dev/null +++ b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-order-mismatch.shader_test @@ -0,0 +1,39 @@ +# Tests that a link error occurs when an interface block member's type +# differs between the vertex and fragment shaders. +# +# GLSLangSpec.1.50.11, 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)." +[require] +GLSL >= 1.50 + +[vertex shader] +#version 150 + +out block { + vec4 a; + vec4 b; +} vs_block; + +void main() +{ + gl_Position = vec4(0.0); +} + +[fragment shader] +#version 150 + +in block { + vec4 b; // b is the second member in the VS interface block + vec4 a; +} fs_block; + +void main() +{ +} + +[test] +link error + -- 1.7.10.4 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
