aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHal Canary <halcanary@google.com>2018-05-29 14:02:00 -0400
committerHal Canary <halcanary@google.com>2018-08-15 16:55:54 +0000
commitffdc18e305f303c8cecb14fc4ea6e26985e1fe3d (patch)
treed3fabfbe4281b6f205ae28c3eb3df98d40077747
parentac3e5a243a7663822a6e50fb8644fb17907e4839 (diff)
downloadskqp-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>
-rw-r--r--platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQP.java2
-rw-r--r--platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQPRunner.java2
-rw-r--r--tools/skqp/gm_knowledge.cpp20
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[] =