[Piglit] [PATCH v2 3/3] ARB_shader_atomic_counters: Add simple VS test with inc/dec/read

Chris Forbes chrisf at ijw.co.nz
Mon Feb 23 10:53:58 PST 2015


This doesn't look right.

It's possible for the initial increment to observe the 0xffffffff =>
0x0 transition and fail, depending on how it's ordered with other
invocations. It's also possible for the second decrement to observe
the reverse transition, despite the attempt to skip over it.

- Chris

On Tue, Feb 24, 2015 at 7:23 AM, Jordan Justen
<jordan.l.justen at intel.com> wrote:
> Simple test of atomicCounterIncrement, atomicCounterDecrement and
> atomicCounter being used in the VS.
>
> v2:
>  * Drop CORE requirement
>  * Add GL_ARB_shader_atomic_counters requirement
>  * Require INT GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS >= 2
>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>  tests/all.py                                       |  3 +
>  .../execution/vs-simple-inc-dec-read.shader_test   | 71 ++++++++++++++++++++++
>  2 files changed, 74 insertions(+)
>  create mode 100644 tests/spec/arb_shader_atomic_counters/execution/vs-simple-inc-dec-read.shader_test
>
> diff --git a/tests/all.py b/tests/all.py
> index 4f477e8..d3588ae 100644
> --- a/tests/all.py
> +++ b/tests/all.py
> @@ -4410,6 +4410,9 @@ spec['ARB_shader_atomic_counters'] = arb_shader_atomic_counters
>  import_glsl_parser_tests(spec['ARB_shader_atomic_counters'],
>                           os.path.join(TESTS_DIR, 'spec', 'arb_shader_atomic_counters'),
>                           [''])
> +add_shader_test_dir(spec['ARB_shader_atomic_counters'],
> +                    os.path.join(TESTS_DIR, 'spec', 'arb_shader_atomic_counters'),
> +                    recursive=True)
>  arb_shader_atomic_counters['active-counters'] = PiglitGLTest(['arb_shader_atomic_counters-active-counters'], run_concurrent=True)
>  arb_shader_atomic_counters['array-indexing'] = PiglitGLTest(['arb_shader_atomic_counters-array-indexing'], run_concurrent=True)
>  arb_shader_atomic_counters['buffer-binding'] = PiglitGLTest(['arb_shader_atomic_counters-buffer-binding'], run_concurrent=True)
> diff --git a/tests/spec/arb_shader_atomic_counters/execution/vs-simple-inc-dec-read.shader_test b/tests/spec/arb_shader_atomic_counters/execution/vs-simple-inc-dec-read.shader_test
> new file mode 100644
> index 0000000..16ea9db
> --- /dev/null
> +++ b/tests/spec/arb_shader_atomic_counters/execution/vs-simple-inc-dec-read.shader_test
> @@ -0,0 +1,71 @@
> +# Simple test of atomicCounterIncrement, atomicCounterDecrement and
> +# atomicCounter being used in the VS.
> +
> +[require]
> +GLSL >= 1.40
> +GL_ARB_shader_atomic_counters
> +INT GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS >= 2
> +
> +[vertex shader]
> +#version 140
> +#extension GL_ARB_shader_atomic_counters: require
> +
> +layout(binding = 0) uniform atomic_uint a0;
> +layout(binding = 0) uniform atomic_uint a1;
> +
> +in vec4 piglit_vertex;
> +out vec4 vcolor;
> +
> +void main()
> +{
> +       bool passed = true;
> +       uint v0, v1;
> +
> +       /* Test that incrementing, followed by a read of an atomic
> +        * counter results in a larger value.
> +        *
> +        * Note: atomicCounterIncrement return the old value
> +        */
> +       v0 = atomicCounterIncrement(a0);
> +       v1 = atomicCounter(a0);
> +       if (v1 <= v0)
> +               passed = false;
> +
> +       /* Skip one decrement since it may be the 0 => 0xffffffff
> +        * transition.
> +        */
> +       atomicCounterDecrement(a1);
> +
> +       /* Test that a read, followed by a decrement of an atomic
> +        * counter results in a smaller value.
> +        *
> +        * Note: atomicCounterDecrement return the new value
> +        */
> +       v0 = atomicCounter(a1);
> +       v1 = atomicCounterDecrement(a1);
> +       if (v1 >= v0)
> +               passed = false;
> +
> +       if (passed)
> +               vcolor = vec4(0.0, 1.0, 0.0, 1.0);
> +       else
> +               vcolor = vec4(1.0, 0.0, 0.0, 1.0);
> +
> +       gl_Position = piglit_vertex;
> +}
> +
> +[fragment shader]
> +#version 140
> +in vec4 vcolor;
> +out vec4 fcolor;
> +
> +void main()
> +{
> +       fcolor = vcolor;
> +}
> +
> +[test]
> +atomic counters 2
> +
> +draw rect -1 -1 2 2
> +probe all rgba 0.0 1.0 0.0 1.0
> --
> 2.1.4
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list