diff options
author | Jordan Justen <jordan.l.justen@intel.com> | 2013-03-11 14:36:13 -0700 |
---|---|---|
committer | Jordan Justen <jordan.l.justen@intel.com> | 2013-03-22 21:09:37 -0700 |
commit | 5850e39c4b847ef06550bcee089d729c4dd8c03e (patch) | |
tree | 62d9ad99b8fe543d76a373b2ded814c67ec3c42e | |
parent | c370a5f932267ebbc5118f5285eb74ba1f3b20fc (diff) |
glsl-1.50: add more negative tests for interface block linking
A few tests to make sure that interface blocks are defined
the same during intrastage and interstage linking.
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Stuart Abercrombie <sabercrombie@chromium.org>
3 files changed, 104 insertions, 0 deletions
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 00000000..9b2990ac --- /dev/null +++ b/tests/spec/glsl-1.50/linker/interface-blocks-multiple-vs-member-count-mismatch.shader_test @@ -0,0 +1,35 @@ +# 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] +out block { + vec4 a; +} vs1_block; + +void main() +{ + gl_Position = vec4(0.0); +} + +[vertex shader] +out block { + vec4 a; + vec4 b; // b is not present in VS #1 interface block +} vs_block; + +[fragment shader] +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 00000000..50a867da --- /dev/null +++ b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-count-mismatch.shader_test @@ -0,0 +1,34 @@ +# 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] +out block { + vec4 a; +} vs_block; + +void main() +{ + gl_Position = vec4(0.0); +} + +[fragment shader] +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 00000000..3b33775b --- /dev/null +++ b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-order-mismatch.shader_test @@ -0,0 +1,35 @@ +# 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] +out block { + vec4 a; + vec4 b; +} vs_block; + +void main() +{ + gl_Position = vec4(0.0); +} + +[fragment shader] +in block { + vec4 b; // b is the second member in the VS interface block + vec4 a; +} fs_block; + +void main() +{ +} + +[test] +link error + |