omap: add API to import bo's from dmabuf fd's
Signed-off-by: Rob Clark <rob@ti.com>main
parent
8116a32df6
commit
42f8a68e19
|
@ -218,6 +218,38 @@ fail:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* import a buffer from dmabuf fd, does not take ownership of the
|
||||||
|
* fd so caller should close() the fd when it is otherwise done
|
||||||
|
* with it (even if it is still using the 'struct omap_bo *')
|
||||||
|
*/
|
||||||
|
struct omap_bo * omap_bo_from_dmabuf(struct omap_device *dev, int fd)
|
||||||
|
{
|
||||||
|
struct omap_bo *bo;
|
||||||
|
struct drm_prime_handle req = {
|
||||||
|
.fd = fd,
|
||||||
|
};
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
bo = calloc(sizeof(*bo), 1);
|
||||||
|
if (!bo) {
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = drmIoctl(dev->fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &req);
|
||||||
|
if (ret) {
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
bo->dev = dev;
|
||||||
|
bo->handle = req.handle;
|
||||||
|
|
||||||
|
return bo;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
free(bo);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* destroy a buffer object */
|
/* destroy a buffer object */
|
||||||
void omap_bo_del(struct omap_bo *bo)
|
void omap_bo_del(struct omap_bo *bo)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@ struct omap_bo * omap_bo_new(struct omap_device *dev,
|
||||||
struct omap_bo * omap_bo_new_tiled(struct omap_device *dev,
|
struct omap_bo * omap_bo_new_tiled(struct omap_device *dev,
|
||||||
uint32_t width, uint32_t height, uint32_t flags);
|
uint32_t width, uint32_t height, uint32_t flags);
|
||||||
struct omap_bo * omap_bo_from_name(struct omap_device *dev, uint32_t name);
|
struct omap_bo * omap_bo_from_name(struct omap_device *dev, uint32_t name);
|
||||||
|
struct omap_bo * omap_bo_from_dmabuf(struct omap_device *dev, int fd);
|
||||||
void omap_bo_del(struct omap_bo *bo);
|
void omap_bo_del(struct omap_bo *bo);
|
||||||
int omap_bo_get_name(struct omap_bo *bo, uint32_t *name);
|
int omap_bo_get_name(struct omap_bo *bo, uint32_t *name);
|
||||||
uint32_t omap_bo_handle(struct omap_bo *bo);
|
uint32_t omap_bo_handle(struct omap_bo *bo);
|
||||||
|
|
Loading…
Reference in New Issue