On Friday, February 24, 2017 5:57:58 AM PST Robert Bragg wrote: > In preparation for generating code from the XML performance counter meta > data, this makes some additions to brw_context.h for this code to be > able to reference. > > It adds a brw->perfquery.oa_metrics_table hash table for indexing built > up query descriptions by the GUID that is expected to be advertised by > the kernel (via sysfs) to be able to use that query. > > It adds an 'OA_COUNTERS' brw_query_kind to be assigned to queries built > up by generated code. > > It adds a brw->perfquery.sys_vars structure to have a consistent place > to represent the different system variables like $EuCoresTotalCount and > $EuSlicesTotalCount that are referenced by OA counter normalization > equations. > > Although extending + referencing gen_device_info for these variables > was considered, these are some of the (mostly minor) reasons for > going with a dedicated structure: > > - Currently we only need this info for the performance_query backend > and it might be a bit tedious to go back and initialize the state > for pre-Haswell devinfo structures. > - Considering the $SubsliceMask then the requirement for how multiple > per-slice masks are packed only comes from how the variables are > references by availability tests in XML, and might not be a good > general representation for tracking subslice masks if another use > case arises. > - If we used gen_device_info then we'd likely want to avoid making > assumptions about the C types during codegen and adding explicit > casts, while that's not necessary with a dedicated struct with all > members being uint64_t. > - This structure and the code for initializing it is currently shared > (just through copy & paste) with a few other projects dealing with > OA counters, and that's been convenient so far. > > Signed-off-by: Robert Bragg <rob...@sixbynine.org> > --- > src/mesa/drivers/dri/i965/brw_context.h | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_context.h > b/src/mesa/drivers/dri/i965/brw_context.h > index 7ff7b74252..68d2fbfc23 100644 > --- a/src/mesa/drivers/dri/i965/brw_context.h > +++ b/src/mesa/drivers/dri/i965/brw_context.h > @@ -652,6 +652,7 @@ struct shader_times; > struct gen_l3_config; > > enum brw_query_kind { > + OA_COUNTERS, > PIPELINE_STATS > }; > > @@ -1142,6 +1143,26 @@ struct brw_context > } predicate; > > struct { > + /* Variables referenced in the XML meta data for OA performance > + * counters, e.g in the normalization equations. > + * > + * All uint64_t for consistent operand types in generated code > + */ > + struct { > + uint64_t timestamp_frequency; /** $GpuTimestampFrequency */ > + uint64_t n_eus; /** $EuCoresTotalCount */ > + uint64_t n_eu_slices; /** $EuSlicesTotalCount */ > + uint64_t subslice_mask; /** $SubsliceeMask */
$SubsliceMask (typo) > + uint64_t gt_min_freq; /** $GpuMinFrequency */ > + uint64_t gt_max_freq; /** $GpuMaxFrequency */ > + } sys_vars; > + > + /* OA metric sets, indexed by GUID, as know by Mesa at build time, > + * to cross-reference with the GUIDs of configs advertised by the > + * kernel at runtime > + */ > + struct hash_table *oa_metrics_table; > + > struct brw_perf_query_info *queries; > int n_queries; > >
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