Index: src/gpu/GrAAConvexPathRenderer.cpp |
diff --git a/src/gpu/GrAAConvexPathRenderer.cpp b/src/gpu/GrAAConvexPathRenderer.cpp |
index 7e65fccc4502b5d314e324b711af6140723263f7..f5ecc983a5e6759dd8513dee0a0c51bac3f8e066 100644 |
--- a/src/gpu/GrAAConvexPathRenderer.cpp |
+++ b/src/gpu/GrAAConvexPathRenderer.cpp |
@@ -722,16 +722,29 @@ static void extract_verts(const GrAAConvexTessellator& tess, |
} |
static const GrGeometryProcessor* create_fill_gp(bool tweakAlphaForCoverage, |
- const SkMatrix& localMatrix, |
+ const SkMatrix& viewMatrix, |
bool usesLocalCoords, |
bool coverageIgnored) { |
- uint32_t flags = GrDefaultGeoProcFactory::kColor_GPType; |
- if (!tweakAlphaForCoverage) { |
- flags |= GrDefaultGeoProcFactory::kCoverage_GPType; |
+ using namespace GrDefaultGeoProcFactory; |
+ |
+ Color color(Color::kAttribute_Type); |
+ Coverage::Type coverageType; |
+ if (coverageIgnored) { |
+ coverageType = Coverage::kNone_Type; |
+ } else if (tweakAlphaForCoverage) { |
+ coverageType = Coverage::kSolid_Type; |
+ } else { |
+ coverageType = Coverage::kAttribute_Type; |
} |
+ Coverage coverage(coverageType); |
- return GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords, coverageIgnored, |
- SkMatrix::I(), localMatrix); |
+ if (usesLocalCoords) { |
+ LocalCoords localCoords(LocalCoords::kUsePosition_Type); |
bsalomon
2015/07/28 20:14:48
Let's see if we can always use CreateForDeviceSpac
|
+ return CreateForDeviceSpace(color, coverage, localCoords, viewMatrix); |
+ } else { |
robertphillips
2015/07/29 13:09:44
extra space ?
|
+ LocalCoords localCoords(LocalCoords::kUnused_Type); |
+ return Create(color, coverage, localCoords); |
+ } |
} |
class AAConvexPathBatch : public GrBatch { |
@@ -775,18 +788,16 @@ public: |
void generateGeometryLinesOnly(GrBatchTarget* batchTarget, const GrPipeline* pipeline) { |
bool canTweakAlphaForCoverage = this->canTweakAlphaForCoverage(); |
- SkMatrix invert; |
- if (this->usesLocalCoords() && !this->viewMatrix().invert(&invert)) { |
- SkDebugf("Could not invert viewmatrix\n"); |
+ // Setup GrGeometryProcessor |
+ SkAutoTUnref<const GrGeometryProcessor> gp(create_fill_gp(canTweakAlphaForCoverage, |
+ this->viewMatrix(), |
+ this->usesLocalCoords(), |
+ this->coverageIgnored())); |
+ if (!gp) { |
+ SkDebugf("Could not create GrGeometryProcessor\n"); |
return; |
} |
- // Setup GrGeometryProcessor |
- SkAutoTUnref<const GrGeometryProcessor> gp( |
- create_fill_gp(canTweakAlphaForCoverage, invert, |
- this->usesLocalCoords(), |
- this->coverageIgnored())); |
- |
batchTarget->initDraw(gp, pipeline); |
size_t vertexStride = gp->getVertexStride(); |