In ES or GL+GL_ARB_ES2_compatibility, the usage of format = IMPLEMENTATION_COLOR_READ_FORMAT + type = IMPLEMENTATION_COLOR_READ_TYPE can function, even if the src/dst int vs. non-int types differ.
Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> --- src/mesa/main/readpix.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c index f21242c..24120e7 100644 --- a/src/mesa/main/readpix.c +++ b/src/mesa/main/readpix.c @@ -817,17 +817,25 @@ _mesa_ReadnPixelsARB( GLint x, GLint y, GLsizei width, GLsizei height, return; } - /* Check that the destination format and source buffer are both - * integer-valued or both non-integer-valued. - */ if (ctx->Extensions.EXT_texture_integer && _mesa_is_color_format(format)) { - const struct gl_renderbuffer *rb = ctx->ReadBuffer->_ColorReadBuffer; - const GLboolean srcInteger = _mesa_is_format_integer_color(rb->Format); - const GLboolean dstInteger = _mesa_is_enum_format_integer(format); - if (dstInteger != srcInteger) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glReadPixels(integer / non-integer format mismatch"); - return; + if (_mesa_get_color_read_format(ctx) == format && + _mesa_get_color_read_type(ctx) == type) { + /* IMPLEMENTATION_COLOR_READ_FORMAT and + * IMPLEMENTATION_COLOR_READ_TYPE are being used. Therefore + * we don't need to check integer vs. non-integer below. + */ + } else { + /* Check that the destination format and source buffer are both + * integer-valued or both non-integer-valued. + */ + const struct gl_renderbuffer *rb = ctx->ReadBuffer->_ColorReadBuffer; + const GLboolean srcInteger = _mesa_is_format_integer_color(rb->Format); + const GLboolean dstInteger = _mesa_is_enum_format_integer(format); + if (dstInteger != srcInteger) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glReadPixels(integer / non-integer format mismatch"); + return; + } } } -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev