freedreno: use drmPrime wrappers to import/export prime bo's
don't call drmIoctl() directly for prime bo's, use the wrappers instead. v3: remove struct drm_prime_handle and split locking Signed-off-by: Varad Gautam <varadgautam@gmail.com> Signed-off-by: Rob Clark <robclark@freedesktop.org>main
parent
508a5f77fa
commit
cc7db673fa
|
@ -226,13 +226,11 @@ out_unlock:
|
||||||
struct fd_bo *
|
struct fd_bo *
|
||||||
fd_bo_from_dmabuf(struct fd_device *dev, int fd)
|
fd_bo_from_dmabuf(struct fd_device *dev, int fd)
|
||||||
{
|
{
|
||||||
struct drm_prime_handle req = {
|
|
||||||
.fd = fd,
|
|
||||||
};
|
|
||||||
int ret, size;
|
int ret, size;
|
||||||
|
uint32_t handle;
|
||||||
struct fd_bo *bo;
|
struct fd_bo *bo;
|
||||||
|
|
||||||
ret = drmIoctl(dev->fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &req);
|
ret = drmPrimeFDToHandle(dev->fd, fd, &handle);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -241,7 +239,7 @@ fd_bo_from_dmabuf(struct fd_device *dev, int fd)
|
||||||
size = lseek(fd, 0, SEEK_END);
|
size = lseek(fd, 0, SEEK_END);
|
||||||
lseek(fd, 0, SEEK_CUR);
|
lseek(fd, 0, SEEK_CUR);
|
||||||
|
|
||||||
bo = fd_bo_from_handle(dev, req.handle, size);
|
bo = fd_bo_from_handle(dev, handle, size);
|
||||||
bo->fd = fd;
|
bo->fd = fd;
|
||||||
|
|
||||||
return bo;
|
return bo;
|
||||||
|
@ -381,18 +379,15 @@ uint32_t fd_bo_handle(struct fd_bo *bo)
|
||||||
int fd_bo_dmabuf(struct fd_bo *bo)
|
int fd_bo_dmabuf(struct fd_bo *bo)
|
||||||
{
|
{
|
||||||
if (bo->fd < 0) {
|
if (bo->fd < 0) {
|
||||||
struct drm_prime_handle req = {
|
int ret, prime_fd;
|
||||||
.handle = bo->handle,
|
|
||||||
.flags = DRM_CLOEXEC,
|
|
||||||
};
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = drmIoctl(bo->dev->fd, DRM_IOCTL_PRIME_HANDLE_TO_FD, &req);
|
ret = drmPrimeHandleToFD(bo->dev->fd, bo->handle, DRM_CLOEXEC,
|
||||||
|
&prime_fd);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bo->fd = req.fd;
|
bo->fd = prime_fd;
|
||||||
}
|
}
|
||||||
return dup(bo->fd);
|
return dup(bo->fd);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue