X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glretrace_main.cpp;h=978a34eef38b2f9b9811abf59b819a7354ad372f;hb=59ee88ea99b6de592b32d635e097a759b7f70e23;hp=3c010d28ed7857e46d2524e82f8ac905827caed2;hpb=447b3d5c7402b0a9e780a26dfed76376e723ac94;p=apitrace diff --git a/glretrace_main.cpp b/glretrace_main.cpp index 3c010d2..978a34e 100644 --- a/glretrace_main.cpp +++ b/glretrace_main.cpp @@ -39,7 +39,8 @@ namespace glretrace { bool double_buffer = true; bool insideGlBeginEnd = false; trace::Parser parser; -glws::Visual *visual = NULL; +glws::Profile defaultProfile = glws::PROFILE_COMPAT; +glws::Visual *visual[glws::PROFILE_MAX]; glws::Drawable *drawable = NULL; glws::Context *context = NULL; @@ -117,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); @@ -248,11 +254,12 @@ static void usage(void) { "\n" " -b benchmark mode (no error checking or warning messages)\n" " -c PREFIX compare against snapshots\n" + " -core use core profile\n" " -db use a double buffer visual (default)\n" " -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"; } @@ -283,6 +290,8 @@ int main(int argc, char **argv) } else if (!strcmp(arg, "-D")) { dump_state = atoi(argv[++i]); retrace::verbosity = -2; + } else if (!strcmp(arg, "-core")) { + defaultProfile = glws::PROFILE_CORE; } else if (!strcmp(arg, "-db")) { double_buffer = true; } else if (!strcmp(arg, "-sb")) { @@ -326,7 +335,10 @@ int main(int argc, char **argv) } glws::init(); - visual = glws::createVisual(double_buffer); + visual[glws::PROFILE_COMPAT] = glws::createVisual(double_buffer, glws::PROFILE_COMPAT); + visual[glws::PROFILE_CORE] = glws::createVisual(double_buffer, glws::PROFILE_CORE); + visual[glws::PROFILE_ES1] = glws::createVisual(double_buffer, glws::PROFILE_ES1); + visual[glws::PROFILE_ES2] = glws::createVisual(double_buffer, glws::PROFILE_ES2); for ( ; i < argc; ++i) { if (!parser.open(argv[i])) { @@ -338,8 +350,11 @@ int main(int argc, char **argv) parser.close(); } - - delete visual; + + for (int n = 0; n < glws::PROFILE_MAX; n++) { + delete visual[n]; + } + glws::cleanup(); return 0;