diff options
author | Hal Canary <halcanary@google.com> | 2018-05-29 14:02:00 -0400 |
---|---|---|
committer | Hal Canary <halcanary@google.com> | 2018-08-15 16:55:54 +0000 |
commit | ffdc18e305f303c8cecb14fc4ea6e26985e1fe3d (patch) | |
tree | d3fabfbe4281b6f205ae28c3eb3df98d40077747 | |
parent | ac3e5a243a7663822a6e50fb8644fb17907e4839 (diff) | |
download | skqp-ffdc18e305f303c8cecb14fc4ea6e26985e1fe3d.tar.gz |
SkQP: allow small errors in a small number of pixels
Bug: 80423218
Change-Id: Ied9cb7c72cddb19430b1475bd436bbc8c3ebd3fd
Reviewed-on: https://skia-review.googlesource.com/130541
Reviewed-by: Derek Sollenberger <djsollen@google.com>
3 files changed, 15 insertions, 9 deletions
diff --git a/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQP.java b/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQP.java index 58e09ec982..886d06dc8d 100644 --- a/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQP.java +++ b/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQP.java @@ -61,7 +61,7 @@ public class SkQP { } else if (value != 0) { // Record failure and carry on. // SkQPRunner.Fail(desc, notifier, String.format( - // "Image mismatch: max channel diff = %f", value)); + // "Image mismatch: error metric = %f", value)); } else { // Record success for this test. } diff --git a/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQPRunner.java b/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQPRunner.java index 297c6539a7..ec08b25ca9 100644 --- a/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQPRunner.java +++ b/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQPRunner.java @@ -133,7 +133,7 @@ public class SkQPRunner extends Runner implements Filterable { Log.w(TAG, String.format("[ERROR] '%s': %s", name, error)); } else if (value != 0) { SkQPRunner.Fail(desc, notifier, String.format( - "Image mismatch: max channel diff = %f", value)); + "Image mismatch: error metric = %f", value)); Log.w(TAG, String.format("[FAIL] '%s': %f > 0", name, value)); } else { Log.i(TAG, String.format("Rendering Test '%s' passed", name)); diff --git a/tools/skqp/gm_knowledge.cpp b/tools/skqp/gm_knowledge.cpp index a2416c9dca..9441dadeac 100644 --- a/tools/skqp/gm_knowledge.cpp +++ b/tools/skqp/gm_knowledge.cpp @@ -38,6 +38,11 @@ #define SK_SKQP_GLOBAL_ERROR_TOLERANCE 0 #endif +#ifndef SK_SKQP_BADNESS_TOLERANCE +#define SK_SKQP_BADNESS_TOLERANCE 100 +#endif + + //////////////////////////////////////////////////////////////////////////////// static int get_error(uint32_t value, uint32_t value_max, uint32_t value_min) { @@ -230,15 +235,16 @@ float Check(const uint32_t* pixels, } } } - - if (badness == 0) { + int64_t badnessMetric = badness * badPixelCount; + if (badnessMetric < SK_SKQP_BADNESS_TOLERANCE) { std::lock_guard<std::mutex> lock(gMutex); gErrors.push_back(Run{SkString(backend), SkString(name), 0, 0}); - } - if (report_directory_path && badness > 0 && report_directory_path[0] != '\0') { - if (!backend) { - backend = "skia"; + if (error_out) { + *error_out = Error::kNone; } + return 0; + } + if (report_directory_path && report_directory_path[0] != '\0') { SkString images_directory = SkOSPath::Join(report_directory_path, IMAGES_DIRECTORY_PATH); sk_mkdir(images_directory.c_str()); @@ -270,7 +276,7 @@ float Check(const uint32_t* pixels, if (error_out) { *error_out = Error::kNone; } - return (float)badness; + return (float)badnessMetric; } static constexpr char kDocHead[] = |