diff options
author | Eric Anholt <anholt@FreeBSD.org> | 2005-02-14 04:52:29 +0000 |
---|---|---|
committer | Eric Anholt <anholt@FreeBSD.org> | 2005-02-14 04:52:29 +0000 |
commit | c0a5e6c673b1a1336eae43a2c7aee7881f86a5a1 (patch) | |
tree | 58052677e6b0b9b7500dc135b8d59defdb3bd893 | |
parent | 70e5d1bdf9a8b41a428a6e4b6b9b486a56ea055a (diff) |
Merge r1.21: reapply Keith's workaround zbs emit which fixes various apps on
rv200 hardware.
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_ioctl.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.c b/src/mesa/drivers/dri/radeon/radeon_ioctl.c index 61aa944d43..19368cdc71 100644 --- a/src/mesa/drivers/dri/radeon/radeon_ioctl.c +++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.c @@ -179,8 +179,7 @@ void radeonEmitState( radeonContextPtr rmesa ) rmesa->save_on_next_emit = GL_FALSE; } - if (!rmesa->hw.is_dirty && !rmesa->hw.all_dirty) - return; + /* this code used to return here but now it emits zbs */ /* To avoid going across the entire set of states multiple times, just check * for enough space for the case of emitting all state, and inline the @@ -189,6 +188,12 @@ void radeonEmitState( radeonContextPtr rmesa ) radeonEnsureCmdBufSpace(rmesa, rmesa->hw.max_state_size); dest = rmesa->store.cmd_buf + rmesa->store.cmd_used; + /* We always always emit zbs, this is due to a bug found by keithw in + the hardware and rediscovered after Erics changes by me. + if you ever touch this code make sure you emit zbs otherwise + you get tcl lockups on at least M7/7500 class of chips - airlied */ + rmesa->hw.zbs.dirty=1; + if (RADEON_DEBUG & DEBUG_STATE) { foreach(atom, &rmesa->hw.atomlist) { if (atom->dirty || rmesa->hw.all_dirty) { |