From cdc6e09ab6a6c1df8a5e144bd6fb6eddd790e7af Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 27 Jan 2015 18:09:28 +0900 Subject: [PATCH] Change DRM_EXYNOS_GEM_MAP to DRM_IOCTL_MODE_MAP_DUMB and mmap Change-Id: I4ca3fe556e626ce52540f55b5df3f60f54e46b44 Signed-off-by: Changyeon Lee --- src/tbm_bufmgr_exynos4412.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) mode change 100644 => 100755 src/tbm_bufmgr_exynos4412.c diff --git a/src/tbm_bufmgr_exynos4412.c b/src/tbm_bufmgr_exynos4412.c old mode 100644 new mode 100755 index cd6b28d..0f90ffd --- a/src/tbm_bufmgr_exynos4412.c +++ b/src/tbm_bufmgr_exynos4412.c @@ -294,18 +294,28 @@ _exynos4412_bo_handle (tbm_bo_exynos4412 bo_exynos4412, int device) case TBM_DEVICE_CPU: if (!bo_exynos4412->pBase) { - struct drm_exynos_gem_mmap arg = {0,}; + struct drm_mode_map_dumb arg = {0,}; + void *map = NULL; arg.handle = bo_exynos4412->gem; - arg.size = bo_exynos4412->size; - if (drmCommandWriteRead (bo_exynos4412->fd, DRM_EXYNOS_GEM_MMAP, &arg, sizeof(arg))) + if (drmIoctl (bo_exynos4412->fd, DRM_IOCTL_MODE_MAP_DUMB, &arg)) + { + TBM_EXYNOS4412_LOG ("[libtbm-exynos4412:%d] " + "error %s:%d Cannot map_dumb gem=%d\n", + getpid(), __FUNCTION__, __LINE__, bo_exynos4412->gem); + return (tbm_bo_handle) NULL; + } + + map = mmap (NULL, bo_exynos4412->size, PROT_READ|PROT_WRITE, MAP_SHARED, + bo_exynos4412->fd, arg.offset); + if (map == MAP_FAILED) { TBM_EXYNOS4412_LOG ("[libtbm-exynos4412:%d] " "error %s:%d Cannot usrptr gem=%d\n", getpid(), __FUNCTION__, __LINE__, bo_exynos4412->gem); return (tbm_bo_handle) NULL; } - bo_exynos4412->pBase = (void*)((uint64_t)arg.mapped); + bo_exynos4412->pBase = map; } bo_handle.ptr = (void *)bo_exynos4412->pBase; -- 2.7.4