Mesa (master): radeonsi: Use dma_copy when possible for si_blit.

Dave Airlie airlied at kemper.freedesktop.org
Tue Jul 1 03:11:47 UTC 2014


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

Author: Axel Davy <axel.davy at ens.fr>
Date:   Tue May 27 20:04:08 2014 -0400

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 <axel.davy at ens.fr>
Reviewed-by: Marek Olšák<marek.olsak at amd.com>
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/drivers/radeonsi/si_blit.c |   19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index 8c3e136..6162dfa 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




More information about the mesa-commit mailing list