diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-31 14:14:40 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-31 14:14:40 +0000 |
commit | 20a4f533958991557a3b05af00f2856657579d68 (patch) | |
tree | 79840b94c343480c590e4349f07d35e263ee97c6 | |
parent | 7172f28c2b36aaa8c3a74ae4a7f699d3d4af10eb (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.c | 7 | ||||
-rw-r--r-- | src/sna/sna_display.c | 2 |
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 |