xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Sun Mar 15 09:12:03 PDT 2009


 src/radeon_accel.c |   21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

New commits:
commit a55ced5ee20c07e743c7c0978803fd10589c1531
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Sun Mar 15 12:08:04 2009 -0400

    Fix fallout from r6xx/r7xx EXA merge in IB handling
    
    Noticed Christiaan van Dijk.
    Should fix bug 20510

diff --git a/src/radeon_accel.c b/src/radeon_accel.c
index dffbc57..a9a4848 100644
--- a/src/radeon_accel.c
+++ b/src/radeon_accel.c
@@ -688,8 +688,6 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard)
     drmBufPtr          buffer = info->cp->indirectBuffer;
     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,10 +698,14 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard)
     }
 
     if (info->ChipFamily >= CHIP_FAMILY_R600) {
-	while (buffer->used & 0x3c){
-	    BEGIN_RING(1);
-	    OUT_RING(CP_PACKET2()); /* fill up to multiple of 16 dwords */
-	    ADVANCE_RING();
+	if (buffer->used & 0x3c) {
+	    RING_LOCALS;
+
+	    while (buffer->used & 0x3c) {
+		BEGIN_RING(1);
+		OUT_RING(CP_PACKET2()); /* fill up to multiple of 16 dwords */
+		ADVANCE_RING();
+	    }
 	}
     }
 
@@ -735,12 +737,11 @@ void RADEONCPReleaseIndirect(ScrnInfoPtr pScrn)
     drmBufPtr          buffer = info->cp->indirectBuffer;
     int                start  = info->cp->indirectStart;
     drm_radeon_indirect_t  indirect;
-    RING_LOCALS;
-    RADEONCP_REFRESH(pScrn, info);
-
 
     if (info->ChipFamily >= CHIP_FAMILY_R600) {
-	if (buffer) {
+	if (buffer && (buffer->used & 0x3c)) {
+	    RING_LOCALS;
+
 	    while (buffer->used & 0x3c) {
 		BEGIN_RING(1);
 		OUT_RING(CP_PACKET2()); /* fill up to multiple of 16 dwords */


More information about the xorg-commit mailing list