From b4c29c536374cdc8657838744002e8a770dff871 Mon Sep 17 00:00:00 2001 From: "commit-bot@chromium.org" Date: Wed, 16 Oct 2013 16:24:08 +0000 Subject: ARM Skia NEON patches - 30 - Xfermode: NEON modeprocs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xfermode: NEON implementation of SIMD procs This patch contains a NEON implementation for a number of Xfermodes. It provides a big speedup on Xfermode benchmarks (currently up to 3x with gcc4.7 but up to 10x when gcc produces optimal code for it). Signed-off-by: Kévin PETIT BUG= Committed: http://code.google.com/p/skia/source/detail?r=11777 R=djsollen@google.com, mtklein@google.com, reed@google.com, robertphillips@google.com Author: kevin.petit.arm@gmail.com Review URL: https://codereview.chromium.org/26627004 git-svn-id: http://skia.googlecode.com/svn/trunk@11813 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/core/SkXfermode.cpp | 8 ++++++++ src/core/SkXfermode_proccoeff.h | 4 ++++ 2 files changed, 12 insertions(+) (limited to 'src/core') diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp index 993c754711..6cdd97bb4c 100644 --- a/src/core/SkXfermode.cpp +++ b/src/core/SkXfermode.cpp @@ -13,6 +13,11 @@ #include "SkFlattenableBuffers.h" #include "SkMathPriv.h" #include "SkString.h" +#include "SkUtilsArm.h" + +#if !SK_ARM_NEON_IS_NONE +#include "SkXfermode_opts_arm_neon.h" +#endif SK_DEFINE_INST_COUNT(SkXfermode) @@ -1950,4 +1955,7 @@ SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkXfermode) SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSrcXfermode) SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstInXfermode) SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstOutXfermode) +#if !SK_ARM_NEON_IS_NONE + SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkNEONProcCoeffXfermode) +#endif SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END diff --git a/src/core/SkXfermode_proccoeff.h b/src/core/SkXfermode_proccoeff.h index 60ebe3ff4c..23a83f2c0d 100644 --- a/src/core/SkXfermode_proccoeff.h +++ b/src/core/SkXfermode_proccoeff.h @@ -53,6 +53,10 @@ protected: virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE; + Mode getMode() const { + return fMode; + } + private: Mode fMode; Coeff fSrcCoeff, fDstCoeff; -- cgit v1.2.3