I had "ticks" here before I knew the units of the timer-query
result. Since then, Eric dug up the documentation saying that this
timer reports time in nanoseconds. So use a field name of "time_ns"
rather than "ticks".
* ctx->program_metrics array currently
*/
unsigned id;
* ctx->program_metrics array currently
*/
unsigned id;
} program_metrics_t;
typedef struct context
} program_metrics_t;
typedef struct context
-accumulate_program_ticks (unsigned program_id, unsigned ticks)
+accumulate_program_time (unsigned program_id, unsigned time_ns)
{
context_t *ctx = ¤t_context;
unsigned i;
{
context_t *ctx = ¤t_context;
unsigned i;
(program_id + 1) * sizeof (program_metrics_t));
for (i = ctx->num_program_metrics; i < program_id + 1; i++) {
ctx->program_metrics[i].id = i;
(program_id + 1) * sizeof (program_metrics_t));
for (i = ctx->num_program_metrics; i < program_id + 1; i++) {
ctx->program_metrics[i].id = i;
- ctx->program_metrics[i].ticks = 0.0;
+ ctx->program_metrics[i].time_ns = 0.0;
}
ctx->num_program_metrics = program_id + 1;
}
}
ctx->num_program_metrics = program_id + 1;
}
- ctx->program_metrics[program_id].ticks += ticks;
+ ctx->program_metrics[program_id].time_ns += time_ns;
int b = *(const int *)in_b;
struct program_metrics *metrics = arg;
int b = *(const int *)in_b;
struct program_metrics *metrics = arg;
- if (metrics[a].ticks < metrics[b].ticks)
+ if (metrics[a].time_ns < metrics[b].time_ns)
- if (metrics[a].ticks > metrics[b].ticks)
+ if (metrics[a].time_ns > metrics[b].time_ns)
sorted = calloc(ctx->num_program_metrics, sizeof(*sorted));
for (i = 0; i < ctx->num_program_metrics; i++) {
sorted[i] = i;
sorted = calloc(ctx->num_program_metrics, sizeof(*sorted));
for (i = 0; i < ctx->num_program_metrics; i++) {
sorted[i] = i;
- total += ctx->program_metrics[i].ticks;
+ total += ctx->program_metrics[i].time_ns;
}
qsort_r(sorted, ctx->num_program_metrics, sizeof(*sorted),
time_compare, ctx->program_metrics);
}
qsort_r(sorted, ctx->num_program_metrics, sizeof(*sorted),
time_compare, ctx->program_metrics);
/* Since we sparsely fill the array based on program
* id, many "programs" have no time.
*/
/* Since we sparsely fill the array based on program
* id, many "programs" have no time.
*/
- if (metric->ticks == 0.0)
+ if (metric->time_ns == 0.0)
continue;
printf ("Program %d:\t%7.2f ms (% 2.1f%%)\n",
continue;
printf ("Program %d:\t%7.2f ms (% 2.1f%%)\n",
- metric->id, metric->ticks / 1e6,
- metric->ticks / total * 100);
+ metric->id, metric->time_ns / 1e6,
+ metric->time_ns / total * 100);
glGetQueryObjectuiv (counter->id, GL_QUERY_RESULT, &elapsed);
glGetQueryObjectuiv (counter->id, GL_QUERY_RESULT, &elapsed);
- accumulate_program_ticks (counter->program, elapsed);
+ accumulate_program_time (counter->program, elapsed);
current_context.counter_head = counter->next;
if (current_context.counter_head == NULL)
current_context.counter_head = counter->next;
if (current_context.counter_head == NULL)