summaryrefslogtreecommitdiffstats
path: root/amdgpu.c
diff options
context:
space:
mode:
authorPratik Vishwakarma <Pratik.Vishwakarma@amd.com>2016-12-12 14:22:10 +0530
committerchrome-bot <chrome-bot@chromium.org>2017-01-11 04:07:16 -0800
commitbc1b535fde9492ca44a829a89b3dfd19ef6fa3c8 (patch)
tree457076445998eb38348e20f3cda6a65f5132b781 /amdgpu.c
parent682d73bd00595a493bd446c5274bef08bd17c096 (diff)
downloadplatform_external_minigbm-bc1b535fde9492ca44a829a89b3dfd19ef6fa3c8.tar.gz
platform_external_minigbm-bc1b535fde9492ca44a829a89b3dfd19ef6fa3c8.tar.bz2
platform_external_minigbm-bc1b535fde9492ca44a829a89b3dfd19ef6fa3c8.zip
minigbm: amdgpu: Add mmap implementation for amdgpu
BUG=chrome-os-partner:61504 TEST=graphics_Gbm Change-Id: I4ad23fa5b55a249e75ec44fe499c499052f687e0 Reviewed-on: https://chromium-review.googlesource.com/418425 Commit-Ready: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com> Tested-by: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com> Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Diffstat (limited to 'amdgpu.c')
-rw-r--r--amdgpu.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/amdgpu.c b/amdgpu.c
index 5338713..b796670 100644
--- a/amdgpu.c
+++ b/amdgpu.c
@@ -8,6 +8,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/mman.h>
#include <xf86drm.h>
#include <amdgpu_drm.h>
#include <amdgpu.h>
@@ -352,12 +353,32 @@ static int amdgpu_bo_create(struct bo *bo, uint32_t width, uint32_t height,
return ret;
}
+static void *amdgpu_bo_map(struct bo *bo, struct map_info *data, size_t plane)
+{
+ int ret;
+ union drm_amdgpu_gem_mmap gem_map;
+
+ memset(&gem_map, 0, sizeof(gem_map));
+ gem_map.in.handle = bo->handles[0].u32;
+
+ ret = drmIoctl(bo->drv->fd, DRM_IOCTL_AMDGPU_GEM_MMAP, &gem_map);
+ if (ret) {
+ fprintf(stderr, "drv: DRM_IOCTL_AMDGPU_GEM_MMAP failed\n");
+ return MAP_FAILED;
+ }
+ data->length = bo->sizes[0];
+
+ return mmap(0, bo->sizes[0], PROT_READ | PROT_WRITE, MAP_SHARED,
+ bo->drv->fd, gem_map.out.addr_ptr);
+}
+
struct backend backend_amdgpu = {
.name = "amdgpu",
.init = amdgpu_init,
.close = amdgpu_close,
.bo_create = amdgpu_bo_create,
.bo_destroy = drv_gem_bo_destroy,
+ .bo_map = amdgpu_bo_map,
};
#endif