diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-01-08 22:25:53 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-01-08 22:25:53 +0000 |
commit | 41bf930039314cc71039b12957195f1c65c30ce1 (patch) | |
tree | 8c3014a907eefb9c6968bfdaff18bed82f01203d /src/core | |
parent | f1901788d8753332c5748a30e8d14e290c155bd1 (diff) |
Rename GPU functions on SkBlurMaskFilter and pass ctm.
R=robertphillips@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/109823012
git-svn-id: http://skia.googlecode.com/svn/trunk@12978 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkMaskFilter.cpp | 53 |
1 files changed, 2 insertions, 51 deletions
diff --git a/src/core/SkMaskFilter.cpp b/src/core/SkMaskFilter.cpp index 1bc17bb47f..ebcdbea4d2 100644 --- a/src/core/SkMaskFilter.cpp +++ b/src/core/SkMaskFilter.cpp @@ -298,7 +298,7 @@ SkMaskFilter::filterRectsToNine(const SkRect[], int count, const SkMatrix&, } #if SK_SUPPORT_GPU -bool SkMaskFilter::asNewEffect(GrEffectRef** effect, GrTexture*) const { +bool SkMaskFilter::asNewEffect(GrEffectRef** effect, GrTexture*, const SkMatrix&) const { return false; } @@ -309,58 +309,9 @@ bool SkMaskFilter::canFilterMaskGPU(const SkRect& devBounds, return false; } -bool SkMaskFilter::filterMaskGPU(GrContext* context, - const SkBitmap& srcBM, - const SkRect& maskRect, - SkBitmap* resultBM) const { - SkAutoTUnref<GrTexture> src; - bool canOverwriteSrc = false; - if (NULL == srcBM.getTexture()) { - GrTextureDesc desc; - // Needs to be a render target to be overwritten in filterMaskGPU - desc.fFlags = kRenderTarget_GrTextureFlagBit | kNoStencil_GrTextureFlagBit; - desc.fConfig = SkBitmapConfig2GrPixelConfig(srcBM.config()); - desc.fWidth = srcBM.width(); - desc.fHeight = srcBM.height(); - - // TODO: right now this is exact to guard against out of bounds reads - // by the filter code. More thought needs to be devoted to the - // "filterMaskGPU" contract and then enforced (i.e., clamp the code - // in "filterMaskGPU" so it never samples beyond maskRect) - GrAutoScratchTexture ast(context, desc, GrContext::kExact_ScratchTexMatch); - if (NULL == ast.texture()) { - return false; - } - - SkAutoLockPixels alp(srcBM); - ast.texture()->writePixels(0, 0, srcBM.width(), srcBM.height(), - desc.fConfig, - srcBM.getPixels(), srcBM.rowBytes()); - - src.reset(ast.detach()); - canOverwriteSrc = true; - } else { - src.reset((GrTexture*) srcBM.getTexture()); - src.get()->ref(); - } - GrTexture* dst; - - bool result = this->filterMaskGPU(src, maskRect, &dst, canOverwriteSrc); - if (!result) { - return false; - } - SkAutoUnref aur(dst); - - SkImageInfo info; - resultBM->setConfig(srcBM.config(), dst->width(), dst->height()); - if (!resultBM->asImageInfo(&info)) { - return false; - } - resultBM->setPixelRef(SkNEW_ARGS(SkGrPixelRef, (info, dst)))->unref(); - return true; -} bool SkMaskFilter::filterMaskGPU(GrTexture* src, + const SkMatrix& ctm, const SkRect& maskRect, GrTexture** result, bool canOverwriteSrc) const { |