diff options
author | Tomasz Figa <tfiga@google.com> | 2015-04-28 09:53:35 +0900 |
---|---|---|
committer | Daniel Thompson <daniel.thompson@linaro.org> | 2015-10-23 12:23:46 +0100 |
commit | 0d8a0406998e346d9a7e391d7819c712c03e394d (patch) | |
tree | 6c6153a8885a99ca780cd10311c979e64aeddf68 | |
parent | bcd4c2bd07bf5371f0983dd72c51fe89249a06f2 (diff) |
rockchip: Add API to create BO object from existing handle
Certain use cases involve importing BO from Prime FD and obtaining a
handle, which then needs to be imported into libdrm.
Change-Id: Ibe28f719d1287e2cc5fb62523239635f8baac901
Signed-off-by: Tomasz Figa <tfiga@google.com>
-rw-r--r-- | rockchip/rockchip_drm.c | 25 | ||||
-rw-r--r-- | rockchip/rockchip_drmif.h | 2 |
2 files changed, 27 insertions, 0 deletions
diff --git a/rockchip/rockchip_drm.c b/rockchip/rockchip_drm.c index d56a68b4..44a78be8 100644 --- a/rockchip/rockchip_drm.c +++ b/rockchip/rockchip_drm.c @@ -129,6 +129,31 @@ fail: return NULL; } +struct rockchip_bo *rockchip_bo_from_handle(struct rockchip_device *dev, + uint32_t handle, uint32_t flags, uint32_t size) +{ + struct rockchip_bo *bo; + + if (size == 0) { + fprintf(stderr, "invalid size.\n"); + return NULL; + } + + bo = calloc(1, sizeof(*bo)); + if (!bo) { + fprintf(stderr, "failed to create bo[%s].\n", + strerror(errno)); + return NULL; + } + + bo->dev = dev; + bo->handle = handle; + bo->size = size; + bo->flags = flags; + + return bo; +} + /* * Destroy a rockchip buffer object. * diff --git a/rockchip/rockchip_drmif.h b/rockchip/rockchip_drmif.h index bcc55539..5c549a05 100644 --- a/rockchip/rockchip_drmif.h +++ b/rockchip/rockchip_drmif.h @@ -73,5 +73,7 @@ struct rockchip_bo *rockchip_bo_from_name(struct rockchip_device *dev, uint32_t name); int rockchip_bo_get_name(struct rockchip_bo *bo, uint32_t *name); uint32_t rockchip_bo_handle(struct rockchip_bo *bo); +struct rockchip_bo *rockchip_bo_from_handle(struct rockchip_device *dev, + uint32_t handle, uint32_t flags, uint32_t size); void *rockchip_bo_map(struct rockchip_bo *bo); #endif /* ROCKCHIP_DRMIF_H_ */ |