Index: extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.c =================================================================== RCS file: /srv/cvs.freedesktop.org/cvs/xorg/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.c,v retrieving revision 1.1.1.2.2.1 diff -u -r1.1.1.2.2.1 radeon_ioctl.c --- extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.c 15 Dec 2004 01:50:58 -0000 1.1.1.2.2.1 +++ extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.c 23 Jan 2005 23:32:09 -0000 @@ -179,8 +179,7 @@ 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 @@ 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) {