Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 73eb65b6614af78eab2b14dfde2e50346908ae08..6160876dd18d59e1af06fdebb167b3440f3cbd8a 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; |