Make SkBlurImageFilter capable of cropping during blur (GPU path).
authorsenorblanco <senorblanco@chromium.org>
Thu, 5 Nov 2015 22:48:43 +0000 (14:48 -0800)
committerCommit bot <commit-bot@chromium.org>
Thu, 5 Nov 2015 22:48:43 +0000 (14:48 -0800)
commitc57e0ded7d535523cfc6bf07c78e5f3479bb8c42
treeaf4fd9ca03e47cacb1075f80e036e8c4c3edf232
parentfca294b83b9ffd77cab6326a8a76eb472b2b78d6
Make SkBlurImageFilter capable of cropping during blur (GPU path).

This is the GPU equivalent of https://codereview.chromium.org/1415653003/.

It requires passing down the bounds of the crop rect (srcBounds), and
turning the blur 3-patch optimization in convolve_gaussian() into a 5-patch:
clear above and below srcBounds, blur with bounds checks inside left and
right rects, blur without bounds checks in middle rect.

Note: this change causes minor pixels diffs in the
imagefilterscropexpand GM: for odd crop positions relative to the
dstBounds, we are now correctly resampling at an even pixel boundary.

BUG=skia:4502, skia:4526

Review URL: https://codereview.chromium.org/1431593002
src/effects/SkBlurImageFilter.cpp
src/effects/SkBlurMaskFilter.cpp
src/effects/SkGpuBlurUtils.cpp
src/effects/SkGpuBlurUtils.h