From 8ef851b223253c38e6367efdeff6b4d551cd2b6b Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 25 Sep 2013 15:07:48 +0100 Subject: [PATCH] sna: Promote self-copies to the GPU Signed-off-by: Chris Wilson --- src/sna/sna_accel.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 38288eea..9f0a4e44 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -4865,6 +4865,8 @@ sna_self_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc, int alu = gc ? gc->alu : GXcopy; int16_t tx, ty; + assert(pixmap == get_drawable_pixmap(dst)); + assert(RegionNumRects(region)); if (((dx | dy) == 0 && alu == GXcopy)) return; @@ -4914,8 +4916,14 @@ sna_self_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc, if (!DAMAGE_IS_ALL(priv->gpu_damage)) { assert(!priv->clear); - RegionTranslate(region, tx, ty); - sna_damage_add(&priv->gpu_damage, region); + if (priv->cpu_bo == NULL) { + sna_damage_all(&priv->gpu_damage, + pixmap->drawable.width, + pixmap->drawable.height); + } else { + RegionTranslate(region, tx, ty); + sna_damage_add(&priv->gpu_damage, region); + } } assert_pixmap_damage(pixmap); } else {