diff options
author | mtklein <mtklein@chromium.org> | 2015-05-13 14:08:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-13 14:08:45 -0700 |
commit | 2d8d33e9e825f9919875be64a71b746189b385be (patch) | |
tree | fd07661c53e4e6a796a43bdf4bc3b433880d1caf /src/core/Sk4px.h | |
parent | 177cb8498662600e9866e260d52d6a2401ad78a8 (diff) |
Sk4px: SrcATop, DstATop, Xor, Multiply
SSE runs 2-3x faster (than 4f), NEON runs 1.2-1.4x faster (than existing NEON).
Small diffs on {aarectmodes, imagefilters_xfermodes, hairmodes, mixed_xfermodes} only on AA edges due to precision drop.
BUG=skia:
Review URL: https://codereview.chromium.org/1132853005
Diffstat (limited to 'src/core/Sk4px.h')
-rw-r--r-- | src/core/Sk4px.h | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/core/Sk4px.h b/src/core/Sk4px.h index af078ca92b..5537b90230 100644 --- a/src/core/Sk4px.h +++ b/src/core/Sk4px.h @@ -14,21 +14,22 @@ // 1, 2 or 4 SkPMColors, generally vectorized. class Sk4px : public Sk16b { public: - Sk4px(SkAlpha a) : INHERITED(a) {} // Duplicate 16x. - Sk4px(SkPMColor); // Duplicate 4x. + Sk4px(SkAlpha a) : INHERITED(a) {} // Duplicate 16x: a -> aaaa aaaa aaaa aaaa + Sk4px(SkPMColor); // Duplicate 4x: argb -> argb argb argb argb Sk4px(const Sk16b& v) : INHERITED(v) {} - // ARGB argb XYZW xyzw -> AAAA aaaa XXXX xxxx - Sk4px alphas() const; + Sk4px alphas() const; // ARGB argb XYZW xyzw -> AAAA aaaa XXXX xxxx + + Sk4px inv() const { return Sk16b(255) - *this; } // When loading or storing fewer than 4 SkPMColors, we use the low lanes. - static Sk4px Load4(const SkPMColor[4]); - static Sk4px Load2(const SkPMColor[2]); - static Sk4px Load1(const SkPMColor[1]); + static Sk4px Load4(const SkPMColor[4]); // PMColor[4] -> ARGB argb XYZW xyzw + static Sk4px Load2(const SkPMColor[2]); // PMColor[2] -> ARGB argb ???? ???? + static Sk4px Load1(const SkPMColor[1]); // PMColor[1] -> ARGB ???? ???? ???? // Ditto for Alphas... Load2Alphas fills the low two lanes of Sk4px. static Sk4px Load4Alphas(const SkAlpha[4]); // AaXx -> AAAA aaaa XXXX xxxx - static Sk4px Load2Alphas(const SkAlpha[2]); // Aa -> AAAA aaaa 0000 0000 + static Sk4px Load2Alphas(const SkAlpha[2]); // Aa -> AAAA aaaa ???? ???? void store4(SkPMColor[4]) const; void store2(SkPMColor[2]) const; |