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> | 2018-03-15 10:52:37 +0000 |
commit | 5e10e19f689f774c221e05748778351158ef5ebe (patch) | |
tree | de94065453377d4498d29d2321ad6456e9e6cced | |
parent | 6438e0250e027ec388b9073b5c2308260f15fd1d (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 48d84fd1..23f7f924 100644 --- a/benchmarks/gem_wsim.c +++ b/benchmarks/gem_wsim.c @@ -181,6 +181,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; @@ -779,7 +780,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)); @@ -790,6 +791,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); @@ -882,6 +889,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; |