OLD | NEW |
1 /* NEON optimized code (C) COPYRIGHT 2009 Motorola | 1 /* NEON optimized code (C) COPYRIGHT 2009 Motorola |
2 * | 2 * |
3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
5 */ | 5 */ |
6 | 6 |
7 #include "SkBitmapProcState.h" | 7 #include "SkBitmapProcState.h" |
8 #include "SkPerspIter.h" | 8 #include "SkPerspIter.h" |
9 #include "SkShader.h" | 9 #include "SkShader.h" |
10 #include "SkUtils.h" | 10 #include "SkUtils.h" |
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 fill_backwards(xptr, width - 1, count); | 470 fill_backwards(xptr, width - 1, count); |
471 } | 471 } |
472 } | 472 } |
473 } | 473 } |
474 | 474 |
475 /////////////////////////////////////////////////////////////////////////////// | 475 /////////////////////////////////////////////////////////////////////////////// |
476 | 476 |
477 SkBitmapProcState::MatrixProc SkBitmapProcState::chooseMatrixProc(bool trivial_m
atrix) { | 477 SkBitmapProcState::MatrixProc SkBitmapProcState::chooseMatrixProc(bool trivial_m
atrix) { |
478 // test_int_tileprocs(); | 478 // test_int_tileprocs(); |
479 // check for our special case when there is no scale/affine/perspective | 479 // check for our special case when there is no scale/affine/perspective |
480 if (trivial_matrix && SkPaint::kNone_FilterLevel == fFilterLevel) { | 480 if (trivial_matrix && kNone_SkFilterQuality == fFilterLevel) { |
481 fIntTileProcY = choose_int_tile_proc(fTileModeY); | 481 fIntTileProcY = choose_int_tile_proc(fTileModeY); |
482 switch (fTileModeX) { | 482 switch (fTileModeX) { |
483 case SkShader::kClamp_TileMode: | 483 case SkShader::kClamp_TileMode: |
484 return clampx_nofilter_trans; | 484 return clampx_nofilter_trans; |
485 case SkShader::kRepeat_TileMode: | 485 case SkShader::kRepeat_TileMode: |
486 return repeatx_nofilter_trans; | 486 return repeatx_nofilter_trans; |
487 case SkShader::kMirror_TileMode: | 487 case SkShader::kMirror_TileMode: |
488 return mirrorx_nofilter_trans; | 488 return mirrorx_nofilter_trans; |
489 } | 489 } |
490 } | 490 } |
491 | 491 |
492 int index = 0; | 492 int index = 0; |
493 if (fFilterLevel != SkPaint::kNone_FilterLevel) { | 493 if (fFilterLevel != kNone_SkFilterQuality) { |
494 index = 1; | 494 index = 1; |
495 } | 495 } |
496 if (fInvType & SkMatrix::kPerspective_Mask) { | 496 if (fInvType & SkMatrix::kPerspective_Mask) { |
497 index += 4; | 497 index += 4; |
498 } else if (fInvType & SkMatrix::kAffine_Mask) { | 498 } else if (fInvType & SkMatrix::kAffine_Mask) { |
499 index += 2; | 499 index += 2; |
500 } | 500 } |
501 | 501 |
502 if (SkShader::kClamp_TileMode == fTileModeX && SkShader::kClamp_TileMode ==
fTileModeY) { | 502 if (SkShader::kClamp_TileMode == fTileModeX && SkShader::kClamp_TileMode ==
fTileModeY) { |
503 // clamp gets special version of filterOne | 503 // clamp gets special version of filterOne |
504 fFilterOneX = SK_Fixed1; | 504 fFilterOneX = SK_Fixed1; |
505 fFilterOneY = SK_Fixed1; | 505 fFilterOneY = SK_Fixed1; |
506 return SK_ARM_NEON_WRAP(ClampX_ClampY_Procs)[index]; | 506 return SK_ARM_NEON_WRAP(ClampX_ClampY_Procs)[index]; |
507 } | 507 } |
508 | 508 |
509 // all remaining procs use this form for filterOne | 509 // all remaining procs use this form for filterOne |
510 fFilterOneX = SK_Fixed1 / fBitmap->width(); | 510 fFilterOneX = SK_Fixed1 / fBitmap->width(); |
511 fFilterOneY = SK_Fixed1 / fBitmap->height(); | 511 fFilterOneY = SK_Fixed1 / fBitmap->height(); |
512 | 512 |
513 if (SkShader::kRepeat_TileMode == fTileModeX && SkShader::kRepeat_TileMode =
= fTileModeY) { | 513 if (SkShader::kRepeat_TileMode == fTileModeX && SkShader::kRepeat_TileMode =
= fTileModeY) { |
514 return SK_ARM_NEON_WRAP(RepeatX_RepeatY_Procs)[index]; | 514 return SK_ARM_NEON_WRAP(RepeatX_RepeatY_Procs)[index]; |
515 } | 515 } |
516 | 516 |
517 fTileProcX = choose_tile_proc(fTileModeX); | 517 fTileProcX = choose_tile_proc(fTileModeX); |
518 fTileProcY = choose_tile_proc(fTileModeY); | 518 fTileProcY = choose_tile_proc(fTileModeY); |
519 fTileLowBitsProcX = choose_tile_lowbits_proc(fTileModeX); | 519 fTileLowBitsProcX = choose_tile_lowbits_proc(fTileModeX); |
520 fTileLowBitsProcY = choose_tile_lowbits_proc(fTileModeY); | 520 fTileLowBitsProcY = choose_tile_lowbits_proc(fTileModeY); |
521 return GeneralXY_Procs[index]; | 521 return GeneralXY_Procs[index]; |
522 } | 522 } |
OLD | NEW |