aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLionel Landwerlin <[email protected]>2018-10-03 11:51:24 +0100
committerLionel Landwerlin <[email protected]>2020-05-20 14:02:27 +0300
commita7890f559b34e5a97689f16f0f1cdb1651fc4de7 (patch)
tree12f3829bd556cd6e7e5d192bfd9692f732ac178d /src
parentd15369332ff400aabb008f9990f7b990b3c8643e (diff)
intel/perf: emit counter units in generated code
We'll use this coming extension. Signed-off-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2775>
Diffstat (limited to 'src')
-rw-r--r--src/intel/perf/gen_perf.h34
-rw-r--r--src/intel/perf/gen_perf.py5
2 files changed, 39 insertions, 0 deletions
diff --git a/src/intel/perf/gen_perf.h b/src/intel/perf/gen_perf.h
index d35246d2f10..70525d06441 100644
--- a/src/intel/perf/gen_perf.h
+++ b/src/intel/perf/gen_perf.h
@@ -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;
diff --git a/src/intel/perf/gen_perf.py b/src/intel/perf/gen_perf.py
index e1ee1528ef1..a64d6ac3d5f 100644
--- a/src/intel/perf/gen_perf.py
+++ b/src/intel/perf/gen_perf.py
@@ -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))