summaryrefslogtreecommitdiff
path: root/tests/i915/gem_exec_fair.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-12-30 14:36:49 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2020-12-30 14:39:11 +0000
commit0f2e314244e553ea6015da2a51b1ccabe36b33d9 (patch)
tree521bddff22ca2eb3798c92cb2383b7443748313d /tests/i915/gem_exec_fair.c
parent6b3c983ad936511a0ba6d123ef2f4ac4f16be15e (diff)
i915/gem_exec_fair: Preload deadline objects
Make sure each client has established their execbuf objects prior to starting the deadline testing. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Diffstat (limited to 'tests/i915/gem_exec_fair.c')
-rw-r--r--tests/i915/gem_exec_fair.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/tests/i915/gem_exec_fair.c b/tests/i915/gem_exec_fair.c
index 94a84a35..4f51c4a1 100644
--- a/tests/i915/gem_exec_fair.c
+++ b/tests/i915/gem_exec_fair.c
@@ -877,13 +877,8 @@ static void deadline_child(int i915,
struct drm_i915_gem_execbuffer2 execbuf = {
.buffers_ptr = to_user_pointer(obj),
.buffer_count = ARRAY_SIZE(obj),
- .num_cliprects = 1,
- .cliprects_ptr = to_user_pointer(&fence),
+ .flags = I915_EXEC_FENCE_OUT | e->flags,
.rsvd1 = ctx,
- .flags = ((flags & DL_PRIO ? 0 : I915_EXEC_FENCE_IN) |
- I915_EXEC_FENCE_ARRAY |
- I915_EXEC_FENCE_OUT |
- e->flags),
};
unsigned int seq = 1;
int prev = -1, next = -1;
@@ -891,15 +886,26 @@ static void deadline_child(int i915,
if (intel_gen(intel_get_drm_devid(i915)) < 8)
execbuf.flags |= I915_EXEC_SECURE;
+ gem_execbuf_wr(i915, &execbuf);
+ execbuf.rsvd2 >>= 32;
+ gem_execbuf_wr(i915, &execbuf);
+ gem_sync(i915, obj[1].handle);
+
+ execbuf.num_cliprects = 1;
+ execbuf.cliprects_ptr = to_user_pointer(&fence);
+ execbuf.flags |= I915_EXEC_FENCE_ARRAY;
+ if (!(flags & DL_PRIO))
+ execbuf.flags |= I915_EXEC_FENCE_IN;
+
write(sv, &prev, sizeof(int));
read(rv, &prev, sizeof(int));
igt_assert(prev == -1);
+ prev = execbuf.rsvd2;
+ next = execbuf.rsvd2 >> 32;
while (!READ_ONCE(*done)) {
- if (prev != -1) {
- sync_fence_wait(prev, -1);
- igt_assert_eq(sync_fence_status(prev), 1);
- }
+ sync_fence_wait(prev, -1);
+ igt_assert_eq(sync_fence_status(prev), 1);
close(prev);
fence.handle = syncobj_create(i915, 0);