| Index: gm/gmmain.cpp
|
| diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp
|
| index 4fc9e391f1fd16caf6bc4beab28d78b2fe27b7a9..0ac8f8ffce4d884d9609143240a51ace6395bb1b 100644
|
| --- a/gm/gmmain.cpp
|
| +++ b/gm/gmmain.cpp
|
| @@ -23,7 +23,6 @@
|
| #include "SkDeferredCanvas.h"
|
| #include "SkDevice.h"
|
| #include "SkDrawFilter.h"
|
| -#include "SkFlags.h"
|
| #include "SkGPipe.h"
|
| #include "SkGraphics.h"
|
| #include "SkImageDecoder.h"
|
| @@ -58,6 +57,8 @@ class GrRenderTarget;
|
| typedef int GLContextType;
|
| #endif
|
|
|
| +static bool gForceBWtext;
|
| +
|
| extern bool gSkSuppressFontCachePurgeSpew;
|
|
|
| #ifdef SK_SUPPORT_PDF
|
| @@ -362,7 +363,11 @@ public:
|
| force_all_opaque(*bitmap);
|
| }
|
|
|
| - static void installFilter(SkCanvas* canvas);
|
| + static void installFilter(SkCanvas* canvas) {
|
| + if (gForceBWtext) {
|
| + canvas->setDrawFilter(new BWTextDrawFilter)->unref();
|
| + }
|
| + }
|
|
|
| static void invokeGM(GM* gm, SkCanvas* canvas, bool isPDF, bool isDeferred) {
|
| SkAutoCanvasRestore acr(canvas, true);
|
| @@ -896,6 +901,7 @@ public:
|
| SkISize size = gm->getISize();
|
| setup_bitmap(gRec, size, &bitmap);
|
| SkCanvas canvas(bitmap);
|
| + installFilter(&canvas);
|
| PipeController pipeController(&canvas);
|
| SkGPipeWriter writer;
|
| SkCanvas* pipeCanvas = writer.startRecording(
|
| @@ -922,6 +928,7 @@ public:
|
| SkISize size = gm->getISize();
|
| setup_bitmap(gRec, size, &bitmap);
|
| SkCanvas canvas(bitmap);
|
| + installFilter(&canvas);
|
| TiledPipeController pipeController(bitmap);
|
| SkGPipeWriter writer;
|
| SkCanvas* pipeCanvas = writer.startRecording(
|
| @@ -1007,54 +1014,58 @@ static const ConfigData gRec[] = {
|
| #endif // SK_SUPPORT_PDF
|
| };
|
|
|
| -static SkString configUsage() {
|
| - SkString result("Possible options for --config: [");
|
| +static void usage(const char * argv0) {
|
| + fprintf(stderr, "%s\n", argv0);
|
| + fprintf(stderr, " [--config ");
|
| for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) {
|
| if (i > 0) {
|
| - result.appendf("|");
|
| + fprintf(stderr, "|");
|
| }
|
| - result.appendf("%s", gRec[i].fName);
|
| + fprintf(stderr, "%s", gRec[i].fName);
|
| }
|
| - result.appendf("]");
|
| - return result;
|
| -}
|
| -
|
| + fprintf(stderr, "]:\n run these configurations\n");
|
| + fprintf(stderr,
|
| // Alphabetized ignoring "no" prefix ("readPath", "noreplay", "resourcePath").
|
| -DEFINE_string(config, "", "Space delimited list of which configs to run. "
|
| - "Possible configs listed above. If none are specified, "
|
| - "all will be run.");
|
| -DEFINE_bool(deferred, true, "Exercise the deferred rendering test pass.");
|
| -DEFINE_bool(enableMissingWarning, true, "Print message to stderr (but don't fail) if "
|
| - "unable to read a reference image for any tests.");
|
| -DEFINE_string(excludeConfig, "", "Space delimited list of configs to skip.");
|
| -DEFINE_bool(forceBWtext, false, "Disable text anti-aliasing.");
|
| -DEFINE_string(gpuCacheSize, "", "<bytes> <count>: Limit the gpu cache to byte size or "
|
| - "object count. -1 for either value means use the default. 0 for either "
|
| - "disables the cache.");
|
| -DEFINE_bool(hierarchy, false, "Whether to use multilevel directory structure "
|
| - "when reading/writing files.");
|
| -DEFINE_string(match, "", "Only run tests whose name includes this substring/these substrings "
|
| - "(more than one can be supplied, separated by spaces).");
|
| -DEFINE_string(mismatchPath, "", "Write images for tests that failed due to "
|
| - "pixel mismatches into this directory.");
|
| -DEFINE_string(modulo, "", "[--modulo <remainder> <divisor>]: only run tests for which "
|
| - "testIndex %% divisor == remainder.");
|
| -DEFINE_bool(pdf, true, "Exercise the pdf rendering test pass.");
|
| -DEFINE_bool(pipe, true, "Exercise the SkGPipe replay test pass.");
|
| -DEFINE_string2(readPath, r, "", "Read reference images from this dir, and report "
|
| - "any differences between those and the newly generated ones.");
|
| -DEFINE_bool(replay, true, "Exercise the SkPicture replay test pass.");
|
| -DEFINE_string2(resourcePath, i, "", "Directory that stores image resources.");
|
| -DEFINE_bool(rtree, true, "Exercise the R-Tree variant of SkPicture test pass.");
|
| -DEFINE_bool(serialize, true, "Exercise the SkPicture serialization & deserialization test pass.");
|
| -DEFINE_bool(tiledPipe, false, "Exercise tiled SkGPipe replay.");
|
| -DEFINE_bool(tileGrid, true, "Exercise the tile grid variant of SkPicture.");
|
| -DEFINE_string(tileGridReplayScales, "", "Space separated list of floating-point scale "
|
| - "factors to be used for tileGrid playback testing. Default value: 1.0");
|
| -DEFINE_string(writeJsonSummaryPath, "", "Write a JSON-formatted result summary to this file.");
|
| -DEFINE_bool2(verbose, v, false, "Print diagnostics (e.g. list each config to be tested).");
|
| -DEFINE_string2(writePath, w, "", "Write rendered images into this directory.");
|
| -DEFINE_string2(writePicturePath, wp, "", "Write .skp files into this directory.");
|
| +// It would probably be better if we allowed both yes-and-no settings for each
|
| +// one, e.g.:
|
| +// [--replay|--noreplay]: whether to exercise SkPicture replay; default is yes
|
| +" [--nodeferred]: skip the deferred rendering test pass\n"
|
| +" [--disable-missing-warning]: don't print a message to stderr if\n"
|
| +" unable to read a reference image for any tests (NOT default behavior)\n"
|
| +" [--enable-missing-warning]: print message to stderr (but don't fail) if\n"
|
| +" unable to read a reference image for any tests (default behavior)\n"
|
| +" [--exclude-config]: disable this config (may be used multiple times)\n"
|
| +" [--forceBWtext]: disable text anti-aliasing\n"
|
| +#if SK_SUPPORT_GPU
|
| +" [--gpuCacheSize <bytes> <count>]: limits gpu cache to byte size or object count\n"
|
| +" -1 for either value means use the default. 0 for either disables the cache.\n"
|
| +#endif
|
| +" [--help|-h]: show this help message\n"
|
| +" [--hierarchy|--nohierarchy]: whether to use multilevel directory structure\n"
|
| +" when reading/writing files; default is no\n"
|
| +" [--match <substring>]: only run tests whose name includes this substring\n"
|
| +" [--mismatchPath <path>]: write images for tests that failed due to\n"
|
| +" pixel mismatched into this directory"
|
| +" [--modulo <remainder> <divisor>]: only run tests for which \n"
|
| +" testIndex %% divisor == remainder\n"
|
| +" [--nopdf]: skip the pdf rendering test pass\n"
|
| +" [--nopipe]: Skip SkGPipe replay\n"
|
| +" [--readPath|-r <path>]: read reference images from this dir, and report\n"
|
| +" any differences between those and the newly generated ones\n"
|
| +" [--noreplay]: do not exercise SkPicture replay\n"
|
| +" [--resourcePath|-i <path>]: directory that stores image resources\n"
|
| +" [--nortree]: Do not exercise the R-Tree variant of SkPicture\n"
|
| +" [--noserialize]: do not exercise SkPicture serialization & deserialization\n"
|
| +" [--tiledPipe]: Exercise tiled SkGPipe replay\n"
|
| +" [--notileGrid]: Do not exercise the tile grid variant of SkPicture\n"
|
| +" [--tileGridReplayScales <scales>]: Comma separated list of floating-point scale\n"
|
| +" factors to be used for tileGrid playback testing. Default value: 1.0\n"
|
| +" [--writeJsonSummary <path>]: write a JSON-formatted result summary to this file\n"
|
| +" [--verbose] print diagnostics (e.g. list each config to be tested)\n"
|
| +" [--writePath|-w <path>]: write rendered images into this directory\n"
|
| +" [--writePicturePath|-wp <path>]: write .skp files into this directory\n"
|
| + );
|
| +}
|
|
|
| static int findConfig(const char config[]) {
|
| for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); i++) {
|
| @@ -1141,82 +1152,205 @@ int tool_main(int argc, char** argv) {
|
| setSystemPreferences();
|
| GMMain gmmain;
|
|
|
| + const char* writeJsonSummaryPath = NULL;// if non-null, where we write the JSON summary
|
| + const char* writePath = NULL; // if non-null, where we write the originals
|
| + const char* writePicturePath = NULL; // if non-null, where we write serialized pictures
|
| + const char* readPath = NULL; // if non-null, were we read from to compare
|
| + const char* resourcePath = NULL;// if non-null, where we read from for image resources
|
| +
|
| + // if true, emit a message when we can't find a reference image to compare
|
| + bool notifyMissingReadReference = true;
|
| +
|
| + SkTDArray<const char*> fMatches;
|
| +
|
| + bool doPDF = true;
|
| + bool doReplay = true;
|
| + bool doPipe = true;
|
| + bool doTiledPipe = false;
|
| + bool doSerialize = true;
|
| + bool doDeferred = true;
|
| + bool doRTree = true;
|
| + bool doTileGrid = true;
|
| + bool doVerbose = false;
|
| +
|
| SkTDArray<size_t> configs;
|
| SkTDArray<size_t> excludeConfigs;
|
| SkTDArray<SkScalar> tileGridReplayScales;
|
| *tileGridReplayScales.append() = SK_Scalar1; // By default only test at scale 1.0
|
| bool userConfig = false;
|
|
|
| - SkString usage;
|
| - usage.printf("Run the golden master tests.\n\t%s", configUsage().c_str());
|
| - SkFlags::SetUsage(usage.c_str());
|
| - SkFlags::ParseCommandLine(argc, argv);
|
| + int moduloRemainder = -1;
|
| + int moduloDivisor = -1;
|
|
|
| +#if SK_SUPPORT_GPU
|
| struct {
|
| int fBytes;
|
| int fCount;
|
| } gpuCacheSize = { -1, -1 }; // -1s mean use the default
|
| +#endif
|
|
|
| - if (FLAGS_gpuCacheSize.count() > 0) {
|
| - if (FLAGS_gpuCacheSize.count() != 2) {
|
| - gm_fprintf(stderr, "--gpuCacheSize requires two arguments\n");
|
| - return -1;
|
| - }
|
| - gpuCacheSize.fBytes = atoi(FLAGS_gpuCacheSize[0]);
|
| - gpuCacheSize.fCount = atoi(FLAGS_gpuCacheSize[1]);
|
| - }
|
| -
|
| - gmmain.fUseFileHierarchy = FLAGS_hierarchy;
|
| - if (FLAGS_mismatchPath.count() == 1) {
|
| - gmmain.fMismatchPath = FLAGS_mismatchPath[0];
|
| - }
|
| -
|
| - for (int i = 0; i < FLAGS_config.count(); i++) {
|
| - int index = findConfig(FLAGS_config[i]);
|
| - if (index >= 0) {
|
| - appendUnique<size_t>(&configs, index);
|
| - userConfig = true;
|
| - } else {
|
| - gm_fprintf(stderr, "unrecognized config %s\n", FLAGS_config[i]);
|
| - return -1;
|
| - }
|
| - }
|
| -
|
| - for (int i = 0; i < FLAGS_excludeConfig.count(); i++) {
|
| - int index = findConfig(FLAGS_excludeConfig[i]);
|
| - if (index >= 0) {
|
| - *excludeConfigs.append() = index;
|
| - } else {
|
| - gm_fprintf(stderr, "unrecognized excludeConfig %s\n", FLAGS_excludeConfig[i]);
|
| + const char* const commandName = argv[0];
|
| + char* const* stop = argv + argc;
|
| + for (++argv; argv < stop; ++argv) {
|
| + if (strcmp(*argv, "--config") == 0) {
|
| + argv++;
|
| + if (argv < stop) {
|
| + int index = findConfig(*argv);
|
| + if (index >= 0) {
|
| + appendUnique<size_t>(&configs, index);
|
| + userConfig = true;
|
| + } else {
|
| + gm_fprintf(stderr, "unrecognized config %s\n", *argv);
|
| + usage(commandName);
|
| + return -1;
|
| + }
|
| + } else {
|
| + gm_fprintf(stderr, "missing arg for --config\n");
|
| + usage(commandName);
|
| + return -1;
|
| + }
|
| + } else if (strcmp(*argv, "--exclude-config") == 0) {
|
| + argv++;
|
| + if (argv < stop) {
|
| + int index = findConfig(*argv);
|
| + if (index >= 0) {
|
| + *excludeConfigs.append() = index;
|
| + } else {
|
| + gm_fprintf(stderr, "unrecognized exclude-config %s\n", *argv);
|
| + usage(commandName);
|
| + return -1;
|
| + }
|
| + } else {
|
| + gm_fprintf(stderr, "missing arg for --exclude-config\n");
|
| + usage(commandName);
|
| + return -1;
|
| + }
|
| + } else if (strcmp(*argv, "--nodeferred") == 0) {
|
| + doDeferred = false;
|
| + } else if (strcmp(*argv, "--disable-missing-warning") == 0) {
|
| + notifyMissingReadReference = false;
|
| + } else if (strcmp(*argv, "--mismatchPath") == 0) {
|
| + argv++;
|
| + if (argv < stop && **argv) {
|
| + gmmain.fMismatchPath = *argv;
|
| + }
|
| + } else if (strcmp(*argv, "--nortree") == 0) {
|
| + doRTree = false;
|
| + } else if (strcmp(*argv, "--notileGrid") == 0) {
|
| + doTileGrid = false;
|
| + } else if (strcmp(*argv, "--tileGridReplayScales") == 0) {
|
| + tileGridReplayScales.reset();
|
| + ++argv;
|
| + if (argv < stop) {
|
| + char* token = strtok(*argv, ",");
|
| + while (NULL != token) {
|
| + double val = atof(token);
|
| + if (0 < val) {
|
| + *tileGridReplayScales.append() = SkDoubleToScalar(val);
|
| + }
|
| + token = strtok(NULL, ",");
|
| + }
|
| + }
|
| + if (0 == tileGridReplayScales.count()) {
|
| + // Should have at least one scale
|
| + usage(commandName);
|
| + return -1;
|
| + }
|
| + } else if (strcmp(*argv, "--enable-missing-warning") == 0) {
|
| + notifyMissingReadReference = true;
|
| + } else if (strcmp(*argv, "--forceBWtext") == 0) {
|
| + gForceBWtext = true;
|
| +#if SK_SUPPORT_GPU
|
| + } else if (strcmp(*argv, "--gpuCacheSize") == 0) {
|
| + if (stop - argv > 2) {
|
| + gpuCacheSize.fBytes = atoi(*++argv);
|
| + gpuCacheSize.fCount = atoi(*++argv);
|
| + } else {
|
| + gm_fprintf(stderr, "missing arg for --gpuCacheSize\n");
|
| + usage(commandName);
|
| + return -1;
|
| + }
|
| +#endif
|
| + } else if (strcmp(*argv, "--help") == 0 || strcmp(*argv, "-h") == 0) {
|
| + usage(commandName);
|
| return -1;
|
| - }
|
| - }
|
| + } else if (strcmp(*argv, "--hierarchy") == 0) {
|
| + gmmain.fUseFileHierarchy = true;
|
| + } else if (strcmp(*argv, "--nohierarchy") == 0) {
|
| + gmmain.fUseFileHierarchy = false;
|
| + } else if (strcmp(*argv, "--match") == 0) {
|
| + ++argv;
|
| + if (argv < stop && **argv) {
|
| + // just record the ptr, no need for a deep copy
|
| + *fMatches.append() = *argv;
|
| + }
|
| + } else if (strcmp(*argv, "--modulo") == 0) {
|
| + ++argv;
|
| + if (argv >= stop) {
|
| + continue;
|
| + }
|
| + moduloRemainder = atoi(*argv);
|
|
|
| - if (FLAGS_tileGridReplayScales.count() > 0) {
|
| - tileGridReplayScales.reset();
|
| - for (int i = 0; i < FLAGS_tileGridReplayScales.count(); i++) {
|
| - double val = atof(FLAGS_tileGridReplayScales[i]);
|
| - if (0 < val) {
|
| - *tileGridReplayScales.append() = SkDoubleToScalar(val);
|
| + ++argv;
|
| + if (argv >= stop) {
|
| + continue;
|
| }
|
| - }
|
| - if (0 == tileGridReplayScales.count()) {
|
| - // Should have at least one scale
|
| - gm_fprintf(stderr, "--tileGridReplayScales requires at least one scale.\n");
|
| + moduloDivisor = atoi(*argv);
|
| + if (moduloRemainder < 0 || moduloDivisor <= 0 || moduloRemainder >= moduloDivisor) {
|
| + gm_fprintf(stderr, "invalid modulo values.");
|
| + return -1;
|
| + }
|
| + } else if (strcmp(*argv, "--nopdf") == 0) {
|
| + doPDF = false;
|
| + } else if (strcmp(*argv, "--nopipe") == 0) {
|
| + doPipe = false;
|
| + } else if ((0 == strcmp(*argv, "--readPath")) ||
|
| + (0 == strcmp(*argv, "-r"))) {
|
| + argv++;
|
| + if (argv < stop && **argv) {
|
| + readPath = *argv;
|
| + }
|
| + } else if (strcmp(*argv, "--noreplay") == 0) {
|
| + doReplay = false;
|
| + } else if ((0 == strcmp(*argv, "--resourcePath")) ||
|
| + (0 == strcmp(*argv, "-i"))) {
|
| + argv++;
|
| + if (argv < stop && **argv) {
|
| + resourcePath = *argv;
|
| + }
|
| + } else if (strcmp(*argv, "--serialize") == 0) {
|
| + doSerialize = true;
|
| + } else if (strcmp(*argv, "--noserialize") == 0) {
|
| + doSerialize = false;
|
| + } else if (strcmp(*argv, "--tiledPipe") == 0) {
|
| + doTiledPipe = true;
|
| + } else if (!strcmp(*argv, "--verbose") || !strcmp(*argv, "-v")) {
|
| + doVerbose = true;
|
| + } else if ((0 == strcmp(*argv, "--writePath")) ||
|
| + (0 == strcmp(*argv, "-w"))) {
|
| + argv++;
|
| + if (argv < stop && **argv) {
|
| + writePath = *argv;
|
| + }
|
| + } else if (0 == strcmp(*argv, "--writeJsonSummary")) {
|
| + argv++;
|
| + if (argv < stop && **argv) {
|
| + writeJsonSummaryPath = *argv;
|
| + }
|
| + } else if ((0 == strcmp(*argv, "--writePicturePath")) ||
|
| + (0 == strcmp(*argv, "-wp"))) {
|
| + argv++;
|
| + if (argv < stop && **argv) {
|
| + writePicturePath = *argv;
|
| + }
|
| + } else {
|
| + usage(commandName);
|
| return -1;
|
| }
|
| }
|
| -
|
| - int moduloRemainder = -1;
|
| - int moduloDivisor = -1;
|
| -
|
| - if (FLAGS_modulo.count() == 2) {
|
| - moduloRemainder = atoi(FLAGS_modulo[0]);
|
| - moduloDivisor = atoi(FLAGS_modulo[1]);
|
| - if (moduloRemainder < 0 || moduloDivisor <= 0 || moduloRemainder >= moduloDivisor) {
|
| - gm_fprintf(stderr, "invalid modulo values.");
|
| - return -1;
|
| - }
|
| + if (argv != stop) {
|
| + usage(commandName);
|
| + return -1;
|
| }
|
|
|
| if (!userConfig) {
|
| @@ -1235,7 +1369,7 @@ int tool_main(int argc, char** argv) {
|
| }
|
| }
|
|
|
| - if (FLAGS_verbose) {
|
| + if (doVerbose) {
|
| SkString str;
|
| str.printf("%d configs:", configs.count());
|
| for (int i = 0; i < configs.count(); ++i) {
|
| @@ -1244,12 +1378,9 @@ int tool_main(int argc, char** argv) {
|
| gm_fprintf(stderr, "%s\n", str.c_str());
|
| }
|
|
|
| - if (FLAGS_resourcePath.count() == 1) {
|
| - GM::SetResourcePath(FLAGS_resourcePath[0]);
|
| - }
|
| + GM::SetResourcePath(resourcePath);
|
|
|
| - if (FLAGS_readPath.count() == 1) {
|
| - const char* readPath = FLAGS_readPath[0];
|
| + if (readPath) {
|
| if (!sk_exists(readPath)) {
|
| gm_fprintf(stderr, "readPath %s does not exist!\n", readPath);
|
| return -1;
|
| @@ -1258,21 +1389,21 @@ int tool_main(int argc, char** argv) {
|
| gm_fprintf(stdout, "reading from %s\n", readPath);
|
| gmmain.fExpectationsSource.reset(SkNEW_ARGS(
|
| IndividualImageExpectationsSource,
|
| - (readPath, FLAGS_enableMissingWarning)));
|
| + (readPath, notifyMissingReadReference)));
|
| } else {
|
| gm_fprintf(stdout, "reading expectations from JSON summary file %s\n", readPath);
|
| gmmain.fExpectationsSource.reset(SkNEW_ARGS(
|
| JsonExpectationsSource, (readPath)));
|
| }
|
| }
|
| - if (FLAGS_writePath.count() == 1) {
|
| - gm_fprintf(stderr, "writing to %s\n", FLAGS_writePath[0]);
|
| + if (writePath) {
|
| + gm_fprintf(stdout, "writing to %s\n", writePath);
|
| }
|
| - if (FLAGS_writePicturePath.count() == 1) {
|
| - gm_fprintf(stderr, "writing pictures to %s\n", FLAGS_writePicturePath[0]);
|
| + if (writePicturePath) {
|
| + gm_fprintf(stdout, "writing pictures to %s\n", writePicturePath);
|
| }
|
| - if (FLAGS_resourcePath.count() == 1) {
|
| - gm_fprintf(stderr, "reading resources from %s\n", FLAGS_resourcePath[0]);
|
| + if (resourcePath) {
|
| + gm_fprintf(stdout, "reading resources from %s\n", resourcePath);
|
| }
|
|
|
| if (moduloDivisor <= 0) {
|
| @@ -1296,15 +1427,15 @@ int tool_main(int argc, char** argv) {
|
| SkString moduloStr;
|
|
|
| // If we will be writing out files, prepare subdirectories.
|
| - if (FLAGS_writePath.count() == 1) {
|
| - if (!sk_mkdir(FLAGS_writePath[0])) {
|
| + if (writePath) {
|
| + if (!sk_mkdir(writePath)) {
|
| return -1;
|
| }
|
| if (gmmain.fUseFileHierarchy) {
|
| for (int i = 0; i < configs.count(); i++) {
|
| ConfigData config = gRec[configs[i]];
|
| SkString subdir;
|
| - subdir.appendf("%s%c%s", FLAGS_writePath[0], SkPATH_SEPARATOR,
|
| + subdir.appendf("%s%c%s", writePath, SkPATH_SEPARATOR,
|
| config.fName);
|
| if (!sk_mkdir(subdir.c_str())) {
|
| return -1;
|
| @@ -1326,7 +1457,7 @@ int tool_main(int argc, char** argv) {
|
| }
|
|
|
| const char* shortName = gm->shortName();
|
| - if (skip_name(FLAGS_match, shortName)) {
|
| + if (skip_name(fMatches, shortName)) {
|
| SkDELETE(gm);
|
| continue;
|
| }
|
| @@ -1343,7 +1474,7 @@ int tool_main(int argc, char** argv) {
|
|
|
| // Skip any tests that we don't even need to try.
|
| if ((kPDF_Backend == config.fBackend) &&
|
| - (!FLAGS_pdf|| (gmFlags & GM::kSkipPDF_Flag)))
|
| + (!doPDF || (gmFlags & GM::kSkipPDF_Flag)))
|
| {
|
| continue;
|
| }
|
| @@ -1405,12 +1536,6 @@ int tool_main(int argc, char** argv) {
|
|
|
| SkBitmap comparisonBitmap;
|
|
|
| - const char* writePath;
|
| - if (FLAGS_writePath.count() == 1) {
|
| - writePath = FLAGS_writePath[0];
|
| - } else {
|
| - writePath = NULL;
|
| - }
|
| if (kEmptyErrorBitfield == renderErrors) {
|
| renderErrors |= gmmain.test_drawing(gm, config, writePath,
|
| GetGr(),
|
| @@ -1418,7 +1543,7 @@ int tool_main(int argc, char** argv) {
|
| &comparisonBitmap);
|
| }
|
|
|
| - if (FLAGS_deferred && !renderErrors &&
|
| + if (doDeferred && !renderErrors &&
|
| (kGPU_Backend == config.fBackend ||
|
| kRaster_Backend == config.fBackend)) {
|
| renderErrors |= gmmain.test_deferred_drawing(gm, config,
|
| @@ -1444,7 +1569,7 @@ int tool_main(int argc, char** argv) {
|
| SkPicture* pict = gmmain.generate_new_picture(gm, kNone_BbhType, 0);
|
| SkAutoUnref aur(pict);
|
|
|
| - if ((kEmptyErrorBitfield == testErrors) && FLAGS_replay) {
|
| + if ((kEmptyErrorBitfield == testErrors) && doReplay) {
|
| SkBitmap bitmap;
|
| gmmain.generate_image_from_picture(gm, compareConfig, pict,
|
| &bitmap);
|
| @@ -1454,7 +1579,7 @@ int tool_main(int argc, char** argv) {
|
|
|
| if ((kEmptyErrorBitfield == testErrors) &&
|
| (kEmptyErrorBitfield == pictErrors) &&
|
| - FLAGS_serialize) {
|
| + doSerialize) {
|
| SkPicture* repict = gmmain.stream_to_new_picture(*pict);
|
| SkAutoUnref aurr(repict);
|
|
|
| @@ -1465,9 +1590,9 @@ int tool_main(int argc, char** argv) {
|
| gm, compareConfig, "-serialize", bitmap, &comparisonBitmap);
|
| }
|
|
|
| - if (FLAGS_writePicturePath.count() == 1) {
|
| + if (writePicturePath) {
|
| const char* pictureSuffix = "skp";
|
| - SkString path = make_filename(FLAGS_writePicturePath[0], "",
|
| + SkString path = make_filename(writePicturePath, "",
|
| gm->shortName(),
|
| pictureSuffix);
|
| SkFILEWStream stream(path.c_str());
|
| @@ -1481,7 +1606,7 @@ int tool_main(int argc, char** argv) {
|
| // different bitmap than the standard rendering. It should
|
| // show up as failed in the JSON summary, and should be listed
|
| // in the stdout also.
|
| - if (!(gmFlags & GM::kSkipPicture_Flag) && FLAGS_rtree) {
|
| + if (!(gmFlags & GM::kSkipPicture_Flag) && doRTree) {
|
| SkPicture* pict = gmmain.generate_new_picture(
|
| gm, kRTree_BbhType, SkPicture::kUsePathBoundsForClip_RecordingFlag);
|
| SkAutoUnref aur(pict);
|
| @@ -1492,7 +1617,7 @@ int tool_main(int argc, char** argv) {
|
| gm, compareConfig, "-rtree", bitmap, &comparisonBitmap);
|
| }
|
|
|
| - if (!(gmFlags & GM::kSkipPicture_Flag) && FLAGS_tileGrid) {
|
| + if (!(gmFlags & GM::kSkipPicture_Flag) && doTileGrid) {
|
| for(int scaleIndex = 0; scaleIndex < tileGridReplayScales.count(); ++scaleIndex) {
|
| SkScalar replayScale = tileGridReplayScales[scaleIndex];
|
| if ((gmFlags & GM::kSkipScaledReplay_Flag) && replayScale != 1)
|
| @@ -1523,14 +1648,14 @@ int tool_main(int argc, char** argv) {
|
|
|
| ErrorBitfield pipeErrors = kEmptyErrorBitfield;
|
|
|
| - if ((kEmptyErrorBitfield == testErrors) && FLAGS_pipe) {
|
| + if ((kEmptyErrorBitfield == testErrors) && doPipe) {
|
| pipeErrors |= gmmain.test_pipe_playback(gm, compareConfig,
|
| comparisonBitmap);
|
| }
|
|
|
| if ((kEmptyErrorBitfield == testErrors) &&
|
| (kEmptyErrorBitfield == pipeErrors) &&
|
| - FLAGS_tiledPipe && !(gmFlags & GM::kSkipTiled_Flag)) {
|
| + doTiledPipe && !(gmFlags & GM::kSkipTiled_Flag)) {
|
| pipeErrors |= gmmain.test_tiled_pipe_playback(gm, compareConfig,
|
| comparisonBitmap);
|
| }
|
| @@ -1559,7 +1684,7 @@ int tool_main(int argc, char** argv) {
|
| testsRun, testsPassed, testsFailed, testsMissingReferenceImages);
|
| gmmain.ListErrors();
|
|
|
| - if (FLAGS_writeJsonSummaryPath.count() == 1) {
|
| + if (NULL != writeJsonSummaryPath) {
|
| Json::Value actualResults;
|
| actualResults[kJsonKey_ActualResults_Failed] =
|
| gmmain.fJsonActualResults_Failed;
|
| @@ -1573,7 +1698,7 @@ int tool_main(int argc, char** argv) {
|
| root[kJsonKey_ActualResults] = actualResults;
|
| root[kJsonKey_ExpectedResults] = gmmain.fJsonExpectedResults;
|
| std::string jsonStdString = root.toStyledString();
|
| - SkFILEWStream stream(FLAGS_writeJsonSummaryPath[0]);
|
| + SkFILEWStream stream(writeJsonSummaryPath);
|
| stream.write(jsonStdString.c_str(), jsonStdString.length());
|
| }
|
|
|
| @@ -1599,12 +1724,6 @@ int tool_main(int argc, char** argv) {
|
| return (0 == testsFailed) ? 0 : -1;
|
| }
|
|
|
| -void GMMain::installFilter(SkCanvas* canvas) {
|
| - if (FLAGS_forceBWtext) {
|
| - canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref();
|
| - }
|
| -}
|
| -
|
| #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
|
| int main(int argc, char * const argv[]) {
|
| return tool_main(argc, (char**) argv);
|
|
|