Signed-off-by: Chris Forbes <[email protected]>
---
 .../compiler/custom-block-out-indexing-const.tesc  | 24 +++++++++++++++++++++
 .../compiler/custom-out-indexing-const.tesc        | 22 +++++++++++++++++++
 .../compiler/custom-out-indexing-strict.tesc       | 25 ++++++++++++++++++++++
 .../compiler/custom-out-indexing-uniform.tesc      | 23 ++++++++++++++++++++
 .../compiler/gl_out-indexing-const.tesc            | 20 +++++++++++++++++
 .../compiler/gl_out-indexing-strict.tesc           | 24 +++++++++++++++++++++
 .../compiler/gl_out-indexing-uniform.tesc          | 21 ++++++++++++++++++
 7 files changed, 159 insertions(+)
 create mode 100644 
tests/spec/arb_tessellation_shader/compiler/custom-block-out-indexing-const.tesc
 create mode 100644 
tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-const.tesc
 create mode 100644 
tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-strict.tesc
 create mode 100644 
tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-uniform.tesc
 create mode 100644 
tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-const.tesc
 create mode 100644 
tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-strict.tesc
 create mode 100644 
tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-uniform.tesc

diff --git 
a/tests/spec/arb_tessellation_shader/compiler/custom-block-out-indexing-const.tesc
 
b/tests/spec/arb_tessellation_shader/compiler/custom-block-out-indexing-const.tesc
new file mode 100644
index 0000000..e7a44e0
--- /dev/null
+++ 
b/tests/spec/arb_tessellation_shader/compiler/custom-block-out-indexing-const.tesc
@@ -0,0 +1,24 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+layout(vertices = 3) out;
+
+out block {
+       vec4 y[4];
+} x[];
+
+/* If a per-vertex output variable is used as an l-value, it is an
+ * error if the expression indicating the vertex number is not the
+ * identifier "gl_InvocationID".
+ */
+
+void main()
+{
+       x[0].y[0] = vec4(0);
+}
diff --git 
a/tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-const.tesc 
b/tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-const.tesc
new file mode 100644
index 0000000..fb8ff88
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-const.tesc
@@ -0,0 +1,22 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+layout(vertices = 3) out;
+
+out vec4 x[];
+
+/* If a per-vertex output variable is used as an l-value, it is an
+ * error if the expression indicating the vertex number is not the
+ * identifier "gl_InvocationID".
+ */
+
+void main()
+{
+       x[0] = vec4(0);
+}
diff --git 
a/tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-strict.tesc 
b/tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-strict.tesc
new file mode 100644
index 0000000..92461c5
--- /dev/null
+++ 
b/tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-strict.tesc
@@ -0,0 +1,25 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+layout(vertices = 3) out;
+out vec4 x[];
+
+/* If a per-vertex output variable is used as an l-value, it is an
+ * error if the expression indicating the vertex number is not the
+ * identifier "gl_InvocationID".
+ *
+ * This test interprets the requirement strictly -- even though `n`
+ * will take the correct value, this is not allowed.
+ */
+
+void main()
+{
+       int n = gl_InvocationID;
+       x[n] = vec4(0);
+}
diff --git 
a/tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-uniform.tesc 
b/tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-uniform.tesc
new file mode 100644
index 0000000..71e0cd1
--- /dev/null
+++ 
b/tests/spec/arb_tessellation_shader/compiler/custom-out-indexing-uniform.tesc
@@ -0,0 +1,23 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+layout(vertices = 3) out;
+
+uniform int n;
+out vec4 x[];
+
+/* If a per-vertex output variable is used as an l-value, it is an
+ * error if the expression indicating the vertex number is not the
+ * identifier "gl_InvocationID".
+ */
+
+void main()
+{
+       x[n] = vec4(0);
+}
diff --git 
a/tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-const.tesc 
b/tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-const.tesc
new file mode 100644
index 0000000..e1a424e
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-const.tesc
@@ -0,0 +1,20 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+layout(vertices = 3) out;
+
+/* If a per-vertex output variable is used as an l-value, it is an
+ * error if the expression indicating the vertex number is not the
+ * identifier "gl_InvocationID".
+ */
+
+void main()
+{
+       gl_out[0].gl_Position = vec4(0);
+}
diff --git 
a/tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-strict.tesc 
b/tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-strict.tesc
new file mode 100644
index 0000000..a328b57
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-strict.tesc
@@ -0,0 +1,24 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+layout(vertices = 3) out;
+
+/* If a per-vertex output variable is used as an l-value, it is an
+ * error if the expression indicating the vertex number is not the
+ * identifier "gl_InvocationID".
+ *
+ * This test interprets the requirement strictly -- even though `n`
+ * will take the correct value, this is not allowed.
+ */
+
+void main()
+{
+       int n = gl_InvocationID;
+       gl_out[n].gl_Position = vec4(0);
+}
diff --git 
a/tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-uniform.tesc 
b/tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-uniform.tesc
new file mode 100644
index 0000000..1bc8f65
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/gl_out-indexing-uniform.tesc
@@ -0,0 +1,21 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+layout(vertices = 3) out;
+uniform int n;
+
+/* If a per-vertex output variable is used as an l-value, it is an
+ * error if the expression indicating the vertex number is not the
+ * identifier "gl_InvocationID".
+ */
+
+void main()
+{
+       gl_out[n].gl_Position = vec4(0);
+}
-- 
2.1.0

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to