From f2a049b4e3b20af416267d3c2a1118cc25c54b44 Mon Sep 17 00:00:00 2001 From: Mark Janes Date: Fri, 12 Jul 2019 16:35:27 -0700 Subject: [PATCH] intel/perf: expose method to create query By encapsulating this implementation within perf, we can eventually make struct gen_perf_ctx private. Reviewed-by: Kenneth Graunke --- src/intel/perf/gen_perf.c | 17 +++++++++++++++++ src/intel/perf/gen_perf.h | 2 ++ .../drivers/dri/i965/brw_performance_query.c | 13 +++---------- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/intel/perf/gen_perf.c b/src/intel/perf/gen_perf.c index 4e29bc17c0a..78e4b4c22b6 100644 --- a/src/intel/perf/gen_perf.c +++ b/src/intel/perf/gen_perf.c @@ -69,6 +69,23 @@ #define MAP_READ (1 << 0) #define MAP_WRITE (1 << 1) +struct gen_perf_query_object * +gen_perf_new_query(struct gen_perf_context *perf_ctx, unsigned query_index) +{ + const struct gen_perf_query_info *query = + &perf_ctx->perf->queries[query_index]; + struct gen_perf_query_object *obj = + calloc(1, sizeof(struct gen_perf_query_object)); + + if (!obj) + return NULL; + + obj->queryinfo = query; + + perf_ctx->n_query_instances++; + return obj; +} + static bool get_sysfs_dev_dir(struct gen_perf_config *perf, int fd) { diff --git a/src/intel/perf/gen_perf.h b/src/intel/perf/gen_perf.h index 68e2a985bad..1dab55a85e6 100644 --- a/src/intel/perf/gen_perf.h +++ b/src/intel/perf/gen_perf.h @@ -564,6 +564,8 @@ void gen_perf_snapshot_statistics_registers(void *context, struct gen_perf_config *perf, struct gen_perf_query_object *obj, uint32_t offset_in_bytes); +struct gen_perf_query_object * +gen_perf_new_query(struct gen_perf_context *, unsigned query_index); void gen_perf_close(struct gen_perf_context *perfquery, const struct gen_perf_query_info *query); diff --git a/src/mesa/drivers/dri/i965/brw_performance_query.c b/src/mesa/drivers/dri/i965/brw_performance_query.c index dcf33ab97cf..c1cba62cb3a 100644 --- a/src/mesa/drivers/dri/i965/brw_performance_query.c +++ b/src/mesa/drivers/dri/i965/brw_performance_query.c @@ -375,21 +375,14 @@ brw_new_perf_query_object(struct gl_context *ctx, unsigned query_index) { struct brw_context *brw = brw_context(ctx); struct gen_perf_context *perf_ctx = &brw->perf_ctx; - const struct gen_perf_query_info *queryinfo = - &perf_ctx->perf->queries[query_index]; - struct gen_perf_query_object *obj = - calloc(1, sizeof(struct gen_perf_query_object)); - - if (!obj) + struct gen_perf_query_object * obj = gen_perf_new_query(perf_ctx, query_index); + if (unlikely(!obj)) return NULL; - obj->queryinfo = queryinfo; - - perf_ctx->n_query_instances++; - struct brw_perf_query_object *brw_query = calloc(1, sizeof(struct brw_perf_query_object)); if (unlikely(!brw_query)) return NULL; + brw_query->query = obj; return &brw_query->base; } -- 2.30.2