| Index: src/gpu/GrAARectRenderer.cpp
 | 
| diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp
 | 
| index ffee841464332060f3ca85397ac72304b1856a02..5050f3da5966545122380558f682f02ea3f0fef0 100644
 | 
| --- a/src/gpu/GrAARectRenderer.cpp
 | 
| +++ b/src/gpu/GrAARectRenderer.cpp
 | 
| @@ -32,20 +32,25 @@ static void set_inset_fan(SkPoint* pts, size_t stride,
 | 
|  }
 | 
|  
 | 
|  static const GrGeometryProcessor* create_fill_rect_gp(bool tweakAlphaForCoverage,
 | 
| -                                                      const SkMatrix& localMatrix,
 | 
| +                                                      const SkMatrix& viewMatrix,
 | 
|                                                        bool usesLocalCoords,
 | 
|                                                        bool coverageIgnored) {
 | 
| -    uint32_t flags = GrDefaultGeoProcFactory::kColor_GPType;
 | 
| -    const GrGeometryProcessor* gp;
 | 
| -    if (tweakAlphaForCoverage) {
 | 
| -        gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords, coverageIgnored,
 | 
| -                                             SkMatrix::I(), localMatrix);
 | 
| +    using namespace GrDefaultGeoProcFactory;
 | 
| +
 | 
| +    Color color(Color::kAttribute_Type);
 | 
| +    Coverage::Type coverageType;
 | 
| +    // TODO remove coverage if coverage is ignored
 | 
| +    /*if (coverageIgnored) {
 | 
| +        coverageType = Coverage::kNone_Type;
 | 
| +    } else*/ if (tweakAlphaForCoverage) {
 | 
| +        coverageType = Coverage::kSolid_Type;
 | 
|      } else {
 | 
| -        flags |= GrDefaultGeoProcFactory::kCoverage_GPType;
 | 
| -        gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords, coverageIgnored,
 | 
| -                                             SkMatrix::I(), localMatrix);
 | 
| +        coverageType = Coverage::kAttribute_Type;
 | 
|      }
 | 
| -    return gp;
 | 
| +    Coverage coverage(coverageType);
 | 
| +    LocalCoords localCoords(usesLocalCoords ? LocalCoords::kUsePosition_Type :
 | 
| +                                              LocalCoords::kUnused_Type);
 | 
| +    return CreateForDeviceSpace(color, coverage, localCoords, viewMatrix);
 | 
|  }
 | 
|  
 | 
|  GR_DECLARE_STATIC_UNIQUE_KEY(gAAFillRectIndexBufferKey);
 | 
| @@ -92,16 +97,14 @@ public:
 | 
|      void generateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline) override {
 | 
|          bool canTweakAlphaForCoverage = this->canTweakAlphaForCoverage();
 | 
|  
 | 
| -        SkMatrix localMatrix;
 | 
| -        if (this->usesLocalCoords() && !this->viewMatrix().invert(&localMatrix)) {
 | 
| -            SkDebugf("Cannot invert\n");
 | 
| -            return;
 | 
| -        }
 | 
| -
 | 
|          SkAutoTUnref<const GrGeometryProcessor> gp(create_fill_rect_gp(canTweakAlphaForCoverage,
 | 
| -                                                                       localMatrix,
 | 
| +                                                                       this->viewMatrix(),
 | 
|                                                                         this->usesLocalCoords(),
 | 
|                                                                         this->coverageIgnored()));
 | 
| +        if (!gp) {
 | 
| +            SkDebugf("Couldn't create GrGeometryProcessor\n");
 | 
| +            return;
 | 
| +        }
 | 
|  
 | 
|          batchTarget->initDraw(gp, pipeline);
 | 
|  
 | 
| @@ -444,18 +447,14 @@ public:
 | 
|      void generateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline) override {
 | 
|          bool canTweakAlphaForCoverage = this->canTweakAlphaForCoverage();
 | 
|  
 | 
| -        // Local matrix is ignored if we don't have local coords.  If we have localcoords we only
 | 
| -        // batch with identical view matrices
 | 
| -        SkMatrix localMatrix;
 | 
| -        if (this->usesLocalCoords() && !this->viewMatrix().invert(&localMatrix)) {
 | 
| -            SkDebugf("Cannot invert\n");
 | 
| -            return;
 | 
| -        }
 | 
| -
 | 
|          SkAutoTUnref<const GrGeometryProcessor> gp(create_fill_rect_gp(canTweakAlphaForCoverage,
 | 
| -                                                                       localMatrix,
 | 
| +                                                                       this->viewMatrix(),
 | 
|                                                                         this->usesLocalCoords(),
 | 
|                                                                         this->coverageIgnored()));
 | 
| +        if (!gp) {
 | 
| +            SkDebugf("Couldn't create GrGeometryProcessor\n");
 | 
| +            return;
 | 
| +        }
 | 
|  
 | 
|          batchTarget->initDraw(gp, pipeline);
 | 
|  
 | 
| 
 |