_mesa_base_tex_format doesn't accept GL_BGR and GL_ABGR_EXT. NOTE: This is a candidate for the stable branches. --- src/mesa/main/texgetimage.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 3a550d9..9441ce6 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -323,7 +323,7 @@ get_tex_rgba_uncompressed(struct gl_context *ctx, GLuint dimensions, const gl_format texFormat = _mesa_get_srgb_format_linear(texImage->TexFormat); const GLuint width = texImage->Width; - const GLenum destBaseFormat = _mesa_base_tex_format(ctx, format); + GLenum destBaseFormat; GLenum rebaseFormat = GL_NONE; GLuint height = texImage->Height; GLuint depth = texImage->Depth; @@ -333,6 +333,18 @@ get_tex_rgba_uncompressed(struct gl_context *ctx, GLuint dimensions, GLboolean tex_is_integer = _mesa_is_format_integer_color(texImage->TexFormat); GLboolean tex_is_uint = _mesa_is_format_unsigned(texImage->TexFormat); + switch (format) { + case GL_ABGR_EXT: + case GL_BGRA: + destBaseFormat = GL_RGBA; + break; + case GL_BGR: + destBaseFormat = GL_RGB; + break; + default: + destBaseFormat = format; + } + /* Allocate buffer for one row of texels */ rgba = malloc(4 * width * sizeof(GLfloat)); rgba_uint = (GLuint (*)[4]) rgba; -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev