diff options
author | agl@chromium.org <agl@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2010-06-16 19:52:29 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2010-06-16 19:52:29 +0000 |
commit | 244929c1fc4f40740356731b7573506872ca7b90 (patch) | |
tree | e991f35c000e407ba757dd807df8e9c62f861e0e /src/opts/SkBlitRow_opts_arm.cpp | |
parent | f59799139bacd300bf5251a1ca4e6b2ad3196457 (diff) |
Implementing S32A_Opaque_BlitRow32 using v7 neon instructions.
Taking the advantage of 16 channels of each QualWord register. Also using the
software pipelining to scatter the loads/stores among vector operations.
Got roughly 70% improvements on simulation environments.
http://codereview.appspot.com/1148042/show
Patch-by: XinQi of codeaurora.org
git-svn-id: http://skia.googlecode.com/svn/trunk@578 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/opts/SkBlitRow_opts_arm.cpp')
-rw-r--r-- | src/opts/SkBlitRow_opts_arm.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/opts/SkBlitRow_opts_arm.cpp b/src/opts/SkBlitRow_opts_arm.cpp index 953d3d5e6a..f06186c27a 100644 --- a/src/opts/SkBlitRow_opts_arm.cpp +++ b/src/opts/SkBlitRow_opts_arm.cpp @@ -431,6 +431,9 @@ static void S32_D565_Blend_Dither_neon(uint16_t *dst, const SkPMColor *src, /////////////////////////////////////////////////////////////////////////////// #if defined(__ARM_HAVE_NEON) && defined(SK_CPU_LENDIAN) +extern "C" void S32A_Opaque_BlitRow32_neon2(SkPMColor* SK_RESTRICT dst, + const SkPMColor* SK_RESTRICT src, + int count, U8CPU alpha); static void S32A_Opaque_BlitRow32_neon(SkPMColor* SK_RESTRICT dst, const SkPMColor* SK_RESTRICT src, @@ -554,7 +557,7 @@ static void S32A_Opaque_BlitRow32_neon(SkPMColor* SK_RESTRICT dst, } } -#define S32A_Opaque_BlitRow32_PROC S32A_Opaque_BlitRow32_neon +#define S32A_Opaque_BlitRow32_PROC S32A_Opaque_BlitRow32_neon2 #else #define S32A_Opaque_BlitRow32_PROC NULL #endif |