X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=metrics.c;h=84fc23f6b20b02a2a15ece51ee9b63447d4e5466;hb=99eeb7e0771887efc60f295db6a30a76c677c933;hp=f4c0a2150f05b2092031a17907da231631b09bd4;hpb=c0c549440d852153d1777eca3fa962c1b70483b3;p=fips diff --git a/metrics.c b/metrics.c index f4c0a21..84fc23f 100644 --- a/metrics.c +++ b/metrics.c @@ -24,8 +24,7 @@ #include -#define GL_GLEXT_PROTOTYPES -#include +#include "fips-dispatch-gl.h" #include "metrics.h" @@ -59,7 +58,7 @@ typedef struct context context_t current_context; unsigned -metrics_add_counter (void) +metrics_counter_new (void) { counter_t *counter; @@ -85,6 +84,18 @@ metrics_add_counter (void) return counter->id; } +void +metrics_counter_start (unsigned counter) +{ + glBeginQuery (GL_TIME_ELAPSED, counter); +} + +void +metrics_counter_stop (void) +{ + glEndQuery (GL_TIME_ELAPSED); +} + void metrics_set_current_program (unsigned program) { @@ -141,28 +152,16 @@ metrics_end_frame (void) frames++; - - if (frames % 60 == 0) { - double fps; - gettimeofday (&tv_now, NULL); - - fps = (double) frames / (tv_now.tv_sec - tv_start.tv_sec + - (tv_now.tv_usec - tv_start.tv_usec) / 1.0e6); - - printf("FPS: %.3f\n", fps); - - print_program_metrics (); - } + gettimeofday (&tv_now, NULL); /* Consume all counters that are ready. */ counter_t *counter = current_context.counter_head; while (counter) { - GLint available; - GLuint elapsed; + GLuint available, elapsed; - glGetQueryObjectiv (counter->id, GL_QUERY_RESULT_AVAILABLE, - &available); + glGetQueryObjectuiv (counter->id, GL_QUERY_RESULT_AVAILABLE, + &available); if (! available) break; @@ -179,4 +178,15 @@ metrics_end_frame (void) free (counter); counter = current_context.counter_head; } + + if (frames % 60 == 0) { + double fps; + + fps = (double) frames / (tv_now.tv_sec - tv_start.tv_sec + + (tv_now.tv_usec - tv_start.tv_usec) / 1.0e6); + + printf("FPS: %.3f\n", fps); + + print_program_metrics (); + } }