OLD | NEW |
1 #include "SkXfermode.h" | 1 #include "SkXfermode.h" |
2 #include "SkXfermode_proccoeff.h" | 2 #include "SkXfermode_proccoeff.h" |
3 #include "SkColorPriv.h" | 3 #include "SkColorPriv.h" |
4 | 4 |
5 #include <arm_neon.h> | 5 #include <arm_neon.h> |
6 #include "SkColor_opts_neon.h" | 6 #include "SkColor_opts_neon.h" |
7 #include "SkXfermode_opts_arm_neon.h" | 7 #include "SkXfermode_opts_arm_neon.h" |
8 | 8 |
9 #define SkAlphaMulAlpha(a, b) SkMulDiv255Round(a, b) | 9 #define SkAlphaMulAlpha(a, b) SkMulDiv255Round(a, b) |
10 | 10 |
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 | 683 |
684 return ret; | 684 return ret; |
685 } | 685 } |
686 | 686 |
687 //////////////////////////////////////////////////////////////////////////////// | 687 //////////////////////////////////////////////////////////////////////////////// |
688 | 688 |
689 typedef uint8x8x4_t (*SkXfermodeProcSIMD)(uint8x8x4_t src, uint8x8x4_t dst); | 689 typedef uint8x8x4_t (*SkXfermodeProcSIMD)(uint8x8x4_t src, uint8x8x4_t dst); |
690 | 690 |
691 extern SkXfermodeProcSIMD gNEONXfermodeProcs[]; | 691 extern SkXfermodeProcSIMD gNEONXfermodeProcs[]; |
692 | 692 |
693 SkNEONProcCoeffXfermode::SkNEONProcCoeffXfermode(SkFlattenableReadBuffer& buffer
) | 693 SkNEONProcCoeffXfermode::SkNEONProcCoeffXfermode(SkReadBuffer& buffer) |
694 : INHERITED(buffer) { | 694 : INHERITED(buffer) { |
695 fProcSIMD = reinterpret_cast<void*>(gNEONXfermodeProcs[this->getMode()]); | 695 fProcSIMD = reinterpret_cast<void*>(gNEONXfermodeProcs[this->getMode()]); |
696 } | 696 } |
697 | 697 |
698 void SkNEONProcCoeffXfermode::xfer32(SkPMColor dst[], const SkPMColor src[], | 698 void SkNEONProcCoeffXfermode::xfer32(SkPMColor dst[], const SkPMColor src[], |
699 int count, const SkAlpha aa[]) const { | 699 int count, const SkAlpha aa[]) const { |
700 SkASSERT(dst && src && count >= 0); | 700 SkASSERT(dst && src && count >= 0); |
701 | 701 |
702 SkXfermodeProc proc = this->getProc(); | 702 SkXfermodeProc proc = this->getProc(); |
703 SkXfermodeProcSIMD procSIMD = reinterpret_cast<SkXfermodeProcSIMD>(fProcSIMD
); | 703 SkXfermodeProcSIMD procSIMD = reinterpret_cast<SkXfermodeProcSIMD>(fProcSIMD
); |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
928 | 928 |
929 if (procSIMD != NULL) { | 929 if (procSIMD != NULL) { |
930 return SkNEW_ARGS(SkNEONProcCoeffXfermode, (rec, mode, procSIMD)); | 930 return SkNEW_ARGS(SkNEONProcCoeffXfermode, (rec, mode, procSIMD)); |
931 } | 931 } |
932 return NULL; | 932 return NULL; |
933 } | 933 } |
934 | 934 |
935 SkXfermodeProc SkPlatformXfermodeProcFactory_impl_neon(SkXfermode::Mode mode) { | 935 SkXfermodeProc SkPlatformXfermodeProcFactory_impl_neon(SkXfermode::Mode mode) { |
936 return gNEONXfermodeProcs1[mode]; | 936 return gNEONXfermodeProcs1[mode]; |
937 } | 937 } |
OLD | NEW |