Chromium Code Reviews| Index: src/gpu/GrAAHairLinePathRenderer.cpp |
| diff --git a/src/gpu/GrAAHairLinePathRenderer.cpp b/src/gpu/GrAAHairLinePathRenderer.cpp |
| index 15a5569b3072c73c05471af3d7a0486042ce89f7..37150bd9a592317cffba51c34199a8900d326f95 100644 |
| --- a/src/gpu/GrAAHairLinePathRenderer.cpp |
| +++ b/src/gpu/GrAAHairLinePathRenderer.cpp |
| @@ -643,6 +643,7 @@ void add_line(const SkPoint p[2], |
| bool GrAAHairLinePathRenderer::createLineGeom(GrDrawTarget* target, |
| GrDrawState* drawState, |
| + uint8_t coverage, |
| GrDrawTarget::AutoReleaseGeometry* arg, |
| SkRect* devBounds, |
| const SkPath& path, |
| @@ -670,7 +671,7 @@ bool GrAAHairLinePathRenderer::createLineGeom(GrDrawTarget* target, |
| } |
| devBounds->set(lines.begin(), lines.count()); |
| for (int i = 0; i < lineCnt; ++i) { |
| - add_line(&lines[2*i], toSrc, drawState->getCoverage(), &verts); |
| + add_line(&lines[2*i], toSrc, coverage, &verts); |
| } |
| // All the verts computed by add_line are within sqrt(1^2 + 0.5^2) of the end points. |
| static const SkScalar kSqrtOfOneAndAQuarter = 1.118f; |
| @@ -803,14 +804,15 @@ bool check_bounds(GrDrawState* drawState, const SkRect& devBounds, void* vertice |
| bool GrAAHairLinePathRenderer::onDrawPath(GrDrawTarget* target, |
| GrDrawState* drawState, |
| + GrColor color, |
| const SkPath& path, |
| const SkStrokeRec& stroke, |
| bool antiAlias) { |
| SkScalar hairlineCoverage; |
| + uint8_t newCoverage = 0xff; |
| if (IsStrokeHairlineOrEquivalent(stroke, drawState->getViewMatrix(), |
| &hairlineCoverage)) { |
| - uint8_t newCoverage = SkScalarRoundToInt(hairlineCoverage * drawState->getCoverage()); |
| - drawState->setCoverage(newCoverage); |
| + newCoverage = SkScalarRoundToInt(hairlineCoverage * 0xff); |
| } |
| SkIRect devClipBounds; |
| @@ -837,10 +839,13 @@ bool GrAAHairLinePathRenderer::onDrawPath(GrDrawTarget* target, |
| uint32_t gpFlags = GrDefaultGeoProcFactory::kPosition_GPType | |
| GrDefaultGeoProcFactory::kCoverage_GPType; |
| GrDrawState::AutoRestoreEffects are(drawState); |
| - drawState->setGeometryProcessor(GrDefaultGeoProcFactory::Create(gpFlags))->unref(); |
| + drawState->setGeometryProcessor(GrDefaultGeoProcFactory::Create(color, |
|
bsalomon
2014/12/08 19:42:13
Does the default geo proc need to see the constant
joshualitt
2014/12/08 20:19:20
Yes, so we can calculate the optimization stuff.
bsalomon
2014/12/08 20:28:15
I think we should think about splitting apart the
|
| + gpFlags, |
| + newCoverage))->unref(); |
| if (!this->createLineGeom(target, |
| drawState, |
| + newCoverage, |
| &arg, |
| &devBounds, |
| path, |
| @@ -911,7 +916,10 @@ bool GrAAHairLinePathRenderer::onDrawPath(GrDrawTarget* target, |
| if (quadCnt > 0) { |
| GrGeometryProcessor* hairQuadProcessor = |
| - GrQuadEffect::Create(kHairlineAA_GrProcessorEdgeType, *target->caps()); |
| + GrQuadEffect::Create(color, |
| + kHairlineAA_GrProcessorEdgeType, |
| + *target->caps(), |
| + newCoverage); |
| SkASSERT(hairQuadProcessor); |
| GrDrawState::AutoRestoreEffects are(drawState); |
| target->setIndexSourceToBuffer(fQuadsIndexBuffer); |
| @@ -934,7 +942,7 @@ bool GrAAHairLinePathRenderer::onDrawPath(GrDrawTarget* target, |
| if (conicCnt > 0) { |
| GrDrawState::AutoRestoreEffects are(drawState); |
| GrGeometryProcessor* hairConicProcessor = GrConicEffect::Create( |
| - kHairlineAA_GrProcessorEdgeType, *target->caps()); |
| + color, kHairlineAA_GrProcessorEdgeType, *target->caps(), newCoverage); |
| SkASSERT(hairConicProcessor); |
| drawState->setGeometryProcessor(hairConicProcessor)->unref(); |