diff options
Diffstat (limited to 'src/opts/SkXfermode_opts_arm_neon.cpp')
-rw-r--r-- | src/opts/SkXfermode_opts_arm_neon.cpp | 13 |
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; } |