diff options
Diffstat (limited to 'src')
| -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 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) { | 
