summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sna/sna_accel.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 6d978146..0dac5611 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -4540,6 +4540,7 @@ sna_put_zpixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
int x, int y, int w, int h, char *bits, int stride)
{
PixmapPtr pixmap = get_drawable_pixmap(drawable);
+ unsigned int hint;
BoxRec *box;
int16_t dx, dy;
int n;
@@ -4562,8 +4563,11 @@ sna_put_zpixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
if (try_upload_tiled_x(pixmap, region, x, y, w, h, bits, stride))
return true;
- if (!sna_drawable_move_region_to_cpu(&pixmap->drawable,
- region, MOVE_WRITE))
+ hint = MOVE_WRITE;
+ if (w == pixmap->drawable.width)
+ hint |= MOVE_WHOLE_HINT;
+
+ if (!sna_drawable_move_region_to_cpu(&pixmap->drawable, region, hint))
return false;
if (sigtrap_get())