diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2020-05-31 21:00:52 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2020-06-01 00:09:48 +0100 |
commit | 5495877fe0410472a5cba00d0ac8d04d75cee331 (patch) | |
tree | 1fcf12f5de1a497a95d63ec8c0f98fef7da94cf6 /tests/i915/gem_exec_balancer.c | |
parent | fceead55c93b81c2c076a087d9200b93bfcf407d (diff) |
i915/gem_exec_balancer: Add a delayed variant to bonded-runner
Add a pass that imposes a delay between submitting the master and its
bonded pair. This should make it more likely that another thread is able
to submit in the interval.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Diffstat (limited to 'tests/i915/gem_exec_balancer.c')
-rw-r--r-- | tests/i915/gem_exec_balancer.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c index 026f8347..d5a0d92a 100644 --- a/tests/i915/gem_exec_balancer.c +++ b/tests/i915/gem_exec_balancer.c @@ -1162,6 +1162,7 @@ static void __bonded_pair(int i915, #define B_FENCE 0x1 #define B_HOSTILE 0x2 #define B_MANY 0x4 +#define B_DELAY 0x8 { struct drm_i915_gem_exec_object2 batch = {}; struct drm_i915_gem_execbuffer2 execbuf = { @@ -1209,6 +1210,9 @@ static void __bonded_pair(int i915, } gem_execbuf_wr(i915, &a->execbuf); + if (flags & B_DELAY) + usleep(100); + batch.handle = create_semaphore_to_spinner(i915, a); execbuf.rsvd1 = a->execbuf.rsvd1; execbuf.rsvd2 = a->execbuf.rsvd2 >> 32; @@ -1306,6 +1310,9 @@ static void __bonded_dual(int i915, if (rand() % 1) igt_swap(a, b); + if (flags & B_DELAY) + usleep(100); + batch.handle = create_semaphore_to_spinner(i915, a); execbuf.rsvd1 = a->execbuf.rsvd1; execbuf.rsvd2 = a->execbuf.rsvd2 >> 32; @@ -1474,6 +1481,8 @@ static void __bonded_sync(int i915, gem_execbuf_wr(i915, &execbuf); execbuf.rsvd2 >>= 32; + if (flags & B_DELAY) + usleep(100); execbuf.buffers_ptr = to_user_pointer(&b); do { @@ -1521,8 +1530,10 @@ bonded_runner(int i915, 0, B_FENCE, B_MANY, + B_MANY | B_DELAY, B_HOSTILE, B_HOSTILE | B_FENCE, + B_HOSTILE | B_DELAY, }; unsigned long *cycles; @@ -1552,7 +1563,9 @@ bonded_runner(int i915, igt_info("%s %s %s submission, %lu cycles\n", phases[i] & B_HOSTILE ? "Non-preemptible" : "Preemptible", phases[i] & B_MANY ? "many-master" : "single-master", - phases[i] & B_FENCE ? "fenced" : "immediate", + phases[i] & B_FENCE ? "fenced" : + phases[i] & B_DELAY ? "delayed" : + "immediate", cycles[0]); } @@ -1575,7 +1588,9 @@ bonded_runner(int i915, igt_info("%s %s %s submission, %lu cycles\n", phases[i] & B_HOSTILE ? "Non-preemptible" : "Preemptible", phases[i] & B_MANY ? "many-master" : "single-master", - phases[i] & B_FENCE ? "fenced" : "immediate", + phases[i] & B_FENCE ? "fenced" : + phases[i] & B_DELAY ? "delayed" : + "immediate", cycles[0]); } } |