diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2020-12-30 14:36:49 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2020-12-30 14:39:11 +0000 |
commit | 0f2e314244e553ea6015da2a51b1ccabe36b33d9 (patch) | |
tree | 521bddff22ca2eb3798c92cb2383b7443748313d /tests/i915/gem_exec_fair.c | |
parent | 6b3c983ad936511a0ba6d123ef2f4ac4f16be15e (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.c | 26 |
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); |