[Mesa-dev] [PATCH 07/13] gallium/radeon: handle other map buffer flags from the threaded context

Marek Olšák maraeo at gmail.com
Wed May 10 22:45:40 UTC 2017


From: Marek Olšák <marek.olsak at amd.com>

---
 src/gallium/drivers/radeon/r600_buffer_common.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_buffer_common.c b/src/gallium/drivers/radeon/r600_buffer_common.c
index 4132858..5d984ea 100644
--- a/src/gallium/drivers/radeon/r600_buffer_common.c
+++ b/src/gallium/drivers/radeon/r600_buffer_common.c
@@ -347,35 +347,37 @@ static void *r600_buffer_transfer_map(struct pipe_context *ctx,
 	 *        virtual mapping of that memory, although the same physical
 	 *        page will be used.
 	 *
 	 * So don't ever use staging buffers.
 	 */
 	if (rscreen->ws->buffer_is_user_ptr(rbuffer->buf))
 		usage |= PIPE_TRANSFER_PERSISTENT;
 
 	/* See if the buffer range being mapped has never been initialized,
 	 * in which case it can be mapped unsynchronized. */
-	if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED) &&
+	if (!(usage & (PIPE_TRANSFER_UNSYNCHRONIZED |
+		       TC_TRANSFER_MAP_IGNORE_VALID_RANGE)) &&
 	    usage & PIPE_TRANSFER_WRITE &&
 	    !rbuffer->is_shared &&
 	    !util_ranges_intersect(&rbuffer->valid_buffer_range, box->x, box->x + box->width)) {
 		usage |= PIPE_TRANSFER_UNSYNCHRONIZED;
 	}
 
 	/* If discarding the entire range, discard the whole resource instead. */
 	if (usage & PIPE_TRANSFER_DISCARD_RANGE &&
 	    box->x == 0 && box->width == resource->width0) {
 		usage |= PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE;
 	}
 
 	if (usage & PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE &&
-	    !(usage & PIPE_TRANSFER_UNSYNCHRONIZED)) {
+	    !(usage & (PIPE_TRANSFER_UNSYNCHRONIZED |
+		       TC_TRANSFER_MAP_NO_INVALIDATE))) {
 		assert(usage & PIPE_TRANSFER_WRITE);
 
 		if (r600_invalidate_buffer(rctx, rbuffer)) {
 			/* At this point, the buffer is always idle. */
 			usage |= PIPE_TRANSFER_UNSYNCHRONIZED;
 		} else {
 			/* Fall back to a temporary buffer. */
 			usage |= PIPE_TRANSFER_DISCARD_RANGE;
 		}
 	}
-- 
2.7.4



More information about the mesa-dev mailing list