Revert of Retract PipelineBuilder some more (patchset #9 id:160001 of https://codereview.chromium.org/2092893003/ )
Reason for revert:
skbug.com/5559
Original issue's description:
> Retract PipelineBuilder some more
>
> The main part of this CL is widening SkDrawContext::drawBatch's API to accept the userStencilSettings & drawFace
>
> There is some ancillary spookiness related to expanding the should_apply_coverage_aa & mustUseHWAA methods to encompass mixedSamples
>
> Calved off:
> https://codereview.chromium.org/2165283002/ (Remove DrawFace enum from GrPipelineBuilder)
> https://codereview.chromium.org/2167183002/ (Minor change to Ganesh path renderers)
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2092893003
>
> Committed: https://skia.googlesource.com/skia/+/2895eeb11a9f0d9c0018d49dd4bc45f6c6fc062c
TBR=robertphillips@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review-Url: https://codereview.chromium.org/2175573004
diff --git a/src/gpu/batches/GrAAConvexPathRenderer.cpp b/src/gpu/batches/GrAAConvexPathRenderer.cpp
index 3208ead..b0ddaeb 100644
--- a/src/gpu/batches/GrAAConvexPathRenderer.cpp
+++ b/src/gpu/batches/GrAAConvexPathRenderer.cpp
@@ -17,6 +17,7 @@
#include "GrInvariantOutput.h"
#include "GrPathUtils.h"
#include "GrProcessor.h"
+#include "GrPipelineBuilder.h"
#include "SkGeometry.h"
#include "SkPathPriv.h"
#include "SkString.h"
@@ -1000,7 +1001,10 @@
SkAutoTUnref<GrDrawBatch> batch(new AAConvexPathBatch(args.fPaint->getColor(),
*args.fViewMatrix, path));
- args.fDrawContext->drawBatch(*args.fPaint, *args.fClip, *args.fUserStencilSettings, batch);
+ GrPipelineBuilder pipelineBuilder(*args.fPaint);
+ pipelineBuilder.setUserStencil(args.fUserStencilSettings);
+
+ args.fDrawContext->drawBatch(pipelineBuilder, *args.fClip, batch);
return true;
diff --git a/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp b/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
index d9f4569..a9ba94d 100644
--- a/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
+++ b/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
@@ -11,6 +11,7 @@
#include "GrBatchTest.h"
#include "GrBuffer.h"
#include "GrContext.h"
+#include "GrPipelineBuilder.h"
#include "GrResourceProvider.h"
#include "GrSurfacePriv.h"
#include "GrSWMaskHelper.h"
@@ -532,7 +533,10 @@
fAtlas, &fShapeCache, &fShapeList,
args.fGammaCorrect));
- args.fDrawContext->drawBatch(*args.fPaint, *args.fClip, *args.fUserStencilSettings, batch);
+ GrPipelineBuilder pipelineBuilder(*args.fPaint);
+ pipelineBuilder.setUserStencil(args.fUserStencilSettings);
+
+ args.fDrawContext->drawBatch(pipelineBuilder, *args.fClip, batch);
return true;
}
diff --git a/src/gpu/batches/GrAAHairLinePathRenderer.cpp b/src/gpu/batches/GrAAHairLinePathRenderer.cpp
index dca4564..194c79e 100644
--- a/src/gpu/batches/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/batches/GrAAHairLinePathRenderer.cpp
@@ -14,6 +14,7 @@
#include "GrContext.h"
#include "GrDefaultGeoProcFactory.h"
#include "GrPathUtils.h"
+#include "GrPipelineBuilder.h"
#include "GrProcessor.h"
#include "GrResourceProvider.h"
#include "SkGeometry.h"
@@ -966,7 +967,10 @@
*args.fViewMatrix, path,
args.fShape->style(), devClipBounds));
- args.fDrawContext->drawBatch(*args.fPaint, *args.fClip, *args.fUserStencilSettings, batch);
+ GrPipelineBuilder pipelineBuilder(*args.fPaint);
+ pipelineBuilder.setUserStencil(args.fUserStencilSettings);
+ args.fDrawContext->drawBatch(pipelineBuilder, *args.fClip, batch);
+
return true;
}
diff --git a/src/gpu/batches/GrAALinearizingConvexPathRenderer.cpp b/src/gpu/batches/GrAALinearizingConvexPathRenderer.cpp
index 617fb3d..20d93d8 100644
--- a/src/gpu/batches/GrAALinearizingConvexPathRenderer.cpp
+++ b/src/gpu/batches/GrAALinearizingConvexPathRenderer.cpp
@@ -16,6 +16,7 @@
#include "GrInvariantOutput.h"
#include "GrPathUtils.h"
#include "GrProcessor.h"
+#include "GrPipelineBuilder.h"
#include "GrStyle.h"
#include "SkGeometry.h"
#include "SkString.h"
@@ -337,7 +338,11 @@
path, strokeWidth, join,
miterLimit));
- args.fDrawContext->drawBatch(*args.fPaint, *args.fClip, *args.fUserStencilSettings, batch);
+ GrPipelineBuilder pipelineBuilder(*args.fPaint);
+ pipelineBuilder.setUserStencil(args.fUserStencilSettings);
+
+ args.fDrawContext->drawBatch(pipelineBuilder, *args.fClip, batch);
+
return true;
}
diff --git a/src/gpu/batches/GrDashLinePathRenderer.cpp b/src/gpu/batches/GrDashLinePathRenderer.cpp
index b948fbc..f2b75be 100644
--- a/src/gpu/batches/GrDashLinePathRenderer.cpp
+++ b/src/gpu/batches/GrDashLinePathRenderer.cpp
@@ -9,6 +9,7 @@
#include "GrAuditTrail.h"
#include "GrGpu.h"
+#include "GrPipelineBuilder.h"
#include "effects/GrDashingEffect.h"
bool GrDashLinePathRenderer::onCanDrawPath(const CanDrawPathArgs& args) const {
@@ -25,15 +26,9 @@
bool GrDashLinePathRenderer::onDrawPath(const DrawPathArgs& args) {
GR_AUDIT_TRAIL_AUTO_FRAME(args.fDrawContext->auditTrail(),
"GrDashLinePathRenderer::onDrawPath");
-
- SkTCopyOnFirstWrite<GrPaint> paint(*args.fPaint);
-
bool useHWAA = args.fDrawContext->isUnifiedMultisampled();
GrDashingEffect::AAMode aaMode;
if (useHWAA) {
- if (!paint->isAntiAlias()) {
- paint.writable()->setAntiAlias(true);
- }
// We ignore args.fAntiAlias here and force anti aliasing when using MSAA. Otherwise,
// we can wind up with external edges antialiased and internal edges unantialiased.
aaMode = GrDashingEffect::AAMode::kCoverageWithMSAA;
@@ -53,7 +48,9 @@
return false;
}
- SkASSERT(args.fDrawContext->mustUseHWAA(*paint) == useHWAA);
- args.fDrawContext->drawBatch(*paint, *args.fClip, *args.fUserStencilSettings, batch);
+ GrPipelineBuilder pipelineBuilder(*args.fPaint, useHWAA);
+ pipelineBuilder.setUserStencil(args.fUserStencilSettings);
+
+ args.fDrawContext->drawBatch(pipelineBuilder, *args.fClip, batch);
return true;
}
diff --git a/src/gpu/batches/GrDefaultPathRenderer.cpp b/src/gpu/batches/GrDefaultPathRenderer.cpp
index 552f944..7954716 100644
--- a/src/gpu/batches/GrDefaultPathRenderer.cpp
+++ b/src/gpu/batches/GrDefaultPathRenderer.cpp
@@ -13,6 +13,7 @@
#include "GrDefaultGeoProcFactory.h"
#include "GrMesh.h"
#include "GrPathUtils.h"
+#include "GrPipelineBuilder.h"
#include "SkGeometry.h"
#include "SkString.h"
#include "SkStrokeRec.h"
@@ -554,19 +555,25 @@
&localMatrix));
SkASSERT(GrDrawFace::kBoth == drawFace[p]);
- drawContext->drawBatch(paint, clip, *passes[p], batch, drawFace[p]);
+ GrPipelineBuilder pipelineBuilder(paint, drawContext->mustUseHWAA(paint));
+ pipelineBuilder.setDrawFace(drawFace[p]);
+ pipelineBuilder.setUserStencil(passes[p]);
+
+ drawContext->drawBatch(pipelineBuilder, clip, batch);
} else {
SkAutoTUnref<GrDrawBatch> batch(new DefaultPathBatch(paint.getColor(), path,
srcSpaceTol,
newCoverage, viewMatrix,
isHairline, devBounds));
- SkTCopyOnFirstWrite<GrPaint> newPaint(paint);
+ GrPipelineBuilder pipelineBuilder(paint, drawContext->mustUseHWAA(paint));
+ pipelineBuilder.setDrawFace(drawFace[p]);
+ pipelineBuilder.setUserStencil(passes[p]);
if (passCount > 1) {
- newPaint.writable()->setXPFactory(GrDisableColorXPFactory::Make());
+ pipelineBuilder.setDisableColorXPFactory();
}
- drawContext->drawBatch(*newPaint, clip, *passes[p], batch, drawFace[p]);
+ drawContext->drawBatch(pipelineBuilder, clip, batch);
}
}
return true;
diff --git a/src/gpu/batches/GrMSAAPathRenderer.cpp b/src/gpu/batches/GrMSAAPathRenderer.cpp
index 2372544..ec54f32 100644
--- a/src/gpu/batches/GrMSAAPathRenderer.cpp
+++ b/src/gpu/batches/GrMSAAPathRenderer.cpp
@@ -13,6 +13,7 @@
#include "GrDefaultGeoProcFactory.h"
#include "GrPathStencilSettings.h"
#include "GrPathUtils.h"
+#include "GrPipelineBuilder.h"
#include "GrMesh.h"
#include "SkGeometry.h"
#include "SkTraceEvent.h"
@@ -656,7 +657,10 @@
GrRectBatchFactory::CreateNonAAFill(paint.getColor(), viewM, bounds, nullptr,
&localMatrix));
- drawContext->drawBatch(paint, clip, *passes[p], batch);
+ GrPipelineBuilder pipelineBuilder(paint, drawContext->mustUseHWAA(paint));
+ pipelineBuilder.setUserStencil(passes[p]);
+
+ drawContext->drawBatch(pipelineBuilder, clip, batch);
} else {
SkAutoTUnref<MSAAPathBatch> batch(new MSAAPathBatch(paint.getColor(), path,
viewMatrix, devBounds));
@@ -664,12 +668,13 @@
return false;
}
- SkTCopyOnFirstWrite<GrPaint> newPaint(paint);
+ GrPipelineBuilder pipelineBuilder(paint, drawContext->mustUseHWAA(paint));
+ pipelineBuilder.setUserStencil(passes[p]);
if (passCount > 1) {
- newPaint.writable()->setXPFactory(GrDisableColorXPFactory::Make());
+ pipelineBuilder.setDisableColorXPFactory();
}
- drawContext->drawBatch(*newPaint, clip, *passes[p], batch);
+ drawContext->drawBatch(pipelineBuilder, clip, batch);
}
}
return true;
diff --git a/src/gpu/batches/GrPLSPathRenderer.cpp b/src/gpu/batches/GrPLSPathRenderer.cpp
index f446e64..ad9bde1 100644
--- a/src/gpu/batches/GrPLSPathRenderer.cpp
+++ b/src/gpu/batches/GrPLSPathRenderer.cpp
@@ -22,6 +22,7 @@
#include "GrInvariantOutput.h"
#include "GrPathUtils.h"
#include "GrProcessor.h"
+#include "GrPipelineBuilder.h"
#include "GrStyle.h"
#include "GrTessellator.h"
#include "batches/GrVertexBatch.h"
@@ -950,7 +951,10 @@
SkAutoTUnref<GrDrawBatch> batch(new PLSPathBatch(args.fPaint->getColor(),
path, *args.fViewMatrix));
- args.fDrawContext->drawBatch(*args.fPaint, *args.fClip, *args.fUserStencilSettings, batch);
+ GrPipelineBuilder pipelineBuilder(*args.fPaint, args.fDrawContext->mustUseHWAA(*args.fPaint));
+ pipelineBuilder.setUserStencil(args.fUserStencilSettings);
+
+ args.fDrawContext->drawBatch(pipelineBuilder, *args.fClip, batch);
SkDEBUGCODE(inPLSDraw = false;)
return true;
diff --git a/src/gpu/batches/GrStencilAndCoverPathRenderer.cpp b/src/gpu/batches/GrStencilAndCoverPathRenderer.cpp
index 52c9893..02d74ff 100644
--- a/src/gpu/batches/GrStencilAndCoverPathRenderer.cpp
+++ b/src/gpu/batches/GrStencilAndCoverPathRenderer.cpp
@@ -13,6 +13,7 @@
#include "GrDrawPathBatch.h"
#include "GrGpu.h"
#include "GrPath.h"
+#include "GrPipelineBuilder.h"
#include "GrRenderTarget.h"
#include "GrResourceProvider.h"
#include "GrStencilPathBatch.h"
@@ -136,9 +137,14 @@
GrRectBatchFactory::CreateNonAAFill(args.fPaint->getColor(), viewM, bounds,
nullptr, &invert));
- SkASSERT(args.fDrawContext->mustUseHWAA(*args.fPaint) ==
- (args.fPaint->isAntiAlias() && !args.fDrawContext->hasMixedSamples()));
- args.fDrawContext->drawBatch(*args.fPaint, *args.fClip, kInvertedCoverPass, coverBatch);
+ {
+ GrPipelineBuilder pipelineBuilder(*args.fPaint,
+ args.fPaint->isAntiAlias() &&
+ !args.fDrawContext->hasMixedSamples());
+ pipelineBuilder.setUserStencil(&kInvertedCoverPass);
+
+ args.fDrawContext->drawBatch(pipelineBuilder, *args.fClip, coverBatch);
+ }
} else {
static constexpr GrUserStencilSettings kCoverPass(
GrUserStencilSettings::StaticInit<
@@ -153,9 +159,14 @@
SkAutoTUnref<GrDrawBatch> batch(
GrDrawPathBatch::Create(viewMatrix, args.fPaint->getColor(), p->getFillType(), p));
- SkASSERT(args.fDrawContext->mustUseHWAA(*args.fPaint) ==
- (args.fPaint->isAntiAlias() || args.fAntiAlias));
- args.fDrawContext->drawBatch(*args.fPaint, *args.fClip, kCoverPass, batch);
+ GrPipelineBuilder pipelineBuilder(*args.fPaint, args.fPaint->isAntiAlias());
+ pipelineBuilder.setUserStencil(&kCoverPass);
+ if (args.fAntiAlias) {
+ SkASSERT(args.fDrawContext->isStencilBufferMultisampled());
+ pipelineBuilder.enableState(GrPipelineBuilder::kHWAntialias_Flag);
+ }
+
+ args.fDrawContext->drawBatch(pipelineBuilder, *args.fClip, batch);
}
return true;
diff --git a/src/gpu/batches/GrTessellatingPathRenderer.cpp b/src/gpu/batches/GrTessellatingPathRenderer.cpp
index 3ef9a51..6dce9f7 100644
--- a/src/gpu/batches/GrTessellatingPathRenderer.cpp
+++ b/src/gpu/batches/GrTessellatingPathRenderer.cpp
@@ -14,6 +14,7 @@
#include "GrDefaultGeoProcFactory.h"
#include "GrMesh.h"
#include "GrPathUtils.h"
+#include "GrPipelineBuilder.h"
#include "GrResourceCache.h"
#include "GrResourceProvider.h"
#include "GrTessellator.h"
@@ -271,7 +272,10 @@
*args.fShape,
*args.fViewMatrix, clipBounds));
- args.fDrawContext->drawBatch(*args.fPaint, *args.fClip, *args.fUserStencilSettings, batch);
+ GrPipelineBuilder pipelineBuilder(*args.fPaint, args.fDrawContext->mustUseHWAA(*args.fPaint));
+ pipelineBuilder.setUserStencil(args.fUserStencilSettings);
+
+ args.fDrawContext->drawBatch(pipelineBuilder, *args.fClip, batch);
return true;
}