diff options
author | 2014-07-14 07:48:11 -0700 | |
---|---|---|
committer | 2014-07-14 07:48:11 -0700 | |
commit | 6336f7c225f7806f5bbccea90ba6d2c881e8a470 (patch) | |
tree | 3507c2a9969dc3fb8d95fe16f7d7cdc6074808bc /src/core/SkBlitter_RGB16.cpp | |
parent | cef04f818820e59fb534eb226f967f72497845d3 (diff) |
MIPS: added optimization for SkRGB16_Opaque_Blitter::blitMask
gaint is ~30%
R=djsollen@google.com
Author: djordje.pesut@imgtec.com
Review URL: https://codereview.chromium.org/357693002
Diffstat (limited to 'src/core/SkBlitter_RGB16.cpp')
-rw-r--r-- | src/core/SkBlitter_RGB16.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/core/SkBlitter_RGB16.cpp b/src/core/SkBlitter_RGB16.cpp index 4503a2ae79..a91c0df0de 100644 --- a/src/core/SkBlitter_RGB16.cpp +++ b/src/core/SkBlitter_RGB16.cpp @@ -16,6 +16,12 @@ #include "SkUtilsArm.h" #include "SkXfermode.h" +#if SK_MIPS_HAS_DSP +extern void blitmask_d565_opaque_mips(int width, int height, uint16_t* device, + unsigned deviceRB, const uint8_t* alpha, + uint32_t expanded32, unsigned maskRB); +#endif + #if SK_ARM_NEON_IS_ALWAYS && defined(SK_CPU_LENDIAN) #include <arm_neon.h> #else @@ -368,9 +374,11 @@ void SkRGB16_Opaque_Blitter::blitAntiH(int x, int y, #define SK_BLITBWMASK_DEVTYPE uint16_t #include "SkBlitBWMaskTemplate.h" +#if !defined(SK_MIPS_HAS_DSP) static U16CPU blend_compact(uint32_t src32, uint32_t dst32, unsigned scale5) { return SkCompact_rgb_16(dst32 + ((src32 - dst32) * scale5 >> 5)); } +#endif void SkRGB16_Opaque_Blitter::blitMask(const SkMask& mask, const SkIRect& clip) { @@ -457,6 +465,8 @@ void SkRGB16_Opaque_Blitter::blitMask(const SkMask& mask, alpha += maskRB; } while (--height != 0); #undef UNROLL +#elif SK_MIPS_HAS_DSP + blitmask_d565_opaque_mips(width, height, device, deviceRB, alpha, expanded32, maskRB); #else // non-neon code do { int w = width; |