Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(850)

Unified Diff: src/effects/SkBlurMaskFilter.cpp

Issue 808703006: remove view matrix from context (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: one more fix Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/effects/SkAlphaThresholdFilter.cpp ('k') | src/effects/SkDisplacementMapEffect.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)) {
+ 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;
« no previous file with comments | « src/effects/SkAlphaThresholdFilter.cpp ('k') | src/effects/SkDisplacementMapEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698