diff options
-rw-r--r-- | src/sna/gen2_render.c | 3 | ||||
-rw-r--r-- | src/sna/gen3_render.c | 3 | ||||
-rw-r--r-- | src/sna/gen4_render.c | 3 | ||||
-rw-r--r-- | src/sna/gen5_render.c | 3 | ||||
-rw-r--r-- | src/sna/gen6_render.c | 3 | ||||
-rw-r--r-- | src/sna/gen7_render.c | 3 |
6 files changed, 12 insertions, 6 deletions
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c index 9e851764..e76876c8 100644 --- a/src/sna/gen2_render.c +++ b/src/sna/gen2_render.c @@ -1375,7 +1375,8 @@ gen2_render_composite(struct sna *sna, NULL)) kgem_submit(&sna->kgem); - if (kgem_bo_is_dirty(tmp->src.bo) || kgem_bo_is_dirty(tmp->mask.bo)) { + if ((tmp->src.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->src.bo)) || + (tmp->mask.bo && tmp->mask.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->mask.bo))) { if (tmp->src.bo == tmp->dst.bo || tmp->mask.bo == tmp->dst.bo) { kgem_emit_flush(&sna->kgem); } else { diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c index 2b70b857..118b906e 100644 --- a/src/sna/gen3_render.c +++ b/src/sna/gen3_render.c @@ -2479,7 +2479,8 @@ gen3_render_composite(struct sna *sna, NULL)) kgem_submit(&sna->kgem); - if (kgem_bo_is_dirty(tmp->src.bo) || kgem_bo_is_dirty(tmp->mask.bo)) { + if ((tmp->src.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->src.bo)) || + (tmp->mask.bo && tmp->mask.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->mask.bo))) { if (tmp->src.bo == tmp->dst.bo || tmp->mask.bo == tmp->dst.bo) { kgem_emit_flush(&sna->kgem); } else { diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c index e4a40fc3..425967b4 100644 --- a/src/sna/gen4_render.c +++ b/src/sna/gen4_render.c @@ -2058,7 +2058,8 @@ gen4_render_composite(struct sna *sna, NULL)) kgem_submit(&sna->kgem); - if (kgem_bo_is_dirty(tmp->src.bo) || kgem_bo_is_dirty(tmp->mask.bo)) + if ((tmp->src.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->src.bo)) || + (tmp->mask.bo && tmp->mask.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->mask.bo))) kgem_emit_flush(&sna->kgem); gen4_bind_surfaces(sna, tmp); diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c index a177d325..6d4fbd95 100644 --- a/src/sna/gen5_render.c +++ b/src/sna/gen5_render.c @@ -2078,7 +2078,8 @@ gen5_render_composite(struct sna *sna, tmp->dst.bo, tmp->src.bo, tmp->mask.bo, NULL)) kgem_submit(&sna->kgem); - if (kgem_bo_is_dirty(tmp->src.bo) || kgem_bo_is_dirty(tmp->mask.bo)) + if ((tmp->src.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->src.bo)) || + (tmp->mask.bo && tmp->mask.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->mask.bo))) kgem_emit_flush(&sna->kgem); gen5_bind_surfaces(sna, tmp); diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index 0dde6253..1abb54f6 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -2248,7 +2248,8 @@ gen6_render_composite(struct sna *sna, NULL)) kgem_submit(&sna->kgem); - if (kgem_bo_is_dirty(tmp->src.bo) || kgem_bo_is_dirty(tmp->mask.bo)) + if ((tmp->src.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->src.bo)) || + (tmp->mask.bo && tmp->mask.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->mask.bo))) kgem_emit_flush(&sna->kgem); gen6_emit_composite_state(sna, tmp); diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c index b9f23ee8..7eb323f8 100644 --- a/src/sna/gen7_render.c +++ b/src/sna/gen7_render.c @@ -2388,7 +2388,8 @@ gen7_render_composite(struct sna *sna, NULL)) kgem_submit(&sna->kgem); - if (kgem_bo_is_dirty(tmp->src.bo) || kgem_bo_is_dirty(tmp->mask.bo)) + if ((tmp->src.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->src.bo)) || + (tmp->mask.bo && tmp->mask.bo != tmp->dst.bo && kgem_bo_is_dirty(tmp->mask.bo))) kgem_emit_flush(&sna->kgem); gen7_emit_composite_state(sna, tmp); |