Mesa (master): r600g: Made radeon_bo_pb_map_internal() actually call radeon_bo_map().

Tilman Sauerbeck tilman at kemper.freedesktop.org
Tue Nov 2 21:09:13 UTC 2010


Module: Mesa
Branch: master
Commit: b675266f0e144fd8cd08600c72a8207ce50b25e8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b675266f0e144fd8cd08600c72a8207ce50b25e8

Author: Tilman Sauerbeck <tilman at code-monkey.de>
Date:   Fri Oct 29 19:29:54 2010 +0200

r600g: Made radeon_bo_pb_map_internal() actually call radeon_bo_map().

This ensures that we increase bo->map_count when radeon_bo_map_internal()
returns successfully, which in turn makes sure we don't decrement
bo->map_count below zero later.

Signed-off-by: Tilman Sauerbeck <tilman at code-monkey.de>

---

 src/gallium/winsys/r600/drm/radeon_bo_pb.c |   20 +++++++-------------
 1 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/src/gallium/winsys/r600/drm/radeon_bo_pb.c b/src/gallium/winsys/r600/drm/radeon_bo_pb.c
index 4454f52..f74b934 100644
--- a/src/gallium/winsys/r600/drm/radeon_bo_pb.c
+++ b/src/gallium/winsys/r600/drm/radeon_bo_pb.c
@@ -80,7 +80,7 @@ radeon_bo_pb_map_internal(struct pb_buffer *_buf,
 	struct pipe_context *pctx = ctx;
 
 	if (flags & PB_USAGE_UNSYNCHRONIZED) {
-		if (!buf->bo->data && radeon_bo_map(buf->mgr->radeon, buf->bo)) {
+		if (radeon_bo_map(buf->mgr->radeon, buf->bo)) {
 			return NULL;
 		}
 		LIST_DELINIT(&buf->maplist);
@@ -106,18 +106,12 @@ radeon_bo_pb_map_internal(struct pb_buffer *_buf,
 		goto out;
 	}
 
-	if (buf->bo->data != NULL) {
-		if (radeon_bo_wait(buf->mgr->radeon, buf->bo)) {
-			return NULL;
-		}
-	} else {
-		if (radeon_bo_map(buf->mgr->radeon, buf->bo)) {
-			return NULL;
-		}
-		if (radeon_bo_wait(buf->mgr->radeon, buf->bo)) {
-			radeon_bo_unmap(buf->mgr->radeon, buf->bo);
-			return NULL;
-		}
+	if (radeon_bo_map(buf->mgr->radeon, buf->bo)) {
+		return NULL;
+	}
+	if (radeon_bo_wait(buf->mgr->radeon, buf->bo)) {
+		radeon_bo_unmap(buf->mgr->radeon, buf->bo);
+		return NULL;
 	}
 out:
 	LIST_DELINIT(&buf->maplist);




More information about the mesa-commit mailing list