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

nanleychery at gmail.com nanleychery at gmail.com
Mon Nov 30 12:25:35 PST 2015


On Sat, Nov 28, 2015 at 05:17:22PM -0500, Ilia Mirkin wrote:
> On Sat, Nov 28, 2015 at 1:14 PM, Eduardo Lima Mitev <elima at igalia.com> wrote:
> > Patch is:
> >
> > Reviewed-by: Eduardo Lima Mitev <elima at igalia.com>
> 
> Thanks! I realized that this should also return invalid for GLES 1...
> I'm adding ctx->API == API_OPENGLES and pushing.
> 

For future reference, you could use !_mesa_has_EXT_texture_rg(ctx).

-Nanley

> >
> > 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),
> >>
> >
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list