OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2008 Google Inc. | 2 * Copyright 2008 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 // The copyright below was added in 2009, but I see no record of moto contributi
ons...? | 8 // The copyright below was added in 2009, but I see no record of moto contributi
ons...? |
9 | 9 |
10 /* NEON optimized code (C) COPYRIGHT 2009 Motorola | 10 /* NEON optimized code (C) COPYRIGHT 2009 Motorola |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 // only clamp lives in the right coord space to check for decal | 88 // only clamp lives in the right coord space to check for decal |
89 ClampX_ClampY_nofilter_scale, | 89 ClampX_ClampY_nofilter_scale, |
90 ClampX_ClampY_filter_scale, | 90 ClampX_ClampY_filter_scale, |
91 ClampX_ClampY_nofilter_affine, | 91 ClampX_ClampY_nofilter_affine, |
92 ClampX_ClampY_filter_affine, | 92 ClampX_ClampY_filter_affine, |
93 NoFilterProc_Persp<ClampTileProcs>, | 93 NoFilterProc_Persp<ClampTileProcs>, |
94 ClampX_ClampY_filter_persp | 94 ClampX_ClampY_filter_persp |
95 }; | 95 }; |
96 | 96 |
97 #define MAKENAME(suffix) RepeatX_RepeatY ## suffix | 97 #define MAKENAME(suffix) RepeatX_RepeatY ## suffix |
98 #define TILEX_PROCF(fx, max) SK_USHIFT16(((fx) & 0xFFFF) * ((max) + 1)) | 98 #define TILEX_PROCF(fx, max) SK_USHIFT16((unsigned)((fx) & 0xFFFF) * ((max) +
1)) |
99 #define TILEY_PROCF(fy, max) SK_USHIFT16(((fy) & 0xFFFF) * ((max) + 1)) | 99 #define TILEY_PROCF(fy, max) SK_USHIFT16((unsigned)((fy) & 0xFFFF) * ((max) +
1)) |
100 #define TILEX_LOW_BITS(fx, max) ((((fx) & 0xFFFF) * ((max) + 1) >> 12) & 0xF) | 100 #define TILEX_LOW_BITS(fx, max) (((unsigned)((fx) & 0xFFFF) * ((max) + 1) >> 12)
& 0xF) |
101 #define TILEY_LOW_BITS(fy, max) ((((fy) & 0xFFFF) * ((max) + 1) >> 12) & 0xF) | 101 #define TILEY_LOW_BITS(fy, max) (((unsigned)((fy) & 0xFFFF) * ((max) + 1) >> 12)
& 0xF) |
102 #include "SkBitmapProcState_matrix.h" | 102 #include "SkBitmapProcState_matrix.h" |
103 | 103 |
104 struct RepeatTileProcs { | 104 struct RepeatTileProcs { |
105 static unsigned X(const SkBitmapProcState&, SkFixed fx, int max) { | 105 static unsigned X(const SkBitmapProcState&, SkFixed fx, int max) { |
106 return SK_USHIFT16(((fx) & 0xFFFF) * ((max) + 1)); | 106 SkASSERT(max < 65535); |
| 107 return SK_USHIFT16((unsigned)((fx) & 0xFFFF) * ((max) + 1)); |
107 } | 108 } |
108 static unsigned Y(const SkBitmapProcState&, SkFixed fy, int max) { | 109 static unsigned Y(const SkBitmapProcState&, SkFixed fy, int max) { |
109 return SK_USHIFT16(((fy) & 0xFFFF) * ((max) + 1)); | 110 SkASSERT(max < 65535); |
| 111 return SK_USHIFT16((unsigned)((fy) & 0xFFFF) * ((max) + 1)); |
110 } | 112 } |
111 }; | 113 }; |
112 | 114 |
113 static SkBitmapProcState::MatrixProc RepeatX_RepeatY_Procs[] = { | 115 static SkBitmapProcState::MatrixProc RepeatX_RepeatY_Procs[] = { |
114 NoFilterProc_Scale<RepeatTileProcs, false>, | 116 NoFilterProc_Scale<RepeatTileProcs, false>, |
115 RepeatX_RepeatY_filter_scale, | 117 RepeatX_RepeatY_filter_scale, |
116 NoFilterProc_Affine<RepeatTileProcs>, | 118 NoFilterProc_Affine<RepeatTileProcs>, |
117 RepeatX_RepeatY_filter_affine, | 119 RepeatX_RepeatY_filter_affine, |
118 NoFilterProc_Persp<RepeatTileProcs>, | 120 NoFilterProc_Persp<RepeatTileProcs>, |
119 RepeatX_RepeatY_filter_persp | 121 RepeatX_RepeatY_filter_persp |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
522 if (SkShader::kRepeat_TileMode == fTileModeX && SkShader::kRepeat_TileMode =
= fTileModeY) { | 524 if (SkShader::kRepeat_TileMode == fTileModeX && SkShader::kRepeat_TileMode =
= fTileModeY) { |
523 return SK_ARM_NEON_WRAP(RepeatX_RepeatY_Procs)[index]; | 525 return SK_ARM_NEON_WRAP(RepeatX_RepeatY_Procs)[index]; |
524 } | 526 } |
525 | 527 |
526 fTileProcX = choose_tile_proc(fTileModeX); | 528 fTileProcX = choose_tile_proc(fTileModeX); |
527 fTileProcY = choose_tile_proc(fTileModeY); | 529 fTileProcY = choose_tile_proc(fTileModeY); |
528 fTileLowBitsProcX = choose_tile_lowbits_proc(fTileModeX); | 530 fTileLowBitsProcX = choose_tile_lowbits_proc(fTileModeX); |
529 fTileLowBitsProcY = choose_tile_lowbits_proc(fTileModeY); | 531 fTileLowBitsProcY = choose_tile_lowbits_proc(fTileModeY); |
530 return GeneralXY_Procs[index]; | 532 return GeneralXY_Procs[index]; |
531 } | 533 } |
OLD | NEW |