aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/opts/SkBlitRow_opts_arm.cpp
diff options
context:
space:
mode:
authorGravatar agl@chromium.org <agl@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2010-06-16 19:52:29 +0000
committerGravatar agl@chromium.org <agl@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2010-06-16 19:52:29 +0000
commit244929c1fc4f40740356731b7573506872ca7b90 (patch)
treee991f35c000e407ba757dd807df8e9c62f861e0e /src/opts/SkBlitRow_opts_arm.cpp
parentf59799139bacd300bf5251a1ca4e6b2ad3196457 (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.cpp5
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