diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index 973af9d2..2afe5ee2 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -2694,6 +2694,10 @@ static inline bool prefer_blt_copy(struct sna *sna, kgem_bo_is_render(src_bo)) return false; + if (flags & COPY_LAST && + can_switch_to_blt(sna, dst_bo, flags)) + return true; + if (prefer_render_ring(sna, dst_bo)) return false; diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c index 87b0ca6f..e8e14b54 100644 --- a/src/sna/gen7_render.c +++ b/src/sna/gen7_render.c @@ -2897,6 +2897,10 @@ prefer_blt_copy(struct sna *sna, kgem_bo_is_render(src_bo)) return false; + if (flags & COPY_LAST && + can_switch_to_blt(sna, dst_bo, flags)) + return true; + if (prefer_render_ring(sna, dst_bo)) return false; diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c index f6747ef1..b5a4895b 100644 --- a/src/sna/gen8_render.c +++ b/src/sna/gen8_render.c @@ -2720,6 +2720,10 @@ prefer_blt_copy(struct sna *sna, kgem_bo_is_render(src_bo)) return false; + if (flags & COPY_LAST && + can_switch_to_blt(sna, dst_bo, flags)) + return true; + if (prefer_render_ring(sna, dst_bo)) return false;