Index: src/gpu/SkGpuDevice_drawTexture.cpp |
diff --git a/src/gpu/SkGpuDevice_drawTexture.cpp b/src/gpu/SkGpuDevice_drawTexture.cpp |
index c387574719730a128987671d579cafa8769dfdc4..46a3699bb0f8a58b943ed8d10c3d6b53960d04e6 100644 |
--- a/src/gpu/SkGpuDevice_drawTexture.cpp |
+++ b/src/gpu/SkGpuDevice_drawTexture.cpp |
@@ -225,17 +225,23 @@ void SkGpuDevice::drawTextureProducerImpl(GrTextureProducer* producer, |
} |
// First see if we can do the draw + mask filter direct to the dst. |
- SkStrokeRec rec(SkStrokeRec::kFill_InitStyle); |
- if (mf->directFilterRRectMaskGPU(fContext, |
- fDrawContext.get(), |
- &grPaint, |
- clip, |
- viewMatrix, |
- rec, |
- SkRRect::MakeRect(clippedSrcRect), |
- SkRRect::MakeRect(clippedDstRect))) { |
- return; |
+ if (viewMatrix.isScaleTranslate()) { |
+ SkRect devClippedDstRect; |
+ viewMatrix.mapRectScaleTranslate(&devClippedDstRect, clippedDstRect); |
+ |
+ SkStrokeRec rec(SkStrokeRec::kFill_InitStyle); |
+ if (mf->directFilterRRectMaskGPU(fContext, |
+ fDrawContext.get(), |
+ &grPaint, |
+ clip, |
+ viewMatrix, |
+ rec, |
+ SkRRect::MakeRect(clippedDstRect), |
+ SkRRect::MakeRect(devClippedDstRect))) { |
+ return; |
+ } |
} |
+ |
SkPath rectPath; |
rectPath.addRect(clippedDstRect); |
rectPath.setIsVolatile(true); |