|
1 #ifndef SkXfermode_opts_arm_neon_DEFINED |
|
2 #define SkXfermode_opts_arm_neon_DEFINED |
|
3 |
|
4 #include "SkXfermode_proccoeff.h" |
|
5 |
|
6 class SkNEONProcCoeffXfermode : public SkProcCoeffXfermode { |
|
7 public: |
|
8 SkNEONProcCoeffXfermode(const ProcCoeff& rec, SkXfermode::Mode mode, |
|
9 void* procSIMD) |
|
10 : INHERITED(rec, mode), fProcSIMD(procSIMD) {} |
|
11 |
|
12 virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count, |
|
13 const SkAlpha aa[]) const SK_OVERRIDE; |
|
14 virtual void xfer16(uint16_t* SK_RESTRICT dst, const SkPMColor* SK_RESTRICT src, |
|
15 int count, const SkAlpha* SK_RESTRICT aa) const SK_OVERRIDE; |
|
16 |
|
17 SK_TO_STRING_OVERRIDE() |
|
18 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkNEONProcCoeffXfermode) |
|
19 |
|
20 private: |
|
21 SkNEONProcCoeffXfermode(SkReadBuffer& buffer); |
|
22 |
|
23 // void* is used to avoid pulling arm_neon.h in the core and having to build |
|
24 // it with -mfpu=neon. |
|
25 void* fProcSIMD; |
|
26 typedef SkProcCoeffXfermode INHERITED; |
|
27 }; |
|
28 |
|
29 extern SkPMColor srcatop_modeproc_neon(SkPMColor src, SkPMColor dst); |
|
30 extern SkPMColor dstatop_modeproc_neon(SkPMColor src, SkPMColor dst); |
|
31 extern SkPMColor xor_modeproc_neon(SkPMColor src, SkPMColor dst); |
|
32 extern SkPMColor plus_modeproc_neon(SkPMColor src, SkPMColor dst); |
|
33 extern SkPMColor modulate_modeproc_neon(SkPMColor src, SkPMColor dst); |
|
34 |
|
35 #endif //#ifdef SkXfermode_opts_arm_neon_DEFINED |