diff options
author | Robert Bragg <[email protected]> | 2015-06-04 23:26:40 +0100 |
---|---|---|
committer | Robert Bragg <[email protected]> | 2017-03-09 12:53:07 +0000 |
commit | f46e58e01805e92ddb6e7806a7ec39748bdbab9d (patch) | |
tree | a2c8c3d185b496513943f0f67de1724e5e312450 /src/mesa/drivers/dri/i965 | |
parent | eaab41c9db1ddf320084b1af80c1da5e72160091 (diff) |
i965: extend query/counter structs for OA queries
In preparation for generating code from brw_oa_hsw.xml for describing OA
performance counter queries this adds some OA specific members to
brw_perf_query that our generated code will initialize:
- The oa_metric_set_id is the ID we will pass to
DRM_IOCTL_I915_PERF_OPEN, and is an ID got via sysfs under:
/sys/class/drm/<card>/metrics/<guid/id
- The oa_format is the OA report layout we will request from the kernel
- The accumulator offsets determine where the different groups of A, B
and C counters are located within an intermediate 64bit 'accumulator'
buffer.
Additionally brw_perf_query_counter now has 64bit or float _read()
callback members for OA counters.
Signed-off-by: Robert Bragg <[email protected]>
Reviewed-by: Lionel Landwerlin <[email protected]>
Acked-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri/i965')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.h | 12 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_performance_query.h | 10 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 8f6bf18230f..0aa27995ab9 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -602,9 +602,21 @@ struct brw_perf_query_info { enum brw_query_kind kind; const char *name; + const char *guid; struct brw_perf_query_counter *counters; int n_counters; size_t data_size; + + /* OA specific */ + uint64_t oa_metrics_set_id; + int oa_format; + + /* For indexing into the accumulator[] ... */ + int gpu_time_offset; + int gpu_clock_offset; + int a_offset; + int b_offset; + int c_offset; }; /** diff --git a/src/mesa/drivers/dri/i965/brw_performance_query.h b/src/mesa/drivers/dri/i965/brw_performance_query.h index 8f1f96060b6..c9454f98eab 100644 --- a/src/mesa/drivers/dri/i965/brw_performance_query.h +++ b/src/mesa/drivers/dri/i965/brw_performance_query.h @@ -44,6 +44,14 @@ struct brw_perf_query_counter size_t offset; size_t size; - struct brw_pipeline_stat pipeline_stat; + union { + uint64_t (*oa_counter_read_uint64)(struct brw_context *brw, + const struct brw_perf_query_info *query, + uint64_t *accumulator); + float (*oa_counter_read_float)(struct brw_context *brw, + const struct brw_perf_query_info *query, + uint64_t *accumulator); + struct brw_pipeline_stat pipeline_stat; + }; }; |