diff options
author | fmalita <fmalita@chromium.org> | 2016-02-02 10:17:24 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-02 10:17:25 -0800 |
commit | eb543071725f465e93ddcc052d54fd5c03f043f9 (patch) | |
tree | 13f7ee346ce3fb0652e14d3dd976bfad4c859b6b /src/core/SkBitmapProcState.cpp | |
parent | f46d8a6fffef5e09c2fe2e64068956b8e19278ac (diff) |
Sampler bias for all nofilter flavors
Instead of a piecemeal approach to sampler bias (http://crrev.com/1642273002,
http://crrev.com/1539083002), audit all nofilter procs (grep "fInvProc(")
and convert them to SkBitmapProcStateAutoMapper.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1656833002
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
R=reed@google.com
Review URL: https://codereview.chromium.org/1656833002
Diffstat (limited to 'src/core/SkBitmapProcState.cpp')
-rw-r--r-- | src/core/SkBitmapProcState.cpp | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp index 163bc88aff..f62f4f0c6d 100644 --- a/src/core/SkBitmapProcState.cpp +++ b/src/core/SkBitmapProcState.cpp @@ -492,21 +492,17 @@ static void S32_D32_constX_shaderproc(const void* sIn, int yTemp; if (s.fInvType > SkMatrix::kTranslate_Mask) { - // TODO(fmalita): looks like another SkBitmapProcStateAutoMapper customer - SkPoint pt; - s.fInvProc(s.fInvMatrix, - SkIntToScalar(x) + SK_ScalarHalf, - SkIntToScalar(y) + SK_ScalarHalf, - &pt); + const SkBitmapProcStateAutoMapper mapper(s, x, y); + // When the matrix has a scale component the setup code in // chooseProcs multiples the inverse matrix by the inverse of the // bitmap's width and height. Since this method is going to do // its own tiling and sampling we need to undo that here. if (SkShader::kClamp_TileMode != s.fTileModeX || SkShader::kClamp_TileMode != s.fTileModeY) { - yTemp = SkScalarFloorToInt(pt.fY * s.fPixmap.height()); + yTemp = SkFractionalIntToInt(mapper.y() * s.fPixmap.height()); } else { - yTemp = SkScalarFloorToInt(pt.fY); + yTemp = SkFractionalIntToInt(mapper.y()); } } else { yTemp = s.fFilterOneY + y; @@ -528,20 +524,14 @@ static void S32_D32_constX_shaderproc(const void* sIn, #ifdef SK_DEBUG { + const SkBitmapProcStateAutoMapper mapper(s, x, y); int iY2; - if (s.fInvType > SkMatrix::kTranslate_Mask) { - SkPoint pt; - s.fInvProc(s.fInvMatrix, - SkIntToScalar(x) + SK_ScalarHalf, - SkIntToScalar(y) + SK_ScalarHalf, - &pt); - if (SkShader::kClamp_TileMode != s.fTileModeX || - SkShader::kClamp_TileMode != s.fTileModeY) { - pt.fY *= s.fPixmap.height(); - } - iY2 = SkScalarFloorToInt(pt.fY); + + if (s.fInvType > SkMatrix::kTranslate_Mask && + (SkShader::kClamp_TileMode != s.fTileModeX || + SkShader::kClamp_TileMode != s.fTileModeY)) { + iY2 = SkFractionalIntToInt(mapper.y() * s.fPixmap.height()); } else { - const SkBitmapProcStateAutoMapper mapper(s, x, y); iY2 = SkFractionalIntToInt(mapper.y()); } |