summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDave Airlie <airliedfreedesktop.org>2005-01-23 22:09:30 +0000
committerDave Airlie <airliedfreedesktop.org>2005-01-23 22:09:30 +0000
commit72e3664996721263858f3096e4a618a406550402 (patch)
tree5dae7f0e3e98fee8704373a17cd788016e9da45e /src
parent0b5a5a9efb7eebe41012f95122a4914285650f55 (diff)
reapply Keiths workaround for zbs emit that got dropped during
state change patches....
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_ioctl.c9
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 2378285a69..8fe0e8c845 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) {