diff -u -r xf86-video-ati-6.12.0/src/radeon_accel.c xf86-video-ati-6.12.0-work/src/radeon_accel.c
--- xf86-video-ati-6.12.0/src/radeon_accel.c	2009-03-14 00:23:19.000000000 +0100
+++ xf86-video-ati-6.12.0-work/src/radeon_accel.c	2009-03-15 13:12:33.000000000 +0100
@@ -689,7 +689,6 @@
     int                start  = info->cp->indirectStart;
     drm_radeon_indirect_t  indirect;
     RING_LOCALS;
-    RADEONCP_REFRESH(pScrn, info);
 
     if (!buffer) return;
     if (start == buffer->used && !discard) return;
@@ -700,6 +699,7 @@
     }
 
     if (info->ChipFamily >= CHIP_FAMILY_R600) {
+	RADEONCP_REFRESH(pScrn, info);
 	while (buffer->used & 0x3c){
 	    BEGIN_RING(1);
 	    OUT_RING(CP_PACKET2()); /* fill up to multiple of 16 dwords */
@@ -736,10 +736,9 @@
     int                start  = info->cp->indirectStart;
     drm_radeon_indirect_t  indirect;
     RING_LOCALS;
-    RADEONCP_REFRESH(pScrn, info);
-
 
     if (info->ChipFamily >= CHIP_FAMILY_R600) {
+	RADEONCP_REFRESH(pScrn, info);
 	if (buffer) {
 	    while (buffer->used & 0x3c) {
 		BEGIN_RING(1);

