reapply Keiths workaround for zbs emit that got dropped during
authorDave Airlie <airliedfreedesktop.org>
Sun, 23 Jan 2005 22:09:30 +0000 (22:09 +0000)
committerDave Airlie <airliedfreedesktop.org>
Sun, 23 Jan 2005 22:09:30 +0000 (22:09 +0000)
state change patches....

src/mesa/drivers/dri/radeon/radeon_ioctl.c

index 2378285a69920e25044afeb12de2c72b1c2f14c8..8fe0e8c8459e89b15de7974bdea7d306f26d7446 100644 (file)
@@ -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) {