From 5d5c20920e0e570742a497aa047e99a2fa3c04f2 Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Tue, 27 May 2014 20:04:08 -0400 Subject: [PATCH] radeonsi: Use dma_copy when possible for si_blit. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Marek Olšák Signed-off-by: Dave Airlie --- 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 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 -- 2.30.2