From: Eric Anholt Date: Wed, 1 Jun 2011 20:00:14 +0000 (-0700) Subject: meta: Don't do srgb to linear decode when blitting srgb textures. X-Git-Tag: mesa-7.11-rc1~443 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a513bee2f247d7cf9cd8e9c3d50f2bd48f136776;p=platform%2Fupstream%2Fmesa.git meta: Don't do srgb to linear decode when blitting srgb textures. Fixes the GL_SRGB8_ALPHA8 -> GL_RGBA8 blits in fbo-srgb-blit.c Reviewed-by: Brian Paul --- diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 08b6024639f..a0d4b9e7cf7 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -1186,6 +1186,7 @@ blitframebuffer_texture(struct gl_context *ctx, const GLint maxLevelSave = texObj->MaxLevel; const GLenum wrapSSave = texObj->Sampler.WrapS; const GLenum wrapTSave = texObj->Sampler.WrapT; + const GLenum srgbSave = texObj->Sampler.sRGBDecode; const GLenum target = texObj->Target; if (drawAtt->Texture == readAtt->Texture) { @@ -1217,6 +1218,12 @@ blitframebuffer_texture(struct gl_context *ctx, } _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + if (ctx->Extensions.EXT_texture_sRGB_decode) { + _mesa_TexParameteri(target, GL_TEXTURE_SRGB_DECODE_EXT, + GL_SKIP_DECODE_EXT); + } + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); _mesa_set_enable(ctx, target, GL_TRUE); @@ -1278,6 +1285,9 @@ blitframebuffer_texture(struct gl_context *ctx, } _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, wrapSSave); _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, wrapTSave); + if (ctx->Extensions.EXT_texture_sRGB_decode) { + _mesa_TexParameteri(target, GL_TEXTURE_SRGB_DECODE_EXT, srgbSave); + } /* Done with color buffer */ mask &= ~GL_COLOR_BUFFER_BIT;