[Piglit] [PATCH 3/4] arb_shader_image_load_store/image: Expose array of known shader shader stages.

Martin Peres martin.peres at linux.intel.com
Tue May 19 07:17:01 PDT 2015


On 12/05/15 15:39, Francisco Jerez wrote:
> ---
>   tests/spec/arb_shader_image_load_store/image.c | 24 +++++++++++++++++-------
>   tests/spec/arb_shader_image_load_store/image.h |  7 +++++++
>   2 files changed, 24 insertions(+), 7 deletions(-)
>
> diff --git a/tests/spec/arb_shader_image_load_store/image.c b/tests/spec/arb_shader_image_load_store/image.c
> index 58cda9b..7a1867f 100644
> --- a/tests/spec/arb_shader_image_load_store/image.c
> +++ b/tests/spec/arb_shader_image_load_store/image.c
> @@ -599,9 +599,9 @@ image_target_mipmapping_dimensions(const struct image_target_info *target)
>   }
>   
>   const struct image_stage_info *
> -image_stages(void)
> +known_image_stages(void)
>   {
> -        const struct image_stage_info known[] = {
> +        static const struct image_stage_info known[] = {
>                   { "Vertex", GL_VERTEX_SHADER, GL_VERTEX_SHADER_BIT },
>                   { "Tessellation control", GL_TESS_CONTROL_SHADER,
>                     GL_TESS_CONTROL_SHADER_BIT },
> @@ -610,15 +610,25 @@ image_stages(void)
>                   { "Geometry", GL_GEOMETRY_SHADER, GL_GEOMETRY_SHADER_BIT },
>                   { "Fragment", GL_FRAGMENT_SHADER, GL_FRAGMENT_SHADER_BIT },
>                   { "Compute", GL_COMPUTE_SHADER, GL_COMPUTE_SHADER_BIT },
> +                { 0 }
>           };
> -        static struct image_stage_info supported[ARRAY_SIZE(known) + 1];
> +        return known;
> +}
> +
> +const struct image_stage_info *
> +image_stages(void)
> +{
> +        static struct image_stage_info supported[7];
>   
>           if (!supported[0].name) {
> -                int i, n = 0;
> +                const struct image_stage_info *stage;
> +                int n = 0;
>   
> -                for (i = 0; i < ARRAY_SIZE(known); ++i) {
> -                        if (image_stage_max_images(&known[i]))
> -                                supported[n++] = known[i];
> +                for (stage = known_image_stages(); stage->stage; ++stage) {
> +                        if (image_stage_max_images(stage)) {
> +                                assert(n < ARRAY_SIZE(supported) - 1);
> +                                supported[n++] = *stage;
> +                        }
>                   }
>           }
>   
> diff --git a/tests/spec/arb_shader_image_load_store/image.h b/tests/spec/arb_shader_image_load_store/image.h
> index f35c89f..fc43f22 100644
> --- a/tests/spec/arb_shader_image_load_store/image.h
> +++ b/tests/spec/arb_shader_image_load_store/image.h
> @@ -264,6 +264,13 @@ struct image_stage_info {
>   };
>   
>   /**
> + * Get all shader stages in pipeline order regardless of whether they
> + * support image access.
> + */
> +const struct image_stage_info *
> +known_image_stages(void);
> +
> +/**
>    * Get all shader stages that support image access in pipeline order.
>    */
>   const struct image_stage_info *

Reviewed-by: Martin Peres <martin.peres at linux.intel.com>


More information about the Piglit mailing list