diff options
author | Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> | 2017-02-03 14:45:30 -0800 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-02-04 09:46:59 +0000 |
commit | 25b5a74b7f096c870bd2d0fa6e058d5f1acca45b (patch) | |
tree | a5fa23419cb4a3f796b55a3ca25caf0c16a4ae15 /tests | |
parent | ee6a40fd01871b79a391646e15ce76bd9d5c1138 (diff) |
tests/gem_exec_params: add test for exec_fence params
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 <daniele.ceraolospurio@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/gem_exec_fence.c | 14 | ||||
-rw-r--r-- | tests/gem_exec_params.c | 26 |
2 files changed, 23 insertions, 17 deletions
diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c index 3df436ac..ddc5e7f2 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(&gp, 0, sizeof(gp)); - gp.param = LOCAL_PARAM_HAS_EXEC_FENCE; - gp.value = &val; - - ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp); - - 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 f9a20541..fbc0ab30 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 &execbuf) == 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,23 @@ 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); + execbuf.rsvd2 = fd; + 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 +312,6 @@ igt_main execbuf.name = 0; \ } - DIRT(rsvd2); DIRT(cliprects_ptr); DIRT(DR1); DIRT(DR4); |