[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