summaryrefslogtreecommitdiff
path: root/tests/i915/gem_exec_fair.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-12-22 09:50:00 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2020-12-22 10:29:07 +0000
commitc95748defb28d7eb3e7b477cdac4709190ac61e1 (patch)
tree68cd4af4955fdcb695be85aea2d0b805f9018fe3 /tests/i915/gem_exec_fair.c
parentc1535f3a84ac3924269b9b080939121f016a9a30 (diff)
i915/gem_exec_fair: Improve overhead estimates
Refine the switching overhead by taking account of timeslicing. 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_fair.c')
-rw-r--r--tests/i915/gem_exec_fair.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/tests/i915/gem_exec_fair.c b/tests/i915/gem_exec_fair.c
index b48484f4..17ea5330 100644
--- a/tests/i915/gem_exec_fair.c
+++ b/tests/i915/gem_exec_fair.c
@@ -921,9 +921,11 @@ static uint64_t time_get_mono_ns(void)
static void deadline(int i915, int duration, unsigned int flags)
{
- const uint64_t frame_ns = 33670 * 1000; /* 29.7fps */
- const uint64_t parent_ns = 400 * 1000;
- const uint64_t switch_ns = 600 * 1000;
+ const int64_t frame_ns = 33670 * 1000; /* 29.7fps */
+ const int64_t parent_ns = 400 * 1000;
+ const int64_t switch_ns = 50 * 1000;
+ const int64_t overhead_ns = /* estimate timeslicing overhead */
+ (frame_ns / 1000 / 1000 + 2) * switch_ns + parent_ns;
struct intel_execution_engine2 pe = pick_default(i915);
struct intel_execution_engine2 ve = pick_engine(i915, "vcs0");
struct drm_i915_gem_exec_fence *fences = calloc(sizeof(*fences), 32);
@@ -954,7 +956,7 @@ static void deadline(int i915, int duration, unsigned int flags)
int timeline = sw_sync_timeline_create();
int nframes = duration * NSEC64 / frame_ns + 1;
int num_children = (1 << n) - 1;
- int child_ns = (frame_ns - parent_ns - switch_ns) / num_children - switch_ns;
+ int child_ns = (frame_ns - overhead_ns) / num_children - switch_ns;
struct { int child[2], parent[2]; } *link;
uint64_t start, over;
int missed;