st/mesa: use BITSET_FOREACH_SET to loop through active perfmon counters
authorNicolai Hähnle <nhaehnle@gmail.com>
Thu, 12 Nov 2015 11:02:44 +0000 (12:02 +0100)
committerNicolai Hähnle <nhaehnle@gmail.com>
Fri, 20 Nov 2015 16:27:18 +0000 (17:27 +0100)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Tested-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/mesa/state_tracker/st_cb_perfmon.c

index 80ff1706966ffbce10ca5f5834c64a58d9e568d3..ec12eb222065c5a2a2f1ba4cd8fa123230d0178f 100644 (file)
@@ -50,6 +50,7 @@ init_perf_monitor(struct gl_context *ctx, struct gl_perf_monitor_object *m)
    for (gid = 0; gid < ctx->PerfMonitor.NumGroups; gid++) {
       const struct gl_perf_monitor_group *g = &ctx->PerfMonitor.Groups[gid];
       const struct st_perf_monitor_group *stg = &st->perfmon[gid];
+      BITSET_WORD tmp;
 
       if (m->ActiveGroups[gid] > g->MaxActiveCounters) {
          /* Maximum number of counters reached. Cannot start the session. */
@@ -60,14 +61,10 @@ init_perf_monitor(struct gl_context *ctx, struct gl_perf_monitor_object *m)
          return false;
       }
 
-      for (cid = 0; cid < g->NumCounters; cid++) {
-         const struct gl_perf_monitor_counter *c = &g->Counters[cid];
+      BITSET_FOREACH_SET(cid, tmp, m->ActiveCounters[gid], g->NumCounters) {
          const struct st_perf_monitor_counter *stc = &stg->counters[cid];
          struct st_perf_counter_object *cntr;
 
-         if (!BITSET_TEST(m->ActiveCounters[gid], cid))
-            continue;
-
          cntr = CALLOC_STRUCT(st_perf_counter_object);
          if (!cntr)
             return false;