aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/opts/SkBlurImage_opts_neon.cpp8
-rw-r--r--src/opts/SkBlurImage_opts_neon.h13
-rw-r--r--src/opts/opts_check_arm.cpp17
3 files changed, 34 insertions, 4 deletions
diff --git a/src/opts/SkBlurImage_opts_neon.cpp b/src/opts/SkBlurImage_opts_neon.cpp
index a1d9cc18ac..14907ea1d2 100644
--- a/src/opts/SkBlurImage_opts_neon.cpp
+++ b/src/opts/SkBlurImage_opts_neon.cpp
@@ -92,10 +92,10 @@ void SkBoxBlur_NEON(const SkPMColor* src, int srcStride, SkPMColor* dst, int ker
} // namespace
-bool SkBoxBlurGetPlatformProcs(SkBoxBlurProc* boxBlurX,
- SkBoxBlurProc* boxBlurY,
- SkBoxBlurProc* boxBlurXY,
- SkBoxBlurProc* boxBlurYX) {
+bool SkBoxBlurGetPlatformProcs_NEON(SkBoxBlurProc* boxBlurX,
+ SkBoxBlurProc* boxBlurY,
+ SkBoxBlurProc* boxBlurXY,
+ SkBoxBlurProc* boxBlurYX) {
*boxBlurX = SkBoxBlur_NEON<kX, kX>;
*boxBlurY = SkBoxBlur_NEON<kY, kY>;
*boxBlurXY = SkBoxBlur_NEON<kX, kY>;
diff --git a/src/opts/SkBlurImage_opts_neon.h b/src/opts/SkBlurImage_opts_neon.h
new file mode 100644
index 0000000000..7fbe9633e6
--- /dev/null
+++ b/src/opts/SkBlurImage_opts_neon.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkBlurImage_opts.h"
+
+bool SkBoxBlurGetPlatformProcs_NEON(SkBoxBlurProc* boxBlurX,
+ SkBoxBlurProc* boxBlurY,
+ SkBoxBlurProc* boxBlurXY,
+ SkBoxBlurProc* boxBlurYX);
diff --git a/src/opts/opts_check_arm.cpp b/src/opts/opts_check_arm.cpp
index a9afa75b07..a9f7db7cb0 100644
--- a/src/opts/opts_check_arm.cpp
+++ b/src/opts/opts_check_arm.cpp
@@ -19,6 +19,7 @@
#include "SkUtilsArm.h"
#include "SkMorphology_opts.h"
#include "SkMorphology_opts_neon.h"
+#include "SkBlurImage_opts_neon.h"
#if defined(SK_CPU_LENDIAN) && !SK_ARM_NEON_IS_NONE
extern "C" void memset16_neon(uint16_t dst[], uint16_t value, int count);
@@ -91,3 +92,19 @@ SkMorphologyProc SkMorphologyGetPlatformProc(SkMorphologyProcType type) {
}
#endif
}
+
+bool SkBoxBlurGetPlatformProcs(SkBoxBlurProc* boxBlurX,
+ SkBoxBlurProc* boxBlurY,
+ SkBoxBlurProc* boxBlurXY,
+ SkBoxBlurProc* boxBlurYX) {
+#if SK_ARM_NEON_IS_NONE
+ return NULL;
+#else
+#if SK_ARM_NEON_IS_DYNAMIC
+ if (!sk_cpu_arm_has_neon()) {
+ return NULL;
+ }
+#endif
+ return SkBoxBlurGetPlatformProcs_NEON(boxBlurX, boxBlurY, boxBlurXY, boxBlurYX);
+#endif
+}