Mesa (master): r600g: assume DISCARD_WHOLE_RESOURCE is always used with WRITE
Marek Olšák
mareko at kemper.freedesktop.org
Fri May 11 15:42:10 UTC 2012
Module: Mesa
Branch: master
Commit: d3bab0c7bee7439fa834fd86a835119fc5fa3307
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d3bab0c7bee7439fa834fd86a835119fc5fa3307
Author: Marek Olšák <maraeo at gmail.com>
Date: Fri May 11 17:34:26 2012 +0200
r600g: assume DISCARD_WHOLE_RESOURCE is always used with WRITE
---
src/gallium/drivers/r600/r600_buffer.c | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/gallium/drivers/r600/r600_buffer.c b/src/gallium/drivers/r600/r600_buffer.c
index 0ca6ff1..857d860 100644
--- a/src/gallium/drivers/r600/r600_buffer.c
+++ b/src/gallium/drivers/r600/r600_buffer.c
@@ -86,14 +86,13 @@ static void *r600_buffer_transfer_map(struct pipe_context *pipe,
struct r600_context *rctx = (struct r600_context*)pipe;
uint8_t *data;
- if (transfer->usage & PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE) {
- /* When mapping for read, we only need to check if the GPU is writing to it. */
- enum radeon_bo_usage rusage = transfer->usage & PIPE_TRANSFER_WRITE ?
- RADEON_USAGE_READWRITE : RADEON_USAGE_WRITE;
+ if (transfer->usage & PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE &&
+ !(transfer->usage & PIPE_TRANSFER_UNSYNCHRONIZED)) {
+ assert(transfer->usage & PIPE_TRANSFER_WRITE);
/* Check if mapping this buffer would cause waiting for the GPU. */
- if (rctx->ws->cs_is_buffer_referenced(rctx->cs, rbuffer->cs_buf, rusage) ||
- rctx->ws->buffer_is_busy(rbuffer->buf, rusage)) {
+ if (rctx->ws->cs_is_buffer_referenced(rctx->cs, rbuffer->cs_buf, RADEON_USAGE_READWRITE) ||
+ rctx->ws->buffer_is_busy(rbuffer->buf, RADEON_USAGE_READWRITE)) {
unsigned i;
/* Discard the buffer. */
More information about the mesa-commit
mailing list