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

Side by Side Diff: src/core/SkBlitRow_D16.cpp

Issue 923523002: Replace SSE optimization of Color32A_D565 (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fixed comment comment Created 5 years, 10 months 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
« no previous file with comments | « include/core/SkColorPriv.h ('k') | src/opts/SkBitmapProcState_opts_SSE2.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 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 #include "SkBlitRow.h" 8 #include "SkBlitRow.h"
9 #include "SkColorPriv.h" 9 #include "SkColorPriv.h"
10 #include "SkDither.h" 10 #include "SkDither.h"
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 unsigned g = SkGetPackedG32(c); 209 unsigned g = SkGetPackedG32(c);
210 unsigned b = SkGetPackedB32(c); 210 unsigned b = SkGetPackedB32(c);
211 return (g << 24) | (r << 13) | (b << 2); 211 return (g << 24) | (r << 13) | (b << 2);
212 } 212 }
213 213
214 static void Color32A_D565(uint16_t dst[], SkPMColor src, int count, int x, int y ) { 214 static void Color32A_D565(uint16_t dst[], SkPMColor src, int count, int x, int y ) {
215 SkASSERT(count > 0); 215 SkASSERT(count > 0);
216 uint32_t src_expand = pmcolor_to_expand16(src); 216 uint32_t src_expand = pmcolor_to_expand16(src);
217 unsigned scale = SkAlpha255To256(0xFF - SkGetPackedA32(src)) >> 3; 217 unsigned scale = SkAlpha255To256(0xFF - SkGetPackedA32(src)) >> 3;
218 do { 218 do {
219 uint32_t dst_expand = SkExpand_rgb_16(*dst) * scale; 219 *dst = SkBlend32_RGB16(src_expand, *dst, scale);
220 *dst = SkCompact_rgb_16((src_expand + dst_expand) >> 5);
221 dst += 1; 220 dst += 1;
222 } while (--count != 0); 221 } while (--count != 0);
223 } 222 }
224 223
225 /////////////////////////////////////////////////////////////////////////////// 224 ///////////////////////////////////////////////////////////////////////////////
226 /////////////////////////////////////////////////////////////////////////////// 225 ///////////////////////////////////////////////////////////////////////////////
227 226
228 static const SkBlitRow::Proc16 gDefault_565_Procs[] = { 227 static const SkBlitRow::Proc16 gDefault_565_Procs[] = {
229 // no dither 228 // no dither
230 S32_D565_Opaque, 229 S32_D565_Opaque,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 Color32A_D565, 261 Color32A_D565,
263 Color32A_D565, 262 Color32A_D565,
264 #endif 263 #endif
265 }; 264 };
266 265
267 SkBlitRow::ColorProc16 SkBlitRow::ColorFactory16(unsigned flags) { 266 SkBlitRow::ColorProc16 SkBlitRow::ColorFactory16(unsigned flags) {
268 SkASSERT((flags & ~kFlags16_Mask) == 0); 267 SkASSERT((flags & ~kFlags16_Mask) == 0);
269 // just so we don't crash 268 // just so we don't crash
270 flags &= kFlags16_Mask; 269 flags &= kFlags16_Mask;
271 // we ignore both kGlobalAlpha_Flag and kSrcPixelAlpha_Flag, so shift down 270 // we ignore both kGlobalAlpha_Flag and kSrcPixelAlpha_Flag, so shift down
272 // since this factory is only used for transparent source alphas 271 // no need for the additional code specializing on opaque alpha at this time
273 flags >>= 2; 272 flags >>= 2;
274 273
275 SkASSERT(flags < SK_ARRAY_COUNT(gDefault_565_ColorProcs)); 274 SkASSERT(flags < SK_ARRAY_COUNT(gDefault_565_ColorProcs));
276 275
277 SkBlitRow::ColorProc16 proc = PlatformColorFactory565(flags); 276 SkBlitRow::ColorProc16 proc = PlatformColorFactory565(flags);
278 if (NULL == proc) { 277 if (NULL == proc) {
279 proc = gDefault_565_ColorProcs[flags]; 278 proc = gDefault_565_ColorProcs[flags];
280 } 279 }
281 return proc; 280 return proc;
282 } 281 }
OLDNEW
« no previous file with comments | « include/core/SkColorPriv.h ('k') | src/opts/SkBitmapProcState_opts_SSE2.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698