intel/perf: Destination array calculation into function
authorMatt Turner <mattst88@gmail.com>
Thu, 3 Mar 2022 23:30:37 +0000 (15:30 -0800)
committerMarge Bot <emma+marge@anholt.net>
Mon, 7 Mar 2022 21:09:54 +0000 (21:09 +0000)
Cuts 119 KiB from iris_dri.so and libvulkan_intel.so.

   text    data     bss     dec     hex filename
 917511       0       0  917511   e0007 meson-generated_.._intel_perf_metrics.c.o (before)
 796986       0       0  796986   c293a meson-generated_.._intel_perf_metrics.c.o (after)

   text    data     bss     dec     hex filename
14130948 365708  210004 14706660 e067e4 iris_dri.so (before)
14009332 365708  210004 14585044 de8cd4 iris_dri.so (after)

   text    data     bss     dec     hex filename
8124225  214264   22820 8361309  7f955d libvulkan_intel.so (before)
8002609  214264   22820 8239693  7dba4d libvulkan_intel.so (after)

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15237>

src/intel/perf/gen_perf.py

index 0666f62..bdd1de2 100644 (file)
@@ -466,8 +466,7 @@ def output_counter_report(set, counter, counter_to_idx, current_offset):
 
     current_offset = pot_align(current_offset, sizeof(c_type))
 
-    c("counter = &query->counters[query->n_counters++];\n")
-    c("intel_perf_query_add_counter(counter, " + idx + ", " +
+    c("intel_perf_query_add_counter(query, " + idx + ", " +
         str(current_offset) + ", " +
         set.max_values[counter.get('symbol_name')] + ", (oa_counter_read_func)" +
         set.read_funcs[counter.get('symbol_name')] + ");\n")
@@ -812,10 +811,11 @@ def main():
                                                  const struct intel_perf_query_info *query,
                                                  const struct intel_perf_query_result *results);
         static void ATTRIBUTE_NOINLINE
-        intel_perf_query_add_counter(struct intel_perf_query_counter *dest,
+        intel_perf_query_add_counter(struct intel_perf_query_info *query,
                                      int counter_idx, size_t offset,
                                      uint64_t raw_max, oa_counter_read_func oa_counter_read_uint64)
         {
+           struct intel_perf_query_counter *dest = &query->counters[query->n_counters++];
            const struct intel_perf_query_counter_data *counter = &counters[counter_idx];
 
            dest->name = &name[counter->name_idx];
@@ -870,7 +870,8 @@ def main():
                 offset = output_counter_report(set, counter, counter_to_idx, offset)
 
 
-            c("\nquery->data_size = counter->offset + intel_perf_query_counter_get_size(counter);\n")
+            c("\ncounter = &query->counters[query->n_counters - 1];\n")
+            c("query->data_size = counter->offset + intel_perf_query_counter_get_size(counter);\n")
 
             c_outdent(3)
             c("}");