aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkBitmapProcState.cpp
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2016-02-02 10:17:24 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-02-02 10:17:25 -0800
commiteb543071725f465e93ddcc052d54fd5c03f043f9 (patch)
tree13f7ee346ce3fb0652e14d3dd976bfad4c859b6b /src/core/SkBitmapProcState.cpp
parentf46d8a6fffef5e09c2fe2e64068956b8e19278ac (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.cpp30
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());
}