summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Fiedorowicz <lukasz.fiedorowicz@intel.com>2017-05-25 09:40:54 +0200
committerPetri Latvala <petri.latvala@intel.com>2017-05-31 17:04:37 +0300
commit9fc445dabf788516d9f6d4956a05277bda1e7f04 (patch)
tree7d06cb94367c0a062aaa8f22402da23d554a625d
parentd9dcfc3a91cc197d07433cc4fbaaa76929b38e29 (diff)
lib: Moving gem_execbuf_wr to ioctl_wrappers
gem_execbuf_wr was duplicated in multiple places. Moving everything to lib/ Signed-off-by: Lukasz Fiedorowicz <lukasz.fiedorowicz@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
-rw-r--r--benchmarks/gem_busy.c16
-rw-r--r--benchmarks/gem_latency.c16
-rw-r--r--benchmarks/gem_wsim.c16
-rw-r--r--lib/ioctl_wrappers.c33
-rw-r--r--lib/ioctl_wrappers.h2
-rw-r--r--tests/gem_exec_fence.c16
-rw-r--r--tests/gem_exec_nop.c16
7 files changed, 35 insertions, 80 deletions
diff --git a/benchmarks/gem_busy.c b/benchmarks/gem_busy.c
index bda3e138..c1cee6c0 100644
--- a/benchmarks/gem_busy.c
+++ b/benchmarks/gem_busy.c
@@ -45,8 +45,6 @@
#include "intel_chipset.h"
#include "igt_stats.h"
-#define LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
-
#define LOCAL_I915_EXEC_NO_RELOC (1<<11)
#define LOCAL_I915_EXEC_HANDLE_LUT (1<<12)
@@ -73,20 +71,6 @@ static bool gem_busy(int fd, uint32_t handle)
return busy.busy != 0;
}
-static int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- int err = 0;
- if (igt_ioctl(fd, LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR, execbuf))
- err = -errno;
- errno = 0;
- return err;
-}
-
-static void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- igt_assert_eq(__gem_execbuf_wr(fd, execbuf), 0);
-}
-
static bool gem_wait__busy(int fd, uint32_t handle)
{
struct drm_i915_gem_wait wait;
diff --git a/benchmarks/gem_latency.c b/benchmarks/gem_latency.c
index 7975ade3..6cb16ba4 100644
--- a/benchmarks/gem_latency.c
+++ b/benchmarks/gem_latency.c
@@ -45,8 +45,6 @@
#include <sys/resource.h>
#include "drm.h"
-#define LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
-
#define LOCAL_I915_EXEC_FENCE_IN (1<<16)
#define LOCAL_I915_EXEC_FENCE_OUT (1<<17)
@@ -103,20 +101,6 @@ inline static uint32_t read_timestamp(void)
}
#endif
-static int __gem_execbuf_wr(int _fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- int err = 0;
- if (igt_ioctl(_fd, LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR, execbuf))
- err = -errno;
- errno = 0;
- return err;
-}
-
-static void gem_execbuf_wr(int _fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- igt_assert_eq(__gem_execbuf_wr(_fd, execbuf), 0);
-}
-
struct consumer {
pthread_t thread;
diff --git a/benchmarks/gem_wsim.c b/benchmarks/gem_wsim.c
index b366a5d6..485de158 100644
--- a/benchmarks/gem_wsim.c
+++ b/benchmarks/gem_wsim.c
@@ -1481,22 +1481,6 @@ static void init_status_page(struct workload *wrk, unsigned int flags)
}
}
-#define LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
-
-static int __gem_execbuf_wr(int gemfd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- int err = 0;
- if (igt_ioctl(gemfd, LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR, execbuf))
- err = -errno;
- errno = 0;
- return err;
-}
-
-static void gem_execbuf_wr(int gemfd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- igt_assert_eq(__gem_execbuf_wr(gemfd, execbuf), 0);
-}
-
static void
do_eb(struct workload *wrk, struct w_step *w, enum intel_engine_id engine,
unsigned int flags)
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index 48bdcc56..0816a7b6 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -624,6 +624,39 @@ void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
igt_assert_eq(__gem_execbuf(fd, execbuf), 0);
}
+#define LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR \
+ DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
+
+/**
+ * __gem_execbuf_wr:
+ * @fd: open i915 drm file descriptor
+ * @execbuf: execbuffer data structure
+ *
+ * This wraps the EXECBUFFER2_WR ioctl, which submits a batchbuffer for the gpu to
+ * run. This is allowed to fail, with -errno returned.
+ */
+int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
+{
+ int err = 0;
+ if (igt_ioctl(fd, LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR, execbuf))
+ err = -errno;
+ errno = 0;
+ return err;
+}
+
+/**
+ * gem_execbuf_wr:
+ * @fd: open i915 drm file descriptor
+ * @execbuf: execbuffer data structure
+ *
+ * This wraps the EXECBUFFER2_WR ioctl, which submits a batchbuffer for the gpu to
+ * run.
+ */
+void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
+{
+ igt_assert_eq(__gem_execbuf_wr(fd, execbuf), 0);
+}
+
/**
* __gem_mmap__gtt:
* @fd: open i915 drm file descriptor
diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
index d6d8bad2..e1279d94 100644
--- a/lib/ioctl_wrappers.h
+++ b/lib/ioctl_wrappers.h
@@ -74,6 +74,8 @@ uint32_t __gem_create_stolen(int fd, uint64_t size);
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_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
+int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
int __gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c
index 05e55f03..82b0c89a 100644
--- a/tests/gem_exec_fence.c
+++ b/tests/gem_exec_fence.c
@@ -31,10 +31,8 @@
IGT_TEST_DESCRIPTION("Check that execbuf waits for explicit fences");
-#define LOCAL_PARAM_HAS_EXEC_FENCE 44
#define LOCAL_EXEC_FENCE_IN (1 << 16)
#define LOCAL_EXEC_FENCE_OUT (1 << 17)
-#define LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
#ifndef SYNC_IOC_MERGE
struct sync_merge_data {
@@ -101,20 +99,6 @@ static void store(int fd, unsigned ring, int fence, uint32_t target, unsigned of
gem_close(fd, obj[BATCH].handle);
}
-static int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- int err = 0;
- if (igt_ioctl(fd, LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR, execbuf))
- err = -errno;
- errno = 0;
- return err;
-}
-
-static void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- igt_assert_eq(__gem_execbuf_wr(fd, execbuf), 0);
-}
-
static bool fence_busy(int fence)
{
return poll(&(struct pollfd){fence, POLLIN}, 1, 0) == 0;
diff --git a/tests/gem_exec_nop.c b/tests/gem_exec_nop.c
index 440e3571..45ab47d3 100644
--- a/tests/gem_exec_nop.c
+++ b/tests/gem_exec_nop.c
@@ -489,22 +489,6 @@ static void sequential(int fd, uint32_t handle, unsigned flags, int timeout)
}
#define LOCAL_EXEC_FENCE_OUT (1 << 17)
-#define LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
-
-static int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- int err = 0;
- if (igt_ioctl(fd, LOCAL_IOCTL_I915_GEM_EXECBUFFER2_WR, execbuf))
- err = -errno;
- errno = 0;
- return err;
-}
-
-static void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- igt_assert_eq(__gem_execbuf_wr(fd, execbuf), 0);
-}
-
static bool fence_enable_signaling(int fence)
{
return poll(&(struct pollfd){fence, POLLIN}, 1, 0) == 0;