diff options
-rw-r--r-- | src/opts/SkBlitRow_opts_arm.cpp | 23 | ||||
-rw-r--r-- | src/opts/SkBlitRow_opts_arm.h | 39 | ||||
-rw-r--r-- | src/opts/SkBlitRow_opts_arm_neon.cpp | 2 | ||||
-rw-r--r-- | src/opts/SkBlitRow_opts_arm_neon.h | 18 |
4 files changed, 34 insertions, 48 deletions
diff --git a/src/opts/SkBlitRow_opts_arm.cpp b/src/opts/SkBlitRow_opts_arm.cpp index 50b498458a..8eb7b1cfeb 100644 --- a/src/opts/SkBlitRow_opts_arm.cpp +++ b/src/opts/SkBlitRow_opts_arm.cpp @@ -5,17 +5,26 @@ * found in the LICENSE file. */ -#include "SkBlitRow_opts_arm.h" - #include "SkBlitMask.h" #include "SkBlitRow.h" #include "SkColorPriv.h" #include "SkDither.h" #include "SkMathPriv.h" #include "SkUtils.h" +#include "SkUtilsArm.h" #include "SkCachePreload_arm.h" +// Define USE_NEON_CODE to indicate that we need to build NEON routines +#define USE_NEON_CODE (!SK_ARM_NEON_IS_NONE) + +// Define USE_ARM_CODE to indicate that we need to build ARM routines +#define USE_ARM_CODE (!SK_ARM_NEON_IS_ALWAYS) + +#if USE_NEON_CODE + #include "SkBlitRow_opts_arm_neon.h" +#endif + #if USE_ARM_CODE static void S32A_D565_Opaque(uint16_t* SK_RESTRICT dst, @@ -185,12 +194,10 @@ static void S32A_Opaque_BlitRow32_arm(SkPMColor* SK_RESTRICT dst, : "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "ip", "memory" ); } -#endif // USE_ARM_CODE /* * ARM asm version of S32A_Blend_BlitRow32 */ -// This version is also used by the NEON procs table, so always compile it void S32A_Blend_BlitRow32_arm(SkPMColor* SK_RESTRICT dst, const SkPMColor* SK_RESTRICT src, int count, U8CPU alpha) { @@ -331,8 +338,7 @@ void S32A_Blend_BlitRow32_arm(SkPMColor* SK_RESTRICT dst, /////////////////////////////////////////////////////////////////////////////// -#if USE_ARM_CODE -const SkBlitRow::Proc sk_blitrow_platform_565_procs_arm[] = { +static const SkBlitRow::Proc sk_blitrow_platform_565_procs_arm[] = { // no dither // NOTE: For the functions below, we don't have a special version // that assumes that each source pixel is opaque. But our S32A is @@ -349,13 +355,14 @@ const SkBlitRow::Proc sk_blitrow_platform_565_procs_arm[] = { NULL, // S32A_D565_Blend_Dither }; -const SkBlitRow::Proc32 sk_blitrow_platform_32_procs_arm[] = { +static const SkBlitRow::Proc32 sk_blitrow_platform_32_procs_arm[] = { NULL, // S32_Opaque, NULL, // S32_Blend, S32A_Opaque_BlitRow32_arm, // S32A_Opaque, S32A_Blend_BlitRow32_arm // S32A_Blend }; -#endif + +#endif // USE_ARM_CODE SkBlitRow::Proc SkBlitRow::PlatformProcs565(unsigned flags) { return SK_ARM_NEON_WRAP(sk_blitrow_platform_565_procs_arm)[flags]; diff --git a/src/opts/SkBlitRow_opts_arm.h b/src/opts/SkBlitRow_opts_arm.h deleted file mode 100644 index 25f8bf4774..0000000000 --- a/src/opts/SkBlitRow_opts_arm.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2012 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#ifndef SkBlitRow_opts_arm_DEFINED -#define SkBlitRow_opts_arm_DEFINED - -#include "SkBlitRow.h" -#include "SkUtilsArm.h" - -// Define USE_NEON_CODE to indicate that we need to build NEON routines -#define USE_NEON_CODE (!SK_ARM_NEON_IS_NONE) - -// Define USE_ARM_CODE to indicate that we need to build ARM routines -#define USE_ARM_CODE (!SK_ARM_NEON_IS_ALWAYS) - -#if USE_NEON_CODE -// These are defined in SkBlitRow_opts_arm_neon.cpp -extern const SkBlitRow::Proc sk_blitrow_platform_565_procs_arm_neon[]; -extern const SkBlitRow::Proc32 sk_blitrow_platform_32_procs_arm_neon[]; - -extern void Color32_arm_neon(SkPMColor* dst, const SkPMColor* src, int count, - SkPMColor color); -#endif - -#if USE_ARM_CODE -// These are defined in SkBlitRow_opts_arm.cpp -extern const SkBlitRow::Proc sk_blitrow_platform_565_procs_arm[]; -extern const SkBlitRow::Proc32 sk_blitrow_platform_32_procs_arm[]; -#endif - -// Defined in SkBlitRow_opts_arm.cpp, used in all cases. -extern void S32A_Blend_BlitRow32_arm(SkPMColor* SK_RESTRICT dst, - const SkPMColor* SK_RESTRICT src, - int count, U8CPU alpha); - -#endif diff --git a/src/opts/SkBlitRow_opts_arm_neon.cpp b/src/opts/SkBlitRow_opts_arm_neon.cpp index 200d85d1ea..1bc0ea1022 100644 --- a/src/opts/SkBlitRow_opts_arm_neon.cpp +++ b/src/opts/SkBlitRow_opts_arm_neon.cpp @@ -5,7 +5,7 @@ * found in the LICENSE file. */ -#include "SkBlitRow_opts_arm.h" +#include "SkBlitRow_opts_arm_neon.h" #include "SkBlitMask.h" #include "SkBlitRow.h" diff --git a/src/opts/SkBlitRow_opts_arm_neon.h b/src/opts/SkBlitRow_opts_arm_neon.h new file mode 100644 index 0000000000..80b875419a --- /dev/null +++ b/src/opts/SkBlitRow_opts_arm_neon.h @@ -0,0 +1,18 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkBlitRow_opts_arm_neon_DEFINED +#define SkBlitRow_opts_arm_neon_DEFINED + +#include "SkBlitRow.h" + +extern const SkBlitRow::Proc sk_blitrow_platform_565_procs_arm_neon[]; +extern const SkBlitRow::Proc32 sk_blitrow_platform_32_procs_arm_neon[]; + +extern void Color32_arm_neon(SkPMColor* dst, const SkPMColor* src, int count, + SkPMColor color); + +#endif |