summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-06-07 11:24:11 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2017-08-11 12:00:15 +0100
commit20f0c31aae843eee0b79f09177da64a5e73cc8e1 (patch)
tree736cd211387b750a6a81fc856c1dbb613341015b
parent2600f9fd99bf4a52494d20c443c00683d4ac65fe (diff)
gbdep
-rw-r--r--benchmarks/gem_wsim.c14
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;