[Mesa-dev] [PATCH v3 1/2] mesa: Fix order of format + type and internal format checks for glTexImage ops

Mark Janes mark.a.janes at intel.com
Tue Aug 18 13:34:43 PDT 2015


This patch regresses the following tests:

piglit.spec.oes_compressed_paletted_texture.basic api
piglit.spec.oes_compressed_paletted_texture.basic api
piglit.spec.oes_compressed_etc1_rgb8_texture.basic

When you submit v4, please verify that there are no piglit or dEQP
regressions.  Also, please combine the three patches into a single
series;  mixing patches from your v2 and your v3 is confusing.

-Mark

Eduardo Lima Mitev <elima at igalia.com> writes:

> The more specific GLES constrains should be checked after the general
> validation performed by _mesa_error_check_format_and_type(). This is also
> for consistency with the error checks order of glTexSubImage ops.
>
> Fixes 1 dEQP test:
> * dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_format
> ---
>  src/mesa/main/teximage.c | 34 +++++++++++++++++-----------------
>  1 file changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> index b15b200..04eb188 100644
> --- a/src/mesa/main/teximage.c
> +++ b/src/mesa/main/teximage.c
> @@ -1694,15 +1694,14 @@ texture_error_check( struct gl_context *ctx,
>        return GL_TRUE;
>     }
>  
> -   /* OpenGL ES 1.x and OpenGL ES 2.0 impose additional restrictions on the
> -    * combinations of format, internalFormat, and type that can be used.
> -    * Formats and types that require additional extensions (e.g., GL_FLOAT
> -    * requires GL_OES_texture_float) are filtered elsewhere.
> -    */
> -   if (_mesa_is_gles(ctx) &&
> -       texture_format_error_check_gles(ctx, format, type, internalFormat,
> -                                       dimensions, "glTexImage%dD")) {
> -     return GL_TRUE;
> +   /* Check incoming image format and type */
> +   err = _mesa_error_check_format_and_type(ctx, format, type);
> +   if (err != GL_NO_ERROR) {
> +      _mesa_error(ctx, err,
> +                  "glTexImage%dD(incompatible format = %s, type = %s)",
> +                  dimensions, _mesa_enum_to_string(format),
> +                  _mesa_enum_to_string(type));
> +      return GL_TRUE;
>     }
>  
>     /* Check internalFormat */
> @@ -1713,14 +1712,15 @@ texture_error_check( struct gl_context *ctx,
>        return GL_TRUE;
>     }
>  
> -   /* Check incoming image format and type */
> -   err = _mesa_error_check_format_and_type(ctx, format, type);
> -   if (err != GL_NO_ERROR) {
> -      _mesa_error(ctx, err,
> -                  "glTexImage%dD(incompatible format = %s, type = %s)",
> -                  dimensions, _mesa_enum_to_string(format),
> -                  _mesa_enum_to_string(type));
> -      return GL_TRUE;
> +   /* OpenGL ES 1.x and OpenGL ES 2.0 impose additional restrictions on the
> +    * combinations of format, internalFormat, and type that can be used.
> +    * Formats and types that require additional extensions (e.g., GL_FLOAT
> +    * requires GL_OES_texture_float) are filtered elsewhere.
> +    */
> +   if (_mesa_is_gles(ctx) &&
> +       texture_format_error_check_gles(ctx, format, type, internalFormat,
> +                                       dimensions, "glTexImage%dD")) {
> +     return GL_TRUE;
>     }
>  
>     /* validate the bound PBO, if any */
> -- 
> 2.4.6


More information about the mesa-dev mailing list