3 #include "gpu_timers.h"
7 pair<GLuint, GLuint> GPUTimers::begin_timer(const string &name, int level)
10 return make_pair(0, 0);
14 glGenQueries(2, queries);
15 glQueryCounter(queries[0], GL_TIMESTAMP);
20 timer.query.first = queries[0];
21 timer.query.second = queries[1];
22 timers.push_back(timer);
26 void GPUTimers::print()
28 for (const Timer &timer : timers) {
29 // NOTE: This makes the CPU wait for the GPU.
30 GLuint64 time_start, time_end;
31 glGetQueryObjectui64v(timer.query.first, GL_QUERY_RESULT, &time_start);
32 glGetQueryObjectui64v(timer.query.second, GL_QUERY_RESULT, &time_end);
33 //fprintf(stderr, "GPU time used = %.1f ms\n", time_elapsed / 1e6);
34 for (int i = 0; i < timer.level * 2; ++i) {
37 fprintf(stderr, "%-30s %4.1f ms\n", timer.name.c_str(), GLint64(time_end - time_start) / 1e6);