summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-10-31 14:14:40 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2011-10-31 14:14:40 +0000
commit20a4f533958991557a3b05af00f2856657579d68 (patch)
tree79840b94c343480c590e4349f07d35e263ee97c6
parent7172f28c2b36aaa8c3a74ae4a7f699d3d4af10eb (diff)
sna: Apply the GPU damage for clipped PolyFillRectangles
Reported-by: Clemens Eisserer <linuxhippy@gmail.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42425 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_accel.c7
-rw-r--r--src/sna/sna_display.c2
2 files changed, 6 insertions, 3 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 5f7e3b99..4c9c09ab 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1368,7 +1368,7 @@ sna_self_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc,
int alu = gc ? gc->alu : GXcopy;
int16_t tx, ty;
- if (n == 0 || (dx | dy) == 0)
+ if (n == 0 || ((dx | dy) == 0 && alu == GXcopy))
return;
DBG(("%s (boxes=%dx[(%d, %d), (%d, %d)...], src=+(%d, %d), alu=%d, pix.size=%dx%d)\n",
@@ -5022,8 +5022,11 @@ sna_poly_fill_rect_blt(DrawablePtr drawable,
}
RegionUninit(&clip);
- if (b != boxes)
+ if (b != boxes) {
fill.boxes(sna, &fill, boxes, b-boxes);
+ if (damage)
+ sna_damage_add_boxes(damage, boxes, last_box-boxes, 0, 0);
+ }
}
done:
fill.done(sna, &fill);
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 98743bc6..a82ccd8e 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -603,7 +603,7 @@ static void update_flush_interval(struct sna *sna)
sna->flush_interval = 2000 * 1000 * 1000 / max_vrefresh;
DBG(("max_vrefresh=%d, flush_interval=%d ns\n",
- max_vrefresh, sna->flush_inteval));
+ max_vrefresh, sna->flush_interval));
}
static Bool