intel/dev: Add function to get the number of EUs per subslice
This value will be needed to compute preferred SLM size. User will be added in the next patch. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28910>
This commit is contained in:

committed by
Marge Bot

parent
df3ce7add2
commit
c4478ab4e3
@@ -1338,6 +1338,37 @@ intel_device_info_update_l3_banks(struct intel_device_info *devinfo)
|
||||
}
|
||||
}
|
||||
|
||||
/* Returns the number of EUs of the first subslice enabled */
|
||||
uint32_t
|
||||
intel_device_info_get_eu_count_first_subslice(const struct intel_device_info *devinfo)
|
||||
{
|
||||
uint32_t first_subslice, first_slice, offset, i;
|
||||
uint32_t eu_count = 0;
|
||||
|
||||
first_slice = ffs(devinfo->slice_masks);
|
||||
first_slice--;
|
||||
offset = first_slice * devinfo->subslice_slice_stride;
|
||||
|
||||
for (i = 0; i < DIV_ROUND_UP(devinfo->max_subslices_per_slice, 8); i++) {
|
||||
first_subslice = ffs(devinfo->subslice_masks[offset + i]);
|
||||
|
||||
if (first_subslice == 0)
|
||||
continue;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
assert(first_subslice > 0);
|
||||
first_subslice--;
|
||||
offset = first_slice * devinfo->eu_slice_stride +
|
||||
first_subslice * devinfo->eu_subslice_stride;
|
||||
for (i = 0; i < DIV_ROUND_UP(devinfo->max_eus_per_subslice, 8); i++)
|
||||
eu_count += __builtin_popcount(devinfo->eu_masks[offset + i]);
|
||||
|
||||
assert(eu_count > 0);
|
||||
return eu_count;
|
||||
}
|
||||
|
||||
/* Generate mask from the device data. */
|
||||
static void
|
||||
fill_masks(struct intel_device_info *devinfo)
|
||||
|
@@ -195,6 +195,7 @@ void intel_device_info_topology_reset_masks(struct intel_device_info *devinfo);
|
||||
void intel_device_info_topology_update_counts(struct intel_device_info *devinfo);
|
||||
void intel_device_info_update_pixel_pipes(struct intel_device_info *devinfo, uint8_t *subslice_masks);
|
||||
void intel_device_info_update_l3_banks(struct intel_device_info *devinfo);
|
||||
uint32_t intel_device_info_get_eu_count_first_subslice(const struct intel_device_info *devinfo);
|
||||
void intel_device_info_update_cs_workgroup_threads(struct intel_device_info *devinfo);
|
||||
bool intel_device_info_compute_system_memory(struct intel_device_info *devinfo, bool update);
|
||||
void intel_device_info_update_after_hwconfig(struct intel_device_info *devinfo);
|
||||
|
Reference in New Issue
Block a user