<div dir="ltr">On 26 May 2013 15: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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">>From the ARB_geometry_shader4 spec (section ):<br>
"Indices used to subscript gl_TexCoord must either be an integral constant<br>
expressions, or this array must be re-declared by the shader with a size."<br>
<br>
And from the GLSL 1.1 spec page 99 (page 105 of the PDF):<br>
"Multiple modules can declare it [gl_TexCoord] with different sizes, the<br>
maximum will be used at link time."<br>
<br>
Presumably, this also applies to gl_TexCoordIn.<br></blockquote><div><br></div><div>Can we beef up this test so that the VS assigns different values to each element of gl_TexCoord for each vertex, and the GS checks that the values it receives are correct?<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
---<br>
 .../execution/texcoord01.shader_test               | 56 ++++++++++++++++++++<br>
 .../execution/texcoord02.shader_test               | 60 ++++++++++++++++++++++<br>
 2 files changed, 116 insertions(+)<br>
 create mode 100644 tests/spec/arb_geometry_shader4/execution/texcoord01.shader_test<br>
 create mode 100644 tests/spec/arb_geometry_shader4/execution/texcoord02.shader_test<br>
<br>
diff --git a/tests/spec/arb_geometry_shader4/execution/texcoord01.shader_test b/tests/spec/arb_geometry_shader4/execution/texcoord01.shader_test<br>
new file mode 100644<br>
index 0000000..70c4eb2<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/execution/texcoord01.shader_test<br>
@@ -0,0 +1,56 @@<br>
+# Test accessing glTexCoordIn without redeclaration but with constant indices.<br>
+[require]<br>
+GL >= 2.0<br>
+GLSL >= 1.10<br>
+GL_ARB_geometry_shader4<br>
+<br>
+[vertex shader]<br>
+#version 110<br>
+<br>
+attribute vec4 vertex;<br>
+<br>
+void main()<br>
+{<br>
+       gl_TexCoord[0] = vertex;<br>
+       gl_TexCoord[1] = vertex;<br>
+       gl_TexCoord[2] = vertex;<br>
+       gl_Position = vec4(0);<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 110<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+void main()<br>
+{<br>
+       gl_Position = gl_TexCoordIn[0][2];<br>
+       EmitVertex();<br>
+       gl_Position = gl_TexCoordIn[1][1];<br>
+       EmitVertex();<br>
+       gl_Position = gl_TexCoordIn[2][0];<br>
+       EmitVertex();<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 110<br>
+<br>
+void main()<br>
+{<br>
+       gl_FragColor = vec4(1.0, 1.0, 1.0, 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 1.0 1.0 1.0<br>
diff --git a/tests/spec/arb_geometry_shader4/execution/texcoord02.shader_test b/tests/spec/arb_geometry_shader4/execution/texcoord02.shader_test<br>
new file mode 100644<br>
index 0000000..7a7a751<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/execution/texcoord02.shader_test<br>
@@ -0,0 +1,60 @@<br>
+# Test accessing glTexCoordIn with redeclaration (with explicit size) and with non-constant indices.<br>
+[require]<br>
+GL >= 2.0<br>
+GLSL >= 1.10<br>
+GL_ARB_geometry_shader4<br>
+<br>
+[vertex shader]<br>
+#version 110<br>
+<br>
+uniform int one;<br>
+attribute vec4 vertex;<br>
+varying vec4 gl_TexCoord[2];<br>
+<br>
+void main()<br>
+{<br>
+       gl_TexCoord[one] = vertex;<br>
+       gl_Position = vec4(0);<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 110<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+uniform int one;<br>
+varying in vec4 gl_TexCoordIn[][3];<br>
+<br>
+void main()<br>
+{<br>
+       gl_Position = gl_TexCoordIn[0][one];<br>
+       EmitVertex();<br>
+       gl_Position = gl_TexCoordIn[1][one];<br>
+       EmitVertex();<br>
+       gl_Position = gl_TexCoordIn[2][one];<br>
+       EmitVertex();<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 110<br>
+<br>
+void main()<br>
+{<br>
+       gl_FragColor = vec4(1.0, 1.0, 1.0, 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>
+uniform int one 1<br>
+draw arrays GL_TRIANGLE_FAN 0 4<br>
+probe all rgb 1.0 1.0 1.0<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.8.1.2<br>
<br>
_______________________________________________<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>
</font></span></blockquote></div><br></div></div>