Chromium Code Reviews| Index: src/effects/SkBlurMaskFilter.cpp |
| diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp |
| index 7c0bbb851d1c3ca35a703c7b6c6bf299bd83a335..d880d283040106e15e3a6fc672159f385f26fb90 100644 |
| --- a/src/effects/SkBlurMaskFilter.cpp |
| +++ b/src/effects/SkBlurMaskFilter.cpp |
| @@ -50,10 +50,12 @@ public: |
| SkRect* maskRect) const SK_OVERRIDE; |
| virtual bool directFilterMaskGPU(GrContext* context, |
| GrPaint* grp, |
| + const SkMatrix& viewMatrix, |
| const SkStrokeRec& strokeRec, |
| const SkPath& path) const SK_OVERRIDE; |
| virtual bool directFilterRRectMaskGPU(GrContext* context, |
| GrPaint* grp, |
| + const SkMatrix& viewMatrix, |
| const SkStrokeRec& strokeRec, |
| const SkRRect& rrect) const SK_OVERRIDE; |
| @@ -835,6 +837,7 @@ GrFragmentProcessor* GrRectBlurEffect::TestCreate(SkRandom* random, |
| bool SkBlurMaskFilterImpl::directFilterMaskGPU(GrContext* context, |
| GrPaint* grp, |
| + const SkMatrix& viewMatrix, |
| const SkStrokeRec& strokeRec, |
| const SkPath& path) const { |
| if (fBlurStyle != kNormal_SkBlurStyle) { |
| @@ -850,7 +853,7 @@ bool SkBlurMaskFilterImpl::directFilterMaskGPU(GrContext* context, |
| return false; |
| } |
| - SkMatrix ctm = context->getMatrix(); |
| + SkMatrix ctm = viewMatrix; |
| SkScalar xformedSigma = this->computeXformedSigma(ctm); |
| int pad=SkScalarCeilToInt(6*xformedSigma)/2; |
| @@ -861,14 +864,13 @@ bool SkBlurMaskFilterImpl::directFilterMaskGPU(GrContext* context, |
| return false; |
| } |
| - GrContext::AutoMatrix am; |
| - if (!am.setIdentity(context, grp)) { |
| - return false; |
| + if (!grp->localCoordChangeInverse(viewMatrix)) { |
|
bsalomon
2014/12/17 17:12:33
eek... Gotta figure out if we can get rid of this
|
| + return false; |
| } |
| grp->addCoverageProcessor(fp); |
| - context->drawRect(*grp, rect); |
| + context->drawRect(*grp, SkMatrix::I(), rect); |
| return true; |
| } |
| @@ -1122,6 +1124,7 @@ GrGLFragmentProcessor* GrRRectBlurEffect::createGLInstance() const { |
| bool SkBlurMaskFilterImpl::directFilterRRectMaskGPU(GrContext* context, |
| GrPaint* grp, |
| + const SkMatrix& viewMatrix, |
| const SkStrokeRec& strokeRec, |
| const SkRRect& rrect) const { |
| if (fBlurStyle != kNormal_SkBlurStyle) { |
| @@ -1133,7 +1136,7 @@ bool SkBlurMaskFilterImpl::directFilterRRectMaskGPU(GrContext* context, |
| } |
| SkRect proxy_rect = rrect.rect(); |
| - SkMatrix ctm = context->getMatrix(); |
| + SkMatrix ctm = viewMatrix; |
| SkScalar xformedSigma = this->computeXformedSigma(ctm); |
| float extra=3.f*SkScalarCeilToScalar(xformedSigma-1/6.0f); |
| proxy_rect.outset(extra, extra); |
| @@ -1143,14 +1146,13 @@ bool SkBlurMaskFilterImpl::directFilterRRectMaskGPU(GrContext* context, |
| return false; |
| } |
| - GrContext::AutoMatrix am; |
| - if (!am.setIdentity(context, grp)) { |
| - return false; |
| + if (!grp->localCoordChangeInverse(viewMatrix)) { |
| + return false; |
| } |
| grp->addCoverageProcessor(fp); |
| - context->drawRect(*grp, proxy_rect); |
| + context->drawRect(*grp, SkMatrix::I(), proxy_rect); |
| return true; |
| } |
| @@ -1215,7 +1217,6 @@ bool SkBlurMaskFilterImpl::filterMaskGPU(GrTexture* src, |
| } |
| if (!isNormalBlur) { |
| - context->setIdentityMatrix(); |
| GrPaint paint; |
| SkMatrix matrix; |
| matrix.setIDiv(src->width(), src->height()); |
| @@ -1234,7 +1235,7 @@ bool SkBlurMaskFilterImpl::filterMaskGPU(GrTexture* src, |
| // = 0 * src + (1 - src) * dst |
| paint.setPorterDuffXPFactory(kZero_GrBlendCoeff, kISC_GrBlendCoeff); |
| } |
| - context->drawRect(paint, clipRect); |
| + context->drawRect(paint, SkMatrix::I(), clipRect); |
| } |
| return true; |