[Piglit] [PATCH] arb_shader_storage_buffer_object: add compiler test for dynamic indexing

Ilia Mirkin imirkin at alum.mit.edu
Thu Oct 1 09:08:18 PDT 2015


>From GL_ARB_shader_storage_buffer_object spec:

    (3) Do we allow arrays of shader storage blocks?

      RESOLVED:  Yes; we already allow arrays of uniform blocks, where each
      block instance has an identical layout but is backed by a separate
      buffer object.  It seems like we should do this here for consistency.

      If we had overloaded the existing uniform block APIs (e.g., by applying
      a "readwrite" layout qualifier to uniform blocks), it would be really
      weird if we disallowed arrays of writeable uniform blocks since we
      already allow it for regular (read-only) uniform blocks.

If they're trying to be identical to UBO's, then dynamic indexing is
allowed. I guess this is just an ES 3.10 restriction.

On Thu, Oct 1, 2015 at 7:54 AM, Tapani Pälli <tapani.palli at intel.com> wrote:
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> ---
>  ...hader-storage-block-array-dynamic-indexing.frag | 24 ++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
>  create mode 100644 tests/spec/arb_shader_storage_buffer_object/compiler/shader-storage-block-array-dynamic-indexing.frag
>
> diff --git a/tests/spec/arb_shader_storage_buffer_object/compiler/shader-storage-block-array-dynamic-indexing.frag b/tests/spec/arb_shader_storage_buffer_object/compiler/shader-storage-block-array-dynamic-indexing.frag
> new file mode 100644
> index 0000000..a05e7fc
> --- /dev/null
> +++ b/tests/spec/arb_shader_storage_buffer_object/compiler/shader-storage-block-array-dynamic-indexing.frag
> @@ -0,0 +1,24 @@
> +// [config]
> +// expect_result: fail
> +// glsl_version: 1.50
> +// require_extensions: GL_ARB_shader_storage_buffer_object
> +// [end config]
> +
> +#version 150
> +#extension GL_ARB_shader_storage_buffer_object: require
> +
> +/* Page 50 in section 4.3.9 of the OpenGL ES 3.10 spec says:
> + *
> + *    "All indices used to index a uniform or shader storage block
> + *    array must be constant integral expressions."
> + */
> +
> +buffer buf {
> +       vec4 v;
> +} array[2];
> +
> +uniform int index;
> +
> +vec4 foo(void) {
> +       return array[index].v;
> +}
> --
> 2.4.3
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list