[Mesa-dev] [PATCH] mesa: support GL_RED/GL_RG in ES2 contexts when driver support exists
Ilia Mirkin
imirkin at alum.mit.edu
Sat Nov 28 14:17:22 PST 2015
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.
>
> 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