Mesa (7.8): i915: Don't use XRGB8888 on 830 and 845.
Eric Anholt
anholt at kemper.freedesktop.org
Tue Jun 15 22:55:57 UTC 2010
Module: Mesa
Branch: 7.8
Commit: fc0b912f1e06a606ce704f94c8113e8719617c43
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fc0b912f1e06a606ce704f94c8113e8719617c43
Author: Eric Anholt <eric at anholt.net>
Date: Fri Jun 4 13:40:48 2010 -0700
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
b4a6169412819cc3a027c6a118f0537911145a30 that caused hangs in etracer
on 845s.
Bug #26557.
(cherry picked from commit f0ff214bee64a705d3ef6610e9dc25bc1a46a460)
---
src/mesa/drivers/dri/intel/intel_context.c | 5 +++++
src/mesa/drivers/dri/intel/intel_context.h | 1 +
src/mesa/drivers/dri/intel/intel_tex_format.c | 14 ++++++++++++--
3 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index 66bee9e..52e127f 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -610,6 +610,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;
@@ -631,6 +632,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,
diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h
index 1a24bf6..0684fee 100644
--- a/src/mesa/drivers/dri/intel/intel_context.h
+++ b/src/mesa/drivers/dri/intel/intel_context.h
@@ -145,6 +145,7 @@ struct intel_context
GLboolean is_g4x;
GLboolean is_945;
GLboolean has_luminance_srgb;
+ GLboolean has_xrgb_textures;
int urb_size;
diff --git a/src/mesa/drivers/dri/intel/intel_tex_format.c b/src/mesa/drivers/dri/intel/intel_tex_format.c
index 7be5231..c23424d 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_format.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_format.c
@@ -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:
More information about the mesa-commit
mailing list