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 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
164 if (x >> 16) { | 164 if (x >> 16) { |
165 x = 0xFFFF; | 165 x = 0xFFFF; |
166 } | 166 } |
167 return x; | 167 return x; |
168 } | 168 } |
169 | 169 |
170 static inline U16CPU fixed_repeat(SkFixed x) { | 170 static inline U16CPU fixed_repeat(SkFixed x) { |
171 return x & 0xFFFF; | 171 return x & 0xFFFF; |
172 } | 172 } |
173 | 173 |
174 // Visual Studio 2010 (MSC_VER=1600) optimizes bit-shift code incorrectly. | |
175 // See http://code.google.com/p/skia/issues/detail?id=472 | |
176 #if defined(_MSC_VER) && (_MSC_VER >= 1600) | |
mtklein
2016/03/10 17:37:47
This is a >= check... you sure we don't need this
bungeman-skia
2016/03/10 17:54:23
This was fixed in Visual Studio 2012 (https://conn
| |
177 #pragma optimize("", off) | |
178 #endif | |
179 | |
180 static inline U16CPU fixed_mirror(SkFixed x) { | 174 static inline U16CPU fixed_mirror(SkFixed x) { |
181 SkFixed s = SkLeftShift(x, 15) >> 31; | 175 SkFixed s = SkLeftShift(x, 15) >> 31; |
182 // s is FFFFFFFF if we're on an odd interval, or 0 if an even interval | 176 // s is FFFFFFFF if we're on an odd interval, or 0 if an even interval |
183 return (x ^ s) & 0xFFFF; | 177 return (x ^ s) & 0xFFFF; |
184 } | 178 } |
185 | 179 |
186 #if defined(_MSC_VER) && (_MSC_VER >= 1600) | |
187 #pragma optimize("", on) | |
188 #endif | |
189 | |
190 static SkBitmapProcState::FixedTileProc choose_tile_proc(unsigned m) { | 180 static SkBitmapProcState::FixedTileProc choose_tile_proc(unsigned m) { |
191 if (SkShader::kClamp_TileMode == m) { | 181 if (SkShader::kClamp_TileMode == m) { |
192 return fixed_clamp; | 182 return fixed_clamp; |
193 } | 183 } |
194 if (SkShader::kRepeat_TileMode == m) { | 184 if (SkShader::kRepeat_TileMode == m) { |
195 return fixed_repeat; | 185 return fixed_repeat; |
196 } | 186 } |
197 SkASSERT(SkShader::kMirror_TileMode == m); | 187 SkASSERT(SkShader::kMirror_TileMode == m); |
198 return fixed_mirror; | 188 return fixed_mirror; |
199 } | 189 } |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
521 if (SkShader::kRepeat_TileMode == fTileModeX && SkShader::kRepeat_TileMode = = fTileModeY) { | 511 if (SkShader::kRepeat_TileMode == fTileModeX && SkShader::kRepeat_TileMode = = fTileModeY) { |
522 return SK_ARM_NEON_WRAP(RepeatX_RepeatY_Procs)[index]; | 512 return SK_ARM_NEON_WRAP(RepeatX_RepeatY_Procs)[index]; |
523 } | 513 } |
524 | 514 |
525 fTileProcX = choose_tile_proc(fTileModeX); | 515 fTileProcX = choose_tile_proc(fTileModeX); |
526 fTileProcY = choose_tile_proc(fTileModeY); | 516 fTileProcY = choose_tile_proc(fTileModeY); |
527 fTileLowBitsProcX = choose_tile_lowbits_proc(fTileModeX); | 517 fTileLowBitsProcX = choose_tile_lowbits_proc(fTileModeX); |
528 fTileLowBitsProcY = choose_tile_lowbits_proc(fTileModeY); | 518 fTileLowBitsProcY = choose_tile_lowbits_proc(fTileModeY); |
529 return GeneralXY_Procs[index]; | 519 return GeneralXY_Procs[index]; |
530 } | 520 } |
OLD | NEW |