diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2017-06-07 11:24:11 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-08-11 12:00:15 +0100 |
commit | 20f0c31aae843eee0b79f09177da64a5e73cc8e1 (patch) | |
tree | 736cd211387b750a6a81fc856c1dbb613341015b | |
parent | 2600f9fd99bf4a52494d20c443c00683d4ac65fe (diff) |
gbdep
-rw-r--r-- | benchmarks/gem_wsim.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/benchmarks/gem_wsim.c b/benchmarks/gem_wsim.c index 635ec854..60527248 100644 --- a/benchmarks/gem_wsim.c +++ b/benchmarks/gem_wsim.c @@ -180,6 +180,7 @@ struct workload struct workload *global_wrk; const struct workload_balancer *global_balancer; + uint32_t global_dep[NUM_ENGINES]; pthread_mutex_t mutex[NUM_ENGINES]; pthread_mutex_t global_mutex; @@ -768,7 +769,7 @@ alloc_step_batch(struct workload *wrk, struct w_step *w, unsigned int flags) { enum intel_engine_id engine = w->engine; unsigned int j = 0; - unsigned int nr_obj = 3 + w->data_deps.nr; + unsigned int nr_obj = 4 + w->data_deps.nr; unsigned int i; w->obj = calloc(nr_obj, sizeof(*w->obj)); @@ -779,6 +780,12 @@ alloc_step_batch(struct workload *wrk, struct w_step *w, unsigned int flags) j++; igt_assert(j < nr_obj); + if (flags & GLOBAL_BALANCE) { + w->obj[j].handle = get_workload(wrk)->global_dep[engine]; + w->obj[j].flags = EXEC_OBJECT_WRITE; + igt_assert(++j < nr_obj); + } + if (flags & SEQNO) { w->obj[j++] = get_status_objects(wrk)[0]; igt_assert(j < nr_obj); @@ -871,6 +878,11 @@ prepare_workload(unsigned int id, struct workload *wrk, unsigned int flags) } } + if ((flags & GLOBAL_BALANCE) && id == 0) { + for (i = 0; i < NUM_ENGINES; i++) + wrk->global_dep[i] = gem_create(fd, 4096); + } + for (i = 0, w = wrk->steps; i < wrk->nr_steps; i++, w++) { if ((int)w->context > max_ctx) { int delta = w->context + 1 - wrk->nr_ctxs; |