Lines Matching refs:perf
35 const struct panfrost_perf *perf)
37 unsigned offset = perf->category_offset[counter->category_index];
39 assert(offset < perf->n_counter_values);
41 uint32_t ret = perf->counter_values[offset];
45 for (uint32_t core = 1; core < perf->dev->core_id_range; ++core) {
46 ret += perf->counter_values[offset + PAN_COUNTERS_PER_CATEGORY * core];
65 panfrost_perf_init(struct panfrost_perf *perf, struct panfrost_device *dev)
67 perf->dev = dev;
72 perf->cfg = panfrost_lookup_counters(dev->model->performance_counters);
74 if (perf->cfg == NULL)
81 perf->n_counter_values = PAN_COUNTERS_PER_CATEGORY * n_blocks;
82 perf->counter_values = ralloc_array(perf, uint32_t, perf->n_counter_values);
85 perf->category_offset[0] = PAN_COUNTERS_PER_CATEGORY * 0;
86 perf->category_offset[1] = PAN_COUNTERS_PER_CATEGORY * 1;
87 perf->category_offset[2] = PAN_COUNTERS_PER_CATEGORY * 2;
88 perf->category_offset[3] = PAN_COUNTERS_PER_CATEGORY * (2 + l2_slices);
92 panfrost_perf_query(struct panfrost_perf *perf, uint32_t enable)
95 return drmIoctl(perf->dev->fd, DRM_IOCTL_PANFROST_PERFCNT_ENABLE, &perfcnt_enable);
99 panfrost_perf_enable(struct panfrost_perf *perf)
101 return panfrost_perf_query(perf, 1 /* enable */);
105 panfrost_perf_disable(struct panfrost_perf *perf)
107 return panfrost_perf_query(perf, 0 /* disable */);
111 panfrost_perf_dump(struct panfrost_perf *perf)
114 struct drm_panfrost_perfcnt_dump perfcnt_dump = {(uint64_t)(uintptr_t)perf->counter_values};
115 return drmIoctl(perf->dev->fd, DRM_IOCTL_PANFROST_PERFCNT_DUMP, &perfcnt_dump);