intel/perf: expose method to create query
authorMark Janes <mark.a.janes@intel.com>
Fri, 12 Jul 2019 23:35:27 +0000 (16:35 -0700)
committerMark Janes <mark.a.janes@intel.com>
Thu, 8 Aug 2019 04:33:56 +0000 (21:33 -0700)
By encapsulating this implementation within perf, we can eventually
make struct gen_perf_ctx private.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/intel/perf/gen_perf.c
src/intel/perf/gen_perf.h
src/mesa/drivers/dri/i965/brw_performance_query.c

index 4e29bc1..78e4b4c 100644 (file)
 #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)
 {
index 68e2a98..1dab55a 100644 (file)
@@ -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);
index dcf33ab..c1cba62 100644 (file)
@@ -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;
 }