parent
9b893e4a42
commit
f00efc7ab4
|
@ -34,6 +34,7 @@
|
|||
#include <linux/stddef.h>
|
||||
#include <errno.h>
|
||||
#include <sys/mman.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <xf86drm.h>
|
||||
|
||||
|
@ -56,6 +57,7 @@ struct omap_bo {
|
|||
uint32_t handle;
|
||||
uint32_t name; /* flink global handle (DRI2 name) */
|
||||
uint64_t offset; /* offset to mmap() */
|
||||
int fd; /* dmabuf handle */
|
||||
};
|
||||
|
||||
struct omap_device * omap_device_new(int fd)
|
||||
|
@ -264,6 +266,25 @@ uint32_t omap_bo_handle(struct omap_bo *bo)
|
|||
return bo->handle;
|
||||
}
|
||||
|
||||
int omap_bo_dmabuf(struct omap_bo *bo)
|
||||
{
|
||||
if (!bo->fd) {
|
||||
struct drm_prime_handle req = {
|
||||
.handle = bo->handle,
|
||||
.flags = DRM_CLOEXEC,
|
||||
};
|
||||
int ret;
|
||||
|
||||
ret = drmIoctl(bo->dev->fd, DRM_IOCTL_PRIME_HANDLE_TO_FD, &req);
|
||||
if (ret) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
bo->fd = req.fd;
|
||||
}
|
||||
return bo->fd;
|
||||
}
|
||||
|
||||
uint32_t omap_bo_size(struct omap_bo *bo)
|
||||
{
|
||||
if (!bo->size) {
|
||||
|
|
|
@ -53,6 +53,7 @@ struct omap_bo * omap_bo_from_name(struct omap_device *dev, uint32_t name);
|
|||
void omap_bo_del(struct omap_bo *bo);
|
||||
int omap_bo_get_name(struct omap_bo *bo, uint32_t *name);
|
||||
uint32_t omap_bo_handle(struct omap_bo *bo);
|
||||
int omap_bo_dmabuf(struct omap_bo *bo);
|
||||
uint32_t omap_bo_size(struct omap_bo *bo);
|
||||
void * omap_bo_map(struct omap_bo *bo);
|
||||
int omap_bo_cpu_prep(struct omap_bo *bo, enum omap_gem_op op);
|
||||
|
|
Loading…
Reference in New Issue