aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2015-07-14 10:54:19 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-07-14 10:54:19 -0700
commit4be181e304d2b280c6801bd13369cfba236d1a66 (patch)
treeae0510f8a6504c3333582fa004e961a8771a2d99 /tests
parenta5517e2b190a8083b38964972b031c13e99f1012 (diff)
3-15% speedup to HardLight / Overlay xfermodes.
While investigating my bug (skia:4052) I saw this TODO and figured it'd make me feel better about an otherwise unsuccessful investigation. This speeds up HardLight and Overlay (same code) by about 15% with SSE, mostly by rewriting the logic from 1 cheap comparison and 2 expensive div255() calls to 2 cheap comparisons and 1 expensive div255(). NEON speeds up by a more modest ~3%. BUG=skia: Review URL: https://codereview.chromium.org/1230663005
Diffstat (limited to 'tests')
-rw-r--r--tests/SkNxTest.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/SkNxTest.cpp b/tests/SkNxTest.cpp
index 58932148cb..4005d2518f 100644
--- a/tests/SkNxTest.cpp
+++ b/tests/SkNxTest.cpp
@@ -192,3 +192,19 @@ DEF_TEST(Sk4px_muldiv255round, r) {
}
}
}
+
+DEF_TEST(Sk4px_widening, r) {
+ SkPMColor colors[] = {
+ SkPreMultiplyColor(0xff00ff00),
+ SkPreMultiplyColor(0x40008000),
+ SkPreMultiplyColor(0x7f020406),
+ SkPreMultiplyColor(0x00000000),
+ };
+ auto packed = Sk4px::Load4(colors);
+
+ auto wideLo = packed.widenLo(),
+ wideHi = packed.widenHi(),
+ wideLoHi = packed.widenLoHi(),
+ wideLoHiAlt = wideLo + wideHi;
+ REPORTER_ASSERT(r, 0 == memcmp(&wideLoHi, &wideLoHiAlt, sizeof(wideLoHi)));
+}