Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(677)

Side by Side Diff: gm/gmmain.cpp

Issue 12807006: gm: report drawing mode discrepancies (e.g. pipe vs tiled) explicitly (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | gm/tests/outputs/compared-against-different-pixels-images/output-expected/stdout » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
epoger 2013/03/20 19:06:12 patchset 1: same as patchset 4 from https://codere
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 /* 8 /*
9 * Code for the "gm" (Golden Master) rendering comparison tool. 9 * Code for the "gm" (Golden Master) rendering comparison tool.
10 * 10 *
11 * If you make changes to this, re-run the self-tests at gm/tests/run.sh 11 * If you make changes to this, re-run the self-tests at gm/tests/run.sh
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 // The common case: no error means nothing to record. 254 // The common case: no error means nothing to record.
255 if (kEmptyErrorBitfield == errorType) { 255 if (kEmptyErrorBitfield == errorType) {
256 return; 256 return;
257 } 257 }
258 258
259 // If only certain error type(s) were reported, we know we can ignore th em. 259 // If only certain error type(s) were reported, we know we can ignore th em.
260 if (errorType == (errorType & kIgnorable_ErrorBitmask)) { 260 if (errorType == (errorType & kIgnorable_ErrorBitmask)) {
261 return; 261 return;
262 } 262 }
263 263
264 FailRec& rec = fFailedTests.push_back(make_name( 264 SkString completeName = name;
265 name.c_str(), renderModeDescriptor)); 265 completeName.append(renderModeDescriptor);
266 FailRec& rec = fFailedTests.push_back(completeName);
266 rec.fIsPixelError = 267 rec.fIsPixelError =
267 (kEmptyErrorBitfield != (errorType & kImageMismatch_ErrorBitmask)); 268 (kEmptyErrorBitfield != (errorType & kImageMismatch_ErrorBitmask));
268 } 269 }
269 270
270 // List contents of fFailedTests via SkDebug. 271 // List contents of fFailedTests via SkDebug.
271 void ListErrors() { 272 void ListErrors() {
272 for (int i = 0; i < fFailedTests.count(); ++i) { 273 for (int i = 0; i < fFailedTests.count(); ++i) {
273 if (fFailedTests[i].fIsPixelError) { 274 if (fFailedTests[i].fIsPixelError) {
274 gm_fprintf(stderr, "\t\t%s pixel_error\n", fFailedTests[i].fName .c_str()); 275 gm_fprintf(stderr, "\t\t%s pixel_error\n", fFailedTests[i].fName .c_str());
275 } else { 276 } else {
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 * _ErrorBitmask values otherwise. 584 * _ErrorBitmask values otherwise.
584 * 585 *
585 * If fMismatchPath has been set, and there are pixel diffs, then the 586 * If fMismatchPath has been set, and there are pixel diffs, then the
586 * actual bitmap will be written out to a file within fMismatchPath. 587 * actual bitmap will be written out to a file within fMismatchPath.
587 * 588 *
588 * @param expectations what expectations to compare actualBitmap against 589 * @param expectations what expectations to compare actualBitmap against
589 * @param actualBitmap the image we actually generated 590 * @param actualBitmap the image we actually generated
590 * @param baseNameString name of test without renderModeDescriptor added 591 * @param baseNameString name of test without renderModeDescriptor added
591 * @param renderModeDescriptor e.g., "-rtree", "-deferred" 592 * @param renderModeDescriptor e.g., "-rtree", "-deferred"
592 * @param addToJsonSummary whether to add these results (both actual and 593 * @param addToJsonSummary whether to add these results (both actual and
593 * expected) to the JSON summary 594 * expected) to the JSON summary. Regardless of this setting, if
594 * 595 * we find an image mismatch in this test, we will write these
595 * TODO: For now, addToJsonSummary is only set to true within 596 * results to the JSON summary. (This is so that we will always
596 * compare_test_results_to_stored_expectations(), so results of our 597 * report errors across rendering modes, such as pipe vs tiled.
597 * in-memory comparisons (Rtree vs regular, etc.) are not written to the 598 * See https://codereview.chromium.org/12825005/ )
598 * JSON summary. We may wish to change that.
599 */ 599 */
600 ErrorBitfield compare_to_expectations(Expectations expectations, 600 ErrorBitfield compare_to_expectations(Expectations expectations,
601 const SkBitmap& actualBitmap, 601 const SkBitmap& actualBitmap,
602 const SkString& baseNameString, 602 const SkString& baseNameString,
603 const char renderModeDescriptor[], 603 const char renderModeDescriptor[],
604 bool addToJsonSummary=false) { 604 bool addToJsonSummary) {
605 ErrorBitfield retval; 605 ErrorBitfield retval;
606 Checksum actualChecksum = SkBitmapChecksummer::Compute64(actualBitmap); 606 Checksum actualChecksum = SkBitmapChecksummer::Compute64(actualBitmap);
607 SkString completeNameString = baseNameString; 607 SkString completeNameString = baseNameString;
608 completeNameString.append(renderModeDescriptor); 608 completeNameString.append(renderModeDescriptor);
609 const char* completeName = completeNameString.c_str(); 609 const char* completeName = completeNameString.c_str();
610 610
611 if (expectations.empty()) { 611 if (expectations.empty()) {
612 retval = kMissingExpectations_ErrorBitmask; 612 retval = kMissingExpectations_ErrorBitmask;
613 } else if (expectations.match(actualChecksum)) { 613 } else if (expectations.match(actualChecksum)) {
614 retval = kEmptyErrorBitfield; 614 retval = kEmptyErrorBitfield;
615 } else { 615 } else {
616 addToJsonSummary = true;
616 retval = kImageMismatch_ErrorBitmask; 617 retval = kImageMismatch_ErrorBitmask;
617 618
618 // Write out the "actuals" for any mismatches, if we have 619 // Write out the "actuals" for any mismatches, if we have
619 // been directed to do so. 620 // been directed to do so.
620 if (fMismatchPath) { 621 if (fMismatchPath) {
621 SkString path = 622 SkString path =
622 make_filename(fMismatchPath, renderModeDescriptor, 623 make_filename(fMismatchPath, renderModeDescriptor,
623 baseNameString.c_str(), "png"); 624 baseNameString.c_str(), "png");
624 write_bitmap(path, actualBitmap); 625 write_bitmap(path, actualBitmap);
625 } 626 }
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 * @param referenceBitmap bitmap we expected to be generated 774 * @param referenceBitmap bitmap we expected to be generated
774 */ 775 */
775 ErrorBitfield compare_test_results_to_reference_bitmap( 776 ErrorBitfield compare_test_results_to_reference_bitmap(
776 GM* gm, const ConfigData& gRec, const char renderModeDescriptor [], 777 GM* gm, const ConfigData& gRec, const char renderModeDescriptor [],
777 SkBitmap& actualBitmap, const SkBitmap* referenceBitmap) { 778 SkBitmap& actualBitmap, const SkBitmap* referenceBitmap) {
778 779
779 SkASSERT(referenceBitmap); 780 SkASSERT(referenceBitmap);
780 SkString name = make_name(gm->shortName(), gRec.fName); 781 SkString name = make_name(gm->shortName(), gRec.fName);
781 Expectations expectations(*referenceBitmap); 782 Expectations expectations(*referenceBitmap);
782 return compare_to_expectations(expectations, actualBitmap, 783 return compare_to_expectations(expectations, actualBitmap,
783 name, renderModeDescriptor); 784 name, renderModeDescriptor, false);
784 } 785 }
785 786
786 static SkPicture* generate_new_picture(GM* gm, BbhType bbhType, uint32_t rec ordFlags, 787 static SkPicture* generate_new_picture(GM* gm, BbhType bbhType, uint32_t rec ordFlags,
787 SkScalar scale = SK_Scalar1) { 788 SkScalar scale = SK_Scalar1) {
788 // Pictures are refcounted so must be on heap 789 // Pictures are refcounted so must be on heap
789 SkPicture* pict; 790 SkPicture* pict;
790 int width = SkScalarCeilToInt(SkScalarMul(SkIntToScalar(gm->getISize().w idth()), scale)); 791 int width = SkScalarCeilToInt(SkScalarMul(SkIntToScalar(gm->getISize().w idth()), scale));
791 int height = SkScalarCeilToInt(SkScalarMul(SkIntToScalar(gm->getISize(). height()), scale)); 792 int height = SkScalarCeilToInt(SkScalarMul(SkIntToScalar(gm->getISize(). height()), scale));
792 793
793 if (kTileGrid_BbhType == bbhType) { 794 if (kTileGrid_BbhType == bbhType) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 // expected in some cases, so don't report a test failure. 882 // expected in some cases, so don't report a test failure.
882 if (!generate_image(gm, gRec, context, rt, &bitmap, true)) { 883 if (!generate_image(gm, gRec, context, rt, &bitmap, true)) {
883 return kEmptyErrorBitfield; 884 return kEmptyErrorBitfield;
884 } 885 }
885 return compare_test_results_to_reference_bitmap( 886 return compare_test_results_to_reference_bitmap(
886 gm, gRec, "-deferred", bitmap, &referenceBitmap); 887 gm, gRec, "-deferred", bitmap, &referenceBitmap);
887 } 888 }
888 return kEmptyErrorBitfield; 889 return kEmptyErrorBitfield;
889 } 890 }
890 891
891 ErrorBitfield test_pipe_playback(GM* gm, 892 ErrorBitfield test_pipe_playback(GM* gm, const ConfigData& gRec,
892 const ConfigData& gRec, 893 const SkBitmap& referenceBitmap, bool simul ateFailure) {
893 const SkBitmap& referenceBitmap) {
894 ErrorBitfield errors = kEmptyErrorBitfield; 894 ErrorBitfield errors = kEmptyErrorBitfield;
895 for (size_t i = 0; i < SK_ARRAY_COUNT(gPipeWritingFlagCombos); ++i) { 895 for (size_t i = 0; i < SK_ARRAY_COUNT(gPipeWritingFlagCombos); ++i) {
896 SkBitmap bitmap; 896 SkBitmap bitmap;
897 SkISize size = gm->getISize(); 897 SkISize size = gm->getISize();
898 setup_bitmap(gRec, size, &bitmap); 898 setup_bitmap(gRec, size, &bitmap);
899 SkCanvas canvas(bitmap); 899 SkCanvas canvas(bitmap);
900 installFilter(&canvas); 900 installFilter(&canvas);
901 PipeController pipeController(&canvas); 901 PipeController pipeController(&canvas);
902 SkGPipeWriter writer; 902 SkGPipeWriter writer;
903 SkCanvas* pipeCanvas = writer.startRecording( 903 SkCanvas* pipeCanvas = writer.startRecording(
904 &pipeController, gPipeWritingFlagCombos[i].flags); 904 &pipeController, gPipeWritingFlagCombos[i].flags);
905 invokeGM(gm, pipeCanvas, false, false); 905 if (!simulateFailure) {
906 invokeGM(gm, pipeCanvas, false, false);
907 }
906 complete_bitmap(&bitmap); 908 complete_bitmap(&bitmap);
907 writer.endRecording(); 909 writer.endRecording();
908 SkString string("-pipe"); 910 SkString string("-pipe");
909 string.append(gPipeWritingFlagCombos[i].name); 911 string.append(gPipeWritingFlagCombos[i].name);
910 errors |= compare_test_results_to_reference_bitmap( 912 errors |= compare_test_results_to_reference_bitmap(
911 gm, gRec, string.c_str(), bitmap, &referenceBitmap); 913 gm, gRec, string.c_str(), bitmap, &referenceBitmap);
912 if (errors != kEmptyErrorBitfield) { 914 if (errors != kEmptyErrorBitfield) {
913 break; 915 break;
914 } 916 }
915 } 917 }
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1053 DEFINE_string(modulo, "", "[--modulo <remainder> <divisor>]: only run tests for which " 1055 DEFINE_string(modulo, "", "[--modulo <remainder> <divisor>]: only run tests for which "
1054 "testIndex %% divisor == remainder."); 1056 "testIndex %% divisor == remainder.");
1055 DEFINE_bool(pdf, true, "Exercise the pdf rendering test pass."); 1057 DEFINE_bool(pdf, true, "Exercise the pdf rendering test pass.");
1056 DEFINE_bool(pipe, true, "Exercise the SkGPipe replay test pass."); 1058 DEFINE_bool(pipe, true, "Exercise the SkGPipe replay test pass.");
1057 DEFINE_string2(readPath, r, "", "Read reference images from this dir, and report " 1059 DEFINE_string2(readPath, r, "", "Read reference images from this dir, and report "
1058 "any differences between those and the newly generated ones."); 1060 "any differences between those and the newly generated ones.");
1059 DEFINE_bool(replay, true, "Exercise the SkPicture replay test pass."); 1061 DEFINE_bool(replay, true, "Exercise the SkPicture replay test pass.");
1060 DEFINE_string2(resourcePath, i, "", "Directory that stores image resources."); 1062 DEFINE_string2(resourcePath, i, "", "Directory that stores image resources.");
1061 DEFINE_bool(rtree, true, "Exercise the R-Tree variant of SkPicture test pass."); 1063 DEFINE_bool(rtree, true, "Exercise the R-Tree variant of SkPicture test pass.");
1062 DEFINE_bool(serialize, true, "Exercise the SkPicture serialization & deserializa tion test pass."); 1064 DEFINE_bool(serialize, true, "Exercise the SkPicture serialization & deserializa tion test pass.");
1065 DEFINE_bool(simulatePipePlaybackFailure, false, "Simulate a rendering failure in pipe mode only.");
1063 DEFINE_bool(tiledPipe, false, "Exercise tiled SkGPipe replay."); 1066 DEFINE_bool(tiledPipe, false, "Exercise tiled SkGPipe replay.");
1064 DEFINE_bool(tileGrid, true, "Exercise the tile grid variant of SkPicture."); 1067 DEFINE_bool(tileGrid, true, "Exercise the tile grid variant of SkPicture.");
1065 DEFINE_string(tileGridReplayScales, "", "Space separated list of floating-point scale " 1068 DEFINE_string(tileGridReplayScales, "", "Space separated list of floating-point scale "
1066 "factors to be used for tileGrid playback testing. Default value: 1.0"); 1069 "factors to be used for tileGrid playback testing. Default value: 1.0");
1067 DEFINE_string(writeJsonSummaryPath, "", "Write a JSON-formatted result summary t o this file."); 1070 DEFINE_string(writeJsonSummaryPath, "", "Write a JSON-formatted result summary t o this file.");
1068 DEFINE_bool2(verbose, v, false, "Print diagnostics (e.g. list each config to be tested)."); 1071 DEFINE_bool2(verbose, v, false, "Print diagnostics (e.g. list each config to be tested).");
1069 DEFINE_string2(writePath, w, "", "Write rendered images into this directory."); 1072 DEFINE_string2(writePath, w, "", "Write rendered images into this directory.");
1070 DEFINE_string2(writePicturePath, wp, "", "Write .skp files into this directory." ); 1073 DEFINE_string2(writePicturePath, wp, "", "Write .skp files into this directory." );
1071 1074
1072 static int findConfig(const char config[]) { 1075 static int findConfig(const char config[]) {
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
1359 gm, compareConfig, suffix.c_str(), bitmap, &comparisonBitmap); 1362 gm, compareConfig, suffix.c_str(), bitmap, &comparisonBitmap);
1360 } 1363 }
1361 } 1364 }
1362 1365
1363 // run the pipe centric GM steps 1366 // run the pipe centric GM steps
1364 if (!(gmFlags & GM::kSkipPipe_Flag)) { 1367 if (!(gmFlags & GM::kSkipPipe_Flag)) {
1365 1368
1366 ErrorBitfield pipeErrors = kEmptyErrorBitfield; 1369 ErrorBitfield pipeErrors = kEmptyErrorBitfield;
1367 1370
1368 if (FLAGS_pipe) { 1371 if (FLAGS_pipe) {
1369 pipeErrors |= gmmain.test_pipe_playback(gm, compareConfig, compariso nBitmap); 1372 pipeErrors |= gmmain.test_pipe_playback(gm, compareConfig, compariso nBitmap,
1373 FLAGS_simulatePipePlaybackFa ilure);
1370 } 1374 }
1371 1375
1372 if ((kEmptyErrorBitfield == pipeErrors) && 1376 if ((kEmptyErrorBitfield == pipeErrors) &&
1373 FLAGS_tiledPipe && !(gmFlags & GM::kSkipTiled_Flag)) { 1377 FLAGS_tiledPipe && !(gmFlags & GM::kSkipTiled_Flag)) {
1374 pipeErrors |= gmmain.test_tiled_pipe_playback(gm, compareConfig, com parisonBitmap); 1378 pipeErrors |= gmmain.test_tiled_pipe_playback(gm, compareConfig, com parisonBitmap);
1375 } 1379 }
1376 1380
1377 errorsForAllModes |= pipeErrors; 1381 errorsForAllModes |= pipeErrors;
1378 } 1382 }
1379 return errorsForAllModes; 1383 return errorsForAllModes;
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
1524 moduloRemainder = -1; 1528 moduloRemainder = -1;
1525 } 1529 }
1526 if (moduloRemainder < 0 || moduloRemainder >= moduloDivisor) { 1530 if (moduloRemainder < 0 || moduloRemainder >= moduloDivisor) {
1527 moduloRemainder = -1; 1531 moduloRemainder = -1;
1528 } 1532 }
1529 1533
1530 // Accumulate success of all tests. 1534 // Accumulate success of all tests.
1531 int testsRun = 0; 1535 int testsRun = 0;
1532 int testsPassed = 0; 1536 int testsPassed = 0;
1533 int testsFailed = 0; 1537 int testsFailed = 0;
1538 int testsWithDrawingModeDiscrepancies = 0;
1534 int testsMissingReferenceImages = 0; 1539 int testsMissingReferenceImages = 0;
1535 1540
1536 int gmIndex = -1; 1541 int gmIndex = -1;
1537 SkString moduloStr; 1542 SkString moduloStr;
1538 1543
1539 // If we will be writing out files, prepare subdirectories. 1544 // If we will be writing out files, prepare subdirectories.
1540 if (FLAGS_writePath.count() == 1) { 1545 if (FLAGS_writePath.count() == 1) {
1541 if (!sk_mkdir(FLAGS_writePath[0])) { 1546 if (!sk_mkdir(FLAGS_writePath[0])) {
1542 return -1; 1547 return -1;
1543 } 1548 }
(...skipping 25 matching lines...) Expand all
1569 const char* shortName = gm->shortName(); 1574 const char* shortName = gm->shortName();
1570 if (skip_name(FLAGS_match, shortName)) { 1575 if (skip_name(FLAGS_match, shortName)) {
1571 SkDELETE(gm); 1576 SkDELETE(gm);
1572 continue; 1577 continue;
1573 } 1578 }
1574 1579
1575 SkISize size = gm->getISize(); 1580 SkISize size = gm->getISize();
1576 gm_fprintf(stdout, "%sdrawing... %s [%d %d]\n", moduloStr.c_str(), short Name, 1581 gm_fprintf(stdout, "%sdrawing... %s [%d %d]\n", moduloStr.c_str(), short Name,
1577 size.width(), size.height()); 1582 size.width(), size.height());
1578 1583
1579 ErrorBitfield testErrors = kEmptyErrorBitfield; 1584 ErrorBitfield compositeErrors = kEmptyErrorBitfield;
1580 testErrors |= run_multiple_configs(gmmain, gm, configs, grFactory); 1585 ErrorBitfield multipleConfigErrors = run_multiple_configs(gmmain, gm, co nfigs, grFactory);
1586 compositeErrors |= multipleConfigErrors;
1581 1587
1582 SkBitmap comparisonBitmap; 1588 SkBitmap comparisonBitmap;
1583 const ConfigData compareConfig = 1589 const ConfigData compareConfig =
1584 { SkBitmap::kARGB_8888_Config, kRaster_Backend, kDontCare_GLContextT ype, 0, kRW_ConfigFlag, "comparison", false }; 1590 { SkBitmap::kARGB_8888_Config, kRaster_Backend, kDontCare_GLContextT ype, 0,
1585 testErrors |= gmmain.generate_image(gm, compareConfig, NULL, NULL, &comp arisonBitmap, false); 1591 kRW_ConfigFlag, "comparison", false };
1592 ErrorBitfield generateModeBaselineErrors = gmmain.generate_image(
1593 gm, compareConfig, NULL, NULL, &comparisonBitmap, false);
1594 compositeErrors |= generateModeBaselineErrors;
1586 1595
1587 // TODO(epoger): only run this if gmmain.generate_image() succeeded? 1596 // TODO(epoger): only run this if generateModeBaselineErrors is kEmptyEr rorBitfield?
1588 // Otherwise, what are we comparing against? 1597 // Otherwise, what are we comparing against?
1589 testErrors |= run_multiple_modes(gmmain, gm, compareConfig, comparisonBi tmap); 1598 ErrorBitfield multipleModeErrors = run_multiple_modes(gmmain, gm, compar eConfig,
1599 comparisonBitmap);
1600 compositeErrors |= multipleModeErrors;
1590 1601
1591 // Update overall results. 1602 // A non-ignorable error in run_multiple_configs(), or ANY error in
1592 // We only tabulate the particular error types that we currently 1603 // generate_image()/run_multiple_modes(), counts as a failure.
1593 // care about (e.g., missing reference images). Later on, if we
1594 // want to also tabulate other error types, we can do so.
1595 testsRun++; 1604 testsRun++;
1596 if (!gmmain.fExpectationsSource.get() || 1605 if (kEmptyErrorBitfield != multipleModeErrors) {
1597 (kEmptyErrorBitfield != (kMissingExpectations_ErrorBitmask & testErr ors))) { 1606 testsWithDrawingModeDiscrepancies++;
1598 testsMissingReferenceImages++; 1607 testsFailed++;
1599 } 1608 } else if (kEmptyErrorBitfield != generateModeBaselineErrors) {
1600 if (testErrors == (testErrors & kIgnorable_ErrorBitmask)) { 1609 testsFailed++;
1610 } else if (compositeErrors == (compositeErrors & kIgnorable_ErrorBitmask )) {
1601 testsPassed++; 1611 testsPassed++;
1602 } else { 1612 } else {
1603 testsFailed++; 1613 testsFailed++;
1604 } 1614 }
1615 // Any other result categories we care to report.
1616 if (!gmmain.fExpectationsSource.get() ||
1617 (kEmptyErrorBitfield != (kMissingExpectations_ErrorBitmask & composi teErrors))) {
1618 testsMissingReferenceImages++;
1619 }
1605 1620
1606 SkDELETE(gm); 1621 SkDELETE(gm);
1607 } 1622 }
1608 gm_fprintf(stdout, "Ran %d tests: %d passed, %d failed, %d missing reference images\n", 1623 gm_fprintf(stdout, "Ran %d tests: %d passed, %d failed, %d with drawing mode discrepancies, "
1609 testsRun, testsPassed, testsFailed, testsMissingReferenceImages); 1624 "%d missing reference images\n",
1625 testsRun, testsPassed, testsFailed, testsWithDrawingModeDiscrepan cies,
1626 testsMissingReferenceImages);
1610 gmmain.ListErrors(); 1627 gmmain.ListErrors();
1611 1628
1612 if (FLAGS_writeJsonSummaryPath.count() == 1) { 1629 if (FLAGS_writeJsonSummaryPath.count() == 1) {
1613 Json::Value actualResults; 1630 Json::Value actualResults;
1614 actualResults[kJsonKey_ActualResults_Failed] = 1631 actualResults[kJsonKey_ActualResults_Failed] =
1615 gmmain.fJsonActualResults_Failed; 1632 gmmain.fJsonActualResults_Failed;
1616 actualResults[kJsonKey_ActualResults_FailureIgnored] = 1633 actualResults[kJsonKey_ActualResults_FailureIgnored] =
1617 gmmain.fJsonActualResults_FailureIgnored; 1634 gmmain.fJsonActualResults_FailureIgnored;
1618 actualResults[kJsonKey_ActualResults_NoComparison] = 1635 actualResults[kJsonKey_ActualResults_NoComparison] =
1619 gmmain.fJsonActualResults_NoComparison; 1636 gmmain.fJsonActualResults_NoComparison;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1653 if (FLAGS_forceBWtext) { 1670 if (FLAGS_forceBWtext) {
1654 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); 1671 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref();
1655 } 1672 }
1656 } 1673 }
1657 1674
1658 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) 1675 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
1659 int main(int argc, char * const argv[]) { 1676 int main(int argc, char * const argv[]) {
1660 return tool_main(argc, (char**) argv); 1677 return tool_main(argc, (char**) argv);
1661 } 1678 }
1662 #endif 1679 #endif
OLDNEW
« no previous file with comments | « no previous file | gm/tests/outputs/compared-against-different-pixels-images/output-expected/stdout » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698