Index: src/opts/SkColor_opts_SSE2.h |
diff --git a/src/opts/SkColor_opts_SSE2.h b/src/opts/SkColor_opts_SSE2.h |
index 970abb859b980dff84dd4f1085ddd967ac2b7d3e..feb1d98f8df3c894b912ea7279c15c12b6e51995 100644 |
--- a/src/opts/SkColor_opts_SSE2.h |
+++ b/src/opts/SkColor_opts_SSE2.h |
@@ -206,7 +206,14 @@ static inline __m128i SkPixel32ToPixel16_ToU16_SSE2(const __m128i& src_pixel1, |
return d_pixel; |
} |
-// Portable version SkBlendARGB32 is in SkColorPriv.h. |
+// Portable version is SkPMSrcOver in SkColorPriv.h. |
+static inline __m128i SkPMSrcOver_SSE2(const __m128i& src, const __m128i& dst) { |
+ return _mm_add_epi32(src, |
+ SkAlphaMulQ_SSE2(dst, _mm_sub_epi32(_mm_set1_epi32(256), |
+ SkGetPackedA32_SSE2(src)))); |
+} |
+ |
+// Portable version is SkBlendARGB32 in SkColorPriv.h. |
static inline __m128i SkBlendARGB32_SSE2(const __m128i& src, const __m128i& dst, |
const __m128i& aa) { |
__m128i src_scale = SkAlpha255To256_SSE2(aa); |