r200: fix glean pixelFormats regression
authorDave Airlie <airlied@redhat.com>
Tue, 31 Mar 2009 03:38:39 +0000 (13:38 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 31 Mar 2009 03:39:57 +0000 (13:39 +1000)
src/mesa/drivers/dri/radeon/radeon_texture.c

index 5808633b7b0320694ecfc83735e70c6e47a37ee3..21529f62fa5344b068553225ae3d441e60f4e322 100644 (file)
@@ -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: