[Piglit] [PATCH V4 08/11] arb_arrays_of_arrays: redeclaration and subroutine tests
Timothy Arceri
t_arceri at yahoo.com.au
Sat Jun 14 05:36:00 PDT 2014
Test results are from the following hardware/driver combinations:
AMD Radeon HD 6670 - Catalyst 13.251 OpenGL 4.3
Nvidia GeForce 210 - NVIDIA 331.20 OpenGL 3.3
Intel Ivy Bridge - Mesa 10.1(815e064) with ARB_arrays_of_arrays enabled
redeclaration-initializer.vert
AMD: fail
Nvida: pass
Intel: pass
redeclaration-too-small.vert
AMD: pass
Nvida: fail (Nvidia only warns for outofbounds)
Intel: pass
redeclaration-too-small2.vert
AMD: pass
Nvida: fail (Nvidia only warns for outofbounds)
Intel: pass
redeclaration.vert
AMD: fail
Nvida: pass
Intel: pass
redeclaration2.vert
AMD: pass
Nvida: pass
Intel: pass
subroutine.vert
AMD: pass
Nvida: skip
Intel: skip
Signed-off-by: Timothy Arceri <t_arceri at yahoo.com.au>
---
.../compiler/redeclaration-initializer.vert | 31 ++++++++++++++++++
.../compiler/redeclaration-too-small.vert | 29 +++++++++++++++++
.../compiler/redeclaration-too-small2.vert | 23 ++++++++++++++
.../compiler/redeclaration.vert | 29 +++++++++++++++++
.../compiler/redeclaration2.vert | 29 +++++++++++++++++
.../arb_arrays_of_arrays/compiler/subroutine.vert | 37 ++++++++++++++++++++++
6 files changed, 178 insertions(+)
create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/redeclaration-initializer.vert
create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/redeclaration-too-small.vert
create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/redeclaration-too-small2.vert
create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/redeclaration.vert
create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/redeclaration2.vert
create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/subroutine.vert
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/redeclaration-initializer.vert b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration-initializer.vert
new file mode 100644
index 0000000..8108cd0
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration-initializer.vert
@@ -0,0 +1,31 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ *
+ * From page 19 (page 25 of the PDF) of the GLSL 1.20 spec:
+ *
+ * "It is legal to declare an array without a size and then later
+ * re-declare the same name as an array of the same type and specify a
+ * size."
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+float a_function(float[3][2]);
+
+void main()
+{
+ float [][2] an_array;
+
+ an_array[0][1] = 0.0;
+ an_array[1][1] = 1.0;
+ an_array[2][0] = 2.0;
+
+ float [][2] an_array = float[][2](float[2](0.0, 1.0),
+ float[2](0.0, 1.0),
+ float[2](0.0, 1.0));
+
+ gl_Position = vec4(a_function(an_array));
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/redeclaration-too-small.vert b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration-too-small.vert
new file mode 100644
index 0000000..deebdb3
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration-too-small.vert
@@ -0,0 +1,29 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ *
+ * From page 19 (page 25 of the PDF) of the GLSL 1.20 spec:
+ *
+ * "It is legal to declare an array without a size and then later
+ * re-declare the same name as an array of the same type and specify a
+ * size."
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+float a_function(float[2][3]);
+
+void main()
+{
+ float [][3] an_array;
+
+ an_array[0][2] = 0.0;
+ an_array[1][2] = 1.0;
+ an_array[2][2] = 2.0;
+
+ float [2][3] an_array;
+
+ gl_Position = vec4(a_function(an_array));
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/redeclaration-too-small2.vert b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration-too-small2.vert
new file mode 100644
index 0000000..14a78a2
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration-too-small2.vert
@@ -0,0 +1,23 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+float x[][2];
+
+void foo() { x[3][1] = 2.; }
+
+// The left most array must be at least 4 elements because of
+// the previous access to x[3][1].
+float x[][2] = float[][2](float[2](1., 2.),
+ float[2](1., 2.));
+
+void main()
+{
+ foo();
+ gl_Position = vec4(x[0][0]);
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/redeclaration.vert b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration.vert
new file mode 100644
index 0000000..57bf467
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration.vert
@@ -0,0 +1,29 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ *
+ * From page 19 (page 25 of the PDF) of the GLSL 1.20 spec:
+ *
+ * "It is legal to declare an array without a size and then later
+ * re-declare the same name as an array of the same type and specify a
+ * size."
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+float a_function(float[3][3]);
+
+void main()
+{
+ float [][3] an_array;
+
+ an_array[0][2] = 0.0;
+ an_array[1][2] = 1.0;
+ an_array[2][2] = 2.0;
+
+ float [3][3] an_array;
+
+ gl_Position = vec4(a_function(an_array));
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/redeclaration2.vert b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration2.vert
new file mode 100644
index 0000000..b31500a
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/redeclaration2.vert
@@ -0,0 +1,29 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ *
+ * From page 19 (page 25 of the PDF) of the GLSL 1.20 spec:
+ *
+ * "It is legal to declare an array without a size and then later
+ * re-declare the same name as an array of the same type and specify a
+ * size."
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+float x[][2];
+
+void foo() { x[1][1] = 2.; }
+
+// The left most array must be at least 2 elements because
+// of the previous access to x[2][1].
+float x[][2] = float[][2](float[2](1., 2.),
+ float[2](1., 2.));
+
+void main()
+{
+ foo();
+ gl_Position = vec4(x[0][0]);
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/subroutine.vert b/tests/spec/arb_arrays_of_arrays/compiler/subroutine.vert
new file mode 100644
index 0000000..f8d1402
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/subroutine.vert
@@ -0,0 +1,37 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.50
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * require_extensions: GL_ARB_shader_subroutine
+ * require_extensions: GL_ARB_gpu_shader5
+ * [end config]
+ */
+#version 150
+#extension GL_ARB_arrays_of_arrays: enable
+#extension GL_ARB_shader_subroutine: enable
+#extension GL_ARB_gpu_shader5: enable
+
+subroutine vec4[3][2] basicSubRoutine();
+
+subroutine (basicSubRoutine) vec4[3][2] option1() {
+ vec4 a[3][2] = vec4[3][2](vec4[2](vec4(0.0), vec4(1.0)),
+ vec4[2](vec4(0.0), vec4(1.0)),
+ vec4[2](vec4(0.0), vec4(1.0)));
+ return a;
+}
+
+subroutine (basicSubRoutine) vec4[3][2] option2() {
+ vec4 a[3][2] = vec4[3][2](vec4[2](vec4(1.0), vec4(0.0)),
+ vec4[2](vec4(1.0), vec4(0.0)),
+ vec4[2](vec4(1.0), vec4(0.0)));
+ return a;
+}
+
+subroutine uniform basicSubRoutine subRoutineSelection;
+
+void main()
+{
+ vec4[3][2] a = subRoutineSelection();
+
+ gl_Position = a[0][0];
+}
--
1.9.3
More information about the Piglit
mailing list