Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 39f9ef3d7c9533f11f721b3054db1832c7041705..36e76e99409e2975d9581e44a2ce038dc68c0787 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -922,6 +922,10 @@ void SkGpuDevice::drawPath(const SkDraw& draw, const SkPath& origSrcPath, |
draw.fClip->getBounds(), |
fContext->getMatrix(), |
&maskRect)) { |
+ // The context's matrix may change while creating the mask, so save the CTM here to |
+ // pass to filterMaskGPU. |
+ const SkMatrix ctm = fContext->getMatrix(); |
+ |
SkIRect finalIRect; |
maskRect.roundOut(&finalIRect); |
if (draw.fClip->quickReject(finalIRect)) { |
@@ -940,8 +944,7 @@ void SkGpuDevice::drawPath(const SkDraw& draw, const SkPath& origSrcPath, |
GrTexture* filtered; |
if (paint.getMaskFilter()->filterMaskGPU(mask.texture(), |
- fContext->getMatrix(), maskRect, |
- &filtered, true)) { |
+ ctm, maskRect, &filtered, true)) { |
// filterMaskGPU gives us ownership of a ref to the result |
SkAutoTUnref<GrTexture> atu(filtered); |