Mesa (mesa_7_6_branch): Revert "radeon: Fix legacy bo not to reuse dma buffers before refcount is 1."

Alex Deucher agd5f at kemper.freedesktop.org
Wed Nov 18 08:52:48 PST 2009


Module: Mesa
Branch: mesa_7_6_branch
Commit: 13b5a624b1899c457279907d58046dfb3c95addc
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=13b5a624b1899c457279907d58046dfb3c95addc

Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Wed Nov 18 11:27:36 2009 -0500

Revert "radeon: Fix legacy bo not to reuse dma buffers before refcount is 1."

This reverts commit 284a7af274bc148f112bd0ebb40583923ee26b49.

This breaks kde desktop effects.  See fdo bug 24131

---

 src/mesa/drivers/dri/radeon/radeon_dma.c |    9 ++-------
 1 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_dma.c b/src/mesa/drivers/dri/radeon/radeon_dma.c
index c6edbae..c9a32c8 100644
--- a/src/mesa/drivers/dri/radeon/radeon_dma.c
+++ b/src/mesa/drivers/dri/radeon/radeon_dma.c
@@ -207,6 +207,7 @@ again_alloc:
 		   counter on unused buffers for later freeing them from
 		   begin of list */
 		dma_bo = last_elem(&rmesa->dma.free);
+		assert(dma_bo->bo->cref == 1);
 		remove_from_list(dma_bo);
 		insert_at_head(&rmesa->dma.reserved, dma_bo);
 	}
@@ -306,10 +307,6 @@ static int radeon_bo_is_idle(struct radeon_bo* bo)
 		WARN_ONCE("Your libdrm or kernel doesn't have support for busy query.\n"
 			"This may cause small performance drop for you.\n");
 	}
-	/* Protect against bug in legacy bo handling that causes bos stay
-	 * referenced even after they should be freed */
-	if (bo->cref != 1)
-		return 0;
 	return ret != -EBUSY;
 }
 
@@ -346,9 +343,7 @@ void radeonReleaseDmaRegions(radeonContextPtr rmesa)
 	foreach_s(dma_bo, temp, &rmesa->dma.wait) {
 		if (dma_bo->expire_counter == time) {
 			WARN_ONCE("Leaking dma buffer object!\n");
-			/* force free of buffer so we don't realy start
-			 * leaking stuff now*/
-			while ((dma_bo->bo = radeon_bo_unref(dma_bo->bo))) {}
+			radeon_bo_unref(dma_bo->bo);
 			remove_from_list(dma_bo);
 			FREE(dma_bo);
 			continue;



More information about the mesa-commit mailing list