aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkXfermode.cpp
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@google.com>2015-04-03 12:47:48 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-04-03 12:47:48 -0700
commite758579d4f85f4615d62e87847dd3f8b38e3a6e2 (patch)
tree92c840da319692114516ad4d3b83d31f079573ee /src/core/SkXfermode.cpp
parent6b5dab889579f1cc9e1b5278f4ecdc4c63fe78c9 (diff)
Revert of Code's more readable when SkPMFloat is an Sk4f. (patchset #3 id:40001 of https://codereview.chromium.org/1061603002/)
Reason for revert: missed some neon code Original issue's description: > Code's more readable when SkPMFloat is an Sk4f. > #floats > > BUG=skia: > BUG=skia:3592 > > Committed: https://skia.googlesource.com/skia/+/6b5dab889579f1cc9e1b5278f4ecdc4c63fe78c9 TBR=reed@google.com,mtklein@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1056143004
Diffstat (limited to 'src/core/SkXfermode.cpp')
-rw-r--r--src/core/SkXfermode.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index 1d502d987c..5e9055c67d 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -1236,7 +1236,9 @@ static inline SkPMFloat check_as_pmfloat(const Sk4f& value) {
struct SrcATop4f {
static SkPMFloat Xfer(const SkPMFloat& src, const SkPMFloat& dst) {
const Sk4f inv255(gInv255);
- return check_as_pmfloat(dst + (src * Sk4f(dst.a()) - dst * Sk4f(src.a())) * inv255);
+ Sk4f s4 = src;
+ Sk4f d4 = dst;
+ return check_as_pmfloat(d4 + (s4 * Sk4f(dst.a()) - d4 * Sk4f(src.a())) * inv255);
}
static const bool kFoldCoverageIntoSrcAlpha = true;
static const SkXfermode::Mode kMode = SkXfermode::kSrcATop_Mode;
@@ -1246,7 +1248,9 @@ struct SrcATop4f {
struct DstATop4f {
static SkPMFloat Xfer(const SkPMFloat& src, const SkPMFloat& dst) {
const Sk4f inv255(gInv255);
- return check_as_pmfloat(src + (dst * Sk4f(src.a()) - src * Sk4f(dst.a())) * inv255);
+ Sk4f s4 = src;
+ Sk4f d4 = dst;
+ return check_as_pmfloat(s4 + (d4 * Sk4f(src.a()) - s4 * Sk4f(dst.a())) * inv255);
}
static const bool kFoldCoverageIntoSrcAlpha = false;
static const SkXfermode::Mode kMode = SkXfermode::kDstATop_Mode;
@@ -1256,7 +1260,9 @@ struct DstATop4f {
struct Xor4f {
static SkPMFloat Xfer(const SkPMFloat& src, const SkPMFloat& dst) {
const Sk4f inv255(gInv255);
- return check_as_pmfloat(src + dst - (src * Sk4f(dst.a()) + dst * Sk4f(src.a())) * inv255);
+ Sk4f s4 = src;
+ Sk4f d4 = dst;
+ return check_as_pmfloat(s4 + d4 - (s4 * Sk4f(dst.a()) + d4 * Sk4f(src.a())) * inv255);
}
static const bool kFoldCoverageIntoSrcAlpha = true;
static const SkXfermode::Mode kMode = SkXfermode::kXor_Mode;
@@ -1265,7 +1271,9 @@ struct Xor4f {
// kPlus_Mode [Sa + Da, Sc + Dc]
struct Plus4f {
static SkPMFloat Xfer(const SkPMFloat& src, const SkPMFloat& dst) {
- return check_as_pmfloat(clamp_255(src + dst));
+ Sk4f s4 = src;
+ Sk4f d4 = dst;
+ return check_as_pmfloat(clamp_255(s4 + d4));
}
static const bool kFoldCoverageIntoSrcAlpha = true;
static const SkXfermode::Mode kMode = SkXfermode::kPlus_Mode;
@@ -1275,7 +1283,9 @@ struct Plus4f {
struct Modulate4f {
static SkPMFloat Xfer(const SkPMFloat& src, const SkPMFloat& dst) {
const Sk4f inv255(gInv255);
- return check_as_pmfloat(src * dst * inv255);
+ Sk4f s4 = src;
+ Sk4f d4 = dst;
+ return check_as_pmfloat(s4 * d4 * inv255);
}
static const bool kFoldCoverageIntoSrcAlpha = false;
static const SkXfermode::Mode kMode = SkXfermode::kModulate_Mode;
@@ -1285,7 +1295,9 @@ struct Modulate4f {
struct Screen4f {
static SkPMFloat Xfer(const SkPMFloat& src, const SkPMFloat& dst) {
const Sk4f inv255(gInv255);
- return check_as_pmfloat(src + dst - src * dst * inv255);
+ Sk4f s4 = src;
+ Sk4f d4 = dst;
+ return check_as_pmfloat(s4 + d4 - s4 * d4 * inv255);
}
static const bool kFoldCoverageIntoSrcAlpha = true;
static const SkXfermode::Mode kMode = SkXfermode::kScreen_Mode;