| Index: src/gpu/GrStencilAndCoverPathRenderer.cpp
 | 
| diff --git a/src/gpu/GrStencilAndCoverPathRenderer.cpp b/src/gpu/GrStencilAndCoverPathRenderer.cpp
 | 
| index f7330a81f649246530ff3fa56162d83ecf3f854f..ef3b953861639e47e35327cbd822017d583f94d8 100644
 | 
| --- a/src/gpu/GrStencilAndCoverPathRenderer.cpp
 | 
| +++ b/src/gpu/GrStencilAndCoverPathRenderer.cpp
 | 
| @@ -17,7 +17,7 @@
 | 
|  GrPathRenderer* GrStencilAndCoverPathRenderer::Create(GrContext* context) {
 | 
|      SkASSERT(NULL != context);
 | 
|      SkASSERT(NULL != context->getGpu());
 | 
| -    if (context->getGpu()->caps()->pathStencilingSupport()) {
 | 
| +    if (context->getGpu()->caps()->pathRenderingSupport()) {
 | 
|          return SkNEW_ARGS(GrStencilAndCoverPathRenderer, (context->getGpu()));
 | 
|      } else {
 | 
|          return NULL;
 | 
| @@ -25,7 +25,7 @@ GrPathRenderer* GrStencilAndCoverPathRenderer::Create(GrContext* context) {
 | 
|  }
 | 
|  
 | 
|  GrStencilAndCoverPathRenderer::GrStencilAndCoverPathRenderer(GrGpu* gpu) {
 | 
| -    SkASSERT(gpu->caps()->pathStencilingSupport());
 | 
| +    SkASSERT(gpu->caps()->pathRenderingSupport());
 | 
|      fGpu = gpu;
 | 
|      gpu->ref();
 | 
|  }
 | 
| @@ -40,6 +40,7 @@ bool GrStencilAndCoverPathRenderer::canDrawPath(const SkPath& path,
 | 
|                                                  bool antiAlias) const {
 | 
|      return stroke.isFillStyle() &&
 | 
|             !antiAlias && // doesn't do per-path AA, relies on the target having MSAA
 | 
| +           NULL != target->getDrawState().getRenderTarget()->getStencilBuffer() &&
 | 
|             target->getDrawState().getStencil().isDisabled();
 | 
|  }
 | 
|  
 | 
| @@ -70,27 +71,7 @@ bool GrStencilAndCoverPathRenderer::onDrawPath(const SkPath& path,
 | 
|  
 | 
|      SkAutoTUnref<GrPath> p(fGpu->createPath(path));
 | 
|  
 | 
| -    SkPath::FillType nonInvertedFill = SkPath::ConvertToNonInverseFillType(path.getFillType());
 | 
| -    target->stencilPath(p, stroke, nonInvertedFill);
 | 
| -
 | 
| -    // TODO: Use built in cover operation rather than a rect draw. This will require making our
 | 
| -    // fragment shaders be able to eat varyings generated by a matrix.
 | 
| -
 | 
| -    // fill the path, zero out the stencil
 | 
| -    SkRect bounds = p->getBounds();
 | 
| -    SkScalar bloat = drawState->getViewMatrix().getMaxStretch() * SK_ScalarHalf;
 | 
| -    GrDrawState::AutoViewMatrixRestore avmr;
 | 
| -
 | 
| -    if (nonInvertedFill == path.getFillType()) {
 | 
| -        GR_STATIC_CONST_SAME_STENCIL(kStencilPass,
 | 
| -            kZero_StencilOp,
 | 
| -            kZero_StencilOp,
 | 
| -            kNotEqual_StencilFunc,
 | 
| -            0xffff,
 | 
| -            0x0000,
 | 
| -            0xffff);
 | 
| -        *drawState->stencil() = kStencilPass;
 | 
| -    } else {
 | 
| +    if (path.isInverseFillType()) {
 | 
|          GR_STATIC_CONST_SAME_STENCIL(kInvertedStencilPass,
 | 
|              kZero_StencilOp,
 | 
|              kZero_StencilOp,
 | 
| @@ -101,23 +82,22 @@ bool GrStencilAndCoverPathRenderer::onDrawPath(const SkPath& path,
 | 
|              0xffff,
 | 
|              0x0000,
 | 
|              0xffff);
 | 
| -        SkMatrix vmi;
 | 
| -        bounds.setLTRB(0, 0,
 | 
| -                       SkIntToScalar(drawState->getRenderTarget()->width()),
 | 
| -                       SkIntToScalar(drawState->getRenderTarget()->height()));
 | 
| -        // mapRect through persp matrix may not be correct
 | 
| -        if (!drawState->getViewMatrix().hasPerspective() && drawState->getViewInverse(&vmi)) {
 | 
| -            vmi.mapRect(&bounds);
 | 
| -            // theoretically could set bloat = 0, instead leave it because of matrix inversion
 | 
| -            // precision.
 | 
| -        } else {
 | 
| -            avmr.setIdentity(drawState);
 | 
| -            bloat = 0;
 | 
| -        }
 | 
| +
 | 
|          *drawState->stencil() = kInvertedStencilPass;
 | 
| +    } else {
 | 
| +        GR_STATIC_CONST_SAME_STENCIL(kStencilPass,
 | 
| +            kZero_StencilOp,
 | 
| +            kZero_StencilOp,
 | 
| +            kNotEqual_StencilFunc,
 | 
| +            0xffff,
 | 
| +            0x0000,
 | 
| +            0xffff);
 | 
| +
 | 
| +        *drawState->stencil() = kStencilPass;
 | 
|      }
 | 
| -    bounds.outset(bloat, bloat);
 | 
| -    target->drawSimpleRect(bounds, NULL);
 | 
| +
 | 
| +    target->fillPath(p, stroke, path.getFillType());
 | 
| +
 | 
|      target->drawState()->stencil()->setDisabled();
 | 
|      return true;
 | 
|  }
 | 
| 
 |