aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/Sk4px.h
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2015-05-13 14:08:45 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-05-13 14:08:45 -0700
commit2d8d33e9e825f9919875be64a71b746189b385be (patch)
treefd07661c53e4e6a796a43bdf4bc3b433880d1caf /src/core/Sk4px.h
parent177cb8498662600e9866e260d52d6a2401ad78a8 (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.h17
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;