summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorMichel Dänzer <[email protected]>2014-04-15 14:45:13 +0900
committerMichel Dänzer <[email protected]>2014-04-16 12:11:27 +0900
commit6ac5a5e383830d711793e425ddd285e17ffcd235 (patch)
tree77a0861a6e406546b3b8f9b7e5017f82bf109596 /src/gallium
parent9fed62723444fa76bd411ef4c2e4eeb98968a791 (diff)
r600g/radeonsi: Map transfer staging texture unsynchronized when possible
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 <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/radeon/r600_texture.c2
1 files changed, 2 insertions, 0 deletions
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;
}