summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Scheidegger <[email protected]>2007-11-22 02:55:25 +0100
committerRoland Scheidegger <[email protected]>2007-11-22 02:55:25 +0100
commit24af5c44da2b57707976728c9374f44b20b4efe4 (patch)
tree07430f84a957467708c4280782a2b5fae784b250
parent75efacf8eb725049525ed724482ffeace76dd2fd (diff)
fix z buffer read/write issue with rv100-like chips and old ddx
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index c2057eaec68..e5d48d40ed1 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -702,7 +702,11 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
screen->depthPitch = dri_priv->depthPitch;
/* Check if ddx has set up a surface reg to cover depth buffer */
- screen->depthHasSurface = (sPriv->ddxMajor > 4);
+ screen->depthHasSurface = (sPriv->ddxMajor > 4) ||
+ /* these chips don't use tiled z without hyperz. So always pretend
+ we have set up a surface which will cause linear reads/writes */
+ ((screen->chip_family & RADEON_CLASS_R100) &&
+ !(screen->chip_flags & RADEON_CHIPSET_TCL));
if ( dri_priv->textureSize == 0 ) {
screen->texOffset[RADEON_LOCAL_TEX_HEAP] = screen->gart_texture_offset;