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

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

Issue 1010343002: add kGray_8_SkColorType (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 9 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 | « src/core/SkBitmap.cpp ('k') | src/core/SkBitmapProcState_procs.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 "SkBitmapCache.h" 8 #include "SkBitmapCache.h"
9 #include "SkBitmapProcState.h" 9 #include "SkBitmapProcState.h"
10 #include "SkColorPriv.h" 10 #include "SkColorPriv.h"
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 case kARGB_4444_SkColorType: 424 case kARGB_4444_SkColorType:
425 if (kPremul_SkAlphaType != at && kOpaque_SkAlphaType != at) { 425 if (kPremul_SkAlphaType != at && kOpaque_SkAlphaType != at) {
426 return false; 426 return false;
427 } 427 }
428 index |= 24; 428 index |= 24;
429 break; 429 break;
430 case kAlpha_8_SkColorType: 430 case kAlpha_8_SkColorType:
431 index |= 32; 431 index |= 32;
432 fPaintPMColor = SkPreMultiplyColor(paint.getColor()); 432 fPaintPMColor = SkPreMultiplyColor(paint.getColor());
433 break; 433 break;
434 case kGray_8_SkColorType:
435 index |= 40;
436 fPaintPMColor = SkPreMultiplyColor(paint.getColor());
437 break;
434 default: 438 default:
435 // TODO(dominikg): Should we ever get here? SkASSERT(false) inst ead? 439 // TODO(dominikg): Should we ever get here? SkASSERT(false) inst ead?
436 return false; 440 return false;
437 } 441 }
438 442
439 #if !SK_ARM_NEON_IS_ALWAYS 443 #if !SK_ARM_NEON_IS_ALWAYS
440 static const SampleProc32 gSkBitmapProcStateSample32[] = { 444 static const SampleProc32 gSkBitmapProcStateSample32[] = {
441 S32_opaque_D32_nofilter_DXDY, 445 S32_opaque_D32_nofilter_DXDY,
442 S32_alpha_D32_nofilter_DXDY, 446 S32_alpha_D32_nofilter_DXDY,
443 S32_opaque_D32_nofilter_DX, 447 S32_opaque_D32_nofilter_DX,
(...skipping 22 matching lines...) Expand all
466 SI8_alpha_D32_filter_DX, 470 SI8_alpha_D32_filter_DX,
467 471
468 S4444_opaque_D32_nofilter_DXDY, 472 S4444_opaque_D32_nofilter_DXDY,
469 S4444_alpha_D32_nofilter_DXDY, 473 S4444_alpha_D32_nofilter_DXDY,
470 S4444_opaque_D32_nofilter_DX, 474 S4444_opaque_D32_nofilter_DX,
471 S4444_alpha_D32_nofilter_DX, 475 S4444_alpha_D32_nofilter_DX,
472 S4444_opaque_D32_filter_DXDY, 476 S4444_opaque_D32_filter_DXDY,
473 S4444_alpha_D32_filter_DXDY, 477 S4444_alpha_D32_filter_DXDY,
474 S4444_opaque_D32_filter_DX, 478 S4444_opaque_D32_filter_DX,
475 S4444_alpha_D32_filter_DX, 479 S4444_alpha_D32_filter_DX,
476 480
477 // A8 treats alpha/opaque the same (equally efficient) 481 // A8 treats alpha/opaque the same (equally efficient)
478 SA8_alpha_D32_nofilter_DXDY, 482 SA8_alpha_D32_nofilter_DXDY,
479 SA8_alpha_D32_nofilter_DXDY, 483 SA8_alpha_D32_nofilter_DXDY,
480 SA8_alpha_D32_nofilter_DX, 484 SA8_alpha_D32_nofilter_DX,
481 SA8_alpha_D32_nofilter_DX, 485 SA8_alpha_D32_nofilter_DX,
482 SA8_alpha_D32_filter_DXDY, 486 SA8_alpha_D32_filter_DXDY,
483 SA8_alpha_D32_filter_DXDY, 487 SA8_alpha_D32_filter_DXDY,
484 SA8_alpha_D32_filter_DX, 488 SA8_alpha_D32_filter_DX,
485 SA8_alpha_D32_filter_DX 489 SA8_alpha_D32_filter_DX,
490
491 // todo: possibly specialize on opaqueness
492 SG8_alpha_D32_nofilter_DXDY,
493 SG8_alpha_D32_nofilter_DXDY,
494 SG8_alpha_D32_nofilter_DX,
495 SG8_alpha_D32_nofilter_DX,
496 SG8_alpha_D32_filter_DXDY,
497 SG8_alpha_D32_filter_DXDY,
498 SG8_alpha_D32_filter_DX,
499 SG8_alpha_D32_filter_DX
486 }; 500 };
487 501
488 static const SampleProc16 gSkBitmapProcStateSample16[] = { 502 static const SampleProc16 gSkBitmapProcStateSample16[] = {
489 S32_D16_nofilter_DXDY, 503 S32_D16_nofilter_DXDY,
490 S32_D16_nofilter_DX, 504 S32_D16_nofilter_DX,
491 S32_D16_filter_DXDY, 505 S32_D16_filter_DXDY,
492 S32_D16_filter_DX, 506 S32_D16_filter_DX,
493 507
494 S16_D16_nofilter_DXDY, 508 S16_D16_nofilter_DXDY,
495 S16_D16_nofilter_DX, 509 S16_D16_nofilter_DX,
496 S16_D16_filter_DXDY, 510 S16_D16_filter_DXDY,
497 S16_D16_filter_DX, 511 S16_D16_filter_DX,
498 512
499 SI8_D16_nofilter_DXDY, 513 SI8_D16_nofilter_DXDY,
500 SI8_D16_nofilter_DX, 514 SI8_D16_nofilter_DX,
501 SI8_D16_filter_DXDY, 515 SI8_D16_filter_DXDY,
502 SI8_D16_filter_DX, 516 SI8_D16_filter_DX,
503 517
504 // Don't support 4444 -> 565 518 // Don't support 4444 -> 565
505 NULL, NULL, NULL, NULL, 519 NULL, NULL, NULL, NULL,
506 // Don't support A8 -> 565 520 // Don't support A8 -> 565
521 NULL, NULL, NULL, NULL,
522 // Don't support G8 -> 565 (but we could)
507 NULL, NULL, NULL, NULL 523 NULL, NULL, NULL, NULL
508 }; 524 };
509 #endif 525 #endif
510 526
511 fSampleProc32 = SK_ARM_NEON_WRAP(gSkBitmapProcStateSample32)[index]; 527 fSampleProc32 = SK_ARM_NEON_WRAP(gSkBitmapProcStateSample32)[index];
512 index >>= 1; // shift away any opaque/alpha distinction 528 index >>= 1; // shift away any opaque/alpha distinction
513 fSampleProc16 = SK_ARM_NEON_WRAP(gSkBitmapProcStateSample16)[index]; 529 fSampleProc16 = SK_ARM_NEON_WRAP(gSkBitmapProcStateSample16)[index];
514 530
515 // our special-case shaderprocs 531 // our special-case shaderprocs
516 if (SK_ARM_NEON_WRAP(S16_D16_filter_DX) == fSampleProc16) { 532 if (SK_ARM_NEON_WRAP(S16_D16_filter_DX) == fSampleProc16) {
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 fx += dx; 1018 fx += dx;
1003 } 1019 }
1004 } else { 1020 } else {
1005 for (int i = 0; i < count; ++i) { 1021 for (int i = 0; i < count; ++i) {
1006 dst[i] = src[SkClampMax(SkFractionalIntToInt(fx), maxX)]; 1022 dst[i] = src[SkClampMax(SkFractionalIntToInt(fx), maxX)];
1007 fx += dx; 1023 fx += dx;
1008 } 1024 }
1009 } 1025 }
1010 } 1026 }
1011 1027
OLDNEW
« no previous file with comments | « src/core/SkBitmap.cpp ('k') | src/core/SkBitmapProcState_procs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698