Index: experimental/skpdiff/main.cpp |
diff --git a/experimental/skpdiff/main.cpp b/experimental/skpdiff/main.cpp |
index 81b1d633341deb13f9486caea592b299268d21a2..e5b8faea3aa3db30b3ccd554311179f333ab8cce 100644 |
--- a/experimental/skpdiff/main.cpp |
+++ b/experimental/skpdiff/main.cpp |
@@ -18,6 +18,7 @@ |
#include "SkImageDiffer.h" |
#include "SkCLImageDiffer.h" |
+#include "SkPMetric.h" |
#include "skpdiff_util.h" |
#include "SkForceLinking.h" |
@@ -107,7 +108,7 @@ static void diff_directories(const char baselinePath[], const char testPath[], S |
static void diff_patterns(const char baselinePattern[], const char testPattern[], SkImageDiffer* differ) { |
// Get the files in the baseline and test patterns. Because they are in sorted order, it's easy |
// to find corresponding images by matching entry indices. |
- // |
+ |
SkTArray<SkString> baselineEntries; |
if (!glob_files(baselinePattern, &baselineEntries)) { |
SkDebugf("Unable to get pattern \"%s\"\n", baselinePattern); |
@@ -140,8 +141,7 @@ static void diff_patterns(const char baselinePattern[], const char testPattern[] |
} |
-static bool init_cl_diff(SkImageDiffer* differ) |
-{ |
+static bool init_cl_diff(SkImageDiffer* differ) { |
// Setup OpenCL |
cl::Device device; |
cl::Context context; |
@@ -154,17 +154,26 @@ static bool init_cl_diff(SkImageDiffer* differ) |
return clDiffer->init(device(), context()); |
} |
+static bool init_dummy(SkImageDiffer* differ) { |
+ return true; |
+} |
+ |
+ |
// TODO Find a better home for the diff registry. One possibility is to have the differs self |
// register. |
// List here every differ |
SkDifferentPixelsImageDiffer gDiffPixel; |
+SkPMetric gPDiff; |
-/// A null terminated array of pointer to every differ declared above |
-SkImageDiffer* gDiffers[] = { &gDiffPixel, NULL }; |
+// A null terminated array of pointer to every differ declared above |
+SkImageDiffer* gDiffers[] = { &gDiffPixel, &gPDiff, NULL }; |
-/// A parallel array of functions to initialize the above differs |
-bool (*gDiffInits[])(SkImageDiffer*) = { init_cl_diff, NULL }; |
+// A parallel array of functions to initialize the above differs. The reason we don't initialize |
+// everything immediately is that certain differs may require special initialization, but we still |
+// want to construct all of them globally so they can be queried for things like their name and |
+// description. |
+bool (*gDiffInits[])(SkImageDiffer*) = { init_cl_diff, init_dummy, NULL }; |
int main(int argc, char** argv) { |
@@ -226,10 +235,12 @@ int main(int argc, char** argv) { |
// be helped. |
// Perform each requested diff |
- for (int differIndex = 0; differIndex < chosenDiffers.count(); differIndex++) { |
+ for (int chosenDifferIndex = 0; chosenDifferIndex < chosenDiffers.count(); chosenDifferIndex++) { |
+ int differIndex = chosenDiffers[chosenDifferIndex]; |
+ |
// Get the chosen differ and say which one they chose |
SkImageDiffer * differ = gDiffers[differIndex]; |
- SkDebugf("Using differ \"%s\"\n", differ->getName()); |
+ SkDebugf("Using metric \"%s\"\n", differ->getName()); |
// Initialize the differ using the global list of init functions that match the list of |
// differs |