Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 07a946ef94ab1820ad71a2d48e69d97a98b23a4d..c367f47e8d78731075bfe36af2e96d69e178756e 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -1180,8 +1180,10 @@ void SkGpuDevice::drawBitmapCommon(const SkDraw& draw, |
tileFilterPad = 1; |
textureFilterMode = GrTextureParams::kMipMap_FilterMode; |
break; |
- case SkPaint::kHigh_FilterLevel: |
- if (flags & SkCanvas::kBleed_DrawBitmapRectFlag) { |
+ case SkPaint::kHigh_FilterLevel: { |
+ // Minification can look bad with the bicubic effect. |
+ if (fContext->getMatrix().getMinStretch() >= SK_Scalar1 && |
+ (flags & SkCanvas::kBleed_DrawBitmapRectFlag)) { |
// We will install an effect that does the filtering in the shader. |
textureFilterMode = GrTextureParams::kNone_FilterMode; |
tileFilterPad = GrBicubicEffect::kFilterTexelPad; |
@@ -1193,6 +1195,7 @@ void SkGpuDevice::drawBitmapCommon(const SkDraw& draw, |
tileFilterPad = 1; |
} |
break; |
+ } |
default: |
SkErrorInternals::SetError( kInvalidPaint_SkError, |
"Sorry, I don't understand the filtering " |