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@ens.fr>
Reviewed-by: Marek Olšák<marek.olsak@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Axel Davy 2014-05-27 20:04:08 -04:00 committed by Dave Airlie
parent 9320c8fea9
commit 5d5c20920e
1 changed files with 19 additions and 0 deletions

View File

@ -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