diff options
author | 2014-12-11 15:44:02 -0800 | |
---|---|---|
committer | 2014-12-11 15:44:02 -0800 | |
commit | 56995b5cc00c9c83bd5fcf86bca9a67e939a96cb (patch) | |
tree | 5afd6c8625f50f0dcdb17e0c7ac8854fbda53495 /src/gpu/effects/GrDashingEffect.cpp | |
parent | 5756aff40921e700dc40f2a1757291a64acddeaa (diff) |
Remove GP from drawstate, revision of invariant output for GP
BUG=skia:
Committed: https://skia.googlesource.com/skia/+/c6bc58eded89b0c0a36b8e20e193c200f297a0da
Review URL: https://codereview.chromium.org/791743003
Diffstat (limited to 'src/gpu/effects/GrDashingEffect.cpp')
-rw-r--r-- | src/gpu/effects/GrDashingEffect.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp index b59b2a6e5c..1641d272fc 100644 --- a/src/gpu/effects/GrDashingEffect.cpp +++ b/src/gpu/effects/GrDashingEffect.cpp @@ -335,7 +335,7 @@ bool GrDashingEffect::DrawDashLine(GrGpu* gpu, GrDrawTarget* target, GrDrawState devIntervals[0] = lineLength; } - const GrGeometryProcessor* gp; + SkAutoTUnref<const GrGeometryProcessor> gp; bool fullDash = devIntervals[1] > 0.f || useAA; if (fullDash) { SkPathEffect::DashInfo devInfo; @@ -347,14 +347,12 @@ bool GrDashingEffect::DrawDashLine(GrGpu* gpu, GrDrawTarget* target, GrDrawState bool isRoundCap = SkPaint::kRound_Cap == cap; GrDashingEffect::DashCap capType = isRoundCap ? GrDashingEffect::kRound_DashCap : GrDashingEffect::kNonRound_DashCap; - gp = GrDashingEffect::Create(color, edgeType, devInfo, strokeWidth, capType); + gp.reset(GrDashingEffect::Create(color, edgeType, devInfo, strokeWidth, capType)); } else { // Set up the vertex data for the line and start/end dashes - gp = GrDefaultGeoProcFactory::Create(color, GrDefaultGeoProcFactory::kPosition_GPType); + gp.reset(GrDefaultGeoProcFactory::Create(color, GrDefaultGeoProcFactory::kPosition_GPType)); } - drawState->setGeometryProcessor(gp)->unref(); - int totalRectCnt = 0; totalRectCnt += !lineDone ? 1 : 0; @@ -435,7 +433,7 @@ bool GrDashingEffect::DrawDashLine(GrGpu* gpu, GrDrawTarget* target, GrDrawState } target->setIndexSourceToBuffer(gpu->getContext()->getQuadIndexBuffer()); - target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, totalRectCnt, 4, 6); + target->drawIndexedInstances(drawState, gp, kTriangles_GrPrimitiveType, totalRectCnt, 4, 6); target->resetIndexSource(); return true; } @@ -489,7 +487,7 @@ private: virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; - virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVERRIDE; + virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_OVERRIDE; GrPrimitiveEdgeType fEdgeType; const GrAttribute* fInPosition; @@ -614,8 +612,8 @@ GrGeometryProcessor* DashingCircleEffect::Create(GrColor color, DashingCircleEffect::~DashingCircleEffect() {} -void DashingCircleEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const { - inout->mulByUnknownAlpha(); +void DashingCircleEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const { + out->setUnknownSingleComponent(); } void DashingCircleEffect::getGLProcessorKey(const GrBatchTracker& bt, @@ -719,7 +717,7 @@ private: virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; - virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVERRIDE; + virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_OVERRIDE; GrPrimitiveEdgeType fEdgeType; const GrAttribute* fInPosition; @@ -857,8 +855,8 @@ GrGeometryProcessor* DashingLineEffect::Create(GrColor color, DashingLineEffect::~DashingLineEffect() {} -void DashingLineEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const { - inout->mulByUnknownAlpha(); +void DashingLineEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const { + out->setUnknownSingleComponent(); } void DashingLineEffect::getGLProcessorKey(const GrBatchTracker& bt, |