diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp index 6356c1a5dd..4c4b56beac 100644 --- a/src/core/SkImageFilter.cpp +++ b/src/core/SkImageFilter.cpp @@ -122,6 +122,16 @@ bool SkImageFilter::filterBounds(const SkIRect& src, const SkMatrix& ctm, SkIRect* dst) const { SkASSERT(&src); SkASSERT(dst); + if (SkImageFilter::GetExternalCache()) { + /* + * When the external cache is active, do not intersect the saveLayer + * bounds with the clip bounds. This is so that the cached result + * is always the full size of the primitive's bounds, + * regardless of the clip active on first draw. + */ + *dst = SkIRect::MakeLargest(); + return true; + } return this->onFilterBounds(src, ctm, dst); }