<div dir="ltr">On 31 May 2013 15:56, 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Test that gl_VerticesIn can be used as a valid constant expression.<br>
<br>
Also test that it evaluates to 3 for triangles.<br></blockquote><div><br></div>Ok, I've finished reviewing the series at last!  Thanks for your patience.<br><br></div><div class="gmail_quote">I sent responses on patches 1-8, 10, 12, 13, and 15-17.<br>
<br>Patches 9, 11, 14, and 18 are:<br><br></div><div class="gmail_quote">Reviewed-by: Paul Berry <<a href="mailto:stereotype441@gmail.com">stereotype441@gmail.com</a>><br><br></div><div class="gmail_quote">Thanks again for your hard work on this patch series.  I hope my review comments aren't too onerous.  In general the series looks really good, and I'm looking forward to merging it upstream!<br>

</div><div class="gmail_quote"> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
---<br>
 .../compiler/verticesin-const-expression.geom      | 31 ++++++++<br>
 .../compiler/verticesin-const.geom                 | 31 ++++++++<br>
 .../linker/verticesin-const.shader_test            | 91 ++++++++++++++++++++++<br>
 3 files changed, 153 insertions(+)<br>
 create mode 100644 tests/spec/arb_geometry_shader4/compiler/verticesin-const-expression.geom<br>
 create mode 100644 tests/spec/arb_geometry_shader4/compiler/verticesin-const.geom<br>
 create mode 100644 tests/spec/arb_geometry_shader4/linker/verticesin-const.shader_test<br>
<br>
diff --git a/tests/spec/arb_geometry_shader4/compiler/verticesin-const-expression.geom b/tests/spec/arb_geometry_shader4/compiler/verticesin-const-expression.geom<br>
new file mode 100644<br>
index 0000000..f4b77f7<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/compiler/verticesin-const-expression.geom<br>
@@ -0,0 +1,31 @@<br>
+// [config]<br>
+// expect_result: pass<br>
+// glsl_version: 1.30<br>
+// require_extensions: GL_ARB_geometry_shader4<br>
+// [end config]<br>
+<br>
+#version 130<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+uniform int idx;<br>
+uniform sampler2D tex;<br>
+uniform sampler2D tex_array[10];<br>
+<br>
+void main()<br>
+{<br>
+       //All quotes are from the glsl 1.3 specification.<br>
+<br>
+       //"Samplers aggregated into arrays within a shader [...] can only be indexed with integral constant expressions"<br>
+       texture(tex_array[gl_VerticesIn * 2 - 2], vec2(0, 0));<br>
+<br>
+       //"When an array size is specified in a declaration, it must be an integral constant expression"<br>
+       float array[gl_VerticesIn * 2 - 2];<br>
+       array[idx];<br>
+<br>
+       //"Initializers for const declarations must be constant expression"<br>
+       const int var = gl_VerticesIn * 2 - 2;<br>
+<br>
+       //"The offset value must be a constant expression."<br>
+       textureOffset(tex, vec2(0, 0), ivec2(gl_VerticesIn * 2 - 2));<br>
+}<br>
+<br>
diff --git a/tests/spec/arb_geometry_shader4/compiler/verticesin-const.geom b/tests/spec/arb_geometry_shader4/compiler/verticesin-const.geom<br>
new file mode 100644<br>
index 0000000..f7aec2a<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/compiler/verticesin-const.geom<br>
@@ -0,0 +1,31 @@<br>
+// [config]<br>
+// expect_result: pass<br>
+// glsl_version: 1.30<br>
+// require_extensions: GL_ARB_geometry_shader4<br>
+// [end config]<br>
+<br>
+#version 130<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+uniform int idx;<br>
+uniform sampler2D tex;<br>
+uniform sampler2D tex_array[7];<br>
+<br>
+void main()<br>
+{<br>
+       //All quotes are from the glsl 1.3 specification.<br>
+<br>
+       //"Samplers aggregated into arrays within a shader [...] can only be indexed with integral constant expressions"<br>
+       texture(tex_array[gl_VerticesIn], vec2(0, 0));<br>
+<br>
+       //"When an array size is specified in a declaration, it must be an integral constant expression"<br>
+       float array[gl_VerticesIn];<br>
+       array[idx];<br>
+<br>
+       //"Initializers for const declarations must be constant expression"<br>
+       const int var = gl_VerticesIn;<br>
+<br>
+       //"The offset value must be a constant expression."<br>
+       textureOffset(tex, vec2(0, 0), ivec2(gl_VerticesIn));<br>
+}<br>
+<br>
diff --git a/tests/spec/arb_geometry_shader4/linker/verticesin-const.shader_test b/tests/spec/arb_geometry_shader4/linker/verticesin-const.shader_test<br>
new file mode 100644<br>
index 0000000..5f697ee<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/linker/verticesin-const.shader_test<br>
@@ -0,0 +1,91 @@<br>
+[require]<br>
+GL >= 2.0<br>
+GLSL >= 1.30<br>
+GL_ARB_geometry_shader4<br>
+<br>
+[vertex shader]<br>
+#version 130<br>
+<br>
+in vec4 vertex;<br>
+<br>
+out float gs_input[6];<br>
+void main()<br>
+{<br>
+       for (int i = 0; i < 6; i++)<br>
+               gs_input[i] = 0.5;<br>
+       gl_Position = vertex;<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 130<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+#line 22<br>
+<br>
+uniform int zero;<br>
+uniform sampler2D tex;<br>
+uniform sampler2D tex_array[7];<br>
+<br>
+in float gs_input[][6];<br>
+<br>
+out vec4 color;<br>
+<br>
+void main()<br>
+{<br>
+       for (int i = 0; i < gl_VerticesIn; i++) {<br>
+               vec4 c = vec4(0, 0, 0, 1);<br>
+               c.x = texture(tex_array[gl_VerticesIn], vec2(0.5, 0.5)).x;<br>
+<br>
+               const int three = gl_VerticesIn;<br>
+               if (three == 3)<br>
+                       c.y = 1.0;<br>
+               else<br>
+                       c.y = 0.0;<br>
+<br>
+               //We sample from a row of 8 pixels, the left 4 blue and the right 4 white.<br>
+               //Since we only use the red channel, the left 4 are 0, and the right 4 are 1.<br>
+               //sample twice from the fith pixel in the row:<br>
+               c.z = textureOffset(tex, vec2(3.0/16.0, 0.75), ivec2(gl_VerticesIn, 0)).x;<br>
+               c.z *= textureOffset(tex, vec2(15.0/16.0, 0.75), ivec2(gl_VerticesIn, 0)).x;<br>
+<br>
+               gl_Position = gl_PositionIn[i];<br>
+               color = c;<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 130<br>
+<br>
+in vec4 color;<br>
+<br>
+void main()<br>
+{<br>
+  gl_FragColor = color;<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>
+uniform int tex_array[0] 1<br>
+uniform int tex_array[1] 1<br>
+uniform int tex_array[2] 1<br>
+uniform int tex_array[3] 2<br>
+uniform int tex_array[4] 1<br>
+uniform int tex_array[5] 1<br>
+uniform int tex_array[6] 1<br>
+uniform int tex 0<br>
+texture rgbw 0 (8, 8)<br>
+texture checkerboard 1 0 (8, 8) (0.0, 0.0, 0.0, 0.0) (0.0, 0.0, 0.0, 0.0)<br>
+texture checkerboard 2 0 (8, 8) (1.0, 1.0, 1.0, 1.0) (1.0, 1.0, 1.0, 1.0)<br>
+draw arrays GL_TRIANGLE_FAN 0 4<br>
+probe all rgb 1.0 1.0 1.0<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>