Lines Matching refs:topology
1052 const struct drm_i915_query_topology_info *topology) in update_from_topology() argument
1056 devinfo->subslice_slice_stride = topology->subslice_stride; in update_from_topology()
1058 devinfo->eu_subslice_stride = DIV_ROUND_UP(topology->max_eus_per_subslice, 8); in update_from_topology()
1059 devinfo->eu_slice_stride = topology->max_subslices * devinfo->eu_subslice_stride; in update_from_topology()
1061 assert(sizeof(devinfo->slice_masks) >= DIV_ROUND_UP(topology->max_slices, 8)); in update_from_topology()
1062 memcpy(&devinfo->slice_masks, topology->data, DIV_ROUND_UP(topology->max_slices, 8)); in update_from_topology()
1066 topology->max_slices * topology->subslice_stride; in update_from_topology()
1068 memcpy(devinfo->subslice_masks, &topology->data[topology->subslice_offset], in update_from_topology()
1072 for (int s = 0; s < topology->max_slices; s++) { in update_from_topology()
1113 topology->eu_stride * topology->max_subslices * topology->max_slices; in update_from_topology()
1115 memcpy(devinfo->eu_masks, &topology->data[topology->eu_offset], eu_mask_len); in update_from_topology()
1128 struct drm_i915_query_topology_info *topology; in update_from_masks() local
1134 topology = calloc(1, sizeof(*topology) + data_length); in update_from_masks()
1135 if (!topology) in update_from_masks()
1138 topology->max_slices = util_last_bit(slice_mask); in update_from_masks()
1139 topology->max_subslices = util_last_bit(subslice_mask); in update_from_masks()
1141 topology->subslice_offset = DIV_ROUND_UP(topology->max_slices, 8); in update_from_masks()
1142 topology->subslice_stride = DIV_ROUND_UP(topology->max_subslices, 8); in update_from_masks()
1149 topology->eu_offset = topology->subslice_offset + in update_from_masks()
1150 DIV_ROUND_UP(topology->max_subslices, 8); in update_from_masks()
1151 topology->eu_stride = DIV_ROUND_UP(num_eu_per_subslice, 8); in update_from_masks()
1154 for (int b = 0; b < topology->subslice_offset; b++) in update_from_masks()
1155 topology->data[b] = (slice_mask >> (b * 8)) & 0xff; in update_from_masks()
1157 for (int s = 0; s < topology->max_slices; s++) { in update_from_masks()
1160 for (int b = 0; b < topology->subslice_stride; b++) { in update_from_masks()
1161 int subslice_offset = topology->subslice_offset + in update_from_masks()
1162 s * topology->subslice_stride + b; in update_from_masks()
1164 topology->data[subslice_offset] = (subslice_mask >> (b * 8)) & 0xff; in update_from_masks()
1168 for (int ss = 0; ss < topology->max_subslices; ss++) { in update_from_masks()
1169 for (int b = 0; b < topology->eu_stride; b++) { in update_from_masks()
1170 int eu_offset = topology->eu_offset + in update_from_masks()
1171 (s * topology->max_subslices + ss) * topology->eu_stride + b; in update_from_masks()
1173 topology->data[eu_offset] = (eu_mask >> (b * 8)) & 0xff; in update_from_masks()
1178 update_from_topology(devinfo, topology); in update_from_masks()
1179 free(topology); in update_from_masks()