From 6ac5a5e383830d711793e425ddd285e17ffcd235 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michel=20D=C3=A4nzer?= Date: Tue, 15 Apr 2014 14:45:13 +0900 Subject: [PATCH] r600g/radeonsi: Map transfer staging texture unsynchronized when possible MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The transfer staging texture is always freshly allocated, so for write-only transfers we don't need to explicitly wait for the BO to become idle. Squeezes a few hundered MB/s more out of x11perf -shmput500 with glamor. Reviewed-by: Marek Olšák --- src/gallium/drivers/radeon/r600_texture.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c index 293eeaa0890..c410543b81b 100644 --- a/src/gallium/drivers/radeon/r600_texture.c +++ b/src/gallium/drivers/radeon/r600_texture.c @@ -1039,6 +1039,8 @@ static void *r600_texture_transfer_map(struct pipe_context *ctx, if (trans->staging) { buf = trans->staging; + if (!rtex->is_depth && !(usage & PIPE_TRANSFER_READ)) + usage |= PIPE_TRANSFER_UNSYNCHRONIZED; } else { buf = &rtex->resource; } -- 2.30.2