summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+cubox@arm.linux.org.uk>2013-08-28 11:14:30 +0100
committerRussell King <rmk@arm.linux.org.uk>2013-10-29 19:21:11 +0000
commit3b30840ff060b04e03d6d97c1305bdb81e07da36 (patch)
treeed35c3a3fa6251f266600013a3ae246012fb20c7
parenta9c9360159431d97334cf8488eb36428b409fcd1 (diff)
downloadxf86-video-armada-3b30840ff060b04e03d6d97c1305bdb81e07da36.tar.gz
xf86-video-armada-3b30840ff060b04e03d6d97c1305bdb81e07da36.tar.xz
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.c23
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);