Mesa (main): intel/perf: add support new variable counting the number of EUs in slice0-3
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue May 17 20:20:08 UTC 2022
Module: Mesa
Branch: main
Commit: c740ca60008ef0662325df0d755e941767dd7bd8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c740ca60008ef0662325df0d755e941767dd7bd8
Author: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Date: Wed Jun 23 18:28:13 2021 +0300
intel/perf: add support new variable counting the number of EUs in slice0-3
v2: MIN2(4, max_slices) (Marcin)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Marcin Ślusarz <marcin.slusarz at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16144>
---
src/intel/perf/gen_perf.py | 1 +
src/intel/perf/intel_perf.c | 16 ++++++++++++++++
src/intel/perf/intel_perf.h | 1 +
3 files changed, 18 insertions(+)
diff --git a/src/intel/perf/gen_perf.py b/src/intel/perf/gen_perf.py
index ac6ac53985a..36b81da50f6 100644
--- a/src/intel/perf/gen_perf.py
+++ b/src/intel/perf/gen_perf.py
@@ -214,6 +214,7 @@ hw_vars["$EuCoresTotalCount"] = "perf->sys_vars.n_eus"
hw_vars["$EuSlicesTotalCount"] = "perf->sys_vars.n_eu_slices"
hw_vars["$EuSubslicesTotalCount"] = "perf->sys_vars.n_eu_sub_slices"
hw_vars["$EuDualSubslicesTotalCount"] = "perf->sys_vars.n_eu_sub_slices"
+hw_vars["$EuDualSubslicesSlice0123Count"] = "perf->sys_vars.n_eu_slice0123"
hw_vars["$EuThreadsCount"] = "perf->devinfo.num_thread_per_eu"
hw_vars["$SliceMask"] = "perf->sys_vars.slice_mask"
# subslice_mask is interchangeable with subslice/dual-subslice since Gfx12+
diff --git a/src/intel/perf/intel_perf.c b/src/intel/perf/intel_perf.c
index f40385304b2..d0baa0b8291 100644
--- a/src/intel/perf/intel_perf.c
+++ b/src/intel/perf/intel_perf.c
@@ -352,6 +352,22 @@ compute_topology_builtins(struct intel_perf_config *perf)
perf->sys_vars.slice_mask = devinfo->slice_masks;
perf->sys_vars.n_eu_slices = devinfo->num_slices;
+ perf->sys_vars.n_eu_slice0123 = 0;
+ for (int s = 0; s < MIN2(4, devinfo->max_slices); s++) {
+ if (!intel_device_info_slice_available(devinfo, s))
+ continue;
+
+ for (int ss = 0; ss < devinfo->max_subslices_per_slice; ss++) {
+ if (!intel_device_info_subslice_available(devinfo, s, ss))
+ continue;
+
+ for (int eu = 0; eu < devinfo->max_eus_per_subslice; eu++) {
+ if (intel_device_info_eu_available(devinfo, s, ss, eu))
+ perf->sys_vars.n_eu_slice0123++;
+ }
+ }
+ }
+
for (int i = 0; i < sizeof(devinfo->subslice_masks[i]); i++) {
perf->sys_vars.n_eu_sub_slices +=
util_bitcount(devinfo->subslice_masks[i]);
diff --git a/src/intel/perf/intel_perf.h b/src/intel/perf/intel_perf.h
index ba90a660190..3b0825e4b47 100644
--- a/src/intel/perf/intel_perf.h
+++ b/src/intel/perf/intel_perf.h
@@ -337,6 +337,7 @@ struct intel_perf_config {
uint64_t n_eus; /** $EuCoresTotalCount */
uint64_t n_eu_slices; /** $EuSlicesTotalCount */
uint64_t n_eu_sub_slices; /** $EuSubslicesTotalCount */
+ uint64_t n_eu_slice0123; /** $EuDualSubslicesSlice0123Count */
uint64_t slice_mask; /** $SliceMask */
uint64_t subslice_mask; /** $SubsliceMask */
uint64_t gt_min_freq; /** $GpuMinFrequency */
More information about the mesa-commit
mailing list