<div dir="ltr">On 15 July 2013 16:12, Steve Miller <span dir="ltr"><<a href="mailto:dervishx@gmail.com" target="_blank">dervishx@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">Test all types.<br>
---<br>
 .../glsl-1.50/compiler/input-arrays-float.vert     | 20 +++++++++++++<br>
 .../spec/glsl-1.50/compiler/input-arrays-int.vert  | 31 +++++++++++++++++++<br>
 .../spec/glsl-1.50/compiler/input-arrays-mat.vert  | 35 ++++++++++++++++++++++<br>
 .../spec/glsl-1.50/compiler/input-arrays-uint.vert | 26 ++++++++++++++++<br>
 4 files changed, 112 insertions(+)<br>
 create mode 100644 tests/spec/glsl-1.50/compiler/input-arrays-float.vert<br>
 create mode 100644 tests/spec/glsl-1.50/compiler/input-arrays-int.vert<br>
 create mode 100644 tests/spec/glsl-1.50/compiler/input-arrays-mat.vert<br>
 create mode 100644 tests/spec/glsl-1.50/compiler/input-arrays-uint.vert<br>
<br>
diff --git a/tests/spec/glsl-1.50/compiler/input-arrays-float.vert b/tests/spec/glsl-1.50/compiler/input-arrays-float.vert<br>
new file mode 100644<br>
index 0000000..f5cf79a<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.50/compiler/input-arrays-float.vert<br>
@@ -0,0 +1,20 @@<br>
+// [config]<br>
+// expect_result: pass<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+<br>
+#version 150<br>
+<br>
+in float a[2];<br>
+in vec2 b[2];<br>
+in vec3 c[2];<br>
+in vec4 d[2];<br>
+<br>
+void main()<br>
+{<br>
+       gl_Position = vec4(a[0] + a[1] +<br>
+                       b[0].x + b[1].x +<br>
+                       c[0].x + c[1].x +<br>
+                       d[0].x + d[1].x);<br>
+}<br>
diff --git a/tests/spec/glsl-1.50/compiler/input-arrays-int.vert b/tests/spec/glsl-1.50/compiler/input-arrays-int.vert<br>
new file mode 100644<br>
index 0000000..b8eb5d4<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.50/compiler/input-arrays-int.vert<br>
@@ -0,0 +1,31 @@<br>
+// [config]<br>
+// expect_result: pass<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+//<br>
+// Tests that arrays can be inputs to the vertex shader<br>
+/*<br>
+* GLSLLangSpec.1.50.09 Inputs:<br>
+*<br>
+* Vertex shader inputs can only be float, floating-point<br>
+* vectors, matrices, signed and unsigned integers and integer vectors.<br>
+* Vertex shader inputs can also form arrays of these types, but not<br>
+* structures.<br>
+*<br>
+*/<br>
+<br>
+#version 150<br>
+                       //slots<br>
+in int a[2];           //2<br>
+in ivec2 b[2];         //4<br>
+in ivec3 c[2];         //6<br>
+in ivec4 d[2];         //8<br></div></div></blockquote><div><br></div><div>Where vertex shader inputs are concerned, the number of slots used is actually detemined by the number of vectors, so each of the above variables only takes up 2 slots.<br>
<br></div><div>Which is fortunate, because this makes the total number of slots used by your tests 8 instead of 20, and MAX_VERTEX_ATTRIBS isn't guaranteed to be greater than 16 :)<br></div><br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">
+<br>
+void main()<br>
+{<br>
+       gl_Position = vec4(a[0] + a[1] +<br>
+                       b[0].x + b[1].x +<br>
+                       c[0].x + c[1].x +<br>
+                       d[0].x + d[1].x);<br>
+}<br>
diff --git a/tests/spec/glsl-1.50/compiler/input-arrays-mat.vert b/tests/spec/glsl-1.50/compiler/input-arrays-mat.vert<br>
new file mode 100644<br>
index 0000000..370cf2a<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.50/compiler/input-arrays-mat.vert<br>
@@ -0,0 +1,35 @@<br>
+// [config]<br>
+// expect_result: pass<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+//<br>
+// Tests that arrays (of matrices) can be inputs to the vertex shader<br>
+/*<br>
+* GLSLLangSpec.1.50.09 Inputs:<br>
+*<br>
+* Vertex shader inputs can only be float, floating-point<br>
+* vectors, matrices, signed and unsigned integers and integer vectors.<br>
+* Vertex shader inputs can also form arrays of these types, but not<br>
+* structures.<br>
+*<br>
+*/<br>
+<br>
+#version 150<br>
+<br>
+in mat2 a[2];          //2x2x2         8<br>
+in mat3 b[2];          //3x2x2         12<br>
+in mat4 c[2];          //4x2x2         16<br>
+//                             =       36<br></div></div></blockquote><div><br></div><div>For vertex shader input matrices, each column takes up a separate slot, so the number of slots in use is actually 2*2 + 3*2 + 4*2 = 18.  That's a problem since MAX_VERTEX_ATTRIBS might be as small as 16.<br>
<br></div><div>I'd recommend just dropping "in mat2 a[2]" from the test.  If arrays of mat3's work and arrays of mat4's work, then arrays of mat2's are almost certain to work too.<br></div><div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
+<br>
+void main()<br>
+{<br>
+       gl_Position = vec4(<br>
+                       a[0][0].x + a[0][1].x +<br>
+                       a[1][0].x + a[1][1].x +<br>
+                       b[0][0].x + b[0][1].x +<br>
+                       b[1][0].x + b[1][1].x +<br>
+                       c[0][0].x + c[0][1].x +<br>
+                       c[1][0].x + c[1][1].x<br>
+                       );<br>
+}<br>
diff --git a/tests/spec/glsl-1.50/compiler/input-arrays-uint.vert b/tests/spec/glsl-1.50/compiler/input-arrays-uint.vert<br>
new file mode 100644<br>
index 0000000..0d834b4<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.50/compiler/input-arrays-uint.vert<br>
@@ -0,0 +1,26 @@<br>
+// [config]<br>
+// expect_result: pass<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+<br>
+// Section 4.3.4 (Inputs) of GLSL 1.50 spec states:<br>
+//     "Vertex shader inputs can only be float, floating-point<br>
+//     vectors, matrices, signed and unsigned integers and integer<br>
+//     vectors. Vertex shader inputs can also form<br>
+//     arrays of these types, but not structures."<br>
+<br>
+#version 150<br>
+<br>
+in uint  a[2];<br>
+in uvec2 b[2];<br>
+in uvec3 c[2];<br>
+in uvec4 d[2];<br>
+<br>
+void main()<br>
+{<br>
+    gl_Position = vec4(a[0] + a[1]<br>
+                       + b[0].x + b[1].x<br>
+                       + c[0].x + c[1].x<br>
+                       + d[0].x + d[1].x);<br>
+}<br>
--<br>
1.8.3.1<br>
<br>
</div></div>_______________________________________________<br>
Piglit mailing list<br>
<a href="mailto:Piglit@lists.freedesktop.org">Piglit@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/piglit" target="_blank">http://lists.freedesktop.org/mailman/listinfo/piglit</a><br>
</blockquote></div><br></div></div>