aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkImageFilterUtils.cpp
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-10 21:22:18 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-10 21:22:18 +0000
commit7b320703d47ff2b242ae74faba5e4b0af3560d71 (patch)
treeb1342d3ffc2401191a0272317a20d8c5cf92ef97 /src/core/SkImageFilterUtils.cpp
parentb446fc7f05d2e3f22d574187b433e02b0c781e1f (diff)
Implement offset for GPU filter path. Although we can't yet use this in Blink for FEOffset, due to SVG semantics, we can use it to support crop rect (upcoming patch).
This patch adds the parameter to the filterImageGPU() signature, plumbs through the code on the GPU side, and implements support for it in SkXfermodeImageFilter for both raster and GPU. Of the remaining filters with GPU implementations, Blur, Morphology, Bicubic and Displacement work fine; they're commutative wrt offset and can simply pass it up the chain. Blend is not, but will be removed shortly anyway (has been replaced with SkXfermodeImageFilter in Blink). R=reed@google.com, bsalomon@google.com Author: senorblanco@chromium.org Review URL: https://chromiumcodereview.appspot.com/15995026 git-svn-id: http://skia.googlecode.com/svn/trunk@9977 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkImageFilterUtils.cpp')
-rw-r--r--src/core/SkImageFilterUtils.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/core/SkImageFilterUtils.cpp b/src/core/SkImageFilterUtils.cpp
index d6e109c1ad..c88d5fed41 100644
--- a/src/core/SkImageFilterUtils.cpp
+++ b/src/core/SkImageFilterUtils.cpp
@@ -20,15 +20,16 @@ bool SkImageFilterUtils::WrapTexture(GrTexture* texture, int width, int height,
return true;
}
-bool SkImageFilterUtils::GetInputResultGPU(SkImageFilter* filter, SkImageFilter::Proxy* proxy, const SkBitmap& src, SkBitmap* result) {
+bool SkImageFilterUtils::GetInputResultGPU(SkImageFilter* filter, SkImageFilter::Proxy* proxy,
+ const SkBitmap& src, SkBitmap* result,
+ SkIPoint* offset) {
if (!filter) {
*result = src;
return true;
} else if (filter->canFilterImageGPU()) {
- return filter->filterImageGPU(proxy, src, result);
+ return filter->filterImageGPU(proxy, src, result, offset);
} else {
- SkIPoint offset;
- if (filter->filterImage(proxy, src, SkMatrix(), result, &offset)) {
+ if (filter->filterImage(proxy, src, SkMatrix(), result, offset)) {
if (!result->getTexture()) {
GrContext* context = ((GrTexture *) src.getTexture())->getContext();
GrTexture* resultTex = GrLockAndRefCachedBitmapTexture(context,