Index: src/gpu/GrClipMaskManager.cpp |
diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp |
index c1c59734ab50b6f133891dd388583bd68dc15fce..adb6ceee46c9d9165e68e54154ae4e9800f68263 100644 |
--- a/src/gpu/GrClipMaskManager.cpp |
+++ b/src/gpu/GrClipMaskManager.cpp |
@@ -158,18 +158,23 @@ bool GrClipMaskManager::setupClipping(const GrClipData* clipDataIn, |
// clips against the edges. |
if (1 == elements.count() && SkClipStack::Element::kPath_Type == elements.tail()->getType() && |
SkRegion::kReplace_Op == elements.tail()->getOp()) { |
- const SkPath& p = elements.tail()->getPath(); |
+ const SkPath& path = elements.tail()->getPath(); |
bool isAA = GR_AA_CLIP && elements.tail()->isAA(); |
SkAutoTUnref<GrEffectRef> effect; |
if (rt->isMultisampled()) { |
// A coverage effect for AA clipping won't play nicely with MSAA. |
if (!isAA) { |
- effect.reset(GrConvexPolyEffect::Create(GrConvexPolyEffect::kFillNoAA_EdgeType, p)); |
+ SkVector offset = { SkIntToScalar(-clipDataIn->fOrigin.fX), |
+ SkIntToScalar(-clipDataIn->fOrigin.fY) }; |
+ effect.reset(GrConvexPolyEffect::Create(GrConvexPolyEffect::kFillNoAA_EdgeType, |
+ path, &offset)); |
} |
} else { |
+ SkVector offset = { SkIntToScalar(-clipDataIn->fOrigin.fX), |
+ SkIntToScalar(-clipDataIn->fOrigin.fY) }; |
GrConvexPolyEffect::EdgeType type = isAA ? GrConvexPolyEffect::kFillAA_EdgeType : |
GrConvexPolyEffect::kFillNoAA_EdgeType; |
- effect.reset(GrConvexPolyEffect::Create(type, p)); |
+ effect.reset(GrConvexPolyEffect::Create(type, path, &offset)); |
} |
if (effect) { |
are->set(fGpu->drawState()); |