Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(294)

Side by Side Diff: src/opts/SkColor_opts_neon.h

Issue 23719002: ARM Skia NEON patches - 16/17 - Blitmask (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Rebase, group with LCD16 code and clean Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #ifndef SkColor_opts_neon_DEFINED 1 #ifndef SkColor_opts_neon_DEFINED
2 #define SkColor_opts_neon_DEFINED 2 #define SkColor_opts_neon_DEFINED
3 3
4 #include "SkTypes.h" 4 #include "SkTypes.h"
5 #include "SkColorPriv.h"
djsollen 2013/11/11 17:21:46 why do you need this include?
kevin.petit.not.used.account 2013/11/11 18:10:34 This is here to fix a pre-existing mistake. There
5 6
6 #include <arm_neon.h> 7 #include <arm_neon.h>
7 8
8 #define NEON_A (SK_A32_SHIFT / 8) 9 #define NEON_A (SK_A32_SHIFT / 8)
9 #define NEON_R (SK_R32_SHIFT / 8) 10 #define NEON_R (SK_R32_SHIFT / 8)
10 #define NEON_G (SK_G32_SHIFT / 8) 11 #define NEON_G (SK_G32_SHIFT / 8)
11 #define NEON_B (SK_B32_SHIFT / 8) 12 #define NEON_B (SK_B32_SHIFT / 8)
12 13
13 static inline uint16x8_t SkAlpha255To256_neon8(uint8x8_t alpha) { 14 static inline uint16x8_t SkAlpha255To256_neon8(uint8x8_t alpha) {
14 return vaddw_u8(vdupq_n_u16(1), alpha); 15 return vaddw_u8(vdupq_n_u16(1), alpha);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 59
59 uint16x8_t ret; 60 uint16x8_t ret;
60 61
61 ret = vshll_n_u8(vsrc.val[NEON_R], 8); 62 ret = vshll_n_u8(vsrc.val[NEON_R], 8);
62 ret = vsriq_n_u16(ret, vshll_n_u8(vsrc.val[NEON_G], 8), SK_R16_BITS); 63 ret = vsriq_n_u16(ret, vshll_n_u8(vsrc.val[NEON_G], 8), SK_R16_BITS);
63 ret = vsriq_n_u16(ret, vshll_n_u8(vsrc.val[NEON_B], 8), SK_R16_BITS + SK_G16 _BITS); 64 ret = vsriq_n_u16(ret, vshll_n_u8(vsrc.val[NEON_B], 8), SK_R16_BITS + SK_G16 _BITS);
64 65
65 return ret; 66 return ret;
66 } 67 }
67 68
69 static inline uint8x8_t SkBlend32_neon8(uint8x8_t src, uint8x8_t dst, uint16x8_t scale) {
mtklein 2013/11/11 17:17:04 Add a brief comment like for 16->32 and 32->16 abo
kevin.petit.not.used.account 2013/11/11 18:10:34 Done.
70 int16x8_t src_wide, dst_wide;
71
72 src_wide = vreinterpretq_s16_u16(vmovl_u8(src));
73 dst_wide = vreinterpretq_s16_u16(vmovl_u8(dst));
74
75 src_wide = (src_wide - dst_wide) * vreinterpretq_s16_u16(scale);
76
77 dst_wide += vshrq_n_s16(src_wide, 5);
78
79 return vmovn_u16(vreinterpretq_u16_s16(dst_wide));
80 }
81
68 #endif /* #ifndef SkColor_opts_neon_DEFINED */ 82 #endif /* #ifndef SkColor_opts_neon_DEFINED */
OLDNEW
« src/opts/SkBlitMask_opts_arm.cpp ('K') | « src/opts/SkBlitMask_opts_arm_neon.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698