aboutsummaryrefslogtreecommitdiffstats
path: root/src/opts/SkXfermode_opts_arm_neon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/opts/SkXfermode_opts_arm_neon.cpp')
-rw-r--r--src/opts/SkXfermode_opts_arm_neon.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/opts/SkXfermode_opts_arm_neon.cpp b/src/opts/SkXfermode_opts_arm_neon.cpp
index 12c2f57d4f..1759429c57 100644
--- a/src/opts/SkXfermode_opts_arm_neon.cpp
+++ b/src/opts/SkXfermode_opts_arm_neon.cpp
@@ -1,3 +1,5 @@
+// Copyright 2013 unknown
+
#include "SkXfermode.h"
#include "SkXfermode_proccoeff.h"
#include "SkColorPriv.h"
@@ -5,6 +7,7 @@
#include <arm_neon.h>
#include "SkColor_opts_neon.h"
#include "SkXfermode_opts_arm_neon.h"
+#include "Sk4pxXfermode.h"
#define SkAlphaMulAlpha(a, b) SkMulDiv255Round(a, b)
@@ -1010,11 +1013,11 @@ SK_COMPILE_ASSERT(
SkProcCoeffXfermode* SkPlatformXfermodeFactory_impl_neon(const ProcCoeff& rec,
SkXfermode::Mode mode) {
-
- void* procSIMD = reinterpret_cast<void*>(gNEONXfermodeProcs[mode]);
-
- if (procSIMD != NULL) {
- return SkNEW_ARGS(SkNEONProcCoeffXfermode, (rec, mode, procSIMD));
+ if (auto xfermode = SkCreate4pxXfermode(rec, mode)) {
+ return xfermode;
+ }
+ if (auto proc = gNEONXfermodeProcs[mode]) {
+ return SkNEW_ARGS(SkNEONProcCoeffXfermode, (rec, mode, (void*)proc));
}
return NULL;
}