1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/opts/SkXfermode_opts_arm_neon.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,35 @@ 1.4 +#ifndef SkXfermode_opts_arm_neon_DEFINED 1.5 +#define SkXfermode_opts_arm_neon_DEFINED 1.6 + 1.7 +#include "SkXfermode_proccoeff.h" 1.8 + 1.9 +class SkNEONProcCoeffXfermode : public SkProcCoeffXfermode { 1.10 +public: 1.11 + SkNEONProcCoeffXfermode(const ProcCoeff& rec, SkXfermode::Mode mode, 1.12 + void* procSIMD) 1.13 + : INHERITED(rec, mode), fProcSIMD(procSIMD) {} 1.14 + 1.15 + virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count, 1.16 + const SkAlpha aa[]) const SK_OVERRIDE; 1.17 + virtual void xfer16(uint16_t* SK_RESTRICT dst, const SkPMColor* SK_RESTRICT src, 1.18 + int count, const SkAlpha* SK_RESTRICT aa) const SK_OVERRIDE; 1.19 + 1.20 + SK_TO_STRING_OVERRIDE() 1.21 + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkNEONProcCoeffXfermode) 1.22 + 1.23 +private: 1.24 + SkNEONProcCoeffXfermode(SkReadBuffer& buffer); 1.25 + 1.26 + // void* is used to avoid pulling arm_neon.h in the core and having to build 1.27 + // it with -mfpu=neon. 1.28 + void* fProcSIMD; 1.29 + typedef SkProcCoeffXfermode INHERITED; 1.30 +}; 1.31 + 1.32 +extern SkPMColor srcatop_modeproc_neon(SkPMColor src, SkPMColor dst); 1.33 +extern SkPMColor dstatop_modeproc_neon(SkPMColor src, SkPMColor dst); 1.34 +extern SkPMColor xor_modeproc_neon(SkPMColor src, SkPMColor dst); 1.35 +extern SkPMColor plus_modeproc_neon(SkPMColor src, SkPMColor dst); 1.36 +extern SkPMColor modulate_modeproc_neon(SkPMColor src, SkPMColor dst); 1.37 + 1.38 +#endif //#ifdef SkXfermode_opts_arm_neon_DEFINED