<div dir="ltr">On 31 May 2013 14:49, Fabian Bieler <span dir="ltr"><<a href="mailto:fabianbieler@fastmail.fm" target="_blank">fabianbieler@fastmail.fm</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Test basic indexing operations with 2d arrays.<br>
---<br>
 .../arb_geometry_shader4/compiler/2darray01.geom   | 63 +++++++++++++++++++<br>
 .../linker/2darray01.shader_test                   | 70 ++++++++++++++++++++++<br>
 2 files changed, 133 insertions(+)<br>
 create mode 100644 tests/spec/arb_geometry_shader4/compiler/2darray01.geom<br>
 create mode 100644 tests/spec/arb_geometry_shader4/linker/2darray01.shader_test<br></blockquote><div><br></div><div>We're trying to move away from the convention of naming tests with numbers like "01", and instead use more descriptive names.  I'd recommend naming these something like "2darray_basic.geom" and "2darray_basic.shader_test".  A similar comment applies to patches 16 and 17.<br>


</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
diff --git a/tests/spec/arb_geometry_shader4/compiler/2darray01.geom b/tests/spec/arb_geometry_shader4/compiler/2darray01.geom<br>
new file mode 100644<br>
index 0000000..953d8af<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/compiler/2darray01.geom<br>
@@ -0,0 +1,63 @@<br>
+// [config]<br>
+// expect_result: pass<br>
+// glsl_version: 1.20<br>
+// require_extensions: GL_ARB_geometry_shader4<br>
+// [end config]<br>
+<br>
+#version 120<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+uniform int zero;<br>
+<br>
+varying in float gs_input1[][6];<br>
+varying in float gs_input2[gl_VerticesIn][6];<br>
+<br>
+varying out float scalar;<br>
+varying out float array[6];<br>
+<br>
+float fs(float input_)<br>
+{<br>
+       return input_;<br>
+}<br>
+<br>
+float fa(float input_[6])<br>
+{<br>
+       return input_[zero];<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+       //check implicitly sized input<br>
+       {<br>
+       //check assignments to local variables<br>
+       float a1[] = gs_input1[zero];<br>
+       float a2[6] = gs_input1[zero];<br>
+       float s = gs_input1[zero][zero];<br>
+<br>
+       //check passing as function parameters<br>
+       fa(gs_input1[zero]);<br>
+       fs(gs_input1[zero][zero]);<br>
+<br>
+       //check assignments to output variables<br>
+       array = gs_input1[zero];<br>
+       scalar = gs_input1[zero][zero];<br>
+       }<br>
+<br>
+<br>
+       //check explicitly sized input<br>
+       {<br>
+       //check assignments to local variables<br>
+       float a1[] = gs_input2[zero];<br>
+       float a2[6] = gs_input2[zero];<br>
+       float s = gs_input2[zero][zero];<br>
+<br>
+       //check passing as function parameters<br>
+       fa(gs_input2[zero]);<br>
+       fs(gs_input2[zero][zero]);<br>
+<br>
+       //check assignments to output variables<br>
+       array = gs_input2[zero];<br>
+       scalar = gs_input2[zero][zero];<br>
+       }<br>
+}<br>
+<br>
diff --git a/tests/spec/arb_geometry_shader4/linker/2darray01.shader_test b/tests/spec/arb_geometry_shader4/linker/2darray01.shader_test<br>
new file mode 100644<br>
index 0000000..42362f2<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/linker/2darray01.shader_test<br>
@@ -0,0 +1,70 @@<br>
+#Basic test of gs 2d input arrays<br>
+[require]<br>
+GL >= 2.0<br>
+GLSL >= 1.20<br>
+GL_ARB_geometry_shader4<br>
+<br>
+[vertex shader]<br>
+#version 120<br>
+<br>
+attribute vec4 vertex;<br>
+<br>
+varying float gs_input[6];<br>
+<br>
+void main()<br>
+{<br>
+       for (int i = 0; i < 6; i++)<br>
+               gs_input[i] = 0.5;<br></blockquote><div><br></div><div>Let's assign different values to the different elements of gl_input, and make them depend on vertex.  That way we can verify, in the geometry shader, that the correct values were received in each element of the array.  For an existing test that does something similar, see tests/spec/arb_geometry_shader4/execution/clip-distance-in-values.shader_test (from <a href="http://lists.freedesktop.org/archives/piglit/2013-June/005986.html">http://lists.freedesktop.org/archives/piglit/2013-June/005986.html</a>, which I haven't had a chance to push upstream yet).<br>


</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+       gl_Position = vertex;<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 120<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+uniform int zero;<br>
+<br>
+varying in float gs_input[][6];<br>
+<br>
+varying out float scalar;<br>
+varying out float array[6];<br>
+<br>
+void main()<br>
+{<br>
+       for (int i = 0; i < gl_VerticesIn; i++) {<br>
+               array = gs_input[zero];<br>
+               scalar = gs_input[zero][zero];<br>
+<br>
+               gl_Position = gl_PositionIn[i];<br>
+               EmitVertex();<br>
+       }<br>
+}<br>
+<br>
+[geometry layout]<br>
+input type GL_TRIANGLES<br>
+output type GL_TRIANGLE_STRIP<br>
+vertices out 3<br>
+<br>
+[fragment shader]<br>
+#version 120<br>
+<br>
+const int gs_VerticesIn = 3;<br>
+<br>
+varying float scalar;<br>
+varying float array[6];<br>
+<br>
+void main()<br>
+{<br>
+  gl_FragColor = vec4(scalar, array[0], 0.5, 1.0);<br>
+}<br>
+<br>
+[vertex data]<br>
+vertex/float/2<br>
+-1.0 -1.0<br>
+ 1.0 -1.0<br>
+ 1.0  1.0<br>
+-1.0  1.0<br>
+<br>
+[test]<br>
+draw arrays GL_TRIANGLE_FAN 0 4<br>
+probe all rgb 0.5 0.5 0.5<br>
<span><font color="#888888">--<br>
1.8.1.2<br>
<br>
_______________________________________________<br>
Piglit mailing list<br>
<a href="mailto:Piglit@lists.freedesktop.org" target="_blank">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>
</font></span></blockquote></div><br></div></div>