<div dir="ltr">On 24 May 2013 14:29, 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 that linking fails if the geometry shader accesses more components than<br>
are available.<br>
<br>
ARB_geometry_shader4 spec 2.16.1:<br>
"However, a program object, containing a shader object that access more input<br>
vertices than are available for the input primitive type of the program<br>
object, will not link."<br></blockquote><div><br></div><div>You might consider quoting this spec text instead--it's equivalent but a little bit more explicit:<br><br>    It is illegal to index these varying arrays, or in the case of two-<br>
    dimensional arrays, the first range of the array, with a negative integral<br>    constant expression or an integral constant expression greater than or<br>    equal to gl_VerticesIn. A link error will occur in these cases.<br>
<br></div><div>I'm nit-picking, so with or without the change, this patch is:<br><br>Reviewed-by: Paul Berry <<a href="mailto:stereotype441@gmail.com">stereotype441@gmail.com</a>><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>
 .../input-overrun-lines-adjacency.shader_test      | 40 ++++++++++++++++++++++<br>
 .../linker/input-overrun-lines.shader_test         | 40 ++++++++++++++++++++++<br>
 .../linker/input-overrun-points.shader_test        | 40 ++++++++++++++++++++++<br>
 .../input-overrun-triangles-adjacency.shader_test  | 40 ++++++++++++++++++++++<br>
 .../linker/input-overrun-triangles.shader_test     | 40 ++++++++++++++++++++++<br>
 5 files changed, 200 insertions(+)<br>
 create mode 100644 tests/spec/arb_geometry_shader4/linker/input-overrun-lines-adjacency.shader_test<br>
 create mode 100644 tests/spec/arb_geometry_shader4/linker/input-overrun-lines.shader_test<br>
 create mode 100644 tests/spec/arb_geometry_shader4/linker/input-overrun-points.shader_test<br>
 create mode 100644 tests/spec/arb_geometry_shader4/linker/input-overrun-triangles-adjacency.shader_test<br>
 create mode 100644 tests/spec/arb_geometry_shader4/linker/input-overrun-triangles.shader_test<br>
<br>
diff --git a/tests/spec/arb_geometry_shader4/linker/input-overrun-lines-adjacency.shader_test b/tests/spec/arb_geometry_shader4/linker/input-overrun-lines-adjacency.shader_test<br>
new file mode 100644<br>
index 0000000..8508928<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/linker/input-overrun-lines-adjacency.shader_test<br>
@@ -0,0 +1,40 @@<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_Position = vertex;<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 110<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+void main()<br>
+{<br>
+       gl_Position = gl_PositionIn[4];<br>
+       EmitVertex();<br>
+}<br>
+<br>
+[geometry layout]<br>
+input type GL_LINES_ADJACENCY<br>
+output type GL_POINTS<br>
+vertices out 1<br>
+<br>
+[fragment shader]<br>
+#version 110<br>
+<br>
+void main()<br>
+{<br>
+       gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);<br>
+}<br>
+<br>
+[test]<br>
+link error<br>
diff --git a/tests/spec/arb_geometry_shader4/linker/input-overrun-lines.shader_test b/tests/spec/arb_geometry_shader4/linker/input-overrun-lines.shader_test<br>
new file mode 100644<br>
index 0000000..352c0c8<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/linker/input-overrun-lines.shader_test<br>
@@ -0,0 +1,40 @@<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_Position = vertex;<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 110<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+void main()<br>
+{<br>
+       gl_Position = gl_PositionIn[2];<br>
+       EmitVertex();<br>
+}<br>
+<br>
+[geometry layout]<br>
+input type GL_LINES<br>
+output type GL_POINTS<br>
+vertices out 1<br>
+<br>
+[fragment shader]<br>
+#version 110<br>
+<br>
+void main()<br>
+{<br>
+       gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);<br>
+}<br>
+<br>
+[test]<br>
+link error<br>
diff --git a/tests/spec/arb_geometry_shader4/linker/input-overrun-points.shader_test b/tests/spec/arb_geometry_shader4/linker/input-overrun-points.shader_test<br>
new file mode 100644<br>
index 0000000..6ac788b<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/linker/input-overrun-points.shader_test<br>
@@ -0,0 +1,40 @@<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_Position = vertex;<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 110<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+void main()<br>
+{<br>
+       gl_Position = gl_PositionIn[1];<br>
+       EmitVertex();<br>
+}<br>
+<br>
+[geometry layout]<br>
+input type GL_POINTS<br>
+output type GL_POINTS<br>
+vertices out 1<br>
+<br>
+[fragment shader]<br>
+#version 110<br>
+<br>
+void main()<br>
+{<br>
+       gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);<br>
+}<br>
+<br>
+[test]<br>
+link error<br>
diff --git a/tests/spec/arb_geometry_shader4/linker/input-overrun-triangles-adjacency.shader_test b/tests/spec/arb_geometry_shader4/linker/input-overrun-triangles-adjacency.shader_test<br>
new file mode 100644<br>
index 0000000..809947b<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/linker/input-overrun-triangles-adjacency.shader_test<br>
@@ -0,0 +1,40 @@<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_Position = vertex;<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 110<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+void main()<br>
+{<br>
+       gl_Position = gl_PositionIn[6];<br>
+       EmitVertex();<br>
+}<br>
+<br>
+[geometry layout]<br>
+input type GL_TRIANGLES_ADJACENCY<br>
+output type GL_POINTS<br>
+vertices out 1<br>
+<br>
+[fragment shader]<br>
+#version 110<br>
+<br>
+void main()<br>
+{<br>
+       gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);<br>
+}<br>
+<br>
+[test]<br>
+link error<br>
diff --git a/tests/spec/arb_geometry_shader4/linker/input-overrun-triangles.shader_test b/tests/spec/arb_geometry_shader4/linker/input-overrun-triangles.shader_test<br>
new file mode 100644<br>
index 0000000..01e2e0e<br>
--- /dev/null<br>
+++ b/tests/spec/arb_geometry_shader4/linker/input-overrun-triangles.shader_test<br>
@@ -0,0 +1,40 @@<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_Position = vertex;<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 110<br>
+#extension GL_ARB_geometry_shader4: enable<br>
+<br>
+void main()<br>
+{<br>
+       gl_Position = gl_PositionIn[3];<br>
+       EmitVertex();<br>
+}<br>
+<br>
+[geometry layout]<br>
+input type GL_TRIANGLES<br>
+output type GL_POINTS<br>
+vertices out 1<br>
+<br>
+[fragment shader]<br>
+#version 110<br>
+<br>
+void main()<br>
+{<br>
+       gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);<br>
+}<br>
+<br>
+[test]<br>
+link error<br>
<span class=""><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>