summaryrefslogtreecommitdiff
path: root/tests/i915/gem_exec_balancer.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-05-31 21:00:52 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2020-06-01 00:09:48 +0100
commit5495877fe0410472a5cba00d0ac8d04d75cee331 (patch)
tree1fcf12f5de1a497a95d63ec8c0f98fef7da94cf6 /tests/i915/gem_exec_balancer.c
parentfceead55c93b81c2c076a087d9200b93bfcf407d (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.c19
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]);
}
}