aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2016-11-03 11:42:49 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-11-03 11:42:49 -0700
commitb1c7f88df9ec40b4efb52d314304adfbaf95697c (patch)
treeb1dbe3e726dbbd203a47b167d6cf938d23255d28 /src/core
parentbdabcc4cb873dc4de39263c995900a05e6a32cf4 (diff)
Fix kMediumQuality invMatrix setup for sizes == mip levels
When downscaling with kMediumQuality in non-clamp mode, if we happen to hit a size == mip level, then SkBitmapProcInfo::init takes the trivial matrix path and doesn't set up a matrix for normalized coords on the assumption that we're going to ignore the transform. But kMediumQuality disables allow_ignore_fractional_translate, so we take the filter path after all - but with an incorrect matrix. R=reed@google.com BUG=chromium:661180 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2476713002 Review-Url: https://codereview.chromium.org/2476713002
Diffstat (limited to 'src/core')
-rw-r--r--src/core/SkBitmapProcState.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp
index 1508f94643..f04379cf20 100644
--- a/src/core/SkBitmapProcState.cpp
+++ b/src/core/SkBitmapProcState.cpp
@@ -158,7 +158,9 @@ bool SkBitmapProcInfo::init(const SkMatrix& inv, const SkPaint& paint) {
// We don't do this if we're either trivial (can ignore the matrix) or clamping
// in both X and Y since clamping to width,height is just as easy as to 0xFFFF.
- if (!(clampClamp || trivialMatrix)) {
+ // Note that we cannot ignore the matrix when allow_ignore_fractional_translate is false.
+
+ if (!(clampClamp || (trivialMatrix && allow_ignore_fractional_translate))) {
fInvMatrix.postIDiv(fPixmap.width(), fPixmap.height());
}