summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2014-04-15 16:31:08 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2014-04-15 16:34:06 +0100
commitb0472af1f3c6832838b0cfea38e261c908afd04e (patch)
tree296946f22af23bbb3a4b901f734269bb2c1dfc0b
parent49e72bd4e59085aa940e5af63381c5394ee670ad (diff)
sna: Mark partial composite operations upfront
Rather than guess in the backend when we are going to be called for multiple boxes, rely on the frontend declaring it correctly. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/gen2_render.c2
-rw-r--r--src/sna/gen3_render.c2
-rw-r--r--src/sna/gen4_render.c2
-rw-r--r--src/sna/gen5_render.c2
-rw-r--r--src/sna/gen6_render.c2
-rw-r--r--src/sna/gen7_render.c2
-rw-r--r--src/sna/gen8_render.c2
-rw-r--r--src/sna/sna_composite.c3
-rw-r--r--src/sna/sna_display.c2
9 files changed, 10 insertions, 9 deletions
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c
index a6c24f7c..f51d6cf3 100644
--- a/src/sna/gen2_render.c
+++ b/src/sna/gen2_render.c
@@ -1904,7 +1904,7 @@ gen2_render_composite(struct sna *sna,
if (!gen2_composite_set_target(sna, tmp, dst,
dst_x, dst_y, width, height,
- flags & COMPOSITE_PARTIAL || op > PictOpSrc || dst->pCompositeClip->data != NULL)) {
+ flags & COMPOSITE_PARTIAL || op > PictOpSrc)) {
DBG(("%s: unable to set render target\n",
__FUNCTION__));
goto fallback;
diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index 1bfc509c..6ba1bb49 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -3515,7 +3515,7 @@ gen3_render_composite(struct sna *sna,
if (!gen3_composite_set_target(sna, tmp, dst,
dst_x, dst_y, width, height,
- flags & COMPOSITE_PARTIAL || op > PictOpSrc || dst->pCompositeClip->data)) {
+ flags & COMPOSITE_PARTIAL || op > PictOpSrc)) {
DBG(("%s: unable to set render target\n",
__FUNCTION__));
goto fallback;
diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c
index ee96f6cc..f74757b9 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -1948,7 +1948,7 @@ gen4_render_composite(struct sna *sna,
if (!gen4_composite_set_target(sna, tmp, dst,
dst_x, dst_y, width, height,
- flags & COMPOSITE_PARTIAL || op > PictOpSrc || dst->pCompositeClip->data)) {
+ flags & COMPOSITE_PARTIAL || op > PictOpSrc)) {
DBG(("%s: failed to set composite target\n", __FUNCTION__));
goto fallback;
}
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index 51a9714f..67b0527a 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -1905,7 +1905,7 @@ gen5_render_composite(struct sna *sna,
if (!gen5_composite_set_target(sna, tmp, dst,
dst_x, dst_y, width, height,
- flags & COMPOSITE_PARTIAL || op > PictOpSrc || dst->pCompositeClip->data)) {
+ flags & COMPOSITE_PARTIAL || op > PictOpSrc)) {
DBG(("%s: failed to set composite target\n", __FUNCTION__));
goto fallback;
}
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index 319cdedc..cb6f2937 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -2213,7 +2213,7 @@ gen6_render_composite(struct sna *sna,
tmp->op = op;
if (!gen6_composite_set_target(sna, tmp, dst,
dst_x, dst_y, width, height,
- flags & COMPOSITE_PARTIAL || op > PictOpSrc || dst->pCompositeClip->data))
+ flags & COMPOSITE_PARTIAL || op > PictOpSrc))
goto fallback;
switch (gen6_composite_picture(sna, src, &tmp->src,
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 334958ad..8d32c3e1 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -2468,7 +2468,7 @@ gen7_render_composite(struct sna *sna,
tmp->op = op;
if (!gen7_composite_set_target(sna, tmp, dst,
dst_x, dst_y, width, height,
- flags & COMPOSITE_PARTIAL || op > PictOpSrc || dst->pCompositeClip->data))
+ flags & COMPOSITE_PARTIAL || op > PictOpSrc))
goto fallback;
switch (gen7_composite_picture(sna, src, &tmp->src,
diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
index e680f74d..0b7979e1 100644
--- a/src/sna/gen8_render.c
+++ b/src/sna/gen8_render.c
@@ -2222,7 +2222,7 @@ gen8_render_composite(struct sna *sna,
tmp->op = op;
if (!gen8_composite_set_target(sna, tmp, dst,
dst_x, dst_y, width, height,
- flags & COMPOSITE_PARTIAL || op > PictOpSrc || dst->pCompositeClip->data))
+ flags & COMPOSITE_PARTIAL || op > PictOpSrc))
goto fallback;
switch (gen8_composite_picture(sna, src, &tmp->src,
diff --git a/src/sna/sna_composite.c b/src/sna/sna_composite.c
index 5bcea883..13c9802d 100644
--- a/src/sna/sna_composite.c
+++ b/src/sna/sna_composite.c
@@ -720,7 +720,8 @@ sna_composite(CARD8 op,
region.extents.y1,
region.extents.x2 - region.extents.x1,
region.extents.y2 - region.extents.y1,
- 0, memset(&tmp, 0, sizeof(tmp)))) {
+ region.data ? COMPOSITE_PARTIAL : 0,
+ memset(&tmp, 0, sizeof(tmp)))) {
DBG(("%s: fallback due unhandled composite op\n", __FUNCTION__));
goto fallback;
}
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index cb0d063f..90c24fe0 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4948,7 +4948,7 @@ sna_crtc_redisplay__composite(xf86CrtcPtr crtc, RegionPtr region, struct kgem_bo
0, 0,
0, 0,
crtc->mode.HDisplay, crtc->mode.VDisplay,
- 0, memset(&tmp, 0, sizeof(tmp)))) {
+ COMPOSITE_PARTIAL, memset(&tmp, 0, sizeof(tmp)))) {
DBG(("%s: unsupported operation!\n", __FUNCTION__));
sna_crtc_redisplay__fallback(crtc, region, bo);
goto free_dst;