Index: src/gpu/GrAARectRenderer.cpp |
diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp |
index 93b276ad43ca36e5048ddac9d711a4a81d989fcb..dd8ddd09e18b8c9a7e13e47d9dae7aea4a7d3cf9 100644 |
--- a/src/gpu/GrAARectRenderer.cpp |
+++ b/src/gpu/GrAARectRenderer.cpp |
@@ -30,24 +30,6 @@ static void set_inset_fan(SkPoint* pts, size_t stride, |
pts->setRectFan(r.fLeft + dx, r.fTop + dy, |
r.fRight - dx, r.fBottom - dy, stride); |
} |
- |
-static const GrGeometryProcessor* create_fill_rect_gp(bool tweakAlphaForCoverage, |
- const SkMatrix& localMatrix, |
- 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); |
- } else { |
- flags |= GrDefaultGeoProcFactory::kCoverage_GPType; |
- gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords, coverageIgnored, |
- SkMatrix::I(), localMatrix); |
- } |
- return gp; |
-} |
- |
GR_DECLARE_STATIC_UNIQUE_KEY(gAAFillRectIndexBufferKey); |
class AAFillRectBatch : public GrBatch { |
@@ -92,17 +74,15 @@ 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"); |
+ SkAutoTUnref<const GrGeometryProcessor> gp( |
+ GrDefaultGeoProcFactory::CreateForDeviceSpaceAlphaTweakIfPossible( |
+ this->viewMatrix(), this->usesLocalCoords(), this->coverageIgnored(), |
+ canTweakAlphaForCoverage)); |
+ if (!gp) { |
+ SkDebugf("Couldn't create GrGeometryProcessor\n"); |
return; |
} |
- SkAutoTUnref<const GrGeometryProcessor> gp(create_fill_rect_gp(canTweakAlphaForCoverage, |
- localMatrix, |
- this->usesLocalCoords(), |
- this->coverageIgnored())); |
- |
batchTarget->initDraw(gp, pipeline); |
size_t vertexStride = gp->getVertexStride(); |
@@ -443,20 +423,15 @@ 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"); |
+ SkAutoTUnref<const GrGeometryProcessor> gp( |
+ GrDefaultGeoProcFactory::CreateForDeviceSpaceAlphaTweakIfPossible( |
+ this->viewMatrix(), this->usesLocalCoords(), this->coverageIgnored(), |
+ canTweakAlphaForCoverage)); |
+ if (!gp) { |
+ SkDebugf("Couldn't create GrGeometryProcessor\n"); |
return; |
} |
- SkAutoTUnref<const GrGeometryProcessor> gp(create_fill_rect_gp(canTweakAlphaForCoverage, |
- localMatrix, |
- this->usesLocalCoords(), |
- this->coverageIgnored())); |
- |
batchTarget->initDraw(gp, pipeline); |
size_t vertexStride = gp->getVertexStride(); |