summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sna/gen2_render.c3
-rw-r--r--src/sna/gen3_render.c3
-rw-r--r--src/sna/gen4_render.c3
-rw-r--r--src/sna/gen5_render.c3
-rw-r--r--src/sna/gen6_render.c3
-rw-r--r--src/sna/gen7_render.c3
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);