<div dir="ltr">On 30 August 2013 01:20, Pohjolainen, Topi <span dir="ltr"><<a href="mailto:topi.pohjolainen@intel.com" target="_blank">topi.pohjolainen@intel.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">On Wed, Aug 28, 2013 at 12:12:40PM -0700, Paul Berry wrote:<br>
> Verified using the NVIDIA proprietary driver for linux.<br>
> ---<br>
>  tests/all.tests                                    |   6 +<br>
>  .../glsl-1.50/execution/geometry/CMakeLists.gl.txt |   1 +<br>
>  .../tri-strip-ordering-with-prim-restart.c         | 311 +++++++++++++++++++++<br>
>  3 files changed, 318 insertions(+)<br>
>  create mode 100644 tests/spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart.c<br>
><br>
> diff --git a/tests/all.tests b/tests/all.tests<br>
> index 7ab841e..3ee7cd2 100644<br>
> --- a/tests/all.tests<br>
> +++ b/tests/all.tests<br>
> @@ -955,6 +955,12 @@ for prim_type in ['GL_POINTS', 'GL_LINE_LOOP', 'GL_LINE_STRIP', 'GL_LINES',<br>
>                          'glsl-1.50-geometry-primitive-types {0}'.format(<br>
>                              prim_type))<br>
><br>
> +for prim_type in ['GL_TRIANGLE_STRIP', 'GL_TRIANGLE_STRIP_ADJACENCY']:<br>
> +    for restart_index in ['ffs', 'other']:<br>
> +        add_concurrent_test(spec['glsl-1.50'],<br>
> +                            'glsl-1.50-geometry-tri-strip-ordering-with-prim-restart {0} {1}'.format(<br>
> +                                prim_type, restart_index))<br>
> +<br>
>  spec['glsl-3.30'] = Group()<br>
>  import_glsl_parser_tests(spec['glsl-3.30'],<br>
>                        os.path.join(testsDir, 'spec', 'glsl-3.30'),<br>
> diff --git a/tests/spec/glsl-1.50/execution/geometry/CMakeLists.gl.txt b/tests/spec/glsl-1.50/execution/geometry/CMakeLists.gl.txt<br>
> index 202fcd2..a504412 100644<br>
> --- a/tests/spec/glsl-1.50/execution/geometry/CMakeLists.gl.txt<br>
> +++ b/tests/spec/glsl-1.50/execution/geometry/CMakeLists.gl.txt<br>
> @@ -12,3 +12,4 @@ ${OPENGL_glu_LIBRARY}<br>
><br>
>  piglit_add_executable (glsl-1.50-geometry-end-primitive end-primitive.c)<br>
>  piglit_add_executable (glsl-1.50-geometry-primitive-types primitive-types.c)<br>
> +piglit_add_executable (glsl-1.50-geometry-tri-strip-ordering-with-prim-restart tri-strip-ordering-with-prim-restart.c)<br>
> diff --git a/tests/spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart.c b/tests/spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart.c<br>
> new file mode 100644<br>
> index 0000000..90f6860<br>
> --- /dev/null<br>
> +++ b/tests/spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart.c<br>
> @@ -0,0 +1,311 @@<br>
> +/*<br>
> + * Copyright © 2013 Intel Corporation<br>
> + *<br>
> + * Permission is hereby granted, free of charge, to any person obtaining a<br>
> + * copy of this software and associated documentation files (the "Software"),<br>
> + * to deal in the Software without restriction, including without limitation<br>
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,<br>
> + * and/or sell copies of the Software, and to permit persons to whom the<br>
> + * Software is furnished to do so, subject to the following conditions:<br>
> + *<br>
> + * The above copyright notice and this permission notice (including the next<br>
> + * paragraph) shall be included in all copies or substantial portions of the<br>
> + * Software.<br>
> + *<br>
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR<br>
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br>
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL<br>
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER<br>
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING<br>
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER<br>
> + * DEALINGS IN THE SOFTWARE.<br>
> + */<br>
> +<br>
> +/**<br>
> + * \file tri-strip-ordering-with-prim-restart.c<br>
> + *<br>
> + * Check a subtle corner case that affects the i965/gen7 mesa driver:<br>
> + * when the primitive type is either GL_TRIANGLE_STRIP or<br>
> + * GL_TRIANGLE_STRIP_ADJACENCY, the hardware delivers the vertices of<br>
> + * odd numbered triangles to the geometry shader in the wrong order,<br>
> + * so the driver must emit workaround code to re-order them.  This<br>
> + * test verifies that the workaround code functions correctly in the<br>
> + * presence of primitive restart, since the presence of primitive<br>
> + * restart can make a triangle "odd numbered" in relation to the<br>
> + * current strip even if it is "even numbered" as measured by<br>
> + * gl_PrimitiveIDIn.<br>
> + *<br>
> + * This test works by issuing a single draw call and using primitive<br>
> + * restart to split it into a pair of 3-triangle strips (this ensures<br>
> + * that triangles in the first strip have the same parity in relation<br>
> + * to the strip as they have when measured by gl_PrimitiveIDIn;<br>
> + * triangles in the second strip hav opposite parity in relation to<br>
> + * the strip from what they have when measured by gl_PrimitiveIDIn).<br>
> + * The vertex IDs of all vertices are collected using transform<br>
> + * feedback, and checked it C to make sure it matches the expected<br>
</div></div>                             ^<br>
Just checking if this was supposed to be "checked in C" instead?<br></blockquote><div><br></div><div>Oops.  Yes, thanks!<br></div></div></div></div>