Strength reduce bilerp to nearest neighbor when the matrix is integer translate.
authorMike Klein <mtklein@chromium.org>
Thu, 17 Nov 2016 19:04:22 +0000 (14:04 -0500)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Thu, 17 Nov 2016 20:49:25 +0000 (20:49 +0000)
BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4967

Change-Id: I986f5695660d198532f5b0b367868ae904de92a1
Reviewed-on: https://skia-review.googlesource.com/4967
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>

src/image/SkImageShader.cpp

index 152007d..da7bb2f 100644 (file)
@@ -300,6 +300,13 @@ bool SkImageShader::onAppendStages(SkRasterPipeline* p, SkColorSpace* dst, SkFal
         return false;
     }
 
+    // When the matrix is just an integer translate, bilerp == nearest neighbor.
+    if (matrix.getType() <= SkMatrix::kTranslate_Mask &&
+        matrix.getTranslateX() == (int)matrix.getTranslateX() &&
+        matrix.getTranslateY() == (int)matrix.getTranslateY()) {
+        quality = kNone_SkFilterQuality;
+    }
+
     // TODO: bilerp
     if (quality != kNone_SkFilterQuality) {
         return false;