Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index f951a1555ef3e16a2c0c42b38134fafd246c7b91..c858403669fa13496bc85777bb41168171ad67e4 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -933,7 +933,7 @@ void SkGpuDevice::drawPath(const SkDraw& draw, const SkPath& origSrcPath, |
// transform the path into device space |
pathPtr->transform(fContext->getMatrix(), devPathPtr); |
- |
+ |
SkRect maskRect; |
if (paint.getMaskFilter()->canFilterMaskGPU(devPathPtr->getBounds(), |
draw.fClip->getBounds(), |
@@ -953,6 +953,13 @@ void SkGpuDevice::drawPath(const SkDraw& draw, const SkPath& origSrcPath, |
// nothing to draw |
return; |
} |
+ |
+ if (paint.getMaskFilter()->directFilterMaskGPU(fContext, &grPaint, |
+ SkStrokeRec(paint), *devPathPtr)) { |
+ // the mask filter was able to draw itself directly, so there's nothing |
+ // left to do. |
+ return; |
+ } |
GrAutoScratchTexture mask; |