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