/** * Get a list of counter IDs in a given group. */ static void get_counters(unsigned group, unsigned **counters, int *num_counters, int *max_active_counters) { glGetPerfMonitorCountersAMD(group, num_counters, NULL, 0, NULL); *counters = calloc(*num_counters, sizeof(unsigned)); glGetPerfMonitorCountersAMD(group, NULL, max_active_counters, *num_counters, *counters); }
void MetricBackend_AMD_perfmon::enumMetrics(unsigned group, enumMetricsCallback callback, void* userData) { std::vector<unsigned> metrics; int num_metrics; Metric_AMD_perfmon metric(0,0); glGetPerfMonitorCountersAMD(group, &num_metrics, nullptr, 0, nullptr); metrics.resize(num_metrics); glGetPerfMonitorCountersAMD(group, nullptr, nullptr, num_metrics, &metrics[0]); for(unsigned &c : metrics) { metric = Metric_AMD_perfmon(group, c); callback(&metric, 0, userData); } }