| 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 |