From d611864e679a58865b111e74fe7ac919cba42163 Mon Sep 17 00:00:00 2001 From: "commit-bot@chromium.org" Date: Fri, 6 Dec 2013 11:32:27 +0000 Subject: ARM Skia NEON patches - 32 - Xfermode: 1-pixel NEON modeprocs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In some cases, it's easy to provide a NEON version of the 1-pixel modeprocs. Combined with https://codereview.chromium.org/23724013/ (merged) it allows up to 35% speed improvement on Xfermodes when aa is non-NULL. Signed-off-by: Kévin PETIT BUG= R=djsollen@google.com, reed@google.com, mtklein@google.com, luisjoseromeroesclusa@hotmail.com Author: kevin.petit.arm@gmail.com Review URL: https://codereview.chromium.org/104883004 git-svn-id: http://skia.googlecode.com/svn/trunk@12525 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/core/SkXfermode.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/core/SkXfermode.cpp') diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp index 313e2aef8c..8cb79c2dbd 100644 --- a/src/core/SkXfermode.cpp +++ b/src/core/SkXfermode.cpp @@ -1669,6 +1669,7 @@ void SkXfermode::Term() { extern SkProcCoeffXfermode* SkPlatformXfermodeFactory(const ProcCoeff& rec, SkXfermode::Mode mode); +extern SkXfermodeProc SkPlatformXfermodeProcFactory(SkXfermode::Mode mode); SkXfermode* SkXfermode::Create(Mode mode) { SkASSERT(SK_ARRAY_COUNT(gProcCoeffs) == kModeCount); @@ -1690,7 +1691,13 @@ SkXfermode* SkXfermode::Create(Mode mode) { SkXfermode* xfer = gCachedXfermodes[mode]; if (NULL == xfer) { - const ProcCoeff& rec = gProcCoeffs[mode]; + ProcCoeff rec = gProcCoeffs[mode]; + + SkXfermodeProc pp = SkPlatformXfermodeProcFactory(mode); + + if (pp != NULL) { + rec.fProc = pp; + } // check if we have a platform optim for that SkProcCoeffXfermode* xfm = SkPlatformXfermodeFactory(rec, mode); -- cgit v1.2.3