[Mesa-dev] [PATCH 3/8] i965: brw_context.h additions for OA unit query codegen
Kenneth Graunke
kenneth at whitecape.org
Wed Mar 8 18:13:00 UTC 2017
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 <robert at 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;
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170308/0cf510b6/attachment.sig>
More information about the mesa-dev
mailing list