aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkBitmapProcState.cpp
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2015-12-18 09:36:18 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-12-18 09:36:18 -0800
commit3e6be16e6d4dda6a27f0e1dbfe7c87fecfbf5577 (patch)
treedc05783873039d000e7f126e1c5d7fc328907ecf /src/core/SkBitmapProcState.cpp
parent14d8fa0f58bf7f814901d2ae068af8814d6ed1a4 (diff)
Revert of Repeating SkBitmapProcState rounding bias (patchset #6 id:100001 of https://codereview.chromium.org/1529833003/ )
Reason for revert: We need a SkFractionalInt auto mapper flavor, otherwise we're losing precision for some procs => seaming artifacs (https://gold.skia.org/diff?test=giantbitmap_mirror_point_rotate&left=0dd7a412fce81586e6a142e039ec2de9&top=a706d4bb2b8e994b936445b87115b07e) Original issue's description: > Repeating SkBitmapProcState rounding bias > > Observe the bias in repeat matrix procs also. > > Introduce a utility class to handle device space -> bitmap space > mapping. > > BUG=skia:4680,skia:4649 > R=reed@google.com > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1529833003 > > Committed: https://skia.googlesource.com/skia/+/5ae7fdcc3d7712da3193c39a751e88b092aa82db TBR=reed@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:4680,skia:4649 Review URL: https://codereview.chromium.org/1531423003
Diffstat (limited to 'src/core/SkBitmapProcState.cpp')
-rw-r--r--src/core/SkBitmapProcState.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp
index 6ed83002d9..487bd80402 100644
--- a/src/core/SkBitmapProcState.cpp
+++ b/src/core/SkBitmapProcState.cpp
@@ -820,10 +820,15 @@ void Clamp_S32_opaque_D32_nofilter_DX_shaderproc(const SkBitmapProcState& s, in
SkFractionalInt fx;
int dstY;
{
- const SkBitmapProcStateAutoMapper mapper(s, x, y);
+ SkPoint pt;
+ s.fInvProc(s.fInvMatrix, SkIntToScalar(x) + SK_ScalarHalf, SkIntToScalar(y) + SK_ScalarHalf,
+ &pt);
+ fx = SkScalarToFractionalInt(pt.fY)
+ + bitmap_sampler_inv_bias(s.fInvMatrix.getScaleY());
const unsigned maxY = s.fPixmap.height() - 1;
- dstY = SkClampMax(SkFixedFloorToInt(mapper.y()), maxY);
- fx = SkFixedToFractionalInt(mapper.x());
+ dstY = SkClampMax(SkFractionalIntToInt(fx), maxY);
+ fx = SkScalarToFractionalInt(pt.fX)
+ + bitmap_sampler_inv_bias(s.fInvMatrix.getScaleX());
}
const SkPMColor* SK_RESTRICT src = s.fPixmap.addr32(0, dstY);
@@ -859,3 +864,4 @@ void Clamp_S32_opaque_D32_nofilter_DX_shaderproc(const SkBitmapProcState& s, in
}
}
}
+