[Piglit] [PATCH 1/2] GLSL-1.50 compiler: Test that vertex shader inputs can be arrays

Steve Miller dervishx at gmail.com
Wed Jul 24 15:02:56 PDT 2013


 * GLSLLangSpec.1.50.09 4.3.4 Inputs:
 *  Vertex shader inputs can only be float, floating-point vectors, matrices,
 *  signed and unsigned integers and integer vectors.Vertex shader inputs can
 *  also form arrays of these types, but not structures
---
 .../glsl-1.50/compiler/input-arrays-float.vert     | 20 ++++++++++++++
 .../spec/glsl-1.50/compiler/input-arrays-int.vert  | 31 ++++++++++++++++++++++
 .../spec/glsl-1.50/compiler/input-arrays-mat.vert  | 31 ++++++++++++++++++++++
 .../spec/glsl-1.50/compiler/input-arrays-uint.vert | 26 ++++++++++++++++++
 4 files changed, 108 insertions(+)
 create mode 100644 tests/spec/glsl-1.50/compiler/input-arrays-float.vert
 create mode 100644 tests/spec/glsl-1.50/compiler/input-arrays-int.vert
 create mode 100644 tests/spec/glsl-1.50/compiler/input-arrays-mat.vert
 create mode 100644 tests/spec/glsl-1.50/compiler/input-arrays-uint.vert

diff --git a/tests/spec/glsl-1.50/compiler/input-arrays-float.vert b/tests/spec/glsl-1.50/compiler/input-arrays-float.vert
new file mode 100644
index 0000000..f5cf79a
--- /dev/null
+++ b/tests/spec/glsl-1.50/compiler/input-arrays-float.vert
@@ -0,0 +1,20 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// check_link: false
+// [end config]
+
+#version 150
+
+in float a[2];
+in vec2 b[2];
+in vec3 c[2]; 
+in vec4 d[2]; 
+
+void main()
+{
+	gl_Position = vec4(a[0] + a[1] + 
+			b[0].x + b[1].x +
+			c[0].x + c[1].x +
+			d[0].x + d[1].x); 
+}
diff --git a/tests/spec/glsl-1.50/compiler/input-arrays-int.vert b/tests/spec/glsl-1.50/compiler/input-arrays-int.vert
new file mode 100644
index 0000000..b155a00
--- /dev/null
+++ b/tests/spec/glsl-1.50/compiler/input-arrays-int.vert
@@ -0,0 +1,31 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// check_link: false
+// [end config]
+//
+// Tests that arrays can be inputs to the vertex shader
+/*
+* GLSLLangSpec.1.50.09 Inputs:
+*
+* Vertex shader inputs can only be float, floating-point
+* vectors, matrices, signed and unsigned integers and integer vectors. 
+* Vertex shader inputs can also form arrays of these types, but not 
+* structures.
+*
+*/
+
+#version 150
+
+in int a[2];
+in ivec2 b[2];
+in ivec3 c[2];
+in ivec4 d[2];
+
+void main()
+{
+	gl_Position = vec4(a[0] + a[1] +
+			b[0].x + b[1].x +
+			c[0].x + c[1].x +
+			d[0].x + d[1].x);
+}
diff --git a/tests/spec/glsl-1.50/compiler/input-arrays-mat.vert b/tests/spec/glsl-1.50/compiler/input-arrays-mat.vert
new file mode 100644
index 0000000..c9c0f98
--- /dev/null
+++ b/tests/spec/glsl-1.50/compiler/input-arrays-mat.vert
@@ -0,0 +1,31 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// check_link: false
+// [end config]
+//
+// Tests that arrays (of matrices) can be inputs to the vertex shader
+/*
+* GLSLLangSpec.1.50.09 Inputs:
+*
+* Vertex shader inputs can only be float, floating-point
+* vectors, matrices, signed and unsigned integers and integer vectors. 
+* Vertex shader inputs can also form arrays of these types, but not 
+* structures.
+*
+*/
+
+#version 150
+
+in mat3 a[2];
+in mat4 b[2];
+
+void main()
+{
+	gl_Position = vec4(
+			a[0][0].x + a[0][1].x +
+			a[1][0].x + a[1][1].x +
+			b[0][0].x + b[0][1].x +
+			b[1][0].x + b[1][1].x 
+			);
+}
diff --git a/tests/spec/glsl-1.50/compiler/input-arrays-uint.vert b/tests/spec/glsl-1.50/compiler/input-arrays-uint.vert
new file mode 100644
index 0000000..0d834b4
--- /dev/null
+++ b/tests/spec/glsl-1.50/compiler/input-arrays-uint.vert
@@ -0,0 +1,26 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// check_link: false
+// [end config]
+
+// Section 4.3.4 (Inputs) of GLSL 1.50 spec states:
+//	"Vertex shader inputs can only be float, floating-point
+//	vectors, matrices, signed and unsigned integers and integer 
+//	vectors. Vertex shader inputs can also form
+//	arrays of these types, but not structures."
+
+#version 150
+
+in uint  a[2];
+in uvec2 b[2];
+in uvec3 c[2];
+in uvec4 d[2];
+
+void main()
+{
+    gl_Position = vec4(a[0] + a[1]
+			+ b[0].x + b[1].x
+			+ c[0].x + c[1].x
+			+ d[0].x + d[1].x);
+}
-- 
1.8.3.1



More information about the Piglit mailing list