aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/SkColor4fTest.cpp
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2016-02-23 13:26:28 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-02-23 13:26:28 -0800
commit55430a620762e882c2b3018c57f9a7d51cf16071 (patch)
tree09ffdf9f327bbd1faf0237a98ab3203243a01440 /tests/SkColor4fTest.cpp
parentccb74b824a16d0009f7f9ebcf2a03fb53451af9a (diff)
Update 4f linear gradient selection heuristic
Use the 4f context when * dest type is 4f * there's no perpective Keeping the define and testing flag overrides for now. R=reed@google.com,herb@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1725793003 Review URL: https://codereview.chromium.org/1725793003
Diffstat (limited to 'tests/SkColor4fTest.cpp')
-rw-r--r--tests/SkColor4fTest.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/tests/SkColor4fTest.cpp b/tests/SkColor4fTest.cpp
index 00581cc1e6..ea9a80f134 100644
--- a/tests/SkColor4fTest.cpp
+++ b/tests/SkColor4fTest.cpp
@@ -125,23 +125,26 @@ static SkShader* make_cf_sh() {
}
static void compare_spans(const SkPM4f span4f[], const SkPMColor span4b[], int count,
- skiatest::Reporter* reporter) {
+ skiatest::Reporter* reporter, float tolerance = 1.0f/255) {
for (int i = 0; i < count; ++i) {
SkPM4f c0 = SkPM4f::FromPMColor(span4b[i]);
SkPM4f c1 = span4f[i];
- REPORTER_ASSERT(reporter, nearly_equal(c0, c1, 1.0f/255));
+ REPORTER_ASSERT(reporter, nearly_equal(c0, c1, tolerance));
}
}
DEF_TEST(Color4f_shader, reporter) {
struct {
- SkShader* (*fFact)();
- bool fSupports4f;
+ SkShader* (*fFact)();
+ bool fSupports4f;
+ float fTolerance;
} recs[] = {
- { make_color_sh, true },
- { make_grad_sh, false },
- { make_image_sh, false },
- { make_cf_sh, true },
+ { make_color_sh, true, 1.0f/255 },
+ // PMColor 4f gradients are interpolated in 255-multiplied values, so we need a
+ // slightly relaxed tolerance to accommodate the cumulative precision deviation.
+ { make_grad_sh, true, 1.001f/255 },
+ { make_image_sh, false, 1.0f/255 },
+ { make_cf_sh, true, 1.0f/255 },
};
SkPaint paint;
@@ -161,7 +164,7 @@ DEF_TEST(Color4f_shader, reporter) {
ctx->shadeSpan4f(0, 0, buffer4f, N);
SkPMColor buffer4b[N];
ctx->shadeSpan(0, 0, buffer4b, N);
- compare_spans(buffer4f, buffer4b, N, reporter);
+ compare_spans(buffer4f, buffer4b, N, reporter, rec.fTolerance);
}
ctx->~Context();
}