[Piglit] [PATCH 1/2] glsl-1.50: add more negative tests for interface block linking

Jordan Justen jordan.l.justen at intel.com
Tue Mar 12 13:28:47 PDT 2013


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 at intel.com>
---
 ...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



More information about the Piglit mailing list