X-Git-Url: https://git.cworth.org/git?p=fips;a=blobdiff_plain;f=metrics.c;h=39ed5bacf2f9733010b5564893e76b9f7b0be1a1;hp=cbfe52e9d1ce6d8c19bed45c9d038b11d14bfa0e;hb=5169acf1de805f8ad277554f6ec064e8f36111c3;hpb=5569357a9fc7189c2bae43773f44ba576583ec2b diff --git a/metrics.c b/metrics.c index cbfe52e..39ed5ba 100644 --- a/metrics.c +++ b/metrics.c @@ -24,7 +24,8 @@ #include -#include "fips-dispatch.h" +#include "fips-dispatch-gl.h" + #include "metrics.h" typedef struct counter @@ -56,8 +57,11 @@ typedef struct context context_t current_context; +int frames; +int verbose; + unsigned -metrics_add_counter (void) +metrics_counter_new (void) { counter_t *counter; @@ -83,6 +87,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) { @@ -124,19 +140,31 @@ print_program_metrics (void) } } +/* Called at program exit */ +static void +metrics_exit (void) +{ + if (verbose) + printf ("fips: terminating\n"); +} + + void metrics_end_frame (void) { static int initialized = 0; - static int frames; static struct timeval tv_start, tv_now; if (! initialized) { - frames = 0; gettimeofday (&tv_start, NULL); + atexit (metrics_exit); + if (getenv ("FIPS_VERBOSE")) + verbose = 1; initialized = 1; } + if (verbose) + printf ("fips: frame %d complete\n", frames); frames++; gettimeofday (&tv_now, NULL);