Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 5ba174cafcc53e9f483b7844c1f1d98b173629ac..adc8599bf7d7aff0a581047e43c9c1edea51f2b0 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -919,7 +919,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(), |
@@ -939,6 +939,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; |