Re: [Intel-gfx] [PATCH i-g-t] tests/gem_exec_params: add test for exec_fence params

2017-02-03 Thread Chris Wilson
On Fri, Feb 03, 2017 at 02:45:30PM -0800, Daniele Ceraolo Spurio wrote:
> @@ -283,6 +287,21 @@ igt_main
>   RUN_FAIL(EINVAL);
>   }
>  
> + igt_subtest("invalid-fence-in") {
> + igt_require(gem_has_exec_fence(fd));
> + execbuf.flags = LOCAL_I915_EXEC_FENCE_IN;
> + execbuf.rsvd2 = -1;
> + RUN_FAIL(EINVAL);

Another good invalid fd to test would be the device fd itself.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH i-g-t] tests/gem_exec_params: add test for exec_fence params

2017-02-03 Thread Daniele Ceraolo Spurio
Added a subtest for invalid FENCE_IN usage, updated invalid-flag subtest
and made the rsvd2 test skip when exec fences are available.

Signed-off-by: Daniele Ceraolo Spurio 
---
 lib/ioctl_wrappers.c| 29 +
 lib/ioctl_wrappers.h|  1 +
 tests/gem_exec_fence.c  | 14 --
 tests/gem_exec_params.c | 24 +---
 4 files changed, 51 insertions(+), 17 deletions(-)

diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index ccc5ccf..cd0c24b 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -1433,6 +1433,35 @@ bool gem_has_softpin(int fd)
return has_softpin;
 }
 
+#define LOCAL_PARAM_HAS_EXEC_FENCE 44
+/**
+ * gem_has_exec_fence:
+ * @fd: open i915 drm file descriptor
+ *
+ * Feature test macro to query whether in/out fence support in execbuffer is
+ * available.
+ *
+ * Returns: Whether fence support is available
+ */
+bool gem_has_exec_fence(int fd)
+{
+   static int has_exec_fence = -1;
+
+   if (has_exec_fence < 0) {
+   struct drm_i915_getparam gp;
+
+   memset(, 0, sizeof(gp));
+   gp.param = LOCAL_PARAM_HAS_EXEC_FENCE;
+   gp.value = _exec_fence;
+
+   has_exec_fence = 0;
+   ioctl(fd, DRM_IOCTL_I915_GETPARAM, , sizeof(gp));
+   errno = 0;
+   }
+
+   return has_exec_fence;
+}
+
 /**
  * gem_require_caching:
  * @fd: open i915 drm file descriptor
diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
index 5f3bbd1..64628df 100644
--- a/lib/ioctl_wrappers.h
+++ b/lib/ioctl_wrappers.h
@@ -164,6 +164,7 @@ uint64_t gem_aperture_size(int fd);
 uint64_t gem_global_aperture_size(int fd);
 uint64_t gem_mappable_aperture_size(void);
 bool gem_has_softpin(int fd);
+bool gem_has_exec_fence(int fd);
 
 /* check functions which auto-skip tests by calling igt_skip() */
 void gem_require_caching(int fd);
diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c
index 3df436a..ddc5e7f 100644
--- a/tests/gem_exec_fence.c
+++ b/tests/gem_exec_fence.c
@@ -309,20 +309,6 @@ static void test_fence_flip(int i915)
igt_skip_on_f(1, "no fence-in for atomic flips\n");
 }
 
-static bool gem_has_exec_fence(int fd)
-{
-   struct drm_i915_getparam gp;
-   int val = -1;
-
-   memset(, 0, sizeof(gp));
-   gp.param = LOCAL_PARAM_HAS_EXEC_FENCE;
-   gp.value = 
-
-   ioctl(fd, DRM_IOCTL_I915_GETPARAM, );
-
-   return val > 0;
-}
-
 igt_main
 {
const struct intel_execution_engine *e;
diff --git a/tests/gem_exec_params.c b/tests/gem_exec_params.c
index f9a2054..68cdef6 100644
--- a/tests/gem_exec_params.c
+++ b/tests/gem_exec_params.c
@@ -45,6 +45,8 @@
 #define LOCAL_I915_EXEC_BSD_RING1 (1<<13)
 #define LOCAL_I915_EXEC_BSD_RING2 (2<<13)
 #define LOCAL_I915_EXEC_RESOURCE_STREAMER (1<<15)
+#define LOCAL_I915_EXEC_FENCE_IN (1 << 16)
+#define LOCAL_I915_EXEC_FENCE_OUT (1 << 17)
 
 static bool has_ring(int fd, unsigned ring_exec_flags)
 {
@@ -239,13 +241,15 @@ igt_main
) == 0);
}
 
-   /* HANDLE_LUT and NO_RELOC are already exercised by gem_exec_lut_handle 
*/
+   /* HANDLE_LUT and NO_RELOC are already exercised by gem_exec_lut_handle,
+* EXEC_FENCE_IN and EXEC_FENCE_OUT correct usage is tested by
+* gem_exec_fence, invalid usage of EXEC_FENCE_IN is tested below. */
 
igt_subtest("invalid-flag") {
/* NOTE: This test intentionally exercise the next available
 * flag. Don't "fix" this testcase without adding the required
 * tests for the new flag first. */
-   execbuf.flags = I915_EXEC_RENDER | 
(LOCAL_I915_EXEC_RESOURCE_STREAMER << 1);
+   execbuf.flags = I915_EXEC_RENDER | (LOCAL_I915_EXEC_FENCE_OUT 
<< 1);
RUN_FAIL(EINVAL);
}
 
@@ -283,6 +287,21 @@ igt_main
RUN_FAIL(EINVAL);
}
 
+   igt_subtest("invalid-fence-in") {
+   igt_require(gem_has_exec_fence(fd));
+   execbuf.flags = LOCAL_I915_EXEC_FENCE_IN;
+   execbuf.rsvd2 = -1;
+   RUN_FAIL(EINVAL);
+   }
+
+   igt_subtest("rsvd2-dirt") {
+   igt_require(!gem_has_exec_fence(fd));
+   execbuf.flags = 0;
+   execbuf.rsvd2 = 1;
+   RUN_FAIL(EINVAL);
+   execbuf.rsvd2 = 0;
+   }
+
 #define DIRT(name) \
igt_subtest(#name "-dirt") { \
execbuf.flags = 0; \
@@ -291,7 +310,6 @@ igt_main
execbuf.name = 0; \
}
 
-   DIRT(rsvd2);
DIRT(cliprects_ptr);
DIRT(DR1);
DIRT(DR4);
-- 
1.9.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx