]> git.cworth.org Git - apitrace/blobdiff - glretrace_main.cpp
D3D retrace checkpoint.
[apitrace] / glretrace_main.cpp
index 7c836bade456ef84d109fd25ce897fd0a0617c86..d80775f0ed3dd76c591c632e479065580c573939 100644 (file)
@@ -27,6 +27,7 @@
 #include <string.h>
 
 #include "os_string.hpp"
+#include "os_time.hpp"
 #include "image.hpp"
 #include "retrace.hpp"
 #include "glproc.hpp"
@@ -38,7 +39,6 @@ namespace glretrace {
 
 bool double_buffer = true;
 bool insideGlBeginEnd = false;
-trace::Parser parser;
 glws::Profile defaultProfile = glws::PROFILE_COMPAT;
 glws::Visual *visual[glws::PROFILE_MAX];
 glws::Drawable *drawable = NULL;
@@ -118,6 +118,11 @@ updateDrawable(int width, int height) {
         return;
     }
 
+    // Ignore zero area viewports
+    if (width == 0 || height == 0) {
+        return;
+    }
+
     // Check for bound framebuffer last, as this may have a performance impact.
     GLint draw_framebuffer = 0;
     glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &draw_framebuffer);
@@ -151,7 +156,7 @@ void snapshot(unsigned call_no) {
         }
     }
 
-    image::Image *src = glstate::getDrawBufferImage(GL_RGBA);
+    image::Image *src = glstate::getDrawBufferImage();
     if (!src) {
         return;
     }
@@ -225,7 +230,7 @@ static void display(void) {
     glFlush();
 
     long long endTime = os::getTime();
-    float timeInterval = (endTime - startTime) * 1.0E-6;
+    float timeInterval = (endTime - startTime) * (1.0 / os::timeFrequency);
 
     if (retrace::verbosity >= -1) { 
         std::cout << 
@@ -254,7 +259,7 @@ static void usage(void) {
         "  -sb          use a single buffer visual\n"
         "  -s PREFIX    take snapshots; `-` for PNM stdout output\n"
         "  -S FREQUENCY snapshot frequency: frame (default), framebuffer, or draw\n"
-        "  -v           verbose output\n"
+        "  -v           increase output verbosity\n"
         "  -D CALLNO    dump state at specific call no\n"
         "  -w           wait on final frame\n";
 }