On Wednesday, June 14, 2017 5:38:32 PM PDT Lionel Landwerlin wrote: > From: Robert Bragg <rob...@sixbynine.org> > > From experimentation in IGT, we found that the OA unit might label > some report as "idle" (using an invalid context ID), right after a > report for a given context. Deltas generated by those reports actually > belong to the previous context, even though they're not labelled as > such. > > This change makes ensure that while reading OA reports, we only > consider the GPU actually idle after 2 reports with an invalid context > ID. > > Signed-off-by: Lionel Landwerlin <lionel.g.landwer...@intel.com> > --- > src/mesa/drivers/dri/i965/brw_performance_query.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_performance_query.c > b/src/mesa/drivers/dri/i965/brw_performance_query.c > index d11784c0352..c6574df302a 100644 > --- a/src/mesa/drivers/dri/i965/brw_performance_query.c > +++ b/src/mesa/drivers/dri/i965/brw_performance_query.c > @@ -863,6 +863,7 @@ accumulate_oa_reports(struct brw_context *brw, > struct exec_node *first_samples_node; > bool in_ctx = true; > uint32_t ctx_id; > + int out_duration = 0; > > assert(o->Ready); > assert(obj->oa.map != NULL); > @@ -937,10 +938,16 @@ accumulate_oa_reports(struct brw_context *brw, > if (in_ctx && report[2] != ctx_id) { > DBG("i915 perf: Switch AWAY (observed by ID change)\n"); > in_ctx = false; > + out_duration = 0; > } else if (in_ctx == false && report[2] == ctx_id) { > DBG("i915 perf: Switch TO\n"); > in_ctx = true; > - add = false; > + > + /* We didn't *really* Switch AWAY in the case that we > + * e.g. saw a single periodic report while idle... > + */ > + if (out_duration >= 1) > + add = false; > } else if (in_ctx) { > assert(report[2] == ctx_id); > DBG("i915 perf: Continuation IN\n"); > @@ -948,6 +955,7 @@ accumulate_oa_reports(struct brw_context *brw, > assert(report[2] != ctx_id); > DBG("i915 perf: Continuation OUT\n"); > add = false; > + out_duration++; > } > } > >
Yeesh. Hardware bugs. Great find. Would it make sense to record the commit message as a comment? I guess there's always tig blame... Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev