Index: src/gpu/GrDrawTarget.cpp |
diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp |
index f824c8112baefd1784acc9b4fca53de2ec311edc..e627cdd3f4bce4a60aa906f87d4ad940eb278b8a 100644 |
--- a/src/gpu/GrDrawTarget.cpp |
+++ b/src/gpu/GrDrawTarget.cpp |
@@ -270,38 +270,6 @@ void GrDrawTarget::drawBatch(const GrPipelineBuilder& pipelineBuilder, |
this->recordBatch(batch); |
} |
-inline static const GrUserStencilSettings& get_path_stencil_settings_for_fill( |
- GrPathRendering::FillType fill) { |
- static constexpr GrUserStencilSettings kWindingStencilSettings( |
- GrUserStencilSettings::StaticInit< |
- 0xffff, |
- GrUserStencilTest::kAlwaysIfInClip, |
- 0xffff, |
- GrUserStencilOp::kIncMaybeClamp, // TODO: Use wrap ops for NVPR. |
- GrUserStencilOp::kIncMaybeClamp, |
- 0xffff>() |
- ); |
- |
- static constexpr GrUserStencilSettings kEvenOddStencilSettings( |
- GrUserStencilSettings::StaticInit< |
- 0xffff, |
- GrUserStencilTest::kAlwaysIfInClip, |
- 0xffff, |
- GrUserStencilOp::kInvert, |
- GrUserStencilOp::kInvert, |
- 0xffff>() |
- ); |
- |
- switch (fill) { |
- default: |
- SkFAIL("Unexpected path fill."); |
- case GrPathRendering::kWinding_FillType: |
- return kWindingStencilSettings; |
- case GrPathRendering::kEvenOdd_FillType: |
- return kEvenOddStencilSettings; |
- } |
-} |
- |
void GrDrawTarget::stencilPath(const GrPipelineBuilder& pipelineBuilder, |
const SkMatrix& viewMatrix, |
const GrPath* path, |
@@ -322,15 +290,13 @@ void GrDrawTarget::stencilPath(const GrPipelineBuilder& pipelineBuilder, |
arfps.addCoverageFragmentProcessor(clip.clipCoverageFragmentProcessor()); |
} |
- GrRenderTarget* rt = pipelineBuilder.getRenderTarget(); |
- GrStencilAttachment* stencilAttachment = rt->renderTargetPriv().getStencilAttachment(); |
- SkASSERT(stencilAttachment) |
+ const GrRenderTargetPriv& rtPriv = pipelineBuilder.getRenderTarget()->renderTargetPriv(); |
GrBatch* batch = GrStencilPathBatch::Create(viewMatrix, |
pipelineBuilder.isHWAntialias(), |
- get_path_stencil_settings_for_fill(fill), |
+ fill, |
clip.hasStencilClip(), |
- stencilAttachment->bits(), |
+ rtPriv.numStencilBits(), |
clip.scissorState(), |
pipelineBuilder.getRenderTarget(), |
path); |
@@ -338,42 +304,6 @@ void GrDrawTarget::stencilPath(const GrPipelineBuilder& pipelineBuilder, |
batch->unref(); |
} |
-void GrDrawTarget::drawPathBatch(const GrPipelineBuilder& pipelineBuilder, |
- GrDrawPathBatchBase* batch) { |
- // This looks like drawBatch() but there is an added wrinkle that stencil settings get inserted |
- // after setting up clipping but before onDrawBatch(). TODO: Figure out a better model for |
- // handling stencil settings WRT interactions between pipeline(builder), clipmaskmanager, and |
- // batches. |
- SkASSERT(this->caps()->shaderCaps()->pathRenderingSupport()); |
- |
- GrAppliedClip clip; |
- if (!fClipMaskManager->setupClipping(pipelineBuilder, &batch->bounds(), &clip)) { |
- return; |
- } |
- |
- GrPipelineBuilder::AutoRestoreFragmentProcessorState arfps; |
- if (clip.clipCoverageFragmentProcessor()) { |
- arfps.set(&pipelineBuilder); |
- arfps.addCoverageFragmentProcessor(clip.clipCoverageFragmentProcessor()); |
- } |
- |
- // Ensure the render target has a stencil buffer and get the stencil settings. |
- GrRenderTarget* rt = pipelineBuilder.getRenderTarget(); |
- GrStencilAttachment* sb = fResourceProvider->attachStencilAttachment(rt); |
- // TODO: Move this step into GrDrawPathPath::onPrepare(). |
- batch->setStencilSettings(get_path_stencil_settings_for_fill(batch->fillType()), |
- clip.hasStencilClip(), |
- sb->bits()); |
- |
- GrPipeline::CreateArgs args; |
- if (!this->installPipelineInDrawBatch(&pipelineBuilder, &clip.scissorState(), |
- clip.hasStencilClip(), batch)) { |
- return; |
- } |
- |
- this->recordBatch(batch); |
-} |
- |
void GrDrawTarget::clear(const SkIRect* rect, |
GrColor color, |
bool canIgnoreRect, |
@@ -558,11 +488,7 @@ bool GrDrawTarget::installPipelineInDrawBatch(const GrPipelineBuilder* pipelineB |
args.fCaps = this->caps(); |
args.fScissor = scissor; |
if (pipelineBuilder->hasUserStencilSettings() || hasStencilClip) { |
- GrRenderTarget* rt = pipelineBuilder->getRenderTarget(); |
- GrStencilAttachment* sb = fResourceProvider->attachStencilAttachment(rt); |
- args.fNumStencilBits = sb->bits(); |
- } else { |
- args.fNumStencilBits = 0; |
+ fResourceProvider->attachStencilAttachment(pipelineBuilder->getRenderTarget()); |
} |
args.fHasStencilClip = hasStencilClip; |
batch->getPipelineOptimizations(&args.fOpts); |