Index: src/core/SkXfermode.cpp |
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp |
index 20d88162a43d2b0d3bafa005c1695113ef947cd4..0623f1a30a1431059371724c3deafa79763fbfa4 100644 |
--- a/src/core/SkXfermode.cpp |
+++ b/src/core/SkXfermode.cpp |
@@ -124,6 +124,7 @@ static SkPMColor dstout_modeproc(SkPMColor src, SkPMColor dst) { |
return SkAlphaMulQ(dst, SkAlpha255To256(255 - SkGetPackedA32(src))); |
} |
+#if !SK_ARM_NEON_IS_ALWAYS |
djsollen
2013/12/05 15:11:36
I would like to remove this. I think we could do
kevin.petit.not.used.account
2013/12/05 17:02:46
Done. I've used a factory approach, like suggested
|
// kSrcATop_Mode, //!< [Da, Sc * Da + (1 - Sa) * Dc] |
static SkPMColor srcatop_modeproc(SkPMColor src, SkPMColor dst) { |
unsigned sa = SkGetPackedA32(src); |
@@ -189,6 +190,7 @@ static SkPMColor modulate_modeproc(SkPMColor src, SkPMColor dst) { |
int b = SkAlphaMulAlpha(SkGetPackedB32(src), SkGetPackedB32(dst)); |
return SkPackARGB32(a, r, g, b); |
} |
+#endif |
static inline int srcover_byte(int a, int b) { |
return a + b - SkAlphaMulAlpha(a, b); |
@@ -631,36 +633,36 @@ static SkPMColor luminosity_modeproc(SkPMColor src, SkPMColor dst) { |
} |
const ProcCoeff gProcCoeffs[] = { |
- { clear_modeproc, SkXfermode::kZero_Coeff, SkXfermode::kZero_Coeff }, |
- { src_modeproc, SkXfermode::kOne_Coeff, SkXfermode::kZero_Coeff }, |
- { dst_modeproc, SkXfermode::kZero_Coeff, SkXfermode::kOne_Coeff }, |
- { srcover_modeproc, SkXfermode::kOne_Coeff, SkXfermode::kISA_Coeff }, |
- { dstover_modeproc, SkXfermode::kIDA_Coeff, SkXfermode::kOne_Coeff }, |
- { srcin_modeproc, SkXfermode::kDA_Coeff, SkXfermode::kZero_Coeff }, |
- { dstin_modeproc, SkXfermode::kZero_Coeff, SkXfermode::kSA_Coeff }, |
- { srcout_modeproc, SkXfermode::kIDA_Coeff, SkXfermode::kZero_Coeff }, |
- { dstout_modeproc, SkXfermode::kZero_Coeff, SkXfermode::kISA_Coeff }, |
- { srcatop_modeproc, SkXfermode::kDA_Coeff, SkXfermode::kISA_Coeff }, |
- { dstatop_modeproc, SkXfermode::kIDA_Coeff, SkXfermode::kSA_Coeff }, |
- { xor_modeproc, SkXfermode::kIDA_Coeff, SkXfermode::kISA_Coeff }, |
- |
- { plus_modeproc, SkXfermode::kOne_Coeff, SkXfermode::kOne_Coeff }, |
- { modulate_modeproc,SkXfermode::kZero_Coeff, SkXfermode::kSC_Coeff }, |
- { screen_modeproc, SkXfermode::kOne_Coeff, SkXfermode::kISC_Coeff }, |
- { overlay_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { darken_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { lighten_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { colordodge_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { colorburn_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { hardlight_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { softlight_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { difference_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { exclusion_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { multiply_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { hue_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { saturation_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { color_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
- { luminosity_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { clear_modeproc, SkXfermode::kZero_Coeff, SkXfermode::kZero_Coeff }, |
+ { src_modeproc, SkXfermode::kOne_Coeff, SkXfermode::kZero_Coeff }, |
+ { dst_modeproc, SkXfermode::kZero_Coeff, SkXfermode::kOne_Coeff }, |
+ { srcover_modeproc, SkXfermode::kOne_Coeff, SkXfermode::kISA_Coeff }, |
+ { dstover_modeproc, SkXfermode::kIDA_Coeff, SkXfermode::kOne_Coeff }, |
+ { srcin_modeproc, SkXfermode::kDA_Coeff, SkXfermode::kZero_Coeff }, |
+ { dstin_modeproc, SkXfermode::kZero_Coeff, SkXfermode::kSA_Coeff }, |
+ { srcout_modeproc, SkXfermode::kIDA_Coeff, SkXfermode::kZero_Coeff }, |
+ { dstout_modeproc, SkXfermode::kZero_Coeff, SkXfermode::kISA_Coeff }, |
+ { SK_ARM_NEON_WRAP(srcatop_modeproc), SkXfermode::kDA_Coeff, SkXfermode::kISA_Coeff }, |
djsollen
2013/12/05 14:17:05
this is going to be problematic on chrome as their
kevin.petit.not.used.account
2013/12/05 17:02:46
I thought that would be problematic in a way or an
|
+ { SK_ARM_NEON_WRAP(dstatop_modeproc), SkXfermode::kIDA_Coeff, SkXfermode::kSA_Coeff }, |
+ { SK_ARM_NEON_WRAP(xor_modeproc), SkXfermode::kIDA_Coeff, SkXfermode::kISA_Coeff }, |
+ |
+ { SK_ARM_NEON_WRAP(plus_modeproc), SkXfermode::kOne_Coeff, SkXfermode::kOne_Coeff }, |
+ { SK_ARM_NEON_WRAP(modulate_modeproc), SkXfermode::kZero_Coeff, SkXfermode::kSC_Coeff }, |
+ { screen_modeproc, SkXfermode::kOne_Coeff, SkXfermode::kISC_Coeff }, |
+ { overlay_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { darken_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { lighten_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { colordodge_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { colorburn_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { hardlight_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { softlight_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { difference_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { exclusion_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { multiply_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { hue_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { saturation_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { color_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
+ { luminosity_modeproc, CANNOT_USE_COEFF, CANNOT_USE_COEFF }, |
}; |
/////////////////////////////////////////////////////////////////////////////// |