anv/gem: Add a drm syncobj support
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
parent
eb4564bf93
commit
f41a0e4b0d
|
@ -436,3 +436,55 @@ anv_gem_sync_file_merge(struct anv_device *device, int fd1, int fd2)
|
|||
|
||||
return args.fence;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
anv_gem_syncobj_create(struct anv_device *device)
|
||||
{
|
||||
struct drm_syncobj_create args = {
|
||||
.flags = 0,
|
||||
};
|
||||
|
||||
int ret = anv_ioctl(device->fd, DRM_IOCTL_SYNCOBJ_CREATE, &args);
|
||||
if (ret)
|
||||
return 0;
|
||||
|
||||
return args.handle;
|
||||
}
|
||||
|
||||
void
|
||||
anv_gem_syncobj_destroy(struct anv_device *device, uint32_t handle)
|
||||
{
|
||||
struct drm_syncobj_destroy args = {
|
||||
.handle = handle,
|
||||
};
|
||||
|
||||
anv_ioctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY, &args);
|
||||
}
|
||||
|
||||
int
|
||||
anv_gem_syncobj_handle_to_fd(struct anv_device *device, uint32_t handle)
|
||||
{
|
||||
struct drm_syncobj_handle args = {
|
||||
.handle = handle,
|
||||
};
|
||||
|
||||
int ret = anv_ioctl(device->fd, DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD, &args);
|
||||
if (ret)
|
||||
return -1;
|
||||
|
||||
return args.fd;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
anv_gem_syncobj_fd_to_handle(struct anv_device *device, int fd)
|
||||
{
|
||||
struct drm_syncobj_handle args = {
|
||||
.fd = fd,
|
||||
};
|
||||
|
||||
int ret = anv_ioctl(device->fd, DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE, &args);
|
||||
if (ret)
|
||||
return 0;
|
||||
|
||||
return args.handle;
|
||||
}
|
||||
|
|
|
@ -180,3 +180,27 @@ anv_gem_fd_to_handle(struct anv_device *device, int fd)
|
|||
{
|
||||
unreachable("Unused");
|
||||
}
|
||||
|
||||
uint32_t
|
||||
anv_gem_syncobj_create(struct anv_device *device)
|
||||
{
|
||||
unreachable("Unused");
|
||||
}
|
||||
|
||||
void
|
||||
anv_gem_syncobj_destroy(struct anv_device *device, uint32_t handle)
|
||||
{
|
||||
unreachable("Unused");
|
||||
}
|
||||
|
||||
int
|
||||
anv_gem_syncobj_handle_to_fd(struct anv_device *device, uint32_t handle)
|
||||
{
|
||||
unreachable("Unused");
|
||||
}
|
||||
|
||||
uint32_t
|
||||
anv_gem_syncobj_fd_to_handle(struct anv_device *device, int fd)
|
||||
{
|
||||
unreachable("Unused");
|
||||
}
|
||||
|
|
|
@ -812,6 +812,10 @@ int anv_gem_set_caching(struct anv_device *device, uint32_t gem_handle, uint32_t
|
|||
int anv_gem_set_domain(struct anv_device *device, uint32_t gem_handle,
|
||||
uint32_t read_domains, uint32_t write_domain);
|
||||
int anv_gem_sync_file_merge(struct anv_device *device, int fd1, int fd2);
|
||||
uint32_t anv_gem_syncobj_create(struct anv_device *device);
|
||||
void anv_gem_syncobj_destroy(struct anv_device *device, uint32_t handle);
|
||||
int anv_gem_syncobj_handle_to_fd(struct anv_device *device, uint32_t handle);
|
||||
uint32_t anv_gem_syncobj_fd_to_handle(struct anv_device *device, int fd);
|
||||
|
||||
VkResult anv_bo_init_new(struct anv_bo *bo, struct anv_device *device, uint64_t size);
|
||||
|
||||
|
|
Loading…
Reference in New Issue