Index: src/opts/SkBlitMask_opts_arm.cpp |
diff --git a/src/opts/SkBlitMask_opts_arm.cpp b/src/opts/SkBlitMask_opts_arm.cpp |
index 0ad091938712e18b58a6b6917f1abb30536e4a5d..2bf760313c1edaa09072bab379d6bb01f33c6362 100644 |
--- a/src/opts/SkBlitMask_opts_arm.cpp |
+++ b/src/opts/SkBlitMask_opts_arm.cpp |
@@ -1,14 +1,39 @@ |
+#include "SkColor.h" |
+#include "SkColorPriv.h" |
#include "SkBlitMask.h" |
+#include "SkUtilsArm.h" |
+#include "SkBlitMask_opts_arm_neon.h" |
SkBlitMask::ColorProc SkBlitMask::PlatformColorProcs(SkBitmap::Config dstConfig, |
SkMask::Format maskFormat, |
SkColor color) { |
+#if SK_ARM_NEON_IS_NONE |
+ return NULL; |
+#else |
+#if SK_ARM_NEON_IS_DYNAMIC |
+ if (!sk_cpu_arm_has_neon()) { |
+ return NULL; |
+ } |
+#endif |
+ if ((SkBitmap::kARGB_8888_Config == dstConfig) && |
+ (SkMask::kA8_Format == maskFormat)) { |
+ return D32_A8_Factory_neon(color); |
+ } |
+#endif |
+ |
+ // We don't need to handle the SkMask::kLCD16_Format case as the default |
+ // LCD16 will call us through SkBlitMask::PlatformBlitRowProcs16() |
+ |
return NULL; |
} |
SkBlitMask::BlitLCD16RowProc SkBlitMask::PlatformBlitRowProcs16(bool isOpaque) { |
- return NULL; |
+ if (isOpaque) { |
+ return SK_ARM_NEON_WRAP(SkBlitLCD16OpaqueRow); |
+ } else { |
+ return SK_ARM_NEON_WRAP(SkBlitLCD16Row); |
+ } |
} |
SkBlitMask::RowProc SkBlitMask::PlatformRowProcs(SkBitmap::Config dstConfig, |