]> git.cworth.org Git - fips/blobdiff - metrics.c
glxwrap: Initialize fips_dispatch when glxMakeContextCurrent is called
[fips] / metrics.c
index cbfe52e9d1ce6d8c19bed45c9d038b11d14bfa0e..39ed5bacf2f9733010b5564893e76b9f7b0be1a1 100644 (file)
--- a/metrics.c
+++ b/metrics.c
@@ -24,7 +24,8 @@
 
 #include <sys/time.h>
 
-#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);