diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2016-01-23 09:44:19 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2016-01-27 14:45:18 +0000 |
commit | e3b68bb66683ad4cb4c80df904a3a21c98a2b6c2 (patch) | |
tree | 88a796e097456e3f1c3e8d821da1d91529626679 /lib | |
parent | 711398e82af469394559105a4f4c6dc21f582ffe (diff) |
lib: Share common __gem_execbuf()
An oft-repeated function to check EXECBUFFER2 for a particular fail
condition.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ioctl_wrappers.c | 21 | ||||
-rw-r--r-- | lib/ioctl_wrappers.h | 1 |
2 files changed, 18 insertions, 4 deletions
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c index 34351c95..bc6c490f 100644 --- a/lib/ioctl_wrappers.c +++ b/lib/ioctl_wrappers.c @@ -503,6 +503,22 @@ uint32_t gem_create(int fd, uint64_t size) } /** + * __gem_execbuf: + * @fd: open i915 drm file descriptor + * @execbuf: execbuffer data structure + * + * This wraps the EXECBUFFER2 ioctl, which submits a batchbuffer for the gpu to + * run. This is allowed to fail, with -errno returned. + */ +int __gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf) +{ + int err = 0; + if (drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf)) + err = -errno; + return err; +} + +/** * gem_execbuf: * @fd: open i915 drm file descriptor * @execbuf: execbuffer data structure @@ -512,10 +528,7 @@ uint32_t gem_create(int fd, uint64_t size) */ void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf) { - int result; - - result = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf); - igt_assert(result == 0); + igt_assert_eq(__gem_execbuf(fd, execbuf), 0); errno = 0; } diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h index 04ac9bb7..4d913c59 100644 --- a/lib/ioctl_wrappers.h +++ b/lib/ioctl_wrappers.h @@ -62,6 +62,7 @@ uint32_t gem_create_stolen(int fd, uint64_t size); uint32_t __gem_create(int fd, int size); uint32_t gem_create(int fd, uint64_t size); void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf); +int __gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf); void *gem_mmap__gtt(int fd, uint32_t handle, uint64_t size, unsigned prot); void *gem_mmap__cpu(int fd, uint32_t handle, uint64_t offset, uint64_t size, unsigned prot); |