Mesa (radeon-rewrite): r200: fix glean pixelFormats regression

Dave Airlie airlied at kemper.freedesktop.org
Tue Mar 31 03:38:11 UTC 2009


Module: Mesa
Branch: radeon-rewrite
Commit: 5ad32cfd21bc9c798d05f5202cc75d37cc258354
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5ad32cfd21bc9c798d05f5202cc75d37cc258354

Author: Dave Airlie <airlied at redhat.com>
Date:   Tue Mar 31 13:38:39 2009 +1000

r200: fix glean pixelFormats regression

---

 src/mesa/drivers/dri/radeon/radeon_texture.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c
index 5808633..21529f6 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -276,6 +276,8 @@ static const struct gl_texture_format *radeonChoose8888TexFormat(radeonContextPt
 		   (srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_INT_8_8_8_8) ||
 		   (srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_BYTE && !littleEndian)) {
 		return &_mesa_texformat_rgba8888_rev;
+	} else if (IS_R200_CLASS(rmesa->radeonScreen)) {
+		return _dri_texformat_argb8888;
 	} else if (srcFormat == GL_BGRA && ((srcType == GL_UNSIGNED_BYTE && !littleEndian) ||
 					    srcType == GL_UNSIGNED_INT_8_8_8_8)) {
 		return &_mesa_texformat_argb8888_rev;
@@ -376,8 +378,12 @@ const struct gl_texture_format *radeonChooseTextureFormat(GLcontext * ctx,
 	case GL_ALPHA12:
 	case GL_ALPHA16:
 	case GL_COMPRESSED_ALPHA:
-		return _dri_texformat_a8;
-
+		/* r200: can't use a8 format since interpreting hw I8 as a8 would result
+		   in wrong rgb values (same as alpha value instead of 0). */
+		if (IS_R200_CLASS(rmesa->radeonScreen))
+			return _dri_texformat_al88;
+		else
+			return _dri_texformat_a8;
 	case 1:
 	case GL_LUMINANCE:
 	case GL_LUMINANCE4:




More information about the mesa-commit mailing list