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 */