summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2016-01-23 09:44:19 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2016-01-27 14:45:18 +0000
commite3b68bb66683ad4cb4c80df904a3a21c98a2b6c2 (patch)
tree88a796e097456e3f1c3e8d821da1d91529626679 /lib
parent711398e82af469394559105a4f4c6dc21f582ffe (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.c21
-rw-r--r--lib/ioctl_wrappers.h1
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);