[Piglit] [PATCH 2/3] glsl-1.50 compiler: Test fragment and vertex shader input/output can be structs

Nicholas Mack nichmack at gmail.com
Tue Jul 16 08:49:31 PDT 2013


---
 tests/spec/glsl-1.50/compiler/input-struct.frag  | 24 +++++++++++++
 tests/spec/glsl-1.50/compiler/output-struct.vert | 46 ++++++++++++++++++++++++
 2 files changed, 70 insertions(+)
 create mode 100644 tests/spec/glsl-1.50/compiler/input-struct.frag
 create mode 100644 tests/spec/glsl-1.50/compiler/output-struct.vert

diff --git a/tests/spec/glsl-1.50/compiler/input-struct.frag b/tests/spec/glsl-1.50/compiler/input-struct.frag
new file mode 100644
index 0000000..2420658
--- /dev/null
+++ b/tests/spec/glsl-1.50/compiler/input-struct.frag
@@ -0,0 +1,24 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// check_link: false
+// [end config]
+
+// Section 4.3.4 (Inputs) of GLSL 1.50 spec states:
+//	"Fragment inputs can only be signed and
+//	unsigned integers and integer vectors, float, floating-point 
+//	vectors, matrices, or arrays or structures of
+//	these."
+#version 150
+
+flat in struct A {
+	int x;
+	float y;
+	vec3 z;
+	uvec4 w;
+	mat3 v;
+} a;
+
+void main () {
+	gl_FragColor = vec4(a.x + a.y + a.z.x + a.w.x + a.v[0].x);
+}
diff --git a/tests/spec/glsl-1.50/compiler/output-struct.vert b/tests/spec/glsl-1.50/compiler/output-struct.vert
new file mode 100644
index 0000000..6a129d2
--- /dev/null
+++ b/tests/spec/glsl-1.50/compiler/output-struct.vert
@@ -0,0 +1,46 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.50
+// check_link: false
+// [end config]
+//
+//Tests compiler/parser: output of vertex shader may be struct
+
+/*
+* GLSLLangSpec.1.50.09 4.3.6 Outputs:
+* Vertex and geometry output variables output per-vertex data and are declared
+* using the out storage qualifier, the centroid out storage qualifier, or the 
+* deprecated varying storage qualifier. They can only be float, floating-point
+* vectors, matrices, signed or unsigned integers or integer vectors, or arrays
+* or structures of any these.
+*/
+
+#version 150
+
+in int a;
+in float b;
+in vec3 c;
+in mat4 d;
+
+out struct foo
+{
+	int a;
+	float b;
+	vec3 c;
+	mat4 d;
+} s;
+
+void main()
+{
+	s.a = a;
+	s.b = b;
+	s.c = c;
+	s.d = d;
+
+	gl_Position = vec4(
+			s.a +
+			s.b +
+			s.c.x +
+			s.d[0].x
+			);
+}
-- 
1.8.3.1



More information about the Piglit mailing list