| Index: src/core/SkBlitter_RGB16.cpp
|
| diff --git a/src/core/SkBlitter_RGB16.cpp b/src/core/SkBlitter_RGB16.cpp
|
| index 8caf90831231fdcc61cd6c166e193a9eab1ee281..b481b27b571921f7deacb2bbec3579ea26af45ce 100644
|
| --- a/src/core/SkBlitter_RGB16.cpp
|
| +++ b/src/core/SkBlitter_RGB16.cpp
|
| @@ -27,6 +27,10 @@ extern void SkRGB16BlitterBlitV_neon(uint16_t* device,
|
| size_t deviceRB,
|
| unsigned scale,
|
| uint32_t src32);
|
| +extern void SkRGB16BlitterBlitH_neon(uint16_t* device,
|
| + int width,
|
| + unsigned scale,
|
| + uint32_t src32);
|
| #else
|
| // if we don't have neon, then our black blitter is worth the extra code
|
| #define USE_BLACK_BLITTER
|
| @@ -338,10 +342,14 @@ void SkRGB16_Opaque_Blitter::blitAntiH(int x, int y,
|
| uint32_t src32 = srcExpanded * scale5;
|
| scale5 = 32 - scale5; // now we can use it on the device
|
| int n = count;
|
| +#if SK_ARM_NEON_IS_ALWAYS && defined(SK_CPU_LENDIAN)
|
| + SkRGB16BlitterBlitH_neon(device, n, scale5, src32);
|
| +#else
|
| do {
|
| uint32_t dst32 = SkExpand_rgb_16(*device) * scale5;
|
| *device++ = SkCompact_rgb_16((src32 + dst32) >> 5);
|
| } while (--n != 0);
|
| +#endif
|
| goto DONE;
|
| }
|
| }
|
| @@ -601,10 +609,14 @@ void SkRGB16_Blitter::blitAntiH(int x, int y,
|
| unsigned scale5 = SkAlpha255To256(aa) * scale >> (8 + 3);
|
| uint32_t src32 = srcExpanded * scale5;
|
| scale5 = 32 - scale5;
|
| +#if SK_ARM_NEON_IS_ALWAYS && defined(SK_CPU_LENDIAN)
|
| + SkRGB16BlitterBlitH_neon(device, count, scale5, src32);
|
| +#else
|
| do {
|
| uint32_t dst32 = SkExpand_rgb_16(*device) * scale5;
|
| *device++ = SkCompact_rgb_16((src32 + dst32) >> 5);
|
| } while (--count != 0);
|
| +#endif
|
| continue;
|
| }
|
| device += count;
|
|
|