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
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 @@
GrColor color = kColors[procColor];
SkAutoTUnref<GrFragmentProcessor> fp(GrConstColorProcessor::Create(color, mode));
- GrPipelineBuilder pipelineBuilder(grPaint, drawContext->accessRenderTarget());
+ GrPipelineBuilder pipelineBuilder(grPaint,
+ drawContext->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(drawContext->accessRenderTarget());
pipelineBuilder.addColorFragmentProcessor(fp);
SkAutoTUnref<GrDrawBatch> 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 @@
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 @@
}
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 @@
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 @@
}
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
} 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 @@
} 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 @@
}
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()) {