| Index: src/core/SkBitmapProcState.cpp
|
| diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp
|
| index c4b29392f15c3d7dd166190b96eb5e32f9968b3e..d9d47a270f5fa0f4b50876552b645a8a65300845 100644
|
| --- a/src/core/SkBitmapProcState.cpp
|
| +++ b/src/core/SkBitmapProcState.cpp
|
| @@ -586,29 +586,28 @@ static void DoNothing_shaderproc(const void*, int x, int y,
|
| }
|
|
|
| bool SkBitmapProcState::setupForTranslate() {
|
| -#ifdef SK_SUPPORT_LEGACY_SAMPLER_BIAS
|
| SkPoint pt;
|
| - fInvProc(fInvMatrix, SK_ScalarHalf, SK_ScalarHalf, &pt);
|
|
|
| - const SkScalar too_big = SkIntToScalar(1 << 30);
|
| - if (SkScalarAbs(pt.fX) > too_big || SkScalarAbs(pt.fY) > too_big) {
|
| - return false;
|
| - }
|
| -
|
| - fFilterOneX = SkScalarFloorToInt(pt.fX);
|
| - fFilterOneY = SkScalarFloorToInt(pt.fY);
|
| +#ifdef SK_SUPPORT_LEGACY_SAMPLER_BIAS
|
| + fInvProc(fInvMatrix, SK_ScalarHalf, SK_ScalarHalf, &pt);
|
| #else
|
| - SkBitmapProcStateAutoMapper mapper(*this, 0, 0);
|
| + const SkBitmapProcStateAutoMapper mapper(*this, 0, 0, &pt);
|
| +#endif
|
|
|
| /*
|
| * if the translate is larger than our ints, we can get random results, or
|
| * worse, we might get 0x80000000, which wreaks havoc on us, since we can't
|
| * negate it.
|
| */
|
| - if (mapper.isOverflow()) {
|
| + const SkScalar too_big = SkIntToScalar(1 << 30);
|
| + if (SkScalarAbs(pt.fX) > too_big || SkScalarAbs(pt.fY) > too_big) {
|
| return false;
|
| }
|
|
|
| +#ifdef SK_SUPPORT_LEGACY_SAMPLER_BIAS
|
| + fFilterOneX = SkScalarFloorToInt(pt.fX);
|
| + fFilterOneY = SkScalarFloorToInt(pt.fY);
|
| +#else
|
| // Since we know we're not filtered, we re-purpose these fields allow
|
| // us to go from device -> src coordinates w/ just an integer add,
|
| // rather than running through the inverse-matrix
|
|
|