diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c index 15b87ddb..e33cd786 100644 --- a/src/sna/sna_dri.c +++ b/src/sna/sna_dri.c @@ -498,6 +498,12 @@ static void set_bo(PixmapPtr pixmap, struct kgem_bo *bo) if (priv->gpu_bo != bo) { kgem_bo_destroy(&sna->kgem, priv->gpu_bo); priv->gpu_bo = ref(bo); + if (priv->mapped) { + assert(!priv->shm && priv->stride); + pixmap->devPrivate.ptr = PTR(priv->ptr); + pixmap->devKind = priv->stride; + priv->mapped = false; + } } if (bo->domain != DOMAIN_GPU) bo->domain = DOMAIN_NONE;