diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/GrDrawContext.cpp | 45 | ||||
-rw-r--r-- | src/gpu/GrPipelineBuilder.cpp | 12 | ||||
-rw-r--r-- | src/gpu/GrPipelineBuilder.h | 4 | ||||
-rw-r--r-- | src/gpu/text/GrAtlasTextBlob.cpp | 6 | ||||
-rw-r--r-- | src/gpu/text/GrStencilAndCoverTextContext.cpp | 9 |
5 files changed, 47 insertions, 29 deletions
diff --git a/src/gpu/GrDrawContext.cpp b/src/gpu/GrDrawContext.cpp index 108f3a2280..b34111cdfd 100644 --- a/src/gpu/GrDrawContext.cpp +++ b/src/gpu/GrDrawContext.cpp @@ -239,7 +239,8 @@ void GrDrawContext::drawPaint(const GrClip& clip, SkAutoTUnref<GrDrawBatch> 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<GrDrawBatch> 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<GrDrawBatch> 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<GrDrawBatch> 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 fd97e58ab8..04967a780b 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 0104be7d49..ca1adeee1b 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 13c96b5e64..6e8a5cc019 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 eb6abb39a8..b74728ece9 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()) { |