diff options
author | Ilia Mirkin <[email protected]> | 2015-11-26 10:32:57 -0500 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2015-11-28 17:24:34 -0500 |
commit | 0396eaaf80c5d7955d7926c4e448f006c7682d2e (patch) | |
tree | 7fda86c2c4d25e807383e12c2f23c3d63a341d2f | |
parent | 9e5e702cfb380af461062c96d974027da8d5f17a (diff) |
mesa: support GL_RED/GL_RG in ES2 contexts when driver support exists
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93126
Signed-off-by: Ilia Mirkin <[email protected]>
Reviewed-by: Eduardo Lima Mitev <[email protected]>
Cc: "11.0 11.1" <[email protected]>
-rw-r--r-- | src/mesa/main/glformats.c | 8 | ||||
-rw-r--r-- | src/mesa/main/glformats.h | 3 | ||||
-rw-r--r-- | src/mesa/main/readpix.c | 2 | ||||
-rw-r--r-- | 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 2ed42eaffdd..f5284447b6e 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->API == API_OPENGLES || !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 92f4bc6864e..b3668556da2 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 81bb912beb6..8cdc9fe1cb2 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 ac7599f9fd4..37dbe267e68 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), |