summaryrefslogtreecommitdiff
path: root/retrace/retrace_main.cpp
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2012-08-12 16:49:09 -0700
committerJosé Fonseca <jose.r.fonseca@gmail.com>2012-12-02 21:00:41 +0000
commit4edd6294b0d65390bd1737fef7beb956323375c4 (patch)
tree377c25d9dde985af4429a70eaab91f26ac560346 /retrace/retrace_main.cpp
parent77373c35010d89e5ab3f030e4c60f8f6e3fdbe82 (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.cpp21
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()) {