[Mesa-dev] [PATCH 04/19] i965: move mdapi data structure to intel/perf

Lionel Landwerlin lionel.g.landwerlin at intel.com
Mon Jun 18 17:39:25 UTC 2018


We'll want to reuse those structures later on.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
 src/intel/Makefile.sources                    |   3 +-
 src/intel/perf/gen_perf_mdapi.h               | 119 ++++++++++++++++++
 .../dri/i965/brw_performance_query_mdapi.c    | 103 ++-------------
 3 files changed, 128 insertions(+), 97 deletions(-)
 create mode 100644 src/intel/perf/gen_perf_mdapi.h

diff --git a/src/intel/Makefile.sources b/src/intel/Makefile.sources
index 33a7ec0f2f4..1cfe7f6a072 100644
--- a/src/intel/Makefile.sources
+++ b/src/intel/Makefile.sources
@@ -315,7 +315,8 @@ GEN_PERF_XML_FILES = \
 
 GEN_PERF_FILES = \
 	perf/gen_perf.c \
-	perf/gen_perf.h
+	perf/gen_perf.h \
+	perf/gen_perf_mdapi.h
 
 GEN_PERF_GENERATED_FILES = \
 	perf/gen_perf_metrics.c \
diff --git a/src/intel/perf/gen_perf_mdapi.h b/src/intel/perf/gen_perf_mdapi.h
new file mode 100644
index 00000000000..dcaa8c3ebeb
--- /dev/null
+++ b/src/intel/perf/gen_perf_mdapi.h
@@ -0,0 +1,119 @@
+/*
+ * Copyright © 2018 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef GEN_PERF_MDAPI_H
+#define GEN_PERF_MDAPI_H
+
+#include <stdint.h>
+
+/*
+ * Data format expected by MDAPI.
+ */
+
+struct gen7_mdapi_metrics {
+   uint64_t TotalTime;
+
+   uint64_t ACounters[45];
+   uint64_t NOACounters[16];
+
+   uint64_t PerfCounter1;
+   uint64_t PerfCounter2;
+   uint32_t SplitOccured;
+   uint32_t CoreFrequencyChanged;
+   uint64_t CoreFrequency;
+   uint32_t ReportId;
+   uint32_t ReportsCount;
+};
+
+#define GTDI_QUERY_BDW_METRICS_OA_COUNT         36
+#define GTDI_QUERY_BDW_METRICS_OA_40b_COUNT     32
+#define GTDI_QUERY_BDW_METRICS_NOA_COUNT        16
+struct gen8_mdapi_metrics {
+   uint64_t TotalTime;
+   uint64_t GPUTicks;
+   uint64_t OaCntr[GTDI_QUERY_BDW_METRICS_OA_COUNT];
+   uint64_t NoaCntr[GTDI_QUERY_BDW_METRICS_NOA_COUNT];
+   uint64_t BeginTimestamp;
+   uint64_t Reserved1;
+   uint64_t Reserved2;
+   uint32_t Reserved3;
+   uint32_t OverrunOccured;
+   uint64_t MarkerUser;
+   uint64_t MarkerDriver;
+
+   uint64_t SliceFrequency;
+   uint64_t UnsliceFrequency;
+   uint64_t PerfCounter1;
+   uint64_t PerfCounter2;
+   uint32_t SplitOccured;
+   uint32_t CoreFrequencyChanged;
+   uint64_t CoreFrequency;
+   uint32_t ReportId;
+   uint32_t ReportsCount;
+};
+
+#define GTDI_MAX_READ_REGS 16
+
+struct gen9_mdapi_metrics {
+   uint64_t TotalTime;
+   uint64_t GPUTicks;
+   uint64_t OaCntr[GTDI_QUERY_BDW_METRICS_OA_COUNT];
+   uint64_t NoaCntr[GTDI_QUERY_BDW_METRICS_NOA_COUNT];
+   uint64_t BeginTimestamp;
+   uint64_t Reserved1;
+   uint64_t Reserved2;
+   uint32_t Reserved3;
+   uint32_t OverrunOccured;
+   uint64_t MarkerUser;
+   uint64_t MarkerDriver;
+
+   uint64_t SliceFrequency;
+   uint64_t UnsliceFrequency;
+   uint64_t PerfCounter1;
+   uint64_t PerfCounter2;
+   uint32_t SplitOccured;
+   uint32_t CoreFrequencyChanged;
+   uint64_t CoreFrequency;
+   uint32_t ReportId;
+   uint32_t ReportsCount;
+
+   uint64_t UserCntr[GTDI_MAX_READ_REGS];
+   uint32_t UserCntrCfgId;
+   uint32_t Reserved4;
+};
+
+struct mdapi_pipeline_metrics {
+   uint64_t IAVertices;
+   uint64_t IAPrimitives;
+   uint64_t VSInvocations;
+   uint64_t GSInvocations;
+   uint64_t GSPrimitives;
+   uint64_t CInvocations;
+   uint64_t CPrimitives;
+   uint64_t PSInvocations;
+   uint64_t HSInvocations;
+   uint64_t DSInvocations;
+   uint64_t CSInvocations;
+};
+
+#endif /* GEN_PERF_MDAPI_H */
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 0676e868b81..916b14c14ba 100644
--- a/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c
+++ b/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c
@@ -25,96 +25,7 @@
 #include "brw_performance_query.h"
 
 #include "perf/gen_perf.h"
-
-/**
- * Data format expected by MDAPI.
- */
-
-struct mdapi_gen7_metrics {
-   uint64_t TotalTime;
-
-   uint64_t ACounters[45];
-   uint64_t NOACounters[16];
-
-   uint64_t PerfCounter1;
-   uint64_t PerfCounter2;
-   uint32_t SplitOccured;
-   uint32_t CoreFrequencyChanged;
-   uint64_t CoreFrequency;
-   uint32_t ReportId;
-   uint32_t ReportsCount;
-};
-
-#define GTDI_QUERY_BDW_METRICS_OA_COUNT         36
-#define GTDI_QUERY_BDW_METRICS_OA_40b_COUNT     32
-#define GTDI_QUERY_BDW_METRICS_NOA_COUNT        16
-struct mdapi_gen8_metrics {
-   uint64_t TotalTime;
-   uint64_t GPUTicks;
-   uint64_t OaCntr[GTDI_QUERY_BDW_METRICS_OA_COUNT];
-   uint64_t NoaCntr[GTDI_QUERY_BDW_METRICS_NOA_COUNT];
-   uint64_t BeginTimestamp;
-   uint64_t Reserved1;
-   uint64_t Reserved2;
-   uint32_t Reserved3;
-   uint32_t OverrunOccured;
-   uint64_t MarkerUser;
-   uint64_t MarkerDriver;
-
-   uint64_t SliceFrequency;
-   uint64_t UnsliceFrequency;
-   uint64_t PerfCounter1;
-   uint64_t PerfCounter2;
-   uint32_t SplitOccured;
-   uint32_t CoreFrequencyChanged;
-   uint64_t CoreFrequency;
-   uint32_t ReportId;
-   uint32_t ReportsCount;
-};
-
-#define GTDI_MAX_READ_REGS 16
-
-struct mdapi_gen9_metrics {
-   uint64_t TotalTime;
-   uint64_t GPUTicks;
-   uint64_t OaCntr[GTDI_QUERY_BDW_METRICS_OA_COUNT];
-   uint64_t NoaCntr[GTDI_QUERY_BDW_METRICS_NOA_COUNT];
-   uint64_t BeginTimestamp;
-   uint64_t Reserved1;
-   uint64_t Reserved2;
-   uint32_t Reserved3;
-   uint32_t OverrunOccured;
-   uint64_t MarkerUser;
-   uint64_t MarkerDriver;
-
-   uint64_t SliceFrequency;
-   uint64_t UnsliceFrequency;
-   uint64_t PerfCounter1;
-   uint64_t PerfCounter2;
-   uint32_t SplitOccured;
-   uint32_t CoreFrequencyChanged;
-   uint64_t CoreFrequency;
-   uint32_t ReportId;
-   uint32_t ReportsCount;
-
-   uint64_t UserCntr[GTDI_MAX_READ_REGS];
-   uint32_t UserCntrCfgId;
-   uint32_t Reserved4;
-};
-
-struct mdapi_pipeline_metrics {
-   uint64_t IAVertices;
-   uint64_t IAPrimitives;
-   uint64_t VSInvocations;
-   uint64_t GSInvocations;
-   uint64_t GSPrimitives;
-   uint64_t CInvocations;
-   uint64_t CPrimitives;
-   uint64_t PSInvocations;
-   uint64_t HSInvocations;
-   uint64_t DSInvocations;
-   uint64_t CSInvocations;
-};
+#include "perf/gen_perf_mdapi.h"
 
 int
 brw_perf_query_get_mdapi_oa_data(struct brw_context *brw,
@@ -126,7 +37,7 @@ brw_perf_query_get_mdapi_oa_data(struct brw_context *brw,
 
    switch (devinfo->gen) {
    case 7: {
-      struct mdapi_gen7_metrics *mdapi_data = (struct mdapi_gen7_metrics *) data;
+      struct gen7_mdapi_metrics *mdapi_data = (struct gen7_mdapi_metrics *) data;
 
       if (data_size < sizeof(*mdapi_data))
          return 0;
@@ -148,7 +59,7 @@ brw_perf_query_get_mdapi_oa_data(struct brw_context *brw,
       return sizeof(*mdapi_data);
    }
    case 8: {
-      struct mdapi_gen8_metrics *mdapi_data = (struct mdapi_gen8_metrics *) data;
+      struct gen8_mdapi_metrics *mdapi_data = (struct gen8_mdapi_metrics *) data;
 
       if (data_size < sizeof(*mdapi_data))
          return 0;
@@ -174,7 +85,7 @@ brw_perf_query_get_mdapi_oa_data(struct brw_context *brw,
    case 9:
    case 10:
    case 11: {
-      struct mdapi_gen9_metrics *mdapi_data = (struct mdapi_gen9_metrics *) data;
+      struct gen9_mdapi_metrics *mdapi_data = (struct gen9_mdapi_metrics *) data;
 
       if (data_size < sizeof(*mdapi_data))
          return 0;
@@ -258,7 +169,7 @@ brw_perf_query_register_mdapi_oa_query(struct brw_context *brw)
       query = gen_perf_query_append_query_info(perf, 1 + 45 + 16 + 7);
       query->oa_format = I915_OA_FORMAT_A45_B8_C8;
 
-      struct mdapi_gen7_metrics metric_data;
+      struct gen7_mdapi_metrics metric_data;
       query->data_size = sizeof(metric_data);
 
       MDAPI_QUERY_ADD_COUNTER(query, metric_data, TotalTime, UINT64);
@@ -283,7 +194,7 @@ brw_perf_query_register_mdapi_oa_query(struct brw_context *brw)
       query = gen_perf_query_append_query_info(perf, 2 + 36 + 16 + 16);
       query->oa_format = I915_OA_FORMAT_A32u40_A4u32_B8_C8;
 
-      struct mdapi_gen8_metrics metric_data;
+      struct gen8_mdapi_metrics metric_data;
       query->data_size = sizeof(metric_data);
 
       MDAPI_QUERY_ADD_COUNTER(query, metric_data, TotalTime, UINT64);
@@ -320,7 +231,7 @@ brw_perf_query_register_mdapi_oa_query(struct brw_context *brw)
       query = gen_perf_query_append_query_info(perf, 2 + 36 + 16 + 16 + 16 + 2);
       query->oa_format = I915_OA_FORMAT_A32u40_A4u32_B8_C8;
 
-      struct mdapi_gen9_metrics metric_data;
+      struct gen9_mdapi_metrics metric_data;
       query->data_size = sizeof(metric_data);
 
       MDAPI_QUERY_ADD_COUNTER(query, metric_data, TotalTime, UINT64);
-- 
2.17.1



More information about the mesa-dev mailing list