Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Unified Diff: src/core/SkXfermode4f.cpp

Issue 1663643002: extend gm to test aa[] parameter on xfer4f procs (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: don't pass bad flags to factory Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gm/xfer4f.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkXfermode4f.cpp
diff --git a/src/core/SkXfermode4f.cpp b/src/core/SkXfermode4f.cpp
index 1bf66a2b6998afed75158e842f3ac6b7445783a3..0ec3ec15f79e2e26e857ff3ce4cd357a66b79927 100644
--- a/src/core/SkXfermode4f.cpp
+++ b/src/core/SkXfermode4f.cpp
@@ -39,10 +39,6 @@ template <DstType D> uint32_t store_dst(const Sk4f& x4) {
return (D == kSRGB_Dst) ? Sk4f_toS32(x4) : Sk4f_toL32(x4);
}
-static uint32_t linear_unit_to_srgb_32(const Sk4f& l4) {
- return Sk4f_toL32(l4);
-}
-
static Sk4f linear_unit_to_srgb_255f(const Sk4f& l4) {
return linear_to_srgb(l4) * Sk4f(255) + Sk4f(0.5f);
}
@@ -268,8 +264,8 @@ template <DstType D> void srcover_n(const SkXfermode::PM4fState& state, uint32_t
static void srcover_linear_dst_1(const SkXfermode::PM4fState& state, uint32_t dst[],
const SkPM4f& src, int count, const SkAlpha aa[]) {
- Sk4f s4 = Sk4f::Load(src.fVec);
- Sk4f dst_scale = Sk4f(1 - get_alpha(s4));
+ const Sk4f s4 = Sk4f::Load(src.fVec);
+ const Sk4f dst_scale = Sk4f(1 - get_alpha(s4));
if (aa) {
for (int i = 0; i < count; ++i) {
@@ -280,31 +276,31 @@ static void srcover_linear_dst_1(const SkXfermode::PM4fState& state, uint32_t ds
Sk4f d4 = Sk4f_fromL32(dst[i]);
Sk4f r4;
if (a != 0xFF) {
- s4 = scale_by_coverage(s4, a);
- r4 = s4 + d4 * Sk4f(1 - get_alpha(s4));
+ Sk4f s4_aa = scale_by_coverage(s4, a);
+ r4 = s4_aa + d4 * Sk4f(1 - get_alpha(s4_aa));
} else {
r4 = s4 + d4 * dst_scale;
}
dst[i] = Sk4f_toL32(r4);
}
} else {
- s4 = s4 * Sk4f(255) + Sk4f(0.5f); // +0.5 to pre-bias for rounding
+ const Sk4f s4_255 = s4 * Sk4f(255) + Sk4f(0.5f); // +0.5 to pre-bias for rounding
while (count >= 4) {
Sk4f d0 = to_4f(dst[0]);
Sk4f d1 = to_4f(dst[1]);
Sk4f d2 = to_4f(dst[2]);
Sk4f d3 = to_4f(dst[3]);
Sk4f_ToBytes((uint8_t*)dst,
- s4 + d0 * dst_scale,
- s4 + d1 * dst_scale,
- s4 + d2 * dst_scale,
- s4 + d3 * dst_scale);
+ s4_255 + d0 * dst_scale,
+ s4_255 + d1 * dst_scale,
+ s4_255 + d2 * dst_scale,
+ s4_255 + d3 * dst_scale);
dst += 4;
count -= 4;
}
for (int i = 0; i < count; ++i) {
Sk4f d4 = to_4f(dst[i]);
- dst[i] = to_4b(s4 + d4 * dst_scale);
+ dst[i] = to_4b(s4_255 + d4 * dst_scale);
}
}
}
@@ -323,12 +319,12 @@ static void srcover_srgb_dst_1(const SkXfermode::PM4fState& state, uint32_t dst[
Sk4f d4 = srgb_4b_to_linear_unit(dst[i]);
Sk4f r4;
if (a != 0xFF) {
- s4 = scale_by_coverage(s4, a);
- r4 = s4 + d4 * Sk4f(1 - get_alpha(s4));
+ const Sk4f s4_aa = scale_by_coverage(s4, a);
+ r4 = s4_aa + d4 * Sk4f(1 - get_alpha(s4_aa));
} else {
r4 = s4 + d4 * dst_scale;
}
- dst[i] = linear_unit_to_srgb_32(r4);
+ dst[i] = to_4b(linear_unit_to_srgb_255f(r4));
}
} else {
while (count >= 4) {
« no previous file with comments | « gm/xfer4f.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698