Mesa (master): gallium/radeon: reset valid_buffer_range on PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE

Nicolai Hähnle nh at kemper.freedesktop.org
Thu Jan 14 14:43:47 UTC 2016


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

Author: Nicolai Hähnle <nicolai.haehnle at amd.com>
Date:   Sun Jan 10 19:54:44 2016 -0500

gallium/radeon: reset valid_buffer_range on PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE

This accomodates a streaming pattern where the discard flag is set when the
application wraps back to the beginning of the buffer.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/drivers/radeon/r600_buffer_common.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/gallium/drivers/radeon/r600_buffer_common.c b/src/gallium/drivers/radeon/r600_buffer_common.c
index 484f5c8..aeb9a20 100644
--- a/src/gallium/drivers/radeon/r600_buffer_common.c
+++ b/src/gallium/drivers/radeon/r600_buffer_common.c
@@ -280,7 +280,10 @@ static void *r600_buffer_transfer_map(struct pipe_context *ctx,
 		if (r600_rings_is_buffer_referenced(rctx, rbuffer->buf, RADEON_USAGE_READWRITE) ||
 		    !rctx->ws->buffer_wait(rbuffer->buf, 0, RADEON_USAGE_READWRITE)) {
 			rctx->invalidate_buffer(&rctx->b, &rbuffer->b.b);
+		} else {
+			util_range_set_empty(&rbuffer->valid_buffer_range);
 		}
+
 		/* At this point, the buffer is always idle. */
 		usage |= PIPE_TRANSFER_UNSYNCHRONIZED;
 	}




More information about the mesa-commit mailing list