radeon: r100 can't use some of the texture formats.

this fixes the texrect-many test
This commit is contained in:
Dave Airlie 2009-02-11 02:41:39 +10:00
parent 4c36282ef9
commit 18aca218a2

View file

@ -1558,12 +1558,17 @@ void radeonGenerateMipmap(GLcontext* ctx, GLenum target, struct gl_texture_objec
/* try to find a format which will only need a memcopy */
static const struct gl_texture_format *radeonChoose8888TexFormat(GLenum srcFormat,
GLenum srcType)
static const struct gl_texture_format *radeonChoose8888TexFormat(radeonContextPtr rmesa,
GLenum srcFormat,
GLenum srcType)
{
const GLuint ui = 1;
const GLubyte littleEndian = *((const GLubyte *)&ui);
/* r100 can only do this */
if (IS_R100_CLASS(rmesa->radeonScreen))
return _dri_texformat_argb8888;
if ((srcFormat == GL_RGBA && srcType == GL_UNSIGNED_INT_8_8_8_8) ||
(srcFormat == GL_RGBA && srcType == GL_UNSIGNED_BYTE && !littleEndian) ||
(srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_INT_8_8_8_8_REV) ||
@ -1619,7 +1624,7 @@ const struct gl_texture_format *radeonChooseTextureFormat(GLcontext * ctx,
case GL_UNSIGNED_SHORT_1_5_5_5_REV:
return _dri_texformat_argb1555;
default:
return do32bpt ? radeonChoose8888TexFormat(format, type) :
return do32bpt ? radeonChoose8888TexFormat(rmesa, format, type) :
_dri_texformat_argb4444;
}
@ -1646,8 +1651,8 @@ const struct gl_texture_format *radeonChooseTextureFormat(GLcontext * ctx,
case GL_RGBA12:
case GL_RGBA16:
return !force16bpt ?
radeonChoose8888TexFormat(format,
type) : _dri_texformat_argb4444;
radeonChoose8888TexFormat(rmesa, format,type) :
_dri_texformat_argb4444;
case GL_RGBA4:
case GL_RGBA2: