i915: Don't use XRGB8888 on 830 and 845.

The support for XRGB8888 appeared in the 855 and 865, and this format
is reserved on 830/845.  This should fix a regression from
b4a6169412 that caused hangs in etracer
on 845s.

Bug #26557.
This commit is contained in:
Eric Anholt 2010-06-04 13:40:48 -07:00
parent b80a728f8a
commit f0ff214bee
3 changed files with 18 additions and 2 deletions

View file

@ -635,6 +635,7 @@ intelInitContext(struct intel_context *intel,
intel->driContext = driContextPriv;
intel->driFd = sPriv->fd;
intel->has_xrgb_textures = GL_TRUE;
if (IS_GEN6(intel->intelScreen->deviceID)) {
intel->gen = 6;
intel->needs_ff_sync = GL_TRUE;
@ -656,6 +657,10 @@ intelInitContext(struct intel_context *intel,
}
} else {
intel->gen = 2;
if (intel->intelScreen->deviceID == PCI_CHIP_I830_M ||
intel->intelScreen->deviceID == PCI_CHIP_845_G) {
intel->has_xrgb_textures = GL_FALSE;
}
}
driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache,

View file

@ -145,6 +145,7 @@ struct intel_context
GLboolean is_g4x;
GLboolean is_945;
GLboolean has_luminance_srgb;
GLboolean has_xrgb_textures;
int urb_size;

View file

@ -49,7 +49,14 @@ intelChooseTextureFormat(GLcontext * ctx, GLint internalFormat,
if (format == GL_RGB && type == GL_UNSIGNED_SHORT_5_6_5) {
return MESA_FORMAT_RGB565;
}
return do32bpt ? MESA_FORMAT_XRGB8888 : MESA_FORMAT_RGB565;
if (do32bpt) {
if (intel->has_xrgb_textures)
return MESA_FORMAT_XRGB8888;
else
return MESA_FORMAT_ARGB8888;
} else {
return MESA_FORMAT_RGB565;
}
case GL_RGBA8:
case GL_RGB10_A2:
@ -68,7 +75,10 @@ intelChooseTextureFormat(GLcontext * ctx, GLint internalFormat,
case GL_RGB10:
case GL_RGB12:
case GL_RGB16:
return MESA_FORMAT_XRGB8888;
if (intel->has_xrgb_textures)
return MESA_FORMAT_XRGB8888;
else
return MESA_FORMAT_ARGB8888;
case GL_RGB5:
case GL_RGB4: