From 40ff8ed522d05a18a9ae92b2df96080677aed212 Mon Sep 17 00:00:00 2001 From: robertphillips Date: Sat, 28 May 2016 08:51:06 -0700 Subject: [PATCH] Change parameters to GrPipelineBuilder's ctor This is just plumbing prep to remove the GrRenderTarget from the GrPipelineBuilder. Split out of: https://codereview.chromium.org/1988923002/ (Declassify GrClipMaskManager and Remove GrRenderTarget and GrDrawTarget from GrPipelineBuilder) GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2015333002 Review-Url: https://codereview.chromium.org/2015333002 --- gm/constcolorprocessor.cpp | 4 ++- src/gpu/GrDrawContext.cpp | 45 ++++++++++++++++++--------- src/gpu/GrPipelineBuilder.cpp | 12 +++---- src/gpu/GrPipelineBuilder.h | 4 +-- src/gpu/text/GrAtlasTextBlob.cpp | 6 ++-- src/gpu/text/GrStencilAndCoverTextContext.cpp | 9 ++++-- 6 files changed, 50 insertions(+), 30 deletions(-) diff --git a/gm/constcolorprocessor.cpp b/gm/constcolorprocessor.cpp index f3c5a65..da7aa38 100644 --- a/gm/constcolorprocessor.cpp +++ b/gm/constcolorprocessor.cpp @@ -107,7 +107,9 @@ protected: GrColor color = kColors[procColor]; SkAutoTUnref fp(GrConstColorProcessor::Create(color, mode)); - GrPipelineBuilder pipelineBuilder(grPaint, drawContext->accessRenderTarget()); + GrPipelineBuilder pipelineBuilder(grPaint, + drawContext->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(drawContext->accessRenderTarget()); pipelineBuilder.addColorFragmentProcessor(fp); SkAutoTUnref batch( diff --git a/src/gpu/GrDrawContext.cpp b/src/gpu/GrDrawContext.cpp index 108f3a2..b34111c 100644 --- a/src/gpu/GrDrawContext.cpp +++ b/src/gpu/GrDrawContext.cpp @@ -239,7 +239,8 @@ void GrDrawContext::drawPaint(const GrClip& clip, SkAutoTUnref batch( GrRectBatchFactory::CreateNonAAFill(paint->getColor(), SkMatrix::I(), r, nullptr, &localMatrix)); - GrPipelineBuilder pipelineBuilder(*paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(*paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); } } @@ -355,7 +356,8 @@ void GrDrawContext::drawRect(const GrClip& clip, } if (batch) { - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); if (snapToPixelCenters) { pipelineBuilder.setState(GrPipelineBuilder::kSnapVerticesToPixelCenters_Flag, @@ -392,7 +394,8 @@ bool GrDrawContextPriv::drawAndStencilRect(const GrFixedClip& clip, SkAutoTUnref batch(fDrawContext->getFillRectBatch(paint, viewMatrix, rect)); if (batch) { - GrPipelineBuilder pipelineBuilder(paint, fDrawContext->accessRenderTarget()); + GrPipelineBuilder pipelineBuilder(paint, fDrawContext->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fDrawContext->accessRenderTarget()); pipelineBuilder.setUserStencil(ss); fDrawContext->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); @@ -428,7 +431,8 @@ void GrDrawContext::fillRectToRect(const GrClip& clip, } if (batch) { - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->drawBatch(&pipelineBuilder, clip, batch); } } @@ -455,7 +459,8 @@ void GrDrawContext::fillRectWithLocalMatrix(const GrClip& clip, nullptr, &localMatrix)); } - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); } @@ -500,7 +505,8 @@ void GrDrawContext::drawVertices(const GrClip& clip, indexCount, colors, texCoords, bounds)); - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); } @@ -525,7 +531,8 @@ void GrDrawContext::drawAtlas(const GrClip& clip, SkAutoTUnref batch(GrDrawAtlasBatch::Create(geometry, viewMatrix, spriteCount, xform, texRect, colors)); - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); } @@ -558,7 +565,8 @@ void GrDrawContext::drawRRect(const GrClip& clip, stroke, shaderCaps)); if (batch) { - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); return; } @@ -683,7 +691,8 @@ void GrDrawContext::drawOval(const GrClip& clip, stroke, shaderCaps)); if (batch) { - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); return; } @@ -713,7 +722,8 @@ void GrDrawContext::drawImageNine(const GrClip& clip, imageWidth, imageHeight, center, dst)); - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); } @@ -773,7 +783,8 @@ void GrDrawContext::drawBatch(const GrClip& clip, AutoCheckFlush acf(fDrawingManager); - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); } @@ -805,7 +816,8 @@ void GrDrawContext::drawPath(const GrClip& clip, SkAutoTUnref batch(GrRectBatchFactory::CreateAAFillNestedRects( paint.getColor(), viewMatrix, rects)); if (batch) { - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); } return; @@ -822,7 +834,8 @@ void GrDrawContext::drawPath(const GrClip& clip, style.strokeRec(), shaderCaps)); if (batch) { - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch); return; } @@ -888,7 +901,8 @@ bool GrDrawContextPriv::drawAndStencilPath(const GrFixedClip& clip, GrPaint paint; paint.setCoverageSetOpXPFactory(op, invert); - GrPipelineBuilder pipelineBuilder(paint, fDrawContext->accessRenderTarget()); + GrPipelineBuilder pipelineBuilder(paint, fDrawContext->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fDrawContext->accessRenderTarget()); pipelineBuilder.setUserStencil(ss); GrPathRenderer::DrawPathArgs args; @@ -994,7 +1008,8 @@ void GrDrawContext::internalDrawPath(const GrClip& clip, return; } - GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get()); + GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(fRenderTarget.get()); GrPathRenderer::DrawPathArgs args; args.fTarget = this->getDrawTarget(); diff --git a/src/gpu/GrPipelineBuilder.cpp b/src/gpu/GrPipelineBuilder.cpp index fd97e58..04967a7 100644 --- a/src/gpu/GrPipelineBuilder.cpp +++ b/src/gpu/GrPipelineBuilder.cpp @@ -16,13 +16,13 @@ #include "effects/GrPorterDuffXferProcessor.h" GrPipelineBuilder::GrPipelineBuilder() - : fFlags(0x0), - fUserStencilSettings(&GrUserStencilSettings::kUnused), - fDrawFace(kBoth_DrawFace) { + : fFlags(0x0) + , fUserStencilSettings(&GrUserStencilSettings::kUnused) + , fDrawFace(kBoth_DrawFace) { SkDEBUGCODE(fBlockEffectRemovalCnt = 0;) } -GrPipelineBuilder::GrPipelineBuilder(const GrPaint& paint, GrRenderTarget* rt) +GrPipelineBuilder::GrPipelineBuilder(const GrPaint& paint, bool targetHasUnifiedMultisampling) : GrPipelineBuilder() { SkDEBUGCODE(fBlockEffectRemovalCnt = 0;) @@ -36,10 +36,8 @@ GrPipelineBuilder::GrPipelineBuilder(const GrPaint& paint, GrRenderTarget* rt) fXPFactory.reset(SkSafeRef(paint.getXPFactory())); - this->setRenderTarget(rt); - this->setState(GrPipelineBuilder::kHWAntialias_Flag, - rt->isUnifiedMultisampled() && paint.isAntiAlias()); + targetHasUnifiedMultisampling && paint.isAntiAlias()); this->setState(GrPipelineBuilder::kDisableOutputConversionToSRGB_Flag, paint.getDisableOutputConversionToSRGB()); this->setState(GrPipelineBuilder::kAllowSRGBInputs_Flag, diff --git a/src/gpu/GrPipelineBuilder.h b/src/gpu/GrPipelineBuilder.h index 0104be7..ca1adee 100644 --- a/src/gpu/GrPipelineBuilder.h +++ b/src/gpu/GrPipelineBuilder.h @@ -31,12 +31,12 @@ public: GrPipelineBuilder(); /** - * Initializes the GrPipelineBuilder based on a GrPaint, render target, and clip. Note + * Initializes the GrPipelineBuilder based on a GrPaint, MSAA availability. Note * that GrPipelineBuilder encompasses more than GrPaint. Aspects of GrPipelineBuilder that have * no GrPaint equivalents are set to default values with the exception of vertex attribute state * which is unmodified by this function and clipping which will be enabled. */ - GrPipelineBuilder(const GrPaint&, GrRenderTarget*); + GrPipelineBuilder(const GrPaint&, bool targetHasUnifiedMultisampling); virtual ~GrPipelineBuilder(); diff --git a/src/gpu/text/GrAtlasTextBlob.cpp b/src/gpu/text/GrAtlasTextBlob.cpp index 13c96b5..6e8a5cc 100644 --- a/src/gpu/text/GrAtlasTextBlob.cpp +++ b/src/gpu/text/GrAtlasTextBlob.cpp @@ -419,7 +419,8 @@ void GrAtlasTextBlob::flushCached(GrContext* context, SkScalar x, SkScalar y) { // We loop through the runs of the blob, flushing each. If any run is too large, then we flush // it as paths - GrPipelineBuilder pipelineBuilder(grPaint, dc->accessRenderTarget()); + GrPipelineBuilder pipelineBuilder(grPaint, dc->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(dc->accessRenderTarget()); GrColor color = grPaint.getColor(); @@ -448,7 +449,8 @@ void GrAtlasTextBlob::flushThrowaway(GrContext* context, const SkMatrix& viewMatrix, const SkIRect& clipBounds, SkScalar x, SkScalar y) { - GrPipelineBuilder pipelineBuilder(grPaint, dc->accessRenderTarget()); + GrPipelineBuilder pipelineBuilder(grPaint, dc->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(dc->accessRenderTarget()); GrColor color = grPaint.getColor(); for (int run = 0; run < fRunCount; run++) { diff --git a/src/gpu/text/GrStencilAndCoverTextContext.cpp b/src/gpu/text/GrStencilAndCoverTextContext.cpp index eb6abb3..b74728e 100644 --- a/src/gpu/text/GrStencilAndCoverTextContext.cpp +++ b/src/gpu/text/GrStencilAndCoverTextContext.cpp @@ -82,7 +82,8 @@ void GrStencilAndCoverTextContext::drawText(GrContext* context, GrDrawContext* d } else if (this->canDraw(skPaint, viewMatrix)) { if (skPaint.getTextSize() > 0) { TextRun run(skPaint); - GrPipelineBuilder pipelineBuilder(paint, dc->accessRenderTarget()); + GrPipelineBuilder pipelineBuilder(paint, dc->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(dc->accessRenderTarget()); run.setText(text, byteLength, x, y); run.draw(context, dc, &pipelineBuilder, clip, paint.getColor(), viewMatrix, props, 0, 0, clipBounds, fFallbackTextContext, skPaint); @@ -117,7 +118,8 @@ void GrStencilAndCoverTextContext::drawPosText(GrContext* context, GrDrawContext } else if (this->canDraw(skPaint, viewMatrix)) { if (skPaint.getTextSize() > 0) { TextRun run(skPaint); - GrPipelineBuilder pipelineBuilder(paint, dc->accessRenderTarget()); + GrPipelineBuilder pipelineBuilder(paint, dc->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(dc->accessRenderTarget()); run.setPosText(text, byteLength, pos, scalarsPerPosition, offset); run.draw(context, dc, &pipelineBuilder, clip, paint.getColor(), viewMatrix, props, 0, 0, clipBounds, fFallbackTextContext, skPaint); @@ -225,7 +227,8 @@ void GrStencilAndCoverTextContext::drawTextBlob(GrContext* context, GrDrawContex } const TextBlob& blob = this->findOrCreateTextBlob(skBlob, skPaint); - GrPipelineBuilder pipelineBuilder(paint, dc->accessRenderTarget()); + GrPipelineBuilder pipelineBuilder(paint, dc->isUnifiedMultisampled()); + pipelineBuilder.setRenderTarget(dc->accessRenderTarget()); TextBlob::Iter iter(blob); for (TextRun* run = iter.get(); run; run = iter.next()) { -- 2.7.4