diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 6c069ee0..308f52fc 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -2135,12 +2135,16 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl sna_damage_reduce(&priv->cpu_damage); assert_pixmap_damage(pixmap); + if (priv->cpu_damage == NULL) { + priv->undamaged = false; + list_del(&priv->list); + return sna_pixmap_move_to_gpu(pixmap, flags); + } + if (priv->gpu_bo == NULL) { unsigned create, tiling; - create = 0; - if (priv->cpu_damage) - create |= CREATE_INACTIVE; + create = CREATE_INACTIVE; if (pixmap->usage_hint == SNA_CREATE_FB) create |= CREATE_EXACT | CREATE_SCANOUT; @@ -2156,22 +2160,9 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl return false; DBG(("%s: created gpu bo\n", __FUNCTION__)); - - if (flags & MOVE_WRITE && priv->cpu_damage == NULL) { - sna_damage_all(&priv->gpu_damage, - pixmap->drawable.width, - pixmap->drawable.height); - list_del(&priv->list); - goto done; - } } assert(priv->gpu_bo->proxy == NULL); - if (priv->cpu_damage == NULL) { - list_del(&priv->list); - goto done; - } - if (priv->mapped) { pixmap->devPrivate.ptr = NULL; priv->mapped = false;