We were seeing a result like this:
frame: 0 21.0526 20.9131 -4.54586e+17 0
while the frame obviously didn't take negative time.
The bug was subtracting an unintialized
metrics->previous_cpu_time_ts. In order to have this in place by the
end of the first frame, we need to do an initial query of the CPU time
when first creating our metrics object, (before starting the first
frame).
Thanks to Eric Anholt for identifying this bug.
/* Get the first frame timestamp started immediately. */
glQueryCounter (metrics->swap_end_timestamp_id, GL_TIMESTAMP);
+ /* As well as the initial CPU time. */
+ clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &metrics->cpu_time_ts);
+
return metrics;
}