summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorAxel Davy <[email protected]>2014-05-27 20:04:08 -0400
committerDave Airlie <[email protected]>2014-07-01 13:10:01 +1000
commit5d5c20920e0e570742a497aa047e99a2fa3c04f2 (patch)
treeed3828b9cf037db8c8facba0d3c46a1016256709 /src/gallium/drivers
parent9320c8fea947fd0f6eb723c67f0bdb947e45c4c3 (diff)
radeonsi: Use dma_copy when possible for si_blit.
This improves GLX DRI3 GPU offloading significantly on CPU bound benchmarks particularly. No performance impact for DRI2 GPU offloading. v2: Add missing tests Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Marek Olšák<[email protected]> Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/radeonsi/si_blit.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index 8c3e1364160..6162dfa5a46 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -730,6 +730,25 @@ static void si_blit(struct pipe_context *ctx,
return;
}
+ if (info->src.box.width == info->dst.box.width &&
+ info->src.box.height == info->dst.box.height &&
+ info->src.format == info->dst.format &&
+ info->src.box.width > 0 &&
+ info->src.box.height > 0 &&
+ info->src.resource->nr_samples <= 1 &&
+ info->dst.resource->nr_samples <= 1 &&
+ info->src.box.depth == info->dst.box.depth &&
+ info->mask == PIPE_MASK_RGBA &&
+ !info->scissor_enable &&
+ (!info->render_condition_enable ||
+ !sctx->b.current_render_cond)) {
+ sctx->b.dma_copy(ctx, info->dst.resource, info->dst.level,
+ info->dst.box.x, info->dst.box.y,
+ info->dst.box.z, info->src.resource,
+ info->src.level, &(info->src.box));
+ return;
+ }
+
assert(util_blitter_is_blit_supported(sctx->blitter, info));
/* The driver doesn't decompress resources automatically while