| Index: src/gpu/GrOvalRenderer.cpp
 | 
| diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp
 | 
| index 22a18d2d10489814079f4d929a4add781aa9e072..eac6fb4a3af5b2b3a3cb1ffba7659548ed4d7be4 100644
 | 
| --- a/src/gpu/GrOvalRenderer.cpp
 | 
| +++ b/src/gpu/GrOvalRenderer.cpp
 | 
| @@ -144,8 +144,8 @@
 | 
|          return cee.fStroke == fStroke;
 | 
|      }
 | 
|  
 | 
| -    virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE {
 | 
| -        out->setUnknownSingleComponent();
 | 
| +    virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVERRIDE {
 | 
| +        inout->mulByUnknownAlpha();
 | 
|      }
 | 
|  
 | 
|      const GrAttribute* fInPosition;
 | 
| @@ -290,8 +290,8 @@
 | 
|          return eee.fStroke == fStroke;
 | 
|      }
 | 
|  
 | 
| -    virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE {
 | 
| -        out->setUnknownSingleComponent();
 | 
| +    virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVERRIDE {
 | 
| +        inout->mulByUnknownAlpha();
 | 
|      }
 | 
|  
 | 
|      const GrAttribute* fInPosition;
 | 
| @@ -455,8 +455,8 @@
 | 
|          return eee.fMode == fMode;
 | 
|      }
 | 
|  
 | 
| -    virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE {
 | 
| -        out->setUnknownSingleComponent();
 | 
| +    virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVERRIDE {
 | 
| +        inout->mulByUnknownAlpha();
 | 
|      }
 | 
|  
 | 
|      const GrAttribute* fInPosition;
 | 
| @@ -562,8 +562,8 @@
 | 
|          }
 | 
|      }
 | 
|  
 | 
| -    SkAutoTUnref<GrGeometryProcessor> gp(
 | 
| -            CircleEdgeEffect::Create(color, isStrokeOnly && innerRadius > 0));
 | 
| +    GrGeometryProcessor* gp = CircleEdgeEffect::Create(color, isStrokeOnly && innerRadius > 0);
 | 
| +    drawState->setGeometryProcessor(gp)->unref();
 | 
|  
 | 
|      GrDrawTarget::AutoReleaseGeometry geo(target, 4, gp->getVertexStride(),  0);
 | 
|      SkASSERT(gp->getVertexStride() == sizeof(CircleVertex));
 | 
| @@ -609,7 +609,7 @@
 | 
|      verts[3].fInnerRadius = innerRadius;
 | 
|  
 | 
|      target->setIndexSourceToBuffer(context->getGpu()->getQuadIndexBuffer());
 | 
| -    target->drawIndexedInstances(drawState, gp, kTriangles_GrPrimitiveType, 1, 4, 6, &bounds);
 | 
| +    target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 4, 6, &bounds);
 | 
|      target->resetIndexSource();
 | 
|  }
 | 
|  
 | 
| @@ -689,8 +689,11 @@
 | 
|          return false;
 | 
|      }
 | 
|  
 | 
| -    SkAutoTUnref<GrGeometryProcessor> gp(
 | 
| -            EllipseEdgeEffect::Create(color, isStrokeOnly && innerXRadius > 0 && innerYRadius > 0));
 | 
| +    GrGeometryProcessor* gp = EllipseEdgeEffect::Create(color,
 | 
| +                                                        isStrokeOnly &&
 | 
| +                                                        innerXRadius > 0 && innerYRadius > 0);
 | 
| +
 | 
| +    drawState->setGeometryProcessor(gp)->unref();
 | 
|  
 | 
|      GrDrawTarget::AutoReleaseGeometry geo(target, 4, gp->getVertexStride(),  0);
 | 
|      SkASSERT(gp->getVertexStride() == sizeof(EllipseVertex));
 | 
| @@ -741,7 +744,7 @@
 | 
|      verts[3].fInnerRadii = SkPoint::Make(xInnerRadRecip, yInnerRadRecip);
 | 
|  
 | 
|      target->setIndexSourceToBuffer(context->getGpu()->getQuadIndexBuffer());
 | 
| -    target->drawIndexedInstances(drawState, gp, kTriangles_GrPrimitiveType, 1, 4, 6, &bounds);
 | 
| +    target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 4, 6, &bounds);
 | 
|      target->resetIndexSource();
 | 
|  
 | 
|      return true;
 | 
| @@ -806,7 +809,9 @@
 | 
|      SkScalar innerRatioX = SkScalarDiv(xRadius, innerXRadius);
 | 
|      SkScalar innerRatioY = SkScalarDiv(yRadius, innerYRadius);
 | 
|  
 | 
| -    SkAutoTUnref<GrGeometryProcessor> gp(DIEllipseEdgeEffect::Create(color, mode));
 | 
| +    GrGeometryProcessor* gp = DIEllipseEdgeEffect::Create(color, mode);
 | 
| +
 | 
| +    drawState->setGeometryProcessor(gp)->unref();
 | 
|  
 | 
|      GrDrawTarget::AutoReleaseGeometry geo(target, 4, gp->getVertexStride(),  0);
 | 
|      SkASSERT(gp->getVertexStride() == sizeof(DIEllipseVertex));
 | 
| @@ -852,7 +857,7 @@
 | 
|      verts[3].fInnerOffset = SkPoint::Make(innerRatioX + offsetDx, -innerRatioY - offsetDy);
 | 
|  
 | 
|      target->setIndexSourceToBuffer(context->getGpu()->getQuadIndexBuffer());
 | 
| -    target->drawIndexedInstances(drawState, gp, kTriangles_GrPrimitiveType, 1, 4, 6, &bounds);
 | 
| +    target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 4, 6, &bounds);
 | 
|      target->resetIndexSource();
 | 
|  
 | 
|      return true;
 | 
| @@ -1072,7 +1077,8 @@
 | 
|  
 | 
|          isStrokeOnly = (isStrokeOnly && innerRadius >= 0);
 | 
|  
 | 
| -        SkAutoTUnref<GrGeometryProcessor> effect(CircleEdgeEffect::Create(color, isStrokeOnly));
 | 
| +        GrGeometryProcessor* effect = CircleEdgeEffect::Create(color, isStrokeOnly);
 | 
| +        drawState->setGeometryProcessor(effect)->unref();
 | 
|  
 | 
|          GrDrawTarget::AutoReleaseGeometry geo(target, 16, effect->getVertexStride(),  0);
 | 
|          SkASSERT(effect->getVertexStride() == sizeof(CircleVertex));
 | 
| @@ -1134,7 +1140,7 @@
 | 
|          int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 :
 | 
|                                        SK_ARRAY_COUNT(gRRectIndices);
 | 
|          target->setIndexSourceToBuffer(indexBuffer);
 | 
| -        target->drawIndexedInstances(drawState, effect, kTriangles_GrPrimitiveType, 1, 16, indexCnt,
 | 
| +        target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 16, indexCnt,
 | 
|                                       &bounds);
 | 
|  
 | 
|      // otherwise we use the ellipse renderer
 | 
| @@ -1173,7 +1179,8 @@
 | 
|  
 | 
|          isStrokeOnly = (isStrokeOnly && innerXRadius >= 0 && innerYRadius >= 0);
 | 
|  
 | 
| -        SkAutoTUnref<GrGeometryProcessor> effect(EllipseEdgeEffect::Create(color, isStrokeOnly));
 | 
| +        GrGeometryProcessor* effect = EllipseEdgeEffect::Create(color, isStrokeOnly);
 | 
| +        drawState->setGeometryProcessor(effect)->unref();
 | 
|  
 | 
|          GrDrawTarget::AutoReleaseGeometry geo(target, 16, effect->getVertexStride(),  0);
 | 
|          SkASSERT(effect->getVertexStride() == sizeof(EllipseVertex));
 | 
| @@ -1240,7 +1247,7 @@
 | 
|          int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 :
 | 
|                                        SK_ARRAY_COUNT(gRRectIndices);
 | 
|          target->setIndexSourceToBuffer(indexBuffer);
 | 
| -        target->drawIndexedInstances(drawState, effect, kTriangles_GrPrimitiveType, 1, 16, indexCnt,
 | 
| +        target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 16, indexCnt,
 | 
|                                       &bounds);
 | 
|      }
 | 
|  
 | 
| 
 |