diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c index 84d78531..3486e086 100644 --- a/src/sna/gen4_render.c +++ b/src/sna/gen4_render.c @@ -2478,6 +2478,14 @@ fallback_tiled_dst: if (tmp.redirect.real_bo) kgem_bo_destroy(&sna->kgem, tmp.dst.bo); fallback_tiled: + if (sna_blt_compare_depth(&src->drawable, &dst->drawable) && + sna_blt_copy_boxes(sna, alu, + src_bo, src_dx, src_dy, + dst_bo, dst_dx, dst_dy, + dst->drawable.bitsPerPixel, + box, n)) + return true; + return sna_tiling_copy_boxes(sna, alu, src, src_bo, src_dx, src_dy, dst, dst_bo, dst_dx, dst_dy, diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c index 34cfd0e0..5b48537e 100644 --- a/src/sna/gen5_render.c +++ b/src/sna/gen5_render.c @@ -2443,6 +2443,14 @@ fallback_tiled_dst: if (tmp.redirect.real_bo) kgem_bo_destroy(&sna->kgem, tmp.dst.bo); fallback_tiled: + if (sna_blt_compare_depth(&src->drawable, &dst->drawable) && + sna_blt_copy_boxes(sna, alu, + src_bo, src_dx, src_dy, + dst_bo, dst_dx, dst_dy, + dst->drawable.bitsPerPixel, + box, n)) + return true; + return sna_tiling_copy_boxes(sna, alu, src, src_bo, src_dx, src_dy, dst, dst_bo, dst_dx, dst_dy, diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index 0c55a2d0..dd8f0dce 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -2897,6 +2897,14 @@ fallback_tiled_dst: if (tmp.redirect.real_bo) kgem_bo_destroy(&sna->kgem, tmp.dst.bo); fallback_tiled: + if (sna_blt_compare_depth(&src->drawable, &dst->drawable) && + sna_blt_copy_boxes(sna, alu, + src_bo, src_dx, src_dy, + dst_bo, dst_dx, dst_dy, + dst->drawable.bitsPerPixel, + box, n)) + return true; + return sna_tiling_copy_boxes(sna, alu, src, src_bo, src_dx, src_dy, dst, dst_bo, dst_dx, dst_dy, diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c index d1ab2e3d..edab5dbc 100644 --- a/src/sna/gen7_render.c +++ b/src/sna/gen7_render.c @@ -2990,6 +2990,14 @@ fallback_tiled_dst: if (tmp.redirect.real_bo) kgem_bo_destroy(&sna->kgem, tmp.dst.bo); fallback_tiled: + if (sna_blt_compare_depth(&src->drawable, &dst->drawable) && + sna_blt_copy_boxes(sna, alu, + src_bo, src_dx, src_dy, + dst_bo, dst_dx, dst_dy, + dst->drawable.bitsPerPixel, + box, n)) + return true; + return sna_tiling_copy_boxes(sna, alu, src, src_bo, src_dx, src_dy, dst, dst_bo, dst_dx, dst_dy,