| 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);
|
|
|