From: Marek Olšák Date: Sat, 1 Feb 2014 14:06:39 +0000 (+0100) Subject: r600g,radeonsi: skip unnecessary buffer_is_busy call, add a comment X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=07075cf350a57bb61e6c99c7abb769f02b9068a7;p=mesa.git r600g,radeonsi: skip unnecessary buffer_is_busy call, add a comment --- diff --git a/src/gallium/drivers/radeon/r600_buffer_common.c b/src/gallium/drivers/radeon/r600_buffer_common.c index 5b9282539e9..20772289e24 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); }