[Piglit] [PATCH] arb_tessellation_shader: Add tests covering handling of unsized arrays
Chris Forbes
chrisf at ijw.co.nz
Tue Aug 26 02:08:22 PDT 2014
Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
---
.../compiler/custom-in-length.tesc | 14 ++++++++++++++
.../compiler/custom-in-length.tese | 14 ++++++++++++++
.../compiler/custom-out-length-1.tesc | 16 ++++++++++++++++
.../compiler/custom-out-length-2.tesc | 16 ++++++++++++++++
.../compiler/custom-patch-in-length.tese | 14 ++++++++++++++
.../compiler/custom-patch-out-length-no-conflict.tesc | 16 ++++++++++++++++
.../compiler/custom-patch-out-length.tesc | 16 ++++++++++++++++
.../arb_tessellation_shader/compiler/gl_in-length.tesc | 12 ++++++++++++
.../arb_tessellation_shader/compiler/gl_in-length.tese | 12 ++++++++++++
.../compiler/gl_out-length-before-declared.tesc | 14 ++++++++++++++
.../arb_tessellation_shader/compiler/gl_out-length.tesc | 14 ++++++++++++++
11 files changed, 158 insertions(+)
create mode 100644 tests/spec/arb_tessellation_shader/compiler/custom-in-length.tesc
create mode 100644 tests/spec/arb_tessellation_shader/compiler/custom-in-length.tese
create mode 100644 tests/spec/arb_tessellation_shader/compiler/custom-out-length-1.tesc
create mode 100644 tests/spec/arb_tessellation_shader/compiler/custom-out-length-2.tesc
create mode 100644 tests/spec/arb_tessellation_shader/compiler/custom-patch-in-length.tese
create mode 100644 tests/spec/arb_tessellation_shader/compiler/custom-patch-out-length-no-conflict.tesc
create mode 100644 tests/spec/arb_tessellation_shader/compiler/custom-patch-out-length.tesc
create mode 100644 tests/spec/arb_tessellation_shader/compiler/gl_in-length.tesc
create mode 100644 tests/spec/arb_tessellation_shader/compiler/gl_in-length.tese
create mode 100644 tests/spec/arb_tessellation_shader/compiler/gl_out-length-before-declared.tesc
create mode 100644 tests/spec/arb_tessellation_shader/compiler/gl_out-length.tesc
diff --git a/tests/spec/arb_tessellation_shader/compiler/custom-in-length.tesc b/tests/spec/arb_tessellation_shader/compiler/custom-in-length.tesc
new file mode 100644
index 0000000..9f693a4
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/custom-in-length.tesc
@@ -0,0 +1,14 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+in float xs[];
+
+/* Since xs is unsized, xs.length() is gl_MaxPatchVertices */
+
+int test[(xs.length() == gl_MaxPatchVertices) ? 1 : -1];
diff --git a/tests/spec/arb_tessellation_shader/compiler/custom-in-length.tese b/tests/spec/arb_tessellation_shader/compiler/custom-in-length.tese
new file mode 100644
index 0000000..9f693a4
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/custom-in-length.tese
@@ -0,0 +1,14 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+in float xs[];
+
+/* Since xs is unsized, xs.length() is gl_MaxPatchVertices */
+
+int test[(xs.length() == gl_MaxPatchVertices) ? 1 : -1];
diff --git a/tests/spec/arb_tessellation_shader/compiler/custom-out-length-1.tesc b/tests/spec/arb_tessellation_shader/compiler/custom-out-length-1.tesc
new file mode 100644
index 0000000..a442be9
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/custom-out-length-1.tesc
@@ -0,0 +1,16 @@
+// [config]
+// expect_result: pass
+// 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 float xs[];
+
+/* xs is sized by the preceding output layout declaration */
+
+int test[(xs.length() == 3) ? 1 : -1];
diff --git a/tests/spec/arb_tessellation_shader/compiler/custom-out-length-2.tesc b/tests/spec/arb_tessellation_shader/compiler/custom-out-length-2.tesc
new file mode 100644
index 0000000..c13b176
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/custom-out-length-2.tesc
@@ -0,0 +1,16 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+out float xs[];
+
+layout(vertices = 3) out;
+
+/* xs is sized by the preceding output layout declaration */
+
+int test[(xs.length() == 3) ? 1 : -1];
diff --git a/tests/spec/arb_tessellation_shader/compiler/custom-patch-in-length.tese b/tests/spec/arb_tessellation_shader/compiler/custom-patch-in-length.tese
new file mode 100644
index 0000000..69a04c9
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/custom-patch-in-length.tese
@@ -0,0 +1,14 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+patch in float xs[];
+
+/* xs is a patch input, so is not sized to gl_MaxPatchVertices */
+
+int test[xs.length()];
diff --git a/tests/spec/arb_tessellation_shader/compiler/custom-patch-out-length-no-conflict.tesc b/tests/spec/arb_tessellation_shader/compiler/custom-patch-out-length-no-conflict.tesc
new file mode 100644
index 0000000..55c46c0
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/custom-patch-out-length-no-conflict.tesc
@@ -0,0 +1,16 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+layout(vertices = 3) out;
+
+/* xs is not a per-vertex output, so there is no conflict with the
+ * output declaration.
+ */
+
+patch out float xs[4];
diff --git a/tests/spec/arb_tessellation_shader/compiler/custom-patch-out-length.tesc b/tests/spec/arb_tessellation_shader/compiler/custom-patch-out-length.tesc
new file mode 100644
index 0000000..ce8f9ec
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/custom-patch-out-length.tesc
@@ -0,0 +1,16 @@
+// [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;
+
+patch out float xs[];
+
+/* xs is not a per-vertex output, so is not sized by the layout declaration! */
+
+int test[xs.length()];
diff --git a/tests/spec/arb_tessellation_shader/compiler/gl_in-length.tesc b/tests/spec/arb_tessellation_shader/compiler/gl_in-length.tesc
new file mode 100644
index 0000000..30e5395
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/gl_in-length.tesc
@@ -0,0 +1,12 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+/* gl_in.length() is gl_MaxPatchVertices */
+
+int test[(gl_in.length() == gl_MaxPatchVertices) ? 1 : -1];
diff --git a/tests/spec/arb_tessellation_shader/compiler/gl_in-length.tese b/tests/spec/arb_tessellation_shader/compiler/gl_in-length.tese
new file mode 100644
index 0000000..30e5395
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/gl_in-length.tese
@@ -0,0 +1,12 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+/* gl_in.length() is gl_MaxPatchVertices */
+
+int test[(gl_in.length() == gl_MaxPatchVertices) ? 1 : -1];
diff --git a/tests/spec/arb_tessellation_shader/compiler/gl_out-length-before-declared.tesc b/tests/spec/arb_tessellation_shader/compiler/gl_out-length-before-declared.tesc
new file mode 100644
index 0000000..044eba9
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/gl_out-length-before-declared.tesc
@@ -0,0 +1,14 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+/* Must not use gl_out.length() before it is established by the layout declaration */
+
+int test[gl_out.length()];
+
+out (vertices = 3);
diff --git a/tests/spec/arb_tessellation_shader/compiler/gl_out-length.tesc b/tests/spec/arb_tessellation_shader/compiler/gl_out-length.tesc
new file mode 100644
index 0000000..bb56d24
--- /dev/null
+++ b/tests/spec/arb_tessellation_shader/compiler/gl_out-length.tesc
@@ -0,0 +1,14 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// require_extensions: GL_ARB_tessellation_shader
+// [end config]
+
+#version 150
+#extension GL_ARB_tessellation_shader: require
+
+layout(vertices = 3) out;
+
+/* gl_out is sized by the preceding output layout declaration */
+
+int test[(gl_out.length() == 3) ? 1 : -1];
--
2.0.4
More information about the Piglit
mailing list