aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gm/gmmain.cpp318
-rw-r--r--gm/tests/outputs/add-config-pdf/output-expected/stdout2
-rw-r--r--gm/tests/outputs/checksum-based-filenames/output-expected/stdout2
-rw-r--r--gm/tests/outputs/compared-against-different-pixels-images/output-expected/stdout2
-rw-r--r--gm/tests/outputs/compared-against-different-pixels-json/output-expected/stdout2
-rw-r--r--gm/tests/outputs/compared-against-empty-dir/output-expected/stdout2
-rw-r--r--gm/tests/outputs/compared-against-identical-bytes-images/output-expected/stdout2
-rw-r--r--gm/tests/outputs/compared-against-identical-bytes-json/output-expected/stdout2
-rw-r--r--gm/tests/outputs/compared-against-identical-pixels-images/output-expected/stdout2
-rw-r--r--gm/tests/outputs/compared-against-identical-pixels-json/output-expected/stdout2
-rw-r--r--gm/tests/outputs/ignore-expectations-mismatch/output-expected/stdout2
-rw-r--r--gm/tests/outputs/ignoring-one-test/output-expected/stdout2
-rw-r--r--gm/tests/outputs/ignoring-some-failures/output-expected/stdout2
-rw-r--r--gm/tests/outputs/intentionally-skipped-tests/output-expected/stdout2
-rw-r--r--gm/tests/outputs/no-hierarchy/output-expected/stdout2
-rw-r--r--gm/tests/outputs/no-readpath/output-expected/stdout2
-rw-r--r--gm/tests/outputs/pipe-playback-failure/output-expected/json-summary.txt13
-rw-r--r--gm/tests/outputs/pipe-playback-failure/output-expected/mismatchPath/565/selftest1-pipe.png1
-rw-r--r--gm/tests/outputs/pipe-playback-failure/output-expected/mismatchPath/8888/selftest1-pipe.png1
-rw-r--r--gm/tests/outputs/pipe-playback-failure/output-expected/stderr4
-rw-r--r--gm/tests/outputs/pipe-playback-failure/output-expected/stdout8
21 files changed, 217 insertions, 158 deletions
diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp
index e4c1c30110..daf0baed51 100644
--- a/gm/gmmain.cpp
+++ b/gm/gmmain.cpp
@@ -318,8 +318,8 @@ public:
// and changing that now may affect other parts of our code.
if (modeAsString.startsWith("-")) {
modeAsString.remove(0, 1);
- modes.push_back(modeAsString);
}
+ modes.push_back(modeAsString);
}
}
@@ -336,6 +336,27 @@ public:
}
/**
+ * Calls RecordTestResults to record that we skipped a test.
+ *
+ * Depending on the backend, this may mean that we skipped a single rendermode, or all
+ * rendermodes; see http://skbug.com/1994 and https://codereview.chromium.org/129203002/
+ */
+ void RecordSkippedTest(const SkString& shortNamePlusConfig,
+ const char renderModeDescriptor [], Backend backend) {
+ if (kRaster_Backend == backend) {
+ // Skipping a test on kRaster_Backend means that we will skip ALL renderModes
+ // (as opposed to other backends, on which we only run the default renderMode).
+ //
+ // We cannot call RecordTestResults yet, because we won't know the full set of
+ // renderModes until we have run all tests.
+ fTestsSkippedOnAllRenderModes.push_back(shortNamePlusConfig);
+ } else {
+ this->RecordTestResults(kIntentionallySkipped_ErrorType, shortNamePlusConfig,
+ renderModeDescriptor);
+ }
+ }
+
+ /**
* Records the results of this test in fTestsRun and fFailedTests.
*
* We even record successes, and errors that we regard as
@@ -1240,6 +1261,7 @@ public:
// collection of tests that have failed with each ErrorType
SkTArray<SkString> fFailedTests[kLast_ErrorType+1];
+ SkTArray<SkString> fTestsSkippedOnAllRenderModes;
int fTestsRun;
SkTDict<int> fRenderModesEncountered;
@@ -1515,127 +1537,6 @@ template <typename T> void appendUnique(SkTDArray<T>* array, const T& value) {
}
/**
- * Run this test in a number of different configs (8888, 565, PDF,
- * etc.), confirming that the resulting bitmaps match expectations
- * (which may be different for each config).
- *
- * Returns all errors encountered while doing so.
- */
-ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm,
- const SkTDArray<size_t> &configs,
- const SkTDArray<const PDFRasterizerData*> &pdfRasterizers,
- GrContextFactory *grFactory);
-ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm,
- const SkTDArray<size_t> &configs,
- const SkTDArray<const PDFRasterizerData*> &pdfRasterizers,
- GrContextFactory *grFactory) {
- const char renderModeDescriptor[] = "";
- ErrorCombination errorsForAllConfigs;
- uint32_t gmFlags = gm->getFlags();
-
- for (int i = 0; i < configs.count(); i++) {
- ConfigData config = gRec[configs[i]];
- const SkString shortNamePlusConfig = gmmain.make_shortname_plus_config(gm->shortName(),
- config.fName);
-
- // Skip any tests that we don't even need to try.
- // If any of these were skipped on a per-GM basis, record them as
- // kIntentionallySkipped.
- if (kPDF_Backend == config.fBackend) {
- if (gmFlags & GM::kSkipPDF_Flag) {
- gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNamePlusConfig,
- renderModeDescriptor);
- errorsForAllConfigs.add(kIntentionallySkipped_ErrorType);
- continue;
- }
- }
- if ((gmFlags & GM::kSkip565_Flag) &&
- (kRaster_Backend == config.fBackend) &&
- (SkBitmap::kRGB_565_Config == config.fConfig)) {
- gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNamePlusConfig,
- renderModeDescriptor);
- errorsForAllConfigs.add(kIntentionallySkipped_ErrorType);
- continue;
- }
- if (((gmFlags & GM::kSkipGPU_Flag) && kGPU_Backend == config.fBackend) ||
- ((gmFlags & GM::kGPUOnly_Flag) && kGPU_Backend != config.fBackend)) {
- gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNamePlusConfig,
- renderModeDescriptor);
- errorsForAllConfigs.add(kIntentionallySkipped_ErrorType);
- continue;
- }
-
- // Now we know that we want to run this test and record its
- // success or failure.
- ErrorCombination errorsForThisConfig;
- GrSurface* gpuTarget = NULL;
-#if SK_SUPPORT_GPU
- SkAutoTUnref<GrSurface> auGpuTarget;
- if ((errorsForThisConfig.isEmpty()) && (kGPU_Backend == config.fBackend)) {
- if (FLAGS_resetGpuContext) {
- grFactory->destroyContexts();
- }
- GrContext* gr = grFactory->get(config.fGLContextType);
- bool grSuccess = false;
- if (gr) {
- // create a render target to back the device
- GrTextureDesc desc;
- desc.fConfig = kSkia8888_GrPixelConfig;
- desc.fFlags = kRenderTarget_GrTextureFlagBit;
- desc.fWidth = gm->getISize().width();
- desc.fHeight = gm->getISize().height();
- desc.fSampleCnt = config.fSampleCnt;
- auGpuTarget.reset(gr->createUncachedTexture(desc, NULL, 0));
- if (NULL != auGpuTarget) {
- gpuTarget = auGpuTarget;
- grSuccess = true;
- // Set the user specified cache limits if non-default.
- size_t bytes;
- int count;
- gr->getTextureCacheLimits(&count, &bytes);
- if (DEFAULT_CACHE_VALUE != gGpuCacheSizeBytes) {
- bytes = static_cast<size_t>(gGpuCacheSizeBytes);
- }
- if (DEFAULT_CACHE_VALUE != gGpuCacheSizeCount) {
- count = gGpuCacheSizeCount;
- }
- gr->setTextureCacheLimits(count, bytes);
- }
- }
- if (!grSuccess) {
- errorsForThisConfig.add(kNoGpuContext_ErrorType);
- }
- }
-#endif
-
- SkBitmap comparisonBitmap;
-
- const char* writePath;
- if (FLAGS_writePath.count() == 1) {
- writePath = FLAGS_writePath[0];
- } else {
- writePath = NULL;
- }
-
- if (errorsForThisConfig.isEmpty()) {
- errorsForThisConfig.add(gmmain.test_drawing(gm, config, pdfRasterizers,
- writePath, gpuTarget,
- &comparisonBitmap));
- gmmain.RecordTestResults(errorsForThisConfig, shortNamePlusConfig, "");
- }
-
- if (FLAGS_deferred && errorsForThisConfig.isEmpty() &&
- (kGPU_Backend == config.fBackend || kRaster_Backend == config.fBackend)) {
- errorsForThisConfig.add(gmmain.test_deferred_drawing(gm, config, comparisonBitmap,
- gpuTarget));
- }
-
- errorsForAllConfigs.add(errorsForThisConfig);
- }
- return errorsForAllConfigs;
-}
-
-/**
* Run this test in a number of different drawing modes (pipe,
* deferred, tiled, etc.), confirming that the resulting bitmaps all
* *exactly* match comparisonBitmap.
@@ -1768,6 +1669,139 @@ ErrorCombination run_multiple_modes(GMMain &gmmain, GM *gm, const ConfigData &co
return errorsForAllModes;
}
+
+/**
+ * Run this test in a number of different configs (8888, 565, PDF,
+ * etc.), confirming that the resulting bitmaps match expectations
+ * (which may be different for each config).
+ *
+ * Returns all errors encountered while doing so.
+ */
+ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm,
+ const SkTDArray<size_t> &configs,
+ const SkTDArray<const PDFRasterizerData*> &pdfRasterizers,
+ const SkTDArray<SkScalar> &tileGridReplayScales,
+ GrContextFactory *grFactory);
+ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm,
+ const SkTDArray<size_t> &configs,
+ const SkTDArray<const PDFRasterizerData*> &pdfRasterizers,
+ const SkTDArray<SkScalar> &tileGridReplayScales,
+ GrContextFactory *grFactory) {
+ const char renderModeDescriptor[] = "";
+ ErrorCombination errorsForAllConfigs;
+ uint32_t gmFlags = gm->getFlags();
+
+ for (int i = 0; i < configs.count(); i++) {
+ ConfigData config = gRec[configs[i]];
+ const SkString shortNamePlusConfig = gmmain.make_shortname_plus_config(gm->shortName(),
+ config.fName);
+
+ // Skip any tests that we don't even need to try.
+ // If any of these were skipped on a per-GM basis, record them as
+ // kIntentionallySkipped.
+ if (kPDF_Backend == config.fBackend) {
+ if (gmFlags & GM::kSkipPDF_Flag) {
+ gmmain.RecordSkippedTest(shortNamePlusConfig,
+ renderModeDescriptor,
+ config.fBackend);
+ errorsForAllConfigs.add(kIntentionallySkipped_ErrorType);
+ continue;
+ }
+ }
+ if ((gmFlags & GM::kSkip565_Flag) &&
+ (kRaster_Backend == config.fBackend) &&
+ (SkBitmap::kRGB_565_Config == config.fConfig)) {
+ gmmain.RecordSkippedTest(shortNamePlusConfig,
+ renderModeDescriptor,
+ config.fBackend);
+ errorsForAllConfigs.add(kIntentionallySkipped_ErrorType);
+ continue;
+ }
+ if (((gmFlags & GM::kSkipGPU_Flag) && kGPU_Backend == config.fBackend) ||
+ ((gmFlags & GM::kGPUOnly_Flag) && kGPU_Backend != config.fBackend)) {
+ gmmain.RecordSkippedTest(shortNamePlusConfig,
+ renderModeDescriptor,
+ config.fBackend);
+ errorsForAllConfigs.add(kIntentionallySkipped_ErrorType);
+ continue;
+ }
+
+ // Now we know that we want to run this test and record its
+ // success or failure.
+ ErrorCombination errorsForThisConfig;
+ GrSurface* gpuTarget = NULL;
+#if SK_SUPPORT_GPU
+ SkAutoTUnref<GrSurface> auGpuTarget;
+ if ((errorsForThisConfig.isEmpty()) && (kGPU_Backend == config.fBackend)) {
+ if (FLAGS_resetGpuContext) {
+ grFactory->destroyContexts();
+ }
+ GrContext* gr = grFactory->get(config.fGLContextType);
+ bool grSuccess = false;
+ if (gr) {
+ // create a render target to back the device
+ GrTextureDesc desc;
+ desc.fConfig = kSkia8888_GrPixelConfig;
+ desc.fFlags = kRenderTarget_GrTextureFlagBit;
+ desc.fWidth = gm->getISize().width();
+ desc.fHeight = gm->getISize().height();
+ desc.fSampleCnt = config.fSampleCnt;
+ auGpuTarget.reset(gr->createUncachedTexture(desc, NULL, 0));
+ if (NULL != auGpuTarget) {
+ gpuTarget = auGpuTarget;
+ grSuccess = true;
+ // Set the user specified cache limits if non-default.
+ size_t bytes;
+ int count;
+ gr->getTextureCacheLimits(&count, &bytes);
+ if (DEFAULT_CACHE_VALUE != gGpuCacheSizeBytes) {
+ bytes = static_cast<size_t>(gGpuCacheSizeBytes);
+ }
+ if (DEFAULT_CACHE_VALUE != gGpuCacheSizeCount) {
+ count = gGpuCacheSizeCount;
+ }
+ gr->setTextureCacheLimits(count, bytes);
+ }
+ }
+ if (!grSuccess) {
+ errorsForThisConfig.add(kNoGpuContext_ErrorType);
+ }
+ }
+#endif
+
+ SkBitmap comparisonBitmap;
+
+ const char* writePath;
+ if (FLAGS_writePath.count() == 1) {
+ writePath = FLAGS_writePath[0];
+ } else {
+ writePath = NULL;
+ }
+
+ if (errorsForThisConfig.isEmpty()) {
+ errorsForThisConfig.add(gmmain.test_drawing(gm, config, pdfRasterizers,
+ writePath, gpuTarget,
+ &comparisonBitmap));
+ gmmain.RecordTestResults(errorsForThisConfig, shortNamePlusConfig, "");
+ }
+
+ // TODO: run only if gmmain.test_drawing succeeded.
+ if (kRaster_Backend == config.fBackend) {
+ run_multiple_modes(gmmain, gm, config, comparisonBitmap, tileGridReplayScales);
+ }
+
+ if (FLAGS_deferred && errorsForThisConfig.isEmpty() &&
+ (kGPU_Backend == config.fBackend || kRaster_Backend == config.fBackend)) {
+ errorsForThisConfig.add(gmmain.test_deferred_drawing(gm, config, comparisonBitmap,
+ gpuTarget));
+ }
+
+ errorsForAllConfigs.add(errorsForThisConfig);
+ }
+ return errorsForAllConfigs;
+}
+
+
/**
* Read individual lines from a file, pushing them into the given array.
*
@@ -2285,32 +2319,48 @@ int tool_main(int argc, char** argv) {
gm_fprintf(stdout, "%sdrawing... %s [%d %d]\n", moduloStr.c_str(), shortName,
size.width(), size.height());
- run_multiple_configs(gmmain, gm, configs, pdfRasterizers, grFactory);
-
- SkBitmap comparisonBitmap;
- const ConfigData compareConfig =
- { SkBitmap::kARGB_8888_Config, kRaster_Backend, kDontCare_GLContextType, 0, kRW_ConfigFlag, "comparison", false };
- gmmain.generate_image(gm, compareConfig, NULL, &comparisonBitmap, false);
-
- // TODO(epoger): only run this if gmmain.generate_image() succeeded?
- // Otherwise, what are we comparing against?
- run_multiple_modes(gmmain, gm, compareConfig, comparisonBitmap, tileGridReplayScales);
+ run_multiple_configs(gmmain, gm, configs, pdfRasterizers, tileGridReplayScales, grFactory);
}
SkTArray<SkString> modes;
gmmain.GetRenderModesEncountered(modes);
+ int modeCount = modes.count();
+
+ // Now that we have run all the tests and thus know the full set of renderModes that we
+ // tried to run, we can call RecordTestResults() to record the cases in which we skipped
+ // ALL renderModes.
+ // See http://skbug.com/1994 and https://codereview.chromium.org/129203002/
+ int testCount = gmmain.fTestsSkippedOnAllRenderModes.count();
+ for (int testNum = 0; testNum < testCount; ++testNum) {
+ const SkString &shortNamePlusConfig = gmmain.fTestsSkippedOnAllRenderModes[testNum];
+ for (int modeNum = 0; modeNum < modeCount; ++modeNum) {
+ gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNamePlusConfig,
+ modes[modeNum].c_str());
+ }
+ }
+
bool reportError = false;
if (gmmain.NumSignificantErrors() > 0) {
reportError = true;
}
- int expectedNumberOfTests = gmsRun * (configs.count() + modes.count());
+
+ // We test every GM against every config, and for every raster config also test every mode.
+ int rasterConfigs = 0;
+ for (int i = 0; i < configs.count(); i++) {
+ if (gRec[configs[i]].fBackend == kRaster_Backend) {
+ rasterConfigs++;
+ }
+ }
+ // For raster configs, we run all renderModes; for non-raster configs, just default renderMode
+ const int expectedNumberOfTests = rasterConfigs * gmsRun * modeCount
+ + (configs.count() - rasterConfigs) * gmsRun;
// Output summary to stdout.
if (FLAGS_verbose) {
gm_fprintf(stdout, "Ran %d GMs\n", gmsRun);
gm_fprintf(stdout, "... over %2d configs [%s]\n", configs.count(),
list_all_config_names(configs).c_str());
- gm_fprintf(stdout, "... and %2d modes [%s]\n", modes.count(), list_all(modes).c_str());
+ gm_fprintf(stdout, "... and %2d modes [%s]\n", modeCount, list_all(modes).c_str());
gm_fprintf(stdout, "... so there should be a total of %d tests.\n", expectedNumberOfTests);
}
gmmain.ListErrors(FLAGS_verbose);
diff --git a/gm/tests/outputs/add-config-pdf/output-expected/stdout b/gm/tests/outputs/add-config-pdf/output-expected/stdout
index cbdb12a1a0..507fc7cec7 100644
--- a/gm/tests/outputs/add-config-pdf/output-expected/stdout
+++ b/gm/tests/outputs/add-config-pdf/output-expected/stdout
@@ -8,7 +8,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 3 configs ["8888", "565", "pdf"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 3 tests.
GM: Ran 3 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=1 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/checksum-based-filenames/output-expected/stdout b/gm/tests/outputs/checksum-based-filenames/output-expected/stdout
index 6e33214898..8432287a0e 100644
--- a/gm/tests/outputs/checksum-based-filenames/output-expected/stdout
+++ b/gm/tests/outputs/checksum-based-filenames/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=2 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/compared-against-different-pixels-images/output-expected/stdout b/gm/tests/outputs/compared-against-different-pixels-images/output-expected/stdout
index eb634e525e..32f73cc729 100644
--- a/gm/tests/outputs/compared-against-different-pixels-images/output-expected/stdout
+++ b/gm/tests/outputs/compared-against-different-pixels-images/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=2 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/compared-against-different-pixels-json/output-expected/stdout b/gm/tests/outputs/compared-against-different-pixels-json/output-expected/stdout
index 0701282514..d68c495615 100644
--- a/gm/tests/outputs/compared-against-different-pixels-json/output-expected/stdout
+++ b/gm/tests/outputs/compared-against-different-pixels-json/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=2 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/compared-against-empty-dir/output-expected/stdout b/gm/tests/outputs/compared-against-empty-dir/output-expected/stdout
index 9cbcf265c4..e4f8ab8f7c 100644
--- a/gm/tests/outputs/compared-against-empty-dir/output-expected/stdout
+++ b/gm/tests/outputs/compared-against-empty-dir/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=2 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/compared-against-identical-bytes-images/output-expected/stdout b/gm/tests/outputs/compared-against-identical-bytes-images/output-expected/stdout
index 23aa058ad0..bb1cc8a1a1 100644
--- a/gm/tests/outputs/compared-against-identical-bytes-images/output-expected/stdout
+++ b/gm/tests/outputs/compared-against-identical-bytes-images/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/compared-against-identical-bytes-json/output-expected/stdout b/gm/tests/outputs/compared-against-identical-bytes-json/output-expected/stdout
index 82de4b72e6..dc08b87ebe 100644
--- a/gm/tests/outputs/compared-against-identical-bytes-json/output-expected/stdout
+++ b/gm/tests/outputs/compared-against-identical-bytes-json/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/compared-against-identical-pixels-images/output-expected/stdout b/gm/tests/outputs/compared-against-identical-pixels-images/output-expected/stdout
index e2b02fedf1..0b31ff6e78 100644
--- a/gm/tests/outputs/compared-against-identical-pixels-images/output-expected/stdout
+++ b/gm/tests/outputs/compared-against-identical-pixels-images/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/compared-against-identical-pixels-json/output-expected/stdout b/gm/tests/outputs/compared-against-identical-pixels-json/output-expected/stdout
index 7f474041df..969c24b632 100644
--- a/gm/tests/outputs/compared-against-identical-pixels-json/output-expected/stdout
+++ b/gm/tests/outputs/compared-against-identical-pixels-json/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/ignore-expectations-mismatch/output-expected/stdout b/gm/tests/outputs/ignore-expectations-mismatch/output-expected/stdout
index a7ce529bfb..09aff571c8 100644
--- a/gm/tests/outputs/ignore-expectations-mismatch/output-expected/stdout
+++ b/gm/tests/outputs/ignore-expectations-mismatch/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=2 MissingExpectations=0 WritingReferenceImage=0
GM: [ ] 0 NoGpuContext:
diff --git a/gm/tests/outputs/ignoring-one-test/output-expected/stdout b/gm/tests/outputs/ignoring-one-test/output-expected/stdout
index 07adb39933..af45a03554 100644
--- a/gm/tests/outputs/ignoring-one-test/output-expected/stdout
+++ b/gm/tests/outputs/ignoring-one-test/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=2 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/ignoring-some-failures/output-expected/stdout b/gm/tests/outputs/ignoring-some-failures/output-expected/stdout
index 29506202b2..ba05a575cd 100644
--- a/gm/tests/outputs/ignoring-some-failures/output-expected/stdout
+++ b/gm/tests/outputs/ignoring-some-failures/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=2 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/intentionally-skipped-tests/output-expected/stdout b/gm/tests/outputs/intentionally-skipped-tests/output-expected/stdout
index 963c652934..b25d8feaeb 100644
--- a/gm/tests/outputs/intentionally-skipped-tests/output-expected/stdout
+++ b/gm/tests/outputs/intentionally-skipped-tests/output-expected/stdout
@@ -7,7 +7,7 @@ GM: drawing... selftest2 [300 200]
GM: drawing... selftest1 [300 200]
GM: Ran 2 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 4 tests.
GM: Ran 4 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=4 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/no-hierarchy/output-expected/stdout b/gm/tests/outputs/no-hierarchy/output-expected/stdout
index 7248d26978..2ae755a8b1 100644
--- a/gm/tests/outputs/no-hierarchy/output-expected/stdout
+++ b/gm/tests/outputs/no-hierarchy/output-expected/stdout
@@ -7,7 +7,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=2 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/no-readpath/output-expected/stdout b/gm/tests/outputs/no-readpath/output-expected/stdout
index ffa60c053a..ec10ea9d1f 100644
--- a/gm/tests/outputs/no-readpath/output-expected/stdout
+++ b/gm/tests/outputs/no-readpath/output-expected/stdout
@@ -6,7 +6,7 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 0 modes []
+GM: ... and 1 modes [""]
GM: ... so there should be a total of 2 tests.
GM: Ran 2 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=0 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=2 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
diff --git a/gm/tests/outputs/pipe-playback-failure/output-expected/json-summary.txt b/gm/tests/outputs/pipe-playback-failure/output-expected/json-summary.txt
index c99a8e9651..ebe8b592b0 100644
--- a/gm/tests/outputs/pipe-playback-failure/output-expected/json-summary.txt
+++ b/gm/tests/outputs/pipe-playback-failure/output-expected/json-summary.txt
@@ -1,7 +1,8 @@
{
"actual-results" : {
"failed" : {
- "comparison/selftest1-pipe.png" : [ "bitmap-64bitMD5", 6140979239232854774 ]
+ "565/selftest1-pipe.png" : [ "bitmap-64bitMD5", 6140979239232854774 ],
+ "8888/selftest1-pipe.png" : [ "bitmap-64bitMD5", 6140979239232854774 ]
},
"failure-ignored" : null,
"no-comparison" : null,
@@ -11,19 +12,25 @@
}
},
"expected-results" : {
+ "565/selftest1-pipe.png" : {
+ "allowed-digests" : [
+ [ "bitmap-64bitMD5", 12927999507540085554 ]
+ ],
+ "ignore-failure" : false
+ },
"565/selftest1.png" : {
"allowed-digests" : [
[ "bitmap-64bitMD5", 12927999507540085554 ]
],
"ignore-failure" : false
},
- "8888/selftest1.png" : {
+ "8888/selftest1-pipe.png" : {
"allowed-digests" : [
[ "bitmap-64bitMD5", 1209453360120438698 ]
],
"ignore-failure" : false
},
- "comparison/selftest1-pipe.png" : {
+ "8888/selftest1.png" : {
"allowed-digests" : [
[ "bitmap-64bitMD5", 1209453360120438698 ]
],
diff --git a/gm/tests/outputs/pipe-playback-failure/output-expected/mismatchPath/565/selftest1-pipe.png b/gm/tests/outputs/pipe-playback-failure/output-expected/mismatchPath/565/selftest1-pipe.png
new file mode 100644
index 0000000000..6e665c4e55
--- /dev/null
+++ b/gm/tests/outputs/pipe-playback-failure/output-expected/mismatchPath/565/selftest1-pipe.png
@@ -0,0 +1 @@
+[contents of gm/tests/outputs/pipe-playback-failure/output-actual/mismatchPath/565/selftest1-pipe.png]
diff --git a/gm/tests/outputs/pipe-playback-failure/output-expected/mismatchPath/8888/selftest1-pipe.png b/gm/tests/outputs/pipe-playback-failure/output-expected/mismatchPath/8888/selftest1-pipe.png
new file mode 100644
index 0000000000..0426b8ce9d
--- /dev/null
+++ b/gm/tests/outputs/pipe-playback-failure/output-expected/mismatchPath/8888/selftest1-pipe.png
@@ -0,0 +1 @@
+[contents of gm/tests/outputs/pipe-playback-failure/output-actual/mismatchPath/8888/selftest1-pipe.png]
diff --git a/gm/tests/outputs/pipe-playback-failure/output-expected/stderr b/gm/tests/outputs/pipe-playback-failure/output-expected/stderr
index 150a10b8cd..b40a74802d 100644
--- a/gm/tests/outputs/pipe-playback-failure/output-expected/stderr
+++ b/gm/tests/outputs/pipe-playback-failure/output-expected/stderr
@@ -1,2 +1,2 @@
-GM: FAILED to write bitmap: gm/tests/outputs/pipe-playback-failure/output-actual/mismatchPath/comparison/selftest1-pipe.png
-GM: ---- comparison/selftest1-pipe.png: 60000 (of 60000) differing pixels, max per-channel mismatch R=135 G=246 B=135 A=0
+GM: ---- 8888/selftest1-pipe.png: 60000 (of 60000) differing pixels, max per-channel mismatch R=135 G=246 B=135 A=0
+GM: ---- 565/selftest1-pipe.png: not computing max per-channel pixel mismatch because non-8888
diff --git a/gm/tests/outputs/pipe-playback-failure/output-expected/stdout b/gm/tests/outputs/pipe-playback-failure/output-expected/stdout
index fffe55ee67..dbb4dd8ad9 100644
--- a/gm/tests/outputs/pipe-playback-failure/output-expected/stdout
+++ b/gm/tests/outputs/pipe-playback-failure/output-expected/stdout
@@ -7,12 +7,12 @@ GM: reading resources from resources
GM: drawing... selftest1 [300 200]
GM: Ran 1 GMs
GM: ... over 2 configs ["8888", "565"]
-GM: ... and 1 modes ["pipe"]
-GM: ... so there should be a total of 3 tests.
-GM: Ran 3 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=1 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=0 WritingReferenceImage=0
+GM: ... and 2 modes ["", "pipe"]
+GM: ... so there should be a total of 4 tests.
+GM: Ran 4 tests: NoGpuContext=0 IntentionallySkipped=0 RenderModeMismatch=2 GeneratePdfFailed=0 ExpectationsMismatch=0 MissingExpectations=0 WritingReferenceImage=0
GM: [*] 0 NoGpuContext:
GM: [ ] 0 IntentionallySkipped:
-GM: [*] 1 RenderModeMismatch: comparison/selftest1-pipe
+GM: [*] 2 RenderModeMismatch: 8888/selftest1-pipe 565/selftest1-pipe
GM: [*] 0 GeneratePdfFailed:
GM: [*] 0 ExpectationsMismatch:
GM: [ ] 0 MissingExpectations: