Index: src/core/SkImageFilter.cpp |
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp |
index 3f6ea9a12becd54e339ffa15970a7f421bc9d2f9..bb7927669c175e0c9561af9b270e4ecc6668b793 100644 |
--- a/src/core/SkImageFilter.cpp |
+++ b/src/core/SkImageFilter.cpp |
@@ -87,6 +87,11 @@ bool SkImageFilter::CropRect::applyTo(const SkIRect& imageBounds, const Context& |
cropped->fBottom = cropped->fTop + devICropR.height(); |
} |
} |
+ // Intersect against the clip bounds, in case the crop rect has |
+ // grown the bounds beyond the original clip. This can happen for |
+ // example in tiling, where the clip is much smaller than the filtered |
+ // primitive. If we didn't do this, we would be processing the filter |
+ // at the full crop rect size in every tile. |
return cropped->intersect(ctx.clipBounds()); |
} |