Mesa (master): intel/perf: drop counter size field

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 17 13:15:42 UTC 2019


Module: Mesa
Branch: master
Commit: 93dbe52ab04a0061f893aaa4e9fdbb385b8b2fb0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=93dbe52ab04a0061f893aaa4e9fdbb385b8b2fb0

Author: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Date:   Tue Oct  2 15:41:41 2018 +0100

intel/perf: drop counter size field

We can deduct the size from another field, let's just save some space.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Mark Janes <mark.a.janes at intel.com>

---

 src/intel/perf/gen_perf.h                           | 21 +++++++++++++++++++--
 src/intel/perf/gen_perf.py                          |  3 +--
 src/mesa/drivers/dri/i965/brw_performance_query.c   |  7 ++++---
 .../drivers/dri/i965/brw_performance_query_mdapi.c  |  4 ++--
 4 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/src/intel/perf/gen_perf.h b/src/intel/perf/gen_perf.h
index 24fbd15cac1..6e7a6d36c15 100644
--- a/src/intel/perf/gen_perf.h
+++ b/src/intel/perf/gen_perf.h
@@ -106,7 +106,6 @@ struct gen_perf_query_counter {
    enum gen_perf_counter_data_type data_type;
    uint64_t raw_max;
    size_t offset;
-   size_t size;
 
    union {
       uint64_t (*oa_counter_read_uint64)(struct gen_perf *perf,
@@ -193,6 +192,25 @@ struct gen_perf {
    int (*ioctl)(int, unsigned long, void *);
 };
 
+static inline size_t
+gen_perf_query_counter_get_size(const struct gen_perf_query_counter *counter)
+{
+   switch (counter->data_type) {
+   case GEN_PERF_COUNTER_DATA_TYPE_BOOL32:
+      return sizeof(uint32_t);
+   case GEN_PERF_COUNTER_DATA_TYPE_UINT32:
+      return sizeof(uint32_t);
+   case GEN_PERF_COUNTER_DATA_TYPE_UINT64:
+      return sizeof(uint64_t);
+   case GEN_PERF_COUNTER_DATA_TYPE_FLOAT:
+      return sizeof(float);
+   case GEN_PERF_COUNTER_DATA_TYPE_DOUBLE:
+      return sizeof(double);
+   default:
+      unreachable("invalid counter data type");
+   }
+}
+
 static inline struct gen_perf_query_info *
 gen_perf_query_append_query_info(struct gen_perf *perf, int max_counters)
 {
@@ -230,7 +248,6 @@ gen_perf_query_info_add_stat_reg(struct gen_perf_query_info *query,
    counter->desc = description;
    counter->type = GEN_PERF_COUNTER_TYPE_RAW;
    counter->data_type = GEN_PERF_COUNTER_DATA_TYPE_UINT64;
-   counter->size = sizeof(uint64_t);
    counter->offset = sizeof(uint64_t) * query->n_counters;
    counter->pipeline_stat.reg = reg;
    counter->pipeline_stat.numerator = numerator;
diff --git a/src/intel/perf/gen_perf.py b/src/intel/perf/gen_perf.py
index c41e8f3eb11..f7d0b86b2cf 100644
--- a/src/intel/perf/gen_perf.py
+++ b/src/intel/perf/gen_perf.py
@@ -381,7 +381,6 @@ def output_counter_report(set, counter, current_offset):
 
     current_offset = pot_align(current_offset, sizeof(c_type))
     c("counter->offset = " + str(current_offset) + ";\n")
-    c("counter->size = sizeof(" + c_type + ");\n")
 
     if availability:
         c_outdent(3);
@@ -722,7 +721,7 @@ def main():
                 offset = output_counter_report(set, counter, offset)
 
 
-            c("\nquery->data_size = counter->offset + counter->size;\n")
+            c("\nquery->data_size = counter->offset + gen_perf_query_counter_get_size(counter);\n")
 
             c_outdent(3)
             c("}");
diff --git a/src/mesa/drivers/dri/i965/brw_performance_query.c b/src/mesa/drivers/dri/i965/brw_performance_query.c
index 831ad97a675..cd7961905bd 100644
--- a/src/mesa/drivers/dri/i965/brw_performance_query.c
+++ b/src/mesa/drivers/dri/i965/brw_performance_query.c
@@ -447,7 +447,7 @@ brw_get_perf_counter_info(struct gl_context *ctx,
    *name = counter->name;
    *desc = counter->desc;
    *offset = counter->offset;
-   *data_size = counter->size;
+   *data_size = gen_perf_query_counter_get_size(counter);
    *type_enum = gen_counter_type_enum_to_gl_type(counter->type);
    *data_type_enum = gen_counter_data_type_to_gl_type(counter->data_type);
    *raw_max = counter->raw_max;
@@ -1392,8 +1392,9 @@ get_oa_counter_data(struct brw_context *brw,
       const struct gen_perf_query_counter *counter = &query->counters[i];
       uint64_t *out_uint64;
       float *out_float;
+      size_t counter_size = gen_perf_query_counter_get_size(counter);
 
-      if (counter->size) {
+      if (counter_size) {
          switch (counter->data_type) {
          case GEN_PERF_COUNTER_DATA_TYPE_UINT64:
             out_uint64 = (uint64_t *)(data + counter->offset);
@@ -1411,7 +1412,7 @@ get_oa_counter_data(struct brw_context *brw,
             /* So far we aren't using uint32, double or bool32... */
             unreachable("unexpected counter data type");
          }
-         written = counter->offset + counter->size;
+         written = counter->offset + counter_size;
       }
    }
 
diff --git a/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c b/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c
index f77560390d7..379515d328f 100644
--- a/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c
+++ b/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c
@@ -43,10 +43,10 @@ fill_mdapi_perf_query_counter(struct gen_perf_query_info *query,
    counter->type = GEN_PERF_COUNTER_TYPE_RAW;
    counter->data_type = data_type;
    counter->offset = data_offset;
-   counter->size = data_size;
-   assert(counter->offset + counter->size <= query->data_size);
 
    query->n_counters++;
+
+   assert(counter->offset + gen_perf_query_counter_get_size(counter) <= query->data_size);
 }
 
 #define MDAPI_QUERY_ADD_COUNTER(query, struct_name, field_name, type_name) \




More information about the mesa-commit mailing list