summaryrefslogtreecommitdiff
path: root/benchmarks/gem_wsim.c
diff options
context:
space:
mode:
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>2017-05-19 15:33:23 +0100
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>2017-05-23 16:59:46 +0100
commite329adcf00d563227645c6333c04f8ef0fc10a0d (patch)
tree2ded794bc52e1b2cf54146bfb715f83738e4ca3c /benchmarks/gem_wsim.c
parent255d1fcc6b1274b21c838e207aa82b8f0dbc6ece (diff)
gem_wsim: Move seqno allocation and query into helpers
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Diffstat (limited to 'benchmarks/gem_wsim.c')
-rw-r--r--benchmarks/gem_wsim.c44
1 files changed, 27 insertions, 17 deletions
diff --git a/benchmarks/gem_wsim.c b/benchmarks/gem_wsim.c
index 89f473c9..1d4c8dee 100644
--- a/benchmarks/gem_wsim.c
+++ b/benchmarks/gem_wsim.c
@@ -887,6 +887,17 @@ static enum intel_engine_id get_vcs_engine(unsigned int n)
return vcs_engines[n];
}
+static uint32_t new_seqno(struct workload *wrk, enum intel_engine_id engine)
+{
+ return ++wrk->seqno[engine];
+}
+
+static uint32_t
+current_seqno(struct workload *wrk, enum intel_engine_id engine)
+{
+ return wrk->seqno[engine];
+}
+
struct workload_balancer {
unsigned int id;
const char *name;
@@ -924,7 +935,7 @@ static unsigned int
get_qd_depth(const struct workload_balancer *balancer,
struct workload *wrk, enum intel_engine_id engine)
{
- return wrk->seqno[engine] -
+ return current_seqno(wrk, engine) -
wrk->status_page[VCS_SEQNO_IDX(engine)];
}
@@ -966,8 +977,8 @@ __qd_balance(const struct workload_balancer *balancer,
#ifdef DEBUG
printf("qd_balance: 1:%ld 2:%ld rr:%u = %u\t(%lu - %u) (%lu - %u)\n",
qd[VCS1], qd[VCS2], wrk->vcs_rr, engine,
- wrk->seqno[VCS1], wrk->status_page[VCS_SEQNO_IDX(VCS1)],
- wrk->seqno[VCS2], wrk->status_page[VCS_SEQNO_IDX(VCS2)]);
+ current_seqno(wrk, VCS1), wrk->status_page[VCS_SEQNO_IDX(VCS1)],
+ current_seqno(wrk, VCS2), wrk->status_page[VCS_SEQNO_IDX(VCS2)]);
#endif
return engine;
}
@@ -1058,13 +1069,13 @@ __rt_balance(const struct workload_balancer *balancer,
struct rt_depth rt;
get_rt_depth(wrk, engine, &rt);
- qd[engine] = wrk->seqno[engine] - rt.seqno;
+ qd[engine] = current_seqno(wrk, engine) - rt.seqno;
wrk->qd_sum[engine] += qd[engine];
qd[engine] = (qd[engine] + 1) * (rt.completed - rt.submitted);
#ifdef DEBUG
- printf("qd[0] = %d (%d - %d) x %d (%d - %d) = %ld\n",
- wrk->seqno[engine] - rt.seqno,
- wrk->seqno[engine], rt.seqno,
+ printf("rt[0] = %d (%d - %d) x %d (%d - %d) = %ld\n",
+ current_seqno(wrk, engine) - rt.seqno,
+ current_seqno(wrk, engine), rt.seqno,
rt.completed - rt.submitted,
rt.completed, rt.submitted,
qd[engine]);
@@ -1114,16 +1125,16 @@ rtavg_balance(const struct workload_balancer *balancer,
rt.completed - rt.submitted);
wrk->rt.last[engine] = rt.seqno;
}
- qd[engine] = wrk->seqno[engine] - rt.seqno;
+ qd[engine] = current_seqno(wrk, engine) - rt.seqno;
wrk->qd_sum[engine] += qd[engine];
qd[engine] =
(qd[engine] + 1) * ewma_rt_read(&wrk->rt.avg[engine]);
#ifdef DEBUG
- printf("qd[%d] = %d (%d - %d) x %ld (%d) = %ld\n",
+ printf("rtavg[%d] = %d (%d - %d) x %ld (%d) = %ld\n",
engine,
- wrk->seqno[engine] - rt.seqno,
- wrk->seqno[engine], rt.seqno,
+ current_seqno(wrk, engine) - rt.seqno,
+ current_seqno(wrk, engine), rt.seqno,
ewma_rt_read(&wrk->rt.avg[engine]),
rt.completed - rt.submitted,
qd[engine]);
@@ -1303,7 +1314,7 @@ static void init_status_page(struct workload *wrk, unsigned int flags)
*cs++ = MI_STORE_DWORD_IMM;
*cs++ = addr;
*cs++ = addr >> 32;
- *cs++ = ++wrk->seqno[engine];
+ *cs++ = new_seqno(wrk, engine);
offset += 4 * sizeof(uint32_t);
/* When we are busy, we can just reuse the last set of timings.
@@ -1342,7 +1353,7 @@ static void init_status_page(struct workload *wrk, unsigned int flags)
*cs++ = MI_STORE_DWORD_IMM;
*cs++ = addr;
*cs++ = addr >> 32;
- *cs++ = wrk->seqno[engine];
+ *cs++ = current_seqno(wrk, engine);
offset += 4 * sizeof(uint32_t);
*cs++ = MI_BATCH_BUFFER_END;
@@ -1377,16 +1388,15 @@ static void
do_eb(struct workload *wrk, struct w_step *w, enum intel_engine_id engine,
unsigned int flags)
{
+ uint32_t seqno = new_seqno(wrk, engine);
unsigned int i;
eb_update_flags(w, engine, flags);
- wrk->seqno[engine]++;
-
if (flags & SEQNO)
- update_bb_seqno(w, engine, wrk->seqno[engine]);
+ update_bb_seqno(w, engine, seqno);
if (flags & RT)
- update_bb_rt(w, engine, wrk->seqno[engine]);
+ update_bb_rt(w, engine, seqno);
w->eb.batch_start_offset =
ALIGN(w->bb_sz - get_bb_sz(get_duration(w)),