Mesa (master): r600g, radeonsi: skip unnecessary buffer_is_busy call, add a comment

Marek Olšák mareko at kemper.freedesktop.org
Tue Feb 4 19:27:35 UTC 2014


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sat Feb  1 15:06:39 2014 +0100

r600g,radeonsi: skip unnecessary buffer_is_busy call, add a comment

---

 src/gallium/drivers/radeon/r600_buffer_common.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeon/r600_buffer_common.c b/src/gallium/drivers/radeon/r600_buffer_common.c
index 5b92825..2077228 100644
--- a/src/gallium/drivers/radeon/r600_buffer_common.c
+++ b/src/gallium/drivers/radeon/r600_buffer_common.c
@@ -49,6 +49,7 @@ void *r600_buffer_map_sync_with_rings(struct r600_common_context *ctx,
                                       unsigned usage)
 {
 	enum radeon_bo_usage rusage = RADEON_USAGE_READWRITE;
+	bool busy = false;
 
 	if (usage & PIPE_TRANSFER_UNSYNCHRONIZED) {
 		return ctx->ws->buffer_map(resource->cs_buf, NULL, usage);
@@ -67,6 +68,7 @@ void *r600_buffer_map_sync_with_rings(struct r600_common_context *ctx,
 			return NULL;
 		} else {
 			ctx->rings.gfx.flush(ctx, 0);
+			busy = true;
 		}
 	}
 	if (ctx->rings.dma.cs &&
@@ -78,10 +80,11 @@ void *r600_buffer_map_sync_with_rings(struct r600_common_context *ctx,
 			return NULL;
 		} else {
 			ctx->rings.dma.flush(ctx, 0);
+			busy = true;
 		}
 	}
 
-	if (ctx->ws->buffer_is_busy(resource->buf, rusage)) {
+	if (busy || ctx->ws->buffer_is_busy(resource->buf, rusage)) {
 		if (usage & PIPE_TRANSFER_DONTBLOCK) {
 			return NULL;
 		} else {
@@ -93,6 +96,7 @@ void *r600_buffer_map_sync_with_rings(struct r600_common_context *ctx,
 		}
 	}
 
+	/* Setting the CS to NULL will prevent doing checks we have done already. */
 	return ctx->ws->buffer_map(resource->cs_buf, NULL, usage);
 }
 




More information about the mesa-commit mailing list