remove inv()
inv(x) -> 1-x
Change-Id: If64591f4f3ce15eb487222f052fc4bd1bac97977
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/280316
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
diff --git a/src/core/SkVM.cpp b/src/core/SkVM.cpp
index 04b35fa..e196c8f 100644
--- a/src/core/SkVM.cpp
+++ b/src/core/SkVM.cpp
@@ -1257,16 +1257,16 @@
fn(src.r, dst.r),
fn(src.g, dst.g),
fn(src.b, dst.b),
- mad(dst.a, inv(src.a), src.a), // srcover for alpha
+ mad(dst.a, 1-src.a, src.a), // srcover for alpha
};
};
auto non_sep = [&](auto R, auto G, auto B) {
return Color{
- add(mma(src.r, inv(dst.a), dst.r, inv(src.a)), R),
- add(mma(src.g, inv(dst.a), dst.g, inv(src.a)), G),
- add(mma(src.b, inv(dst.a), dst.b, inv(src.a)), B),
- mad(dst.a, inv(src.a), src.a), // srcover
+ add(mma(src.r, 1-dst.a, dst.r, 1-src.a), R),
+ add(mma(src.g, 1-dst.a, dst.g, 1-src.a), G),
+ add(mma(src.b, 1-dst.a, dst.b, 1-src.a), B),
+ mad(dst.a,1-src.a, src.a), // srcover
};
};
@@ -1281,7 +1281,7 @@
case SkBlendMode::kDstOver: std::swap(src, dst); // fall-through
case SkBlendMode::kSrcOver:
return apply_rgba([&](auto s, auto d) {
- return mad(d, inv(src.a), s);
+ return mad(d,1-src.a, s);
});
case SkBlendMode::kDstIn: std::swap(src, dst); // fall-through
@@ -1293,18 +1293,18 @@
case SkBlendMode::kDstOut: std::swap(src, dst); // fall-through
case SkBlendMode::kSrcOut:
return apply_rgba([&](auto s, auto d) {
- return mul(s, inv(dst.a));
+ return mul(s, 1-dst.a);
});
case SkBlendMode::kDstATop: std::swap(src, dst); // fall-through
case SkBlendMode::kSrcATop:
return apply_rgba([&](auto s, auto d) {
- return mma(s, dst.a, d, inv(src.a));
+ return mma(s, dst.a, d, 1-src.a);
});
case SkBlendMode::kXor:
return apply_rgba([&](auto s, auto d) {
- return mma(s, inv(dst.a), d, inv(src.a));
+ return mma(s, 1-dst.a, d, 1-src.a);
});
case SkBlendMode::kPlus:
@@ -1352,9 +1352,9 @@
// TODO: divide and check for non-finite result instead of checking for s == 0.
auto mn = min(dst.a,
div(mul(sub(dst.a, d), src.a), s)),
- burn = mad(src.a, sub(dst.a, mn), mma(s, inv(dst.a), d, inv(src.a)));
- return select(eq(d, dst.a), mad(s, inv(dst.a), d),
- select(eq(s, 0.0f), mul(d, inv(src.a))
+ burn = mad(src.a, sub(dst.a, mn), mma(s, 1-dst.a, d, 1-src.a));
+ return select(eq(d, dst.a), mad(s, 1-dst.a, d),
+ select(eq(s, 0.0f), mul(d, 1-src.a)
, burn));
});
@@ -1363,15 +1363,15 @@
// TODO: divide and check for non-finite result instead of checking for s == sa.
auto dodge = mad(src.a, min(dst.a,
div(mul(d, src.a), sub(src.a, s))),
- mma(s, inv(dst.a), d, inv(src.a)));
- return select(eq(d, 0.0f), mul(s, inv(dst.a)),
- select(eq(s, src.a), mad(d, inv(src.a), s)
+ mma(s, 1-dst.a, d, 1-src.a));
+ return select(eq(d, 0.0f), mul(s, 1-dst.a),
+ select(eq(s, src.a), mad(d, 1-src.a, s)
, dodge));
});
case SkBlendMode::kHardLight:
return apply_rgb_srcover_a([&](auto s, auto d) {
- return add(mma(s, inv(dst.a), d, inv(src.a)),
+ return add(mma(s, 1-dst.a, d, 1-src.a),
select(lte(two(s), src.a),
two(mul(s, d)),
sub(mul(src.a, dst.a), two(mul(sub(dst.a, d), sub(src.a, s))))));
@@ -1379,7 +1379,7 @@
case SkBlendMode::kOverlay:
return apply_rgb_srcover_a([&](auto s, auto d) {
- return add(mma(s, inv(dst.a), d, inv(src.a)),
+ return add(mma(s, 1-dst.a, d, 1-src.a),
select(lte(two(d), dst.a),
two(mul(s, d)),
sub(mul(src.a, dst.a), two(mul(sub(dst.a, d), sub(src.a, s))))));
@@ -1387,7 +1387,7 @@
case SkBlendMode::kMultiply:
return apply_rgba([&](auto s, auto d) {
- return add(mma(s, inv(dst.a), d, inv(src.a)), mul(s, d));
+ return add(mma(s, 1-dst.a, d, 1-src.a), mul(s, d));
});
case SkBlendMode::kSoftLight:
@@ -1402,7 +1402,7 @@
// 3. light src, light dst?
// Used in case 1
- auto darkSrc = mul(d, mad(sub(s2, src.a), inv(m), src.a)),
+ auto darkSrc = mul(d, mad(sub(s2, src.a), 1-m, src.a)),
// Used in case 2
darkDst = mad(mad(m4, m4, m4), sub(m, 1.0f), mul(7.0f, m)),
// Used in case 3.
@@ -1411,9 +1411,9 @@
liteSrc = mad(mul(dst.a, sub(s2, src.a)),
select(lte(two(two(d)), dst.a), darkDst, liteDst),
mul(d, src.a));
- return mad(s, inv(dst.a), mad(d,
- inv(src.a),
- select(lte(s2, src.a), darkSrc, liteSrc)));
+ return mad(s, 1-dst.a, mad(d,
+ 1-src.a,
+ select(lte(s2, src.a), darkSrc, liteSrc)));
});
diff --git a/src/core/SkVM.h b/src/core/SkVM.h
index 3943d4d..d8278f9 100644
--- a/src/core/SkVM.h
+++ b/src/core/SkVM.h
@@ -504,7 +504,6 @@
F32 mad(F32 x, F32 y, F32 z) { return add(mul(x,y), z); }
F32 mad(F32a x, F32a y, F32a z) { return mad(_(x), _(y), _(z)); }
- F32 inv(F32 x) { return sub(1.0f, x); }
F32 negate(F32 x) { return sub(0.0f, x); }
F32 sqrt(F32);
diff --git a/src/effects/SkHighContrastFilter.cpp b/src/effects/SkHighContrastFilter.cpp
index 1ae0a05..83ba5cf 100644
--- a/src/effects/SkHighContrastFilter.cpp
+++ b/src/effects/SkHighContrastFilter.cpp
@@ -154,10 +154,10 @@
}
if (fConfig.fInvertStyle == InvertStyle::kInvertBrightness) {
- c = {p->inv(c.r), p->inv(c.g), p->inv(c.b), c.a};
+ c = {1-c.r, 1-c.g, 1-c.b, c.a};
} else if (fConfig.fInvertStyle == InvertStyle::kInvertLightness) {
auto [h, s, l, a] = p->to_hsla(c);
- c = p->to_rgba({h, s, p->inv(l), a});
+ c = p->to_rgba({h, s, 1-l, a});
}
if (fConfig.fContrast != 0.0) {