sna/gen6+: Prefer the BLT for large overlapping copies

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2014-06-13 12:32:12 +01:00
parent 87fc78ac4f
commit 97003b1a2d
3 changed files with 15 additions and 9 deletions

View File

@ -2725,10 +2725,9 @@ fallback_blt:
src_bo, src_dx, src_dy,
dst_bo, dst_dx, dst_dy,
box, n, &extents)) {
if (too_large(extents.x2-extents.x1, extents.y2-extents.y1))
goto fallback_blt;
bool big = too_large(extents.x2-extents.x1, extents.y2-extents.y1);
if (can_switch_to_blt(sna, dst_bo, flags) &&
if ((big || can_switch_to_blt(sna, dst_bo, flags)) &&
sna_blt_copy_boxes(sna, alu,
src_bo, src_dx, src_dy,
dst_bo, dst_dx, dst_dy,
@ -2736,6 +2735,9 @@ fallback_blt:
box, n))
return true;
if (big)
goto fallback_blt;
return sna_render_copy_boxes__overlap(sna, alu,
src, src_bo, src_dx, src_dy,
dst, dst_bo, dst_dx, dst_dy,

View File

@ -2962,10 +2962,9 @@ fallback_blt:
src_bo, src_dx, src_dy,
dst_bo, dst_dx, dst_dy,
box, n, &extents)) {
if (too_large(extents.x2-extents.x1, extents.y2-extents.y1))
goto fallback_blt;
bool big = too_large(extents.x2-extents.x1, extents.y2-extents.y1);
if (can_switch_to_blt(sna, dst_bo, flags) &&
if ((big || can_switch_to_blt(sna, dst_bo, flags)) &&
sna_blt_copy_boxes(sna, alu,
src_bo, src_dx, src_dy,
dst_bo, dst_dx, dst_dy,
@ -2973,6 +2972,9 @@ fallback_blt:
box, n))
return true;
if (big)
goto fallback_blt;
return sna_render_copy_boxes__overlap(sna, alu,
src, src_bo, src_dx, src_dy,
dst, dst_bo, dst_dx, dst_dy,

View File

@ -2786,10 +2786,9 @@ fallback_blt:
src_bo, src_dx, src_dy,
dst_bo, dst_dx, dst_dy,
box, n, &extents)) {
if (too_large(extents.x2-extents.x1, extents.y2-extents.y1))
goto fallback_blt;
bool big = too_large(extents.x2-extents.x1, extents.y2-extents.y1);
if (can_switch_to_blt(sna, dst_bo, flags) &&
if ((big || can_switch_to_blt(sna, dst_bo, flags)) &&
sna_blt_copy_boxes(sna, alu,
src_bo, src_dx, src_dy,
dst_bo, dst_dx, dst_dy,
@ -2797,6 +2796,9 @@ fallback_blt:
box, n))
return true;
if (big)
goto fallback_blt;
return sna_render_copy_boxes__overlap(sna, alu,
src, src_bo, src_dx, src_dy,
dst, dst_bo, dst_dx, dst_dy,