Ian Romanick <i...@freedesktop.org> writes:

> From: Ian Romanick <ian.d.roman...@intel.com>
>
> And vice versa.
>
> Signed-off-by: Ian Romanick <ian.d.roman...@intel.com>
> ---
>  tests/spec/gl-1.0/blend.c | 40 ++++++++++++++++++++++++++--------------
>  1 file changed, 26 insertions(+), 14 deletions(-)
>
> diff --git a/tests/spec/gl-1.0/blend.c b/tests/spec/gl-1.0/blend.c
> index 0cacf69cb..278ef75ac 100644
> --- a/tests/spec/gl-1.0/blend.c
> +++ b/tests/spec/gl-1.0/blend.c
> @@ -115,14 +115,20 @@ static const GLenum dst_factors[] = {
>       GL_CONSTANT_ALPHA,
>       GL_ONE_MINUS_CONSTANT_ALPHA
>  };
> -static const GLenum operators[] = {
> +
> +static const GLenum subtract_operators[] = {
>       GL_FUNC_ADD,
>       GL_FUNC_SUBTRACT,
> -     GL_FUNC_REVERSE_SUBTRACT,
> +     GL_FUNC_REVERSE_SUBTRACT
> +};
> +
> +static const GLenum minmax_operators[] = {
>       GL_MIN,
>       GL_MAX
>  };
>  
> +GLenum operators[ARRAY_SIZE(subtract_operators) + 
> ARRAY_SIZE(minmax_operators)];
> +
>  struct image {
>       GLuint name;
>       GLfloat *data;
> @@ -714,14 +720,8 @@ run_all_factor_sets(void)
>               have_blend_color = true;
>               have_sep_func = true;
>       } else {
> -             /* glBlendEquation is added by either extension.
> -              * However, there is only one table of operators to
> -              * test, and it includes the operators from both
> -              * extensions.  In Mesa, only R100 supports
> -              * GL_EXT_blend_subtract but not GL_EXT_blend_minmax.
> -              */
>               have_blend_equation =
> -                     piglit_is_extension_supported("GL_EXT_blend_subtract") 
> &&
> +                     piglit_is_extension_supported("GL_EXT_blend_subtract") 
> ||
>                       piglit_is_extension_supported("GL_EXT_blend_minmax");
>               have_blend_color =
>                       piglit_is_extension_supported("GL_EXT_blend_color");
> @@ -753,15 +753,27 @@ run_all_factor_sets(void)
>               num_dst_factors_sep = 1;
>       }
>  
> -     if (have_blend_equation) {
> -             num_operators_rgb = ARRAY_SIZE(operators);
> -             num_operators_a = ARRAY_SIZE(operators);
> +     num_operators_rgb = 0;
> +     if (piglit_is_extension_supported("GL_EXT_blend_subtract")) {
> +             memcpy(&operators[num_operators_rgb],
> +                    subtract_operators,
> +                    ARRAY_SIZE(subtract_operators) * sizeof(operators[0]));
> +             num_operators_rgb += ARRAY_SIZE(subtract_operators);
>       }
>       else {
> -             num_operators_rgb = 1; /* just ADD */
> -             num_operators_a = 1; /* just ADD */
> +             num_operators_rgb = 1;
> +             operators[0] = GL_FUNC_ADD;
> +     }
> +
> +     if (piglit_is_extension_supported("GL_EXT_blend_minmax")) {
> +             memcpy(&operators[num_operators_rgb],
> +                    minmax_operators,
> +                    ARRAY_SIZE(minmax_operators) * sizeof(operators[0]));
> +             num_operators_rgb += ARRAY_SIZE(minmax_operators);
>       }

This all feels like it could be *so* much simpler.

operators[num_operators_rgb++] = GL_FUNC_ADD;

if (piglit_is_extension_supported("GL_EXT_blend_subtract"))
        operators[num_operators_rgb++] = GL_FUNC_SUBTRACT;
        operators[num_operators_rgb++] = GL_FUNC_REVERSE_SUBTRACT;

if (piglit_is_extension_supported("GL_EXT_blend_minmax")) {
        operators[num_operators_rgb++] = GL_MIN;
        operators[num_operators_rgb++] = GL_MAX;
}

assert(num_operators_rgb <= ARRAY_SIZE(operators);

num_operators_a = num_operators_rgb;

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to