Mesa (master): intel/perf: extract register configuration
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Oct 23 05:43:36 UTC 2019
Module: Mesa
Branch: master
Commit: e1d5d752572cc7017f1b4efdedfcf7b56f11044a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e1d5d752572cc7017f1b4efdedfcf7b56f11044a
Author: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Date: Fri Oct 19 18:25:13 2018 +0100
intel/perf: extract register configuration
We want to query the content of register configurations from the
kernel. Let's pull this out of the query.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Rafael Antognolli <rafael.antognolli at intel.com>
---
src/intel/perf/gen_perf.c | 12 ++++++------
src/intel/perf/gen_perf.h | 22 +++++++++++++---------
src/intel/perf/gen_perf.py | 6 +++++-
3 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/src/intel/perf/gen_perf.c b/src/intel/perf/gen_perf.c
index 01ee19b5e57..61bf8329d2c 100644
--- a/src/intel/perf/gen_perf.c
+++ b/src/intel/perf/gen_perf.c
@@ -616,14 +616,14 @@ init_oa_configs(struct gen_perf_config *perf, int fd)
memcpy(config.uuid, query->guid, sizeof(config.uuid));
- config.n_mux_regs = query->n_mux_regs;
- config.mux_regs_ptr = (uintptr_t) query->mux_regs;
+ config.n_mux_regs = query->config.n_mux_regs;
+ config.mux_regs_ptr = (uintptr_t) query->config.mux_regs;
- config.n_boolean_regs = query->n_b_counter_regs;
- config.boolean_regs_ptr = (uintptr_t) query->b_counter_regs;
+ config.n_boolean_regs = query->config.n_b_counter_regs;
+ config.boolean_regs_ptr = (uintptr_t) query->config.b_counter_regs;
- config.n_flex_regs = query->n_flex_regs;
- config.flex_regs_ptr = (uintptr_t) query->flex_regs;
+ config.n_flex_regs = query->config.n_flex_regs;
+ config.flex_regs_ptr = (uintptr_t) query->config.flex_regs;
ret = gen_ioctl(fd, DRM_IOCTL_I915_PERF_ADD_CONFIG, &config);
if (ret < 0) {
diff --git a/src/intel/perf/gen_perf.h b/src/intel/perf/gen_perf.h
index c79db7cfa44..5385607b956 100644
--- a/src/intel/perf/gen_perf.h
+++ b/src/intel/perf/gen_perf.h
@@ -164,6 +164,18 @@ struct gen_perf_query_register_prog {
uint32_t val;
};
+/* Register programming for a given query */
+struct gen_perf_configuration {
+ struct gen_perf_query_register_prog *flex_regs;
+ uint32_t n_flex_regs;
+
+ struct gen_perf_query_register_prog *mux_regs;
+ uint32_t n_mux_regs;
+
+ struct gen_perf_query_register_prog *b_counter_regs;
+ uint32_t n_b_counter_regs;
+};
+
struct gen_perf_query_info {
enum gen_perf_query_type {
GEN_PERF_QUERY_TYPE_OA,
@@ -188,15 +200,7 @@ struct gen_perf_query_info {
int b_offset;
int c_offset;
- /* Register programming for a given query */
- struct gen_perf_query_register_prog *flex_regs;
- uint32_t n_flex_regs;
-
- struct gen_perf_query_register_prog *mux_regs;
- uint32_t n_mux_regs;
-
- struct gen_perf_query_register_prog *b_counter_regs;
- uint32_t n_b_counter_regs;
+ struct gen_perf_configuration config;
};
struct gen_perf_config {
diff --git a/src/intel/perf/gen_perf.py b/src/intel/perf/gen_perf.py
index 6f42c04dab8..8e05a8e472b 100644
--- a/src/intel/perf/gen_perf.py
+++ b/src/intel/perf/gen_perf.py
@@ -419,7 +419,7 @@ def generate_register_configs(set):
c_indent(3)
for register in register_config.findall('register'):
- c("query->%s[query->n_%s++] = (struct gen_perf_query_register_prog) { .reg = %s, .val = %s };" %
+ c("query->config.%s[query->config.n_%s++] = (struct gen_perf_query_register_prog) { .reg = %s, .val = %s };" %
(t, t, register.get('address'), register.get('value')))
if availability:
@@ -692,9 +692,13 @@ def main():
.c_offset = 46,
"""))
+ c(".config = {")
+ c_indent(3)
for reg_type, reg_length in register_lengths.items():
c(".{0} = {1}_{2}_{3},".format(reg_type, gen.chipset, set.underscore_name, reg_type))
c(".n_{0} = 0, /* Determined at runtime */".format(reg_type))
+ c_outdent(3)
+ c("},")
c_outdent(3)
c("};\n")
More information about the mesa-commit
mailing list