diff options
Diffstat (limited to 'lib/ioctl_wrappers.c')
-rw-r--r-- | lib/ioctl_wrappers.c | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c index 09eb3ce7..ac37b6bb 100644 --- a/lib/ioctl_wrappers.c +++ b/lib/ioctl_wrappers.c @@ -707,6 +707,38 @@ void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf) } /** + * __gem_execbuf3: + * @fd: open i915 drm file descriptor + * @execbuf: execbuffer data structure + * + * This wraps the EXECBUFFER3 ioctl, which submits a batchbuffer for the gpu to + * run. This is allowed to fail, with -errno returned. + */ +int __gem_execbuf3(int fd, struct drm_i915_gem_execbuffer3 *execbuf) +{ + int err = 0; + if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER3, execbuf)) { + err = -errno; + igt_assume(err != 0); + } + errno = 0; + return err; +} + +/** + * gem_execbuf3: + * @fd: open i915 drm file descriptor + * @execbuf: execbuffer data structure + * + * This wraps the EXECBUFFER3 ioctl, which submits a batchbuffer for the gpu to + * run. + */ +void gem_execbuf3(int fd, struct drm_i915_gem_execbuffer3 *execbuf) +{ + igt_assert_eq(__gem_execbuf3(fd, execbuf), 0); +} + +/** * gem_madvise: * @fd: open i915 drm file descriptor * @handle: gem buffer object handle @@ -1328,3 +1360,49 @@ bool igt_has_drm_cap(int fd, uint64_t capability) igt_assert(drmIoctl(fd, DRM_IOCTL_GET_CAP, &cap) == 0); return cap.value; } + +/* VM_BIND */ + +int __gem_vm_bind(int fd, struct drm_i915_gem_vm_bind *bind) +{ + int err = 0; + + if (drmIoctl(fd, DRM_IOCTL_I915_GEM_VM_BIND, bind)) + err = -errno; + return err; +} + +/** + * gem_vm_bind: + * @fd: open i915 drm file descriptor + * @bind: vm_bind data structure + * + * This wraps the VM_BIND ioctl to bind an address range to + * the specified address space. + */ +void gem_vm_bind(int fd, struct drm_i915_gem_vm_bind *bind) +{ + igt_assert_eq(__gem_vm_bind(fd, bind), 0); +} + +int __gem_vm_unbind(int fd, struct drm_i915_gem_vm_unbind *unbind) +{ + int err = 0; + + if (drmIoctl(fd, DRM_IOCTL_I915_GEM_VM_UNBIND, unbind)) + err = -errno; + return err; +} + +/** + * gem_vm_unbind: + * @fd: open i915 drm file descriptor + * @unbind: vm_unbind data structure + * + * This wraps the VM_UNBIND ioctl to unbind an address range from + * the specified address space. + */ +void gem_vm_unbind(int fd, struct drm_i915_gem_vm_unbind *unbind) +{ + igt_assert_eq(__gem_vm_unbind(fd, unbind), 0); +} |