[Mesa-dev] [PATCH] mesa: support GL_RED/GL_RG in ES2 contexts when driver support exists

Eduardo Lima Mitev elima at igalia.com
Sat Nov 28 10:14:07 PST 2015


Patch is:

Reviewed-by: Eduardo Lima Mitev <elima at igalia.com>

On 11/26/2015 04:57 PM, Ilia Mirkin wrote:
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93126
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: "11.0 11.1" <mesa-stable at lists.freedesktop.org>
> ---
>  src/mesa/main/glformats.c | 8 +++++++-
>  src/mesa/main/glformats.h | 3 ++-
>  src/mesa/main/readpix.c   | 2 +-
>  src/mesa/main/teximage.c  | 2 +-
>  4 files changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
> index 2ed42ea..7b264eb 100644
> --- a/src/mesa/main/glformats.c
> +++ b/src/mesa/main/glformats.c
> @@ -2077,12 +2077,18 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
>   * \return error code, or GL_NO_ERROR.
>   */
>  GLenum
> -_mesa_es_error_check_format_and_type(GLenum format, GLenum type,
> +_mesa_es_error_check_format_and_type(const struct gl_context *ctx,
> +                                     GLenum format, GLenum type,
>                                       unsigned dimensions)
>  {
>     GLboolean type_valid = GL_TRUE;
>  
>     switch (format) {
> +   case GL_RED:
> +   case GL_RG:
> +      if (!ctx->Extensions.ARB_texture_rg)
> +         return GL_INVALID_VALUE;
> +      /* fallthrough */
>     case GL_ALPHA:
>     case GL_LUMINANCE:
>     case GL_LUMINANCE_ALPHA:
> diff --git a/src/mesa/main/glformats.h b/src/mesa/main/glformats.h
> index 92f4bc6..b366855 100644
> --- a/src/mesa/main/glformats.h
> +++ b/src/mesa/main/glformats.h
> @@ -127,7 +127,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
>                                    GLenum format, GLenum type);
>  
>  extern GLenum
> -_mesa_es_error_check_format_and_type(GLenum format, GLenum type,
> +_mesa_es_error_check_format_and_type(const struct gl_context *ctx,
> +                                     GLenum format, GLenum type,
>                                       unsigned dimensions);
>  
>  extern GLenum
> diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
> index 81bb912..8cdc9fe 100644
> --- a/src/mesa/main/readpix.c
> +++ b/src/mesa/main/readpix.c
> @@ -1043,7 +1043,7 @@ _mesa_ReadnPixelsARB( GLint x, GLint y, GLsizei width, GLsizei height,
>            _mesa_get_color_read_type(ctx) == type) {
>           err = GL_NO_ERROR;
>        } else if (ctx->Version < 30) {
> -         err = _mesa_es_error_check_format_and_type(format, type, 2);
> +         err = _mesa_es_error_check_format_and_type(ctx, format, type, 2);
>           if (err == GL_NO_ERROR) {
>              if (type == GL_FLOAT || type == GL_HALF_FLOAT_OES) {
>                 err = GL_INVALID_OPERATION;
> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> index ac7599f..37dbe26 100644
> --- a/src/mesa/main/teximage.c
> +++ b/src/mesa/main/teximage.c
> @@ -1699,7 +1699,7 @@ texture_format_error_check_gles(struct gl_context *ctx, GLenum format,
>        }
>     }
>     else {
> -      err = _mesa_es_error_check_format_and_type(format, type, dimensions);
> +      err = _mesa_es_error_check_format_and_type(ctx, format, type, dimensions);
>        if (err != GL_NO_ERROR) {
>           _mesa_error(ctx, err, "%s(format = %s, type = %s)",
>                       callerName, _mesa_enum_to_string(format),
> 



More information about the mesa-dev mailing list