diff options
author | Russell King <rmk+cubox@arm.linux.org.uk> | 2013-08-28 11:14:30 +0100 |
---|---|---|
committer | Russell King <rmk@arm.linux.org.uk> | 2013-10-29 19:21:11 +0000 |
commit | 3b30840ff060b04e03d6d97c1305bdb81e07da36 (patch) | |
tree | ed35c3a3fa6251f266600013a3ae246012fb20c7 | |
parent | a9c9360159431d97334cf8488eb36428b409fcd1 (diff) |
Provide a function to unmap bo-mapped objects
This complements vivante_map_bo_to_gpu().
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
-rw-r--r-- | src/vivante.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/vivante.c b/src/vivante.c index b113942..8ec42fe 100644 --- a/src/vivante.c +++ b/src/vivante.c @@ -74,12 +74,19 @@ static Bool vivante_map_bo_to_gpu(struct vivante *vivante, return TRUE; } +static void vivante_unmap_from_gpu(struct vivante *vivante, void *info, + uint32_t handle) +{ + gcoOS_UnmapUserMemory(vivante->os, (void *)1, 1, info, handle); +} + void vivante_free_pixmap(PixmapPtr pixmap) { struct vivante_pixmap *vPix = vivante_get_pixmap_priv(pixmap); - struct vivante *vivante; if (vPix) { + struct vivante *vivante; + vivante = vivante_get_screen_priv(pixmap->drawable.pScreen); vivante_batch_wait_commit(vivante, vPix); if (vPix->bo->type == DRM_ARMADA_BO_SHMEM && vPix->owner == GPU) @@ -90,8 +97,8 @@ void vivante_free_pixmap(PixmapPtr pixmap) * to the GPU, and have to be unmapped. */ if (vPix->handle != -1) - gcoOS_UnmapUserMemory(vivante->os, (void *)1, 1, - vPix->info, vPix->handle); + vivante_unmap_from_gpu(vivante, vPix->info, + vPix->handle); free(vPix); } } @@ -443,9 +450,8 @@ static Bool vivante_CloseScreen(int scrnIndex, ScreenPtr pScreen) pScreen->BitmapToRegion = vivante->BitmapToRegion; pScreen->BlockHandler = vivante->BlockHandler; - gcoOS_UnmapUserMemory(vivante->os, (void *)1, 1, - vivante->batch_info, - vivante->batch_handle); + vivante_unmap_from_gpu(vivante, vivante->batch_info, + vivante->batch_handle); vivante_accel_shutdown(vivante); @@ -696,9 +702,8 @@ Bool vivante_ScreenInit(ScreenPtr pScreen, struct drm_armada_bufmgr *mgr) fail: if (vivante->batch_info) - gcoOS_UnmapUserMemory(vivante->os, (void *)1, 1, - vivante->batch_info, - vivante->batch_handle); + vivante_unmap_from_gpu(vivante, vivante->batch_info, + vivante->batch_handle); vivante_accel_shutdown(vivante); if (vivante->batch_bo) drm_armada_bo_put(vivante->batch_bo); |