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 <robert@sixbynine.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Robert Bragg 2015-06-04 23:26:40 +01:00
parent eaab41c9db
commit f46e58e018
2 changed files with 21 additions and 1 deletions

View File

@ -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;
};
/**

View File

@ -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;
};
};