| Index: src/gpu/GrAARectRenderer.cpp | 
| diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp | 
| index 9243e212e4a0c5ee66a40bb7a64a9630faa125a6..005184602b87a22434d28cde90046ace9474df3b 100644 | 
| --- a/src/gpu/GrAARectRenderer.cpp | 
| +++ b/src/gpu/GrAARectRenderer.cpp | 
| @@ -31,14 +31,18 @@ static void set_inset_fan(SkPoint* pts, size_t stride, | 
| } | 
|  | 
| static const GrGeometryProcessor* create_fill_rect_gp(bool tweakAlphaForCoverage, | 
| -                                                      const SkMatrix& localMatrix) { | 
| +                                                      const SkMatrix& localMatrix, | 
| +                                                      bool usesLocalCoords, | 
| +                                                      bool coverageIgnored) { | 
| uint32_t flags = GrDefaultGeoProcFactory::kColor_GPType; | 
| const GrGeometryProcessor* gp; | 
| if (tweakAlphaForCoverage) { | 
| -        gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, SkMatrix::I(), localMatrix); | 
| +        gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords, coverageIgnored, | 
| +                                             SkMatrix::I(), localMatrix); | 
| } else { | 
| flags |= GrDefaultGeoProcFactory::kCoverage_GPType; | 
| -        gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, SkMatrix::I(), localMatrix); | 
| +        gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords, coverageIgnored, | 
| +                                             SkMatrix::I(), localMatrix); | 
| } | 
| return gp; | 
| } | 
| @@ -95,20 +99,12 @@ public: | 
| } | 
|  | 
| SkAutoTUnref<const GrGeometryProcessor> gp(create_fill_rect_gp(canTweakAlphaForCoverage, | 
| -                                                                       localMatrix)); | 
| +                                                                       localMatrix, | 
| +                                                                       this->usesLocalCoords(), | 
| +                                                                       this->coverageIgnored())); | 
|  | 
| batchTarget->initDraw(gp, pipeline); | 
|  | 
| -        // TODO this is hacky, but the only way we have to initialize the GP is to use the | 
| -        // GrPipelineInfo struct so we can generate the correct shader.  Once we have GrBatch | 
| -        // everywhere we can remove this nastiness | 
| -        GrPipelineInfo init; | 
| -        init.fColorIgnored = fBatch.fColorIgnored; | 
| -        init.fOverrideColor = GrColor_ILLEGAL; | 
| -        init.fCoverageIgnored = fBatch.fCoverageIgnored; | 
| -        init.fUsesLocalCoords = this->usesLocalCoords(); | 
| -        gp->initBatchTracker(batchTarget->currentBatchTracker(), init); | 
| - | 
| size_t vertexStride = gp->getVertexStride(); | 
| SkASSERT(canTweakAlphaForCoverage ? | 
| vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorAttr) : | 
| @@ -176,6 +172,7 @@ private: | 
| bool canTweakAlphaForCoverage() const { return fBatch.fCanTweakAlphaForCoverage; } | 
| bool colorIgnored() const { return fBatch.fColorIgnored; } | 
| const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } | 
| +    bool coverageIgnored() const { return fBatch.fCoverageIgnored; } | 
|  | 
| bool onCombineIfPossible(GrBatch* t) override { | 
| AAFillRectBatch* that = t->cast<AAFillRectBatch>(); | 
| @@ -453,20 +450,12 @@ public: | 
| } | 
|  | 
| SkAutoTUnref<const GrGeometryProcessor> gp(create_fill_rect_gp(canTweakAlphaForCoverage, | 
| -                                                                       localMatrix)); | 
| +                                                                       localMatrix, | 
| +                                                                       this->usesLocalCoords(), | 
| +                                                                       this->coverageIgnored())); | 
|  | 
| batchTarget->initDraw(gp, pipeline); | 
|  | 
| -        // TODO this is hacky, but the only way we have to initialize the GP is to use the | 
| -        // GrPipelineInfo struct so we can generate the correct shader.  Once we have GrBatch | 
| -        // everywhere we can remove this nastiness | 
| -        GrPipelineInfo init; | 
| -        init.fColorIgnored = fBatch.fColorIgnored; | 
| -        init.fOverrideColor = GrColor_ILLEGAL; | 
| -        init.fCoverageIgnored = fBatch.fCoverageIgnored; | 
| -        init.fUsesLocalCoords = this->usesLocalCoords(); | 
| -        gp->initBatchTracker(batchTarget->currentBatchTracker(), init); | 
| - | 
| size_t vertexStride = gp->getVertexStride(); | 
|  | 
| SkASSERT(canTweakAlphaForCoverage ? | 
| @@ -626,6 +615,7 @@ private: | 
| bool colorIgnored() const { return fBatch.fColorIgnored; } | 
| const SkMatrix& viewMatrix() const { return fBatch.fViewMatrix; } | 
| bool miterStroke() const { return fBatch.fMiterStroke; } | 
| +    bool coverageIgnored() const { return fBatch.fCoverageIgnored; } | 
|  | 
| bool onCombineIfPossible(GrBatch* t) override { | 
| AAStrokeRectBatch* that = t->cast<AAStrokeRectBatch>(); | 
|  |