| Index: src/gpu/GrClipMaskManager.cpp
|
| diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp
|
| index 6294c3582219cc9fe8341998e8dcc4d2c2df10f9..0f32839a7e1e6df3a3cbc9cceb1b7480c62bdac2 100644
|
| --- a/src/gpu/GrClipMaskManager.cpp
|
| +++ b/src/gpu/GrClipMaskManager.cpp
|
| @@ -76,14 +76,14 @@ bool path_needs_SW_renderer(GrContext* context,
|
| }
|
| }
|
|
|
| -GrClipMaskManager::GrClipMaskManager(GrClipTarget* clipTarget)
|
| +GrClipMaskManager::GrClipMaskManager(GrDrawTarget* drawTarget)
|
| : fCurrClipMaskType(kNone_ClipMaskType)
|
| - , fAACache(clipTarget->getContext()->resourceProvider())
|
| - , fClipTarget(clipTarget)
|
| + , fAACache(drawTarget->cmmAccess().resourceProvider())
|
| + , fDrawTarget(drawTarget)
|
| , fClipMode(kIgnoreClip_StencilClipMode) {
|
| }
|
|
|
| -GrContext* GrClipMaskManager::getContext() { return fClipTarget->getContext(); }
|
| +GrContext* GrClipMaskManager::getContext() { return fDrawTarget->cmmAccess().context(); }
|
|
|
| /*
|
| * This method traverses the clip stack to see if the GrSoftwarePathRenderer
|
| @@ -110,7 +110,7 @@ bool GrClipMaskManager::useSWOnlyPath(const GrPipelineBuilder& pipelineBuilder,
|
| if (Element::kRect_Type != element->getType()) {
|
| SkPath path;
|
| element->asPath(&path);
|
| - if (path_needs_SW_renderer(this->getContext(), fClipTarget, pipelineBuilder, translate,
|
| + if (path_needs_SW_renderer(this->getContext(), fDrawTarget, pipelineBuilder, translate,
|
| path, stroke, element->isAA())) {
|
| return true;
|
| }
|
| @@ -405,10 +405,10 @@ bool GrClipMaskManager::drawElement(GrPipelineBuilder* pipelineBuilder,
|
| SkRect devRect = element->getRect();
|
| viewMatrix.mapRect(&devRect);
|
|
|
| - fClipTarget->drawAARect(*pipelineBuilder, color, viewMatrix,
|
| + fDrawTarget->drawAARect(*pipelineBuilder, color, viewMatrix,
|
| element->getRect(), devRect);
|
| } else {
|
| - fClipTarget->drawNonAARect(*pipelineBuilder, color, viewMatrix,
|
| + fDrawTarget->drawNonAARect(*pipelineBuilder, color, viewMatrix,
|
| element->getRect());
|
| }
|
| return true;
|
| @@ -424,14 +424,14 @@ bool GrClipMaskManager::drawElement(GrPipelineBuilder* pipelineBuilder,
|
| GrPathRendererChain::DrawType type;
|
| type = element->isAA() ? GrPathRendererChain::kColorAntiAlias_DrawType :
|
| GrPathRendererChain::kColor_DrawType;
|
| - pr = this->getContext()->getPathRenderer(fClipTarget, pipelineBuilder, viewMatrix,
|
| + pr = this->getContext()->getPathRenderer(fDrawTarget, pipelineBuilder, viewMatrix,
|
| path, stroke, false, type);
|
| }
|
| if (nullptr == pr) {
|
| return false;
|
| }
|
| GrPathRenderer::DrawPathArgs args;
|
| - args.fTarget = fClipTarget;
|
| + args.fTarget = fDrawTarget;
|
| args.fResourceProvider = this->getContext()->resourceProvider();
|
| args.fPipelineBuilder = pipelineBuilder;
|
| args.fColor = color;
|
| @@ -466,7 +466,7 @@ bool GrClipMaskManager::canStencilAndDrawElement(GrPipelineBuilder* pipelineBuil
|
| GrPathRendererChain::DrawType type = element->isAA() ?
|
| GrPathRendererChain::kStencilAndColorAntiAlias_DrawType :
|
| GrPathRendererChain::kStencilAndColor_DrawType;
|
| - *pr = this->getContext()->getPathRenderer(fClipTarget, pipelineBuilder, SkMatrix::I(), path,
|
| + *pr = this->getContext()->getPathRenderer(fDrawTarget, pipelineBuilder, SkMatrix::I(), path,
|
| stroke, false, type);
|
| return SkToBool(*pr);
|
| }
|
| @@ -495,7 +495,7 @@ void GrClipMaskManager::mergeMask(GrPipelineBuilder* pipelineBuilder,
|
| GrTextureParams::kNone_FilterMode))->unref();
|
|
|
| // The color passed in here does not matter since the coverageSetOpXP won't read it.
|
| - fClipTarget->drawNonAARect(*pipelineBuilder,
|
| + fDrawTarget->drawNonAARect(*pipelineBuilder,
|
| GrColor_WHITE,
|
| SkMatrix::I(),
|
| SkRect::Make(dstBound));
|
| @@ -586,7 +586,7 @@ GrTexture* GrClipMaskManager::createAlphaClipMask(int32_t elementsGenID,
|
|
|
| // The scratch texture that we are drawing into can be substantially larger than the mask. Only
|
| // clear the part that we care about.
|
| - fClipTarget->clear(&maskSpaceIBounds,
|
| + fDrawTarget->clear(&maskSpaceIBounds,
|
| GrReducedClip::kAllIn_InitialState == initialState ? 0xffffffff : 0x00000000,
|
| true,
|
| result->asRenderTarget());
|
| @@ -635,7 +635,7 @@ GrTexture* GrClipMaskManager::createAlphaClipMask(int32_t elementsGenID,
|
| }
|
| dst = temp;
|
| // clear the temp target and set blend to replace
|
| - fClipTarget->clear(&maskSpaceElementIBounds,
|
| + fDrawTarget->clear(&maskSpaceElementIBounds,
|
| invert ? 0xffffffff : 0x00000000,
|
| true,
|
| dst->asRenderTarget());
|
| @@ -688,7 +688,7 @@ GrTexture* GrClipMaskManager::createAlphaClipMask(int32_t elementsGenID,
|
| backgroundPipelineBuilder.setStencil(kDrawOutsideElement);
|
|
|
| // The color passed in here does not matter since the coverageSetOpXP won't read it.
|
| - fClipTarget->drawNonAARect(backgroundPipelineBuilder, GrColor_WHITE, translate,
|
| + fDrawTarget->drawNonAARect(backgroundPipelineBuilder, GrColor_WHITE, translate,
|
| clipSpaceIBounds);
|
| }
|
| } else {
|
| @@ -741,9 +741,8 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt,
|
| SkASSERT((clipBit <= 16) && "Ganesh only handles 16b or smaller stencil buffers");
|
| clipBit = (1 << (clipBit-1));
|
|
|
| - fClipTarget->clearStencilClip(stencilSpaceIBounds,
|
| - GrReducedClip::kAllIn_InitialState == initialState,
|
| - rt);
|
| + fDrawTarget->cmmAccess().clearStencilClip(stencilSpaceIBounds,
|
| + GrReducedClip::kAllIn_InitialState == initialState, rt);
|
|
|
| // walk through each clip element and perform its set op
|
| // with the existing clip.
|
| @@ -783,7 +782,7 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt,
|
| if (fillInverted) {
|
| clipPath.toggleInverseFillType();
|
| }
|
| - pr = this->getContext()->getPathRenderer(fClipTarget,
|
| + pr = this->getContext()->getPathRenderer(fDrawTarget,
|
| &pipelineBuilder,
|
| viewMatrix,
|
| clipPath,
|
| @@ -825,7 +824,7 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt,
|
| *pipelineBuilder.stencil() = gDrawToStencil;
|
|
|
| // We need this AGP until everything is in GrBatch
|
| - fClipTarget->drawNonAARect(pipelineBuilder,
|
| + fDrawTarget->drawNonAARect(pipelineBuilder,
|
| GrColor_WHITE,
|
| viewMatrix,
|
| element->getRect());
|
| @@ -835,7 +834,7 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt,
|
| *pipelineBuilder.stencil() = gDrawToStencil;
|
|
|
| GrPathRenderer::DrawPathArgs args;
|
| - args.fTarget = fClipTarget;
|
| + args.fTarget = fDrawTarget;
|
| args.fResourceProvider = this->getContext()->resourceProvider();
|
| args.fPipelineBuilder = &pipelineBuilder;
|
| args.fColor = GrColor_WHITE;
|
| @@ -846,7 +845,7 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt,
|
| pr->drawPath(args);
|
| } else {
|
| GrPathRenderer::StencilPathArgs args;
|
| - args.fTarget = fClipTarget;
|
| + args.fTarget = fDrawTarget;
|
| args.fResourceProvider = this->getContext()->resourceProvider();
|
| args.fPipelineBuilder = &pipelineBuilder;
|
| args.fViewMatrix = &viewMatrix;
|
| @@ -867,13 +866,13 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt,
|
| if (canDrawDirectToClip) {
|
| if (Element::kRect_Type == element->getType()) {
|
| // We need this AGP until everything is in GrBatch
|
| - fClipTarget->drawNonAARect(pipelineBuilder,
|
| + fDrawTarget->drawNonAARect(pipelineBuilder,
|
| GrColor_WHITE,
|
| viewMatrix,
|
| element->getRect());
|
| } else {
|
| GrPathRenderer::DrawPathArgs args;
|
| - args.fTarget = fClipTarget;
|
| + args.fTarget = fDrawTarget;
|
| args.fResourceProvider = this->getContext()->resourceProvider();
|
| args.fPipelineBuilder = &pipelineBuilder;
|
| args.fColor = GrColor_WHITE;
|
| @@ -886,7 +885,7 @@ bool GrClipMaskManager::createStencilClipMask(GrRenderTarget* rt,
|
| } else {
|
| // The view matrix is setup to do clip space -> stencil space translation, so
|
| // draw rect in clip space.
|
| - fClipTarget->drawNonAARect(pipelineBuilder,
|
| + fDrawTarget->drawNonAARect(pipelineBuilder,
|
| GrColor_WHITE,
|
| viewMatrix,
|
| SkRect::Make(clipSpaceIBounds));
|
| @@ -983,8 +982,8 @@ void GrClipMaskManager::setPipelineBuilderStencil(const GrPipelineBuilder& pipel
|
| stencilBits = stencilAttachment->bits();
|
| }
|
|
|
| - SkASSERT(fClipTarget->caps()->stencilWrapOpsSupport() || !settings.usesWrapOp());
|
| - SkASSERT(fClipTarget->caps()->twoSidedStencilSupport() || !settings.isTwoSided());
|
| + SkASSERT(fDrawTarget->caps()->stencilWrapOpsSupport() || !settings.usesWrapOp());
|
| + SkASSERT(fDrawTarget->caps()->twoSidedStencilSupport() || !settings.isTwoSided());
|
| this->adjustStencilParams(&settings, fClipMode, stencilBits);
|
| ars->set(&pipelineBuilder);
|
| ars->setStencil(settings);
|
| @@ -1005,7 +1004,7 @@ void GrClipMaskManager::adjustStencilParams(GrStencilSettings* settings,
|
| unsigned int userBits = clipBit - 1;
|
|
|
| GrStencilSettings::Face face = GrStencilSettings::kFront_Face;
|
| - bool twoSided = fClipTarget->caps()->twoSidedStencilSupport();
|
| + bool twoSided = fDrawTarget->caps()->twoSidedStencilSupport();
|
|
|
| bool finished = false;
|
| while (!finished) {
|
|
|