diff options
Diffstat (limited to 'src/sna/sna_accel.c')
-rw-r--r-- | src/sna/sna_accel.c | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index a71d5e1e..f6ac635e 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -204,7 +204,6 @@ static Bool sna_destroy_private(PixmapPtr pixmap, struct sna_pixmap *priv) sna->freed_pixmap = pixmap; priv->gpu_bo = NULL; priv->cpu_bo = NULL; - priv->mapped = 0; return false; } @@ -486,27 +485,25 @@ static void sna_pixmap_map_to_cpu(struct sna *sna, PixmapPtr pixmap, struct sna_pixmap *priv) { + ScreenPtr screen = pixmap->drawable.pScreen; + void *ptr; + DBG(("%s: AWOOGA, AWOOGA!\n", __FUNCTION__)); - if (priv->mapped == 0) { - ScreenPtr screen = pixmap->drawable.pScreen; - void *ptr; + kgem_bo_submit(&sna->kgem, priv->gpu_bo); - ptr = kgem_bo_map(&sna->kgem, - priv->gpu_bo, - PROT_READ | PROT_WRITE); - assert(ptr != NULL); + ptr = kgem_bo_map(&sna->kgem, + priv->gpu_bo, + PROT_READ | PROT_WRITE); + assert(ptr != NULL); - screen->ModifyPixmapHeader(pixmap, - pixmap->drawable.width, - pixmap->drawable.height, - pixmap->drawable.depth, - pixmap->drawable.bitsPerPixel, - priv->gpu_bo->pitch, - ptr); - priv->mapped = 1; - } - kgem_bo_submit(&sna->kgem, priv->gpu_bo); + screen->ModifyPixmapHeader(pixmap, + pixmap->drawable.width, + pixmap->drawable.height, + pixmap->drawable.depth, + pixmap->drawable.bitsPerPixel, + priv->gpu_bo->pitch, + ptr); } static inline void list_move(struct list *list, struct list *head) @@ -995,7 +992,6 @@ sna_pixmap_create_upload(ScreenPtr screen, priv->cpu_damage = priv->gpu_damage = NULL; priv->gpu_only = 0; priv->pinned = 0; - priv->mapped = 0; list_init(&priv->list); list_init(&priv->inactive); |