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@intel.com> Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16144>
This commit is contained in:
parent
6f63bc38e7
commit
c740ca6000
|
@ -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+
|
||||
|
|
|
@ -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]);
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue