diff options
author | Carl Worth <cworth@cworth.org> | 2012-08-12 16:49:09 -0700 |
---|---|---|
committer | José Fonseca <jose.r.fonseca@gmail.com> | 2012-12-02 21:00:41 +0000 |
commit | 4edd6294b0d65390bd1737fef7beb956323375c4 (patch) | |
tree | 377c25d9dde985af4429a70eaab91f26ac560346 /retrace/retrace_main.cpp | |
parent | 77373c35010d89e5ab3f030e4c60f8f6e3fdbe82 (diff) |
glretrace, dump-images: Accept --call-nos=no to get snapshots with call numbers
It is sometimes inconvenient to have call numbers encoded within the
snapshot filenames. For example, when doing tests of "apitrace trim"
in the test suite the call numbers frequently change even when the
image contents do not.
By accepting the --call-nos=no option, these programs will now
generate filenames with sequential numbers starting from 0 rather than
using call numbers in the filenames.
Diffstat (limited to 'retrace/retrace_main.cpp')
-rw-r--r-- | retrace/retrace_main.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/retrace/retrace_main.cpp b/retrace/retrace_main.cpp index 63d3dab0..ca03745c 100644 --- a/retrace/retrace_main.cpp +++ b/retrace/retrace_main.cpp @@ -35,6 +35,7 @@ #include "image.hpp" #include "trace_callset.hpp" #include "trace_dump.hpp" +#include "trace_option.hpp" #include "retrace.hpp" @@ -71,6 +72,7 @@ bool profiling = false; bool profilingGpuTimes = false; bool profilingCpuTimes = false; bool profilingPixelsDrawn = false; +bool useCallNos = true; unsigned frameNo = 0; unsigned callNo = 0; @@ -92,6 +94,8 @@ Dumper *dumper = &defaultDumper; */ static void takeSnapshot(unsigned call_no) { + static unsigned snapshot_no = 0; + assert(snapshotPrefix || comparePrefix); image::Image *ref = NULL; @@ -116,10 +120,13 @@ takeSnapshot(unsigned call_no) { if (snapshotPrefix) { if (snapshotPrefix[0] == '-' && snapshotPrefix[1] == 0) { char comment[21]; - snprintf(comment, sizeof comment, "%u", call_no); + snprintf(comment, sizeof comment, "%u", + useCallNos ? call_no : snapshot_no); src->writePNM(std::cout, comment); } else { - os::String filename = os::String::format("%s%010u.png", snapshotPrefix, call_no); + os::String filename = os::String::format("%s%010u.png", + snapshotPrefix, + useCallNos ? call_no : snapshot_no); if (src->writePNG(filename) && retrace::verbosity >= 0) { std::cout << "Wrote " << filename << "\n"; } @@ -133,6 +140,8 @@ takeSnapshot(unsigned call_no) { delete src; + snapshot_no++; + return; } @@ -507,6 +516,7 @@ usage(const char *argv0) { " --ppd pixels drawn profiling (pixels drawn per draw call)\n" " -c, --compare=PREFIX compare against snapshots with given PREFIX\n" " -C, --calls=CALLSET calls to compare (default is every frame)\n" + " --call-nos[=BOOL] use call numbers in snapshot filenames\n" " --core use core profile\n" " --db use a double buffer visual (default)\n" " --driver=DRIVER force driver type (`hw`, `sw`, `ref`, `null`, or driver module name)\n" @@ -519,7 +529,8 @@ usage(const char *argv0) { } enum { - CORE_OPT = CHAR_MAX + 1, + CALL_NOS_OPT = CHAR_MAX + 1, + CORE_OPT, DB_OPT, DRIVER_OPT, PCPU_OPT, @@ -534,6 +545,7 @@ shortOptions = "bc:C:D:hs:S:vw"; const static struct option longOptions[] = { {"benchmark", no_argument, 0, 'b'}, + {"call-nos", optional_argument, 0, CALL_NOS_OPT }, {"calls", required_argument, 0, 'C'}, {"compare", required_argument, 0, 'c'}, {"core", no_argument, 0, CORE_OPT}, @@ -578,6 +590,9 @@ int main(int argc, char **argv) retrace::debug = false; retrace::verbosity = -1; break; + case CALL_NOS_OPT: + useCallNos = trace::boolOption(optarg); + break; case 'c': comparePrefix = optarg; if (compareFrequency.empty()) { |