intel/perf: emit counter units in generated code
We'll use this coming extension. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2775>
This commit is contained in:
@@ -62,6 +62,39 @@ enum gen_perf_counter_data_type {
|
||||
GEN_PERF_COUNTER_DATA_TYPE_DOUBLE,
|
||||
};
|
||||
|
||||
enum gen_perf_counter_units {
|
||||
/* size */
|
||||
GEN_PERF_COUNTER_UNITS_BYTES,
|
||||
|
||||
/* frequency */
|
||||
GEN_PERF_COUNTER_UNITS_HZ,
|
||||
|
||||
/* time */
|
||||
GEN_PERF_COUNTER_UNITS_NS,
|
||||
GEN_PERF_COUNTER_UNITS_US,
|
||||
|
||||
/**/
|
||||
GEN_PERF_COUNTER_UNITS_PIXELS,
|
||||
GEN_PERF_COUNTER_UNITS_TEXELS,
|
||||
GEN_PERF_COUNTER_UNITS_THREADS,
|
||||
GEN_PERF_COUNTER_UNITS_PERCENT,
|
||||
|
||||
/* events */
|
||||
GEN_PERF_COUNTER_UNITS_MESSAGES,
|
||||
GEN_PERF_COUNTER_UNITS_NUMBER,
|
||||
GEN_PERF_COUNTER_UNITS_CYCLES,
|
||||
GEN_PERF_COUNTER_UNITS_EVENTS,
|
||||
GEN_PERF_COUNTER_UNITS_UTILIZATION,
|
||||
|
||||
/**/
|
||||
GEN_PERF_COUNTER_UNITS_EU_SENDS_TO_L3_CACHE_LINES,
|
||||
GEN_PERF_COUNTER_UNITS_EU_ATOMIC_REQUESTS_TO_L3_CACHE_LINES,
|
||||
GEN_PERF_COUNTER_UNITS_EU_REQUESTS_TO_L3_CACHE_LINES,
|
||||
GEN_PERF_COUNTER_UNITS_EU_BYTES_PER_L3_CACHE_LINE,
|
||||
|
||||
GEN_PERF_COUNTER_UNITS_MAX
|
||||
};
|
||||
|
||||
struct gen_pipeline_stat {
|
||||
uint32_t reg;
|
||||
uint32_t numerator;
|
||||
@@ -133,6 +166,7 @@ struct gen_perf_query_counter {
|
||||
const char *symbol_name;
|
||||
enum gen_perf_counter_type type;
|
||||
enum gen_perf_counter_data_type data_type;
|
||||
enum gen_perf_counter_units units;
|
||||
uint64_t raw_max;
|
||||
size_t offset;
|
||||
uint64_t query_mask;
|
||||
|
@@ -353,6 +353,10 @@ def output_availability(set, availability, counter_name):
|
||||
c_outdent(4)
|
||||
|
||||
|
||||
def output_units(unit):
|
||||
return unit.replace(' ', '_').upper()
|
||||
|
||||
|
||||
def output_counter_report(set, counter, current_offset):
|
||||
data_type = counter.get('data_type')
|
||||
data_type_uc = data_type.upper()
|
||||
@@ -381,6 +385,7 @@ def output_counter_report(set, counter, current_offset):
|
||||
c("counter->symbol_name = \"" + counter.get('symbol_name') + "\";\n")
|
||||
c("counter->type = GEN_PERF_COUNTER_TYPE_" + semantic_type_uc + ";\n")
|
||||
c("counter->data_type = GEN_PERF_COUNTER_DATA_TYPE_" + data_type_uc + ";\n")
|
||||
c("counter->units = GEN_PERF_COUNTER_UNITS_" + output_units(counter.get('units')) + ";\n")
|
||||
c("counter->raw_max = " + set.max_values[counter.get('symbol_name')] + ";\n")
|
||||
|
||||
current_offset = pot_align(current_offset, sizeof(c_type))
|
||||
|
Reference in New Issue
Block a user