Index: src/gpu/GrClipMaskManager.cpp |
diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp |
index c2dc4fb2238f01400ec82e03d9cac14e375652b3..6bfdba6cce17ef5e11902f2258c8ae943ee3b583 100644 |
--- a/src/gpu/GrClipMaskManager.cpp |
+++ b/src/gpu/GrClipMaskManager.cpp |
@@ -31,9 +31,9 @@ namespace { |
// set up the draw state to enable the aa clipping mask. Besides setting up the |
// stage matrix this also alters the vertex layout |
void setup_drawstate_aaclip(const SkIRect &devBound, |
- GrDrawState* drawState, |
+ GrPipelineBuilder* pipelineBuilder, |
GrTexture* result) { |
- SkASSERT(drawState); |
+ SkASSERT(pipelineBuilder); |
SkMatrix mat; |
// We use device coords to compute the texture coordinates. We set our matrix to be a |
@@ -44,7 +44,7 @@ void setup_drawstate_aaclip(const SkIRect &devBound, |
SkIRect domainTexels = SkIRect::MakeWH(devBound.width(), devBound.height()); |
// This could be a long-lived effect that is cached with the alpha-mask. |
- drawState->addCoverageProcessor( |
+ pipelineBuilder->addCoverageProcessor( |
GrTextureDomainEffect::Create(result, |
mat, |
GrTextureDomain::MakeTexelDomain(result, domainTexels), |
@@ -55,7 +55,7 @@ void setup_drawstate_aaclip(const SkIRect &devBound, |
bool path_needs_SW_renderer(GrContext* context, |
const GrDrawTarget* gpu, |
- const GrDrawState* drawState, |
+ const GrPipelineBuilder* pipelineBuilder, |
const SkMatrix& viewMatrix, |
const SkPath& origPath, |
const SkStrokeRec& stroke, |
@@ -70,7 +70,8 @@ bool path_needs_SW_renderer(GrContext* context, |
GrPathRendererChain::kColorAntiAlias_DrawType : |
GrPathRendererChain::kColor_DrawType; |
- return NULL == context->getPathRenderer(gpu, drawState, viewMatrix, *path, stroke, false, type); |
+ return NULL == context->getPathRenderer(gpu, pipelineBuilder, viewMatrix, *path, stroke, |
+ false, type); |
} |
} |
@@ -79,7 +80,7 @@ bool path_needs_SW_renderer(GrContext* context, |
* will be used on any element. If so, it returns true to indicate that the |
* entire clip should be rendered in SW and then uploaded en masse to the gpu. |
*/ |
-bool GrClipMaskManager::useSWOnlyPath(const GrDrawState* drawState, |
+bool GrClipMaskManager::useSWOnlyPath(const GrPipelineBuilder* pipelineBuilder, |
const SkVector& clipToMaskOffset, |
const GrReducedClip::ElementList& elements) { |
// TODO: generalize this function so that when |
@@ -99,7 +100,7 @@ bool GrClipMaskManager::useSWOnlyPath(const GrDrawState* drawState, |
if (Element::kRect_Type != element->getType()) { |
SkPath path; |
element->asPath(&path); |
- if (path_needs_SW_renderer(this->getContext(), fClipTarget, drawState, translate, |
+ if (path_needs_SW_renderer(this->getContext(), fClipTarget, pipelineBuilder, translate, |
path, stroke, element->isAA())) { |
return true; |
} |
@@ -108,8 +109,8 @@ bool GrClipMaskManager::useSWOnlyPath(const GrDrawState* drawState, |
return false; |
} |
-bool GrClipMaskManager::installClipEffects(GrDrawState* drawState, |
- GrDrawState::AutoRestoreEffects* are, |
+bool GrClipMaskManager::installClipEffects(GrPipelineBuilder* pipelineBuilder, |
+ GrPipelineBuilder::AutoRestoreEffects* are, |
const GrReducedClip::ElementList& elements, |
const SkVector& clipToRTOffset, |
const SkRect* drawBounds) { |
@@ -119,8 +120,8 @@ bool GrClipMaskManager::installClipEffects(GrDrawState* drawState, |
boundsInClipSpace.offset(-clipToRTOffset.fX, -clipToRTOffset.fY); |
} |
- are->set(drawState); |
- GrRenderTarget* rt = drawState->getRenderTarget(); |
+ are->set(pipelineBuilder); |
+ GrRenderTarget* rt = pipelineBuilder->getRenderTarget(); |
GrReducedClip::ElementList::Iter iter(elements); |
bool failed = false; |
while (iter.get()) { |
@@ -186,7 +187,7 @@ bool GrClipMaskManager::installClipEffects(GrDrawState* drawState, |
break; |
} |
if (fp) { |
- drawState->addCoverageProcessor(fp); |
+ pipelineBuilder->addCoverageProcessor(fp); |
} else { |
failed = true; |
break; |
@@ -204,9 +205,9 @@ bool GrClipMaskManager::installClipEffects(GrDrawState* drawState, |
//////////////////////////////////////////////////////////////////////////////// |
// sort out what kind of clip mask needs to be created: alpha, stencil, |
// scissor, or entirely software |
-bool GrClipMaskManager::setupClipping(GrDrawState* drawState, |
- GrDrawState::AutoRestoreEffects* are, |
- GrDrawState::AutoRestoreStencil* ars, |
+bool GrClipMaskManager::setupClipping(GrPipelineBuilder* pipelineBuilder, |
+ GrPipelineBuilder::AutoRestoreEffects* are, |
+ GrPipelineBuilder::AutoRestoreStencil* ars, |
GrScissorState* scissorState, |
const GrClipData* clipDataIn, |
const SkRect* devBounds) { |
@@ -220,12 +221,12 @@ bool GrClipMaskManager::setupClipping(GrDrawState* drawState, |
GrReducedClip::InitialState initialState; |
SkIRect clipSpaceIBounds; |
bool requiresAA; |
- GrRenderTarget* rt = drawState->getRenderTarget(); |
+ GrRenderTarget* rt = pipelineBuilder->getRenderTarget(); |
// GrDrawTarget should have filtered this for us |
SkASSERT(rt); |
- bool ignoreClip = !drawState->isClipState() || clipDataIn->fClipStack->isWideOpen(); |
+ bool ignoreClip = !pipelineBuilder->isClipState() || clipDataIn->fClipStack->isWideOpen(); |
if (!ignoreClip) { |
SkIRect clipSpaceRTIBounds = SkIRect::MakeWH(rt->width(), rt->height()); |
clipSpaceRTIBounds.offset(clipDataIn->fOrigin); |
@@ -246,7 +247,7 @@ bool GrClipMaskManager::setupClipping(GrDrawState* drawState, |
} |
if (ignoreClip) { |
- this->setDrawStateStencil(drawState, ars); |
+ this->setPipelineBuilderStencil(pipelineBuilder, ars); |
return true; |
} |
@@ -262,7 +263,7 @@ bool GrClipMaskManager::setupClipping(GrDrawState* drawState, |
SkVector clipToRTOffset = { SkIntToScalar(-clipDataIn->fOrigin.fX), |
SkIntToScalar(-clipDataIn->fOrigin.fY) }; |
if (elements.isEmpty() || |
- (requiresAA && this->installClipEffects(drawState, are, elements, clipToRTOffset, |
+ (requiresAA && this->installClipEffects(pipelineBuilder, are, elements, clipToRTOffset, |
devBounds))) { |
SkIRect scissorSpaceIBounds(clipSpaceIBounds); |
scissorSpaceIBounds.offset(-clipDataIn->fOrigin); |
@@ -270,7 +271,7 @@ bool GrClipMaskManager::setupClipping(GrDrawState* drawState, |
!SkRect::Make(scissorSpaceIBounds).contains(*devBounds)) { |
scissorState->set(scissorSpaceIBounds); |
} |
- this->setDrawStateStencil(drawState, ars); |
+ this->setPipelineBuilderStencil(pipelineBuilder, ars); |
return true; |
} |
} |
@@ -286,7 +287,7 @@ bool GrClipMaskManager::setupClipping(GrDrawState* drawState, |
SkIntToScalar(-clipSpaceIBounds.fTop) |
}; |
- if (this->useSWOnlyPath(drawState, clipToMaskOffset, elements)) { |
+ if (this->useSWOnlyPath(pipelineBuilder, clipToMaskOffset, elements)) { |
// The clip geometry is complex enough that it will be more efficient to create it |
// entirely in software |
result = this->createSoftwareClipMask(genID, |
@@ -307,8 +308,8 @@ bool GrClipMaskManager::setupClipping(GrDrawState* drawState, |
// clipSpace bounds. We determine the mask's position WRT to the render target here. |
SkIRect rtSpaceMaskBounds = clipSpaceIBounds; |
rtSpaceMaskBounds.offset(-clipDataIn->fOrigin); |
- setup_drawstate_aaclip(rtSpaceMaskBounds, drawState, result); |
- this->setDrawStateStencil(drawState, ars); |
+ setup_drawstate_aaclip(rtSpaceMaskBounds, pipelineBuilder, result); |
+ this->setPipelineBuilderStencil(pipelineBuilder, ars); |
return true; |
} |
// if alpha clip mask creation fails fall through to the non-AA code paths |
@@ -337,28 +338,29 @@ bool GrClipMaskManager::setupClipping(GrDrawState* drawState, |
SkIRect scissorSpaceIBounds(clipSpaceIBounds); |
scissorSpaceIBounds.offset(clipSpaceToStencilSpaceOffset); |
scissorState->set(scissorSpaceIBounds); |
- this->setDrawStateStencil(drawState, ars); |
+ this->setPipelineBuilderStencil(pipelineBuilder, ars); |
return true; |
} |
namespace { |
//////////////////////////////////////////////////////////////////////////////// |
-// Set a coverage drawing XPF on the drawState for the given op and invertCoverage mode |
-void set_coverage_drawing_xpf(SkRegion::Op op, bool invertCoverage, GrDrawState* drawState) { |
+// Set a coverage drawing XPF on the pipelineBuilder for the given op and invertCoverage mode |
+void set_coverage_drawing_xpf(SkRegion::Op op, bool invertCoverage, |
+ GrPipelineBuilder* pipelineBuilder) { |
SkASSERT(op <= SkRegion::kLastOp); |
- drawState->setCoverageSetOpXPFactory(op, invertCoverage); |
+ pipelineBuilder->setCoverageSetOpXPFactory(op, invertCoverage); |
} |
} |
//////////////////////////////////////////////////////////////////////////////// |
-bool GrClipMaskManager::drawElement(GrDrawState* drawState, |
+bool GrClipMaskManager::drawElement(GrPipelineBuilder* pipelineBuilder, |
const SkMatrix& viewMatrix, |
GrTexture* target, |
const SkClipStack::Element* element, |
GrPathRenderer* pr) { |
GrDrawTarget::AutoGeometryPush agp(fClipTarget); |
- drawState->setRenderTarget(target->asRenderTarget()); |
+ pipelineBuilder->setRenderTarget(target->asRenderTarget()); |
// The color we use to draw does not matter since we will always be using a GrCoverageSetOpXP |
// which ignores color. |
@@ -376,13 +378,13 @@ bool GrClipMaskManager::drawElement(GrDrawState* drawState, |
SkRect devRect = element->getRect(); |
viewMatrix.mapRect(&devRect); |
this->getContext()->getAARectRenderer()->fillAARect(fClipTarget, |
- drawState, |
+ pipelineBuilder, |
color, |
viewMatrix, |
element->getRect(), |
devRect); |
} else { |
- fClipTarget->drawSimpleRect(drawState, color, viewMatrix, element->getRect()); |
+ fClipTarget->drawSimpleRect(pipelineBuilder, color, viewMatrix, element->getRect()); |
} |
return true; |
default: { |
@@ -397,25 +399,26 @@ bool GrClipMaskManager::drawElement(GrDrawState* drawState, |
GrPathRendererChain::DrawType type; |
type = element->isAA() ? GrPathRendererChain::kColorAntiAlias_DrawType : |
GrPathRendererChain::kColor_DrawType; |
- pr = this->getContext()->getPathRenderer(fClipTarget, drawState, viewMatrix, path, |
- stroke, false, type); |
+ pr = this->getContext()->getPathRenderer(fClipTarget, pipelineBuilder, viewMatrix, |
+ path, stroke, false, type); |
} |
if (NULL == pr) { |
return false; |
} |
- pr->drawPath(fClipTarget, drawState, color, viewMatrix, path, stroke, element->isAA()); |
+ pr->drawPath(fClipTarget, pipelineBuilder, color, viewMatrix, path, stroke, |
+ element->isAA()); |
break; |
} |
} |
return true; |
} |
-bool GrClipMaskManager::canStencilAndDrawElement(GrDrawState* drawState, |
+bool GrClipMaskManager::canStencilAndDrawElement(GrPipelineBuilder* pipelineBuilder, |
GrTexture* target, |
GrPathRenderer** pr, |
const SkClipStack::Element* element) { |
- drawState->setRenderTarget(target->asRenderTarget()); |
+ pipelineBuilder->setRenderTarget(target->asRenderTarget()); |
if (Element::kRect_Type == element->getType()) { |
return true; |
@@ -431,34 +434,35 @@ bool GrClipMaskManager::canStencilAndDrawElement(GrDrawState* drawState, |
GrPathRendererChain::DrawType type = element->isAA() ? |
GrPathRendererChain::kStencilAndColorAntiAlias_DrawType : |
GrPathRendererChain::kStencilAndColor_DrawType; |
- *pr = this->getContext()->getPathRenderer(fClipTarget, drawState, SkMatrix::I(), path, |
+ *pr = this->getContext()->getPathRenderer(fClipTarget, pipelineBuilder, SkMatrix::I(), path, |
stroke, false, type); |
return SkToBool(*pr); |
} |
} |
-void GrClipMaskManager::mergeMask(GrDrawState* drawState, |
+void GrClipMaskManager::mergeMask(GrPipelineBuilder* pipelineBuilder, |
GrTexture* dstMask, |
GrTexture* srcMask, |
SkRegion::Op op, |
const SkIRect& dstBound, |
const SkIRect& srcBound) { |
- drawState->setRenderTarget(dstMask->asRenderTarget()); |
+ pipelineBuilder->setRenderTarget(dstMask->asRenderTarget()); |
// We want to invert the coverage here |
- set_coverage_drawing_xpf(op, false, drawState); |
+ set_coverage_drawing_xpf(op, false, pipelineBuilder); |
SkMatrix sampleM; |
sampleM.setIDiv(srcMask->width(), srcMask->height()); |
- drawState->addCoverageProcessor( |
+ pipelineBuilder->addCoverageProcessor( |
GrTextureDomainEffect::Create(srcMask, |
sampleM, |
GrTextureDomain::MakeTexelDomain(srcMask, srcBound), |
GrTextureDomain::kDecal_Mode, |
GrTextureParams::kNone_FilterMode))->unref(); |
// The color passed in here does not matter since the coverageSetOpXP won't read it. |
- fClipTarget->drawSimpleRect(drawState, GrColor_WHITE, SkMatrix::I(), SkRect::Make(dstBound)); |
+ fClipTarget->drawSimpleRect(pipelineBuilder, GrColor_WHITE, SkMatrix::I(), |
+ SkRect::Make(dstBound)); |
} |
GrTexture* GrClipMaskManager::createTempMask(int width, int height) { |
@@ -563,11 +567,11 @@ GrTexture* GrClipMaskManager::createAlphaClipMask(int32_t elementsGenID, |
SkRegion::Op op = element->getOp(); |
bool invert = element->isInverseFilled(); |
if (invert || SkRegion::kIntersect_Op == op || SkRegion::kReverseDifference_Op == op) { |
- GrDrawState drawState; |
- drawState.enableState(GrDrawState::kClip_StateBit); |
+ GrPipelineBuilder pipelineBuilder; |
+ pipelineBuilder.enableState(GrPipelineBuilder::kClip_StateBit); |
GrPathRenderer* pr = NULL; |
- bool useTemp = !this->canStencilAndDrawElement(&drawState, result, &pr, element); |
+ bool useTemp = !this->canStencilAndDrawElement(&pipelineBuilder, result, &pr, element); |
GrTexture* dst; |
// This is the bounds of the clip element in the space of the alpha-mask. The temporary |
// mask buffer can be substantially larger than the actually clip stack element. We |
@@ -598,7 +602,7 @@ GrTexture* GrClipMaskManager::createAlphaClipMask(int32_t elementsGenID, |
invert ? 0xffffffff : 0x00000000, |
true, |
dst->asRenderTarget()); |
- set_coverage_drawing_xpf(SkRegion::kReplace_Op, invert, &drawState); |
+ set_coverage_drawing_xpf(SkRegion::kReplace_Op, invert, &pipelineBuilder); |
} else { |
// draw directly into the result with the stencil set to make the pixels affected |
// by the clip shape be non-zero. |
@@ -610,34 +614,34 @@ GrTexture* GrClipMaskManager::createAlphaClipMask(int32_t elementsGenID, |
0xffff, |
0xffff, |
0xffff); |
- drawState.setStencil(kStencilInElement); |
- set_coverage_drawing_xpf(op, invert, &drawState); |
+ pipelineBuilder.setStencil(kStencilInElement); |
+ set_coverage_drawing_xpf(op, invert, &pipelineBuilder); |
} |
- if (!this->drawElement(&drawState, translate, dst, element, pr)) { |
+ if (!this->drawElement(&pipelineBuilder, translate, dst, element, pr)) { |
fAACache.reset(); |
return NULL; |
} |
if (useTemp) { |
- GrDrawState backgroundDrawState; |
- backgroundDrawState.enableState(GrDrawState::kClip_StateBit); |
- backgroundDrawState.setRenderTarget(result->asRenderTarget()); |
+ GrPipelineBuilder backgroundPipelineBuilder; |
+ backgroundPipelineBuilder.enableState(GrPipelineBuilder::kClip_StateBit); |
+ backgroundPipelineBuilder.setRenderTarget(result->asRenderTarget()); |
// Now draw into the accumulator using the real operation and the temp buffer as a |
// texture |
- this->mergeMask(&backgroundDrawState, |
+ this->mergeMask(&backgroundPipelineBuilder, |
result, |
temp, |
op, |
maskSpaceIBounds, |
maskSpaceElementIBounds); |
} else { |
- GrDrawState backgroundDrawState; |
- backgroundDrawState.enableState(GrDrawState::kClip_StateBit); |
- backgroundDrawState.setRenderTarget(result->asRenderTarget()); |
+ GrPipelineBuilder backgroundPipelineBuilder; |
+ backgroundPipelineBuilder.enableState(GrPipelineBuilder::kClip_StateBit); |
+ backgroundPipelineBuilder.setRenderTarget(result->asRenderTarget()); |
- set_coverage_drawing_xpf(op, !invert, &backgroundDrawState); |
+ set_coverage_drawing_xpf(op, !invert, &backgroundPipelineBuilder); |
// Draw to the exterior pixels (those with a zero stencil value). |
GR_STATIC_CONST_SAME_STENCIL(kDrawOutsideElement, |
kZero_StencilOp, |
@@ -646,19 +650,19 @@ GrTexture* GrClipMaskManager::createAlphaClipMask(int32_t elementsGenID, |
0xffff, |
0x0000, |
0xffff); |
- backgroundDrawState.setStencil(kDrawOutsideElement); |
+ backgroundPipelineBuilder.setStencil(kDrawOutsideElement); |
// The color passed in here does not matter since the coverageSetOpXP won't read it. |
- fClipTarget->drawSimpleRect(&backgroundDrawState, GrColor_WHITE, translate, |
+ fClipTarget->drawSimpleRect(&backgroundPipelineBuilder, GrColor_WHITE, translate, |
clipSpaceIBounds); |
} |
} else { |
- GrDrawState drawState; |
- drawState.enableState(GrDrawState::kClip_StateBit); |
+ GrPipelineBuilder pipelineBuilder; |
+ pipelineBuilder.enableState(GrPipelineBuilder::kClip_StateBit); |
// all the remaining ops can just be directly draw into the accumulation buffer |
- set_coverage_drawing_xpf(op, false, &drawState); |
+ set_coverage_drawing_xpf(op, false, &pipelineBuilder); |
// The color passed in here does not matter since the coverageSetOpXP won't read it. |
- this->drawElement(&drawState, translate, result, element); |
+ this->drawElement(&pipelineBuilder, translate, result, element); |
} |
} |
@@ -712,15 +716,15 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt, |
for (GrReducedClip::ElementList::Iter iter(elements.headIter()); iter.get(); iter.next()) { |
const Element* element = iter.get(); |
- GrDrawState drawState; |
- drawState.setRenderTarget(rt); |
- drawState.enableState(GrDrawState::kClip_StateBit); |
+ GrPipelineBuilder pipelineBuilder; |
+ pipelineBuilder.setRenderTarget(rt); |
+ pipelineBuilder.enableState(GrPipelineBuilder::kClip_StateBit); |
- drawState.setDisableColorXPFactory(); |
+ pipelineBuilder.setDisableColorXPFactory(); |
// if the target is MSAA then we want MSAA enabled when the clip is soft |
if (rt->isMultisampled()) { |
- drawState.setState(GrDrawState::kHWAntialias_StateBit, element->isAA()); |
+ pipelineBuilder.setState(GrPipelineBuilder::kHWAntialias_StateBit, element->isAA()); |
} |
bool fillInverted = false; |
@@ -746,7 +750,7 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt, |
clipPath.toggleInverseFillType(); |
} |
pr = this->getContext()->getPathRenderer(fClipTarget, |
- &drawState, |
+ &pipelineBuilder, |
viewMatrix, |
clipPath, |
stroke, |
@@ -784,18 +788,19 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt, |
0x0000, |
0xffff); |
if (Element::kRect_Type == element->getType()) { |
- *drawState.stencil() = gDrawToStencil; |
- fClipTarget->drawSimpleRect(&drawState, GrColor_WHITE, viewMatrix, |
+ *pipelineBuilder.stencil() = gDrawToStencil; |
+ fClipTarget->drawSimpleRect(&pipelineBuilder, GrColor_WHITE, viewMatrix, |
element->getRect()); |
} else { |
if (!clipPath.isEmpty()) { |
GrDrawTarget::AutoGeometryPush agp(fClipTarget); |
if (canRenderDirectToStencil) { |
- *drawState.stencil() = gDrawToStencil; |
- pr->drawPath(fClipTarget, &drawState, GrColor_WHITE, viewMatrix, |
+ *pipelineBuilder.stencil() = gDrawToStencil; |
+ pr->drawPath(fClipTarget, &pipelineBuilder, GrColor_WHITE, viewMatrix, |
clipPath, stroke, false); |
} else { |
- pr->stencilPath(fClipTarget, &drawState, viewMatrix, clipPath, stroke); |
+ pr->stencilPath(fClipTarget, &pipelineBuilder, viewMatrix, clipPath, |
+ stroke); |
} |
} |
} |
@@ -805,22 +810,22 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt, |
// element directly or a bounding rect of the entire clip. |
fClipMode = kModifyClip_StencilClipMode; |
for (int p = 0; p < passes; ++p) { |
- GrDrawState drawStateCopy(drawState); |
- *drawStateCopy.stencil() = stencilSettings[p]; |
+ GrPipelineBuilder pipelineBuilderCopy(pipelineBuilder); |
+ *pipelineBuilderCopy.stencil() = stencilSettings[p]; |
if (canDrawDirectToClip) { |
if (Element::kRect_Type == element->getType()) { |
- fClipTarget->drawSimpleRect(&drawStateCopy, GrColor_WHITE, viewMatrix, |
+ fClipTarget->drawSimpleRect(&pipelineBuilderCopy, GrColor_WHITE, viewMatrix, |
element->getRect()); |
} else { |
GrDrawTarget::AutoGeometryPush agp(fClipTarget); |
- pr->drawPath(fClipTarget, &drawStateCopy, GrColor_WHITE, viewMatrix, |
+ pr->drawPath(fClipTarget, &pipelineBuilderCopy, GrColor_WHITE, viewMatrix, |
clipPath, stroke, false); |
} |
} else { |
// The view matrix is setup to do clip space -> stencil space translation, so |
// draw rect in clip space. |
- fClipTarget->drawSimpleRect(&drawStateCopy, GrColor_WHITE, viewMatrix, |
+ fClipTarget->drawSimpleRect(&pipelineBuilderCopy, GrColor_WHITE, viewMatrix, |
SkRect::Make(clipSpaceIBounds)); |
} |
} |
@@ -885,8 +890,8 @@ const GrStencilSettings& basic_apply_stencil_clip_settings() { |
} |
} |
-void GrClipMaskManager::setDrawStateStencil(GrDrawState* drawState, |
- GrDrawState::AutoRestoreStencil* ars) { |
+void GrClipMaskManager::setPipelineBuilderStencil(GrPipelineBuilder* pipelineBuilder, |
+ GrPipelineBuilder::AutoRestoreStencil* ars) { |
// We make two copies of the StencilSettings here (except in the early |
// exit scenario. One copy from draw state to the stack var. Then another |
// from the stack var to the gpu. We could make this class hold a ptr to |
@@ -898,19 +903,19 @@ void GrClipMaskManager::setDrawStateStencil(GrDrawState* drawState, |
// The GrGpu client may not be using the stencil buffer but we may need to |
// enable it in order to respect a stencil clip. |
- if (drawState->getStencil().isDisabled()) { |
+ if (pipelineBuilder->getStencil().isDisabled()) { |
if (GrClipMaskManager::kRespectClip_StencilClipMode == fClipMode) { |
settings = basic_apply_stencil_clip_settings(); |
} else { |
return; |
} |
} else { |
- settings = drawState->getStencil(); |
+ settings = pipelineBuilder->getStencil(); |
} |
// TODO: dynamically attach a stencil buffer |
int stencilBits = 0; |
- GrStencilBuffer* stencilBuffer = drawState->getRenderTarget()->getStencilBuffer(); |
+ GrStencilBuffer* stencilBuffer = pipelineBuilder->getRenderTarget()->getStencilBuffer(); |
if (stencilBuffer) { |
stencilBits = stencilBuffer->bits(); |
} |
@@ -918,8 +923,8 @@ void GrClipMaskManager::setDrawStateStencil(GrDrawState* drawState, |
SkASSERT(fClipTarget->caps()->stencilWrapOpsSupport() || !settings.usesWrapOp()); |
SkASSERT(fClipTarget->caps()->twoSidedStencilSupport() || !settings.isTwoSided()); |
this->adjustStencilParams(&settings, fClipMode, stencilBits); |
- ars->set(drawState); |
- drawState->setStencil(settings); |
+ ars->set(pipelineBuilder); |
+ pipelineBuilder->setStencil(settings); |
} |
void GrClipMaskManager::adjustStencilParams(GrStencilSettings* settings, |