Return GrProcessorSet::Analysis from GrDrawOp::finalize
Bug: skia:8671
Change-Id: Ib35d1642659021419f408bf19b1b0dc0066e8df2
Reviewed-on: https://skia-review.googlesource.com/c/184160
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp
index ed30060..e6c59c7 100644
--- a/src/gpu/GrRenderTargetContext.cpp
+++ b/src/gpu/GrRenderTargetContext.cpp
@@ -1912,7 +1912,8 @@
}
GrXferProcessor::DstProxy dstProxy;
- if (GrDrawOp::RequiresDstTexture::kYes == op->finalize(*this->caps(), &appliedClip)) {
+ GrProcessorSet::Analysis processorAnalysis = op->finalize(*this->caps(), &appliedClip);
+ if (processorAnalysis.requiresDstTexture()) {
if (!this->setupDstProxy(this->asRenderTargetProxy(), clip, *op, &dstProxy)) {
fContext->contextPriv().opMemoryPool()->release(std::move(op));
return;
diff --git a/src/gpu/ccpr/GrCCDrawPathsOp.cpp b/src/gpu/ccpr/GrCCDrawPathsOp.cpp
index 13b21d0..0d01849 100644
--- a/src/gpu/ccpr/GrCCDrawPathsOp.cpp
+++ b/src/gpu/ccpr/GrCCDrawPathsOp.cpp
@@ -138,13 +138,12 @@
#endif
}
-GrDrawOp::RequiresDstTexture GrCCDrawPathsOp::finalize(const GrCaps& caps,
- const GrAppliedClip* clip) {
+GrProcessorSet::Analysis GrCCDrawPathsOp::finalize(const GrCaps& caps, const GrAppliedClip* clip) {
SkASSERT(1 == fNumDraws); // There should only be one single path draw in this Op right now.
return fDraws.head().finalize(caps, clip, &fProcessors);
}
-GrDrawOp::RequiresDstTexture GrCCDrawPathsOp::SingleDraw::finalize(
+GrProcessorSet::Analysis GrCCDrawPathsOp::SingleDraw::finalize(
const GrCaps& caps, const GrAppliedClip* clip, GrProcessorSet* processors) {
const GrProcessorSet::Analysis& analysis = processors->finalize(
fColor, GrProcessorAnalysisCoverage::kSingleChannel, clip, false, caps,
@@ -178,7 +177,7 @@
fColor = fColor * coverage;
}
- return RequiresDstTexture(analysis.requiresDstTexture());
+ return analysis;
}
GrOp::CombineResult GrCCDrawPathsOp::onCombineIfPossible(GrOp* op, const GrCaps&) {
diff --git a/src/gpu/ccpr/GrCCDrawPathsOp.h b/src/gpu/ccpr/GrCCDrawPathsOp.h
index 82e05ae..fef4ead 100644
--- a/src/gpu/ccpr/GrCCDrawPathsOp.h
+++ b/src/gpu/ccpr/GrCCDrawPathsOp.h
@@ -34,7 +34,7 @@
const char* name() const override { return "GrCCDrawPathsOp"; }
FixedFunctionFlags fixedFunctionFlags() const override { return FixedFunctionFlags::kNone; }
- RequiresDstTexture finalize(const GrCaps&, const GrAppliedClip*) override;
+ GrProcessorSet::Analysis finalize(const GrCaps&, const GrAppliedClip*) override;
CombineResult onCombineIfPossible(GrOp*, const GrCaps&) override;
void visitProxies(const VisitProxyFunc& fn, VisitorType) const override {
fProcessors.visitProxies(fn);
@@ -89,7 +89,7 @@
const SkPMColor4f&);
// See the corresponding methods in GrCCDrawPathsOp.
- RequiresDstTexture finalize(const GrCaps&, const GrAppliedClip*, GrProcessorSet*);
+ GrProcessorSet::Analysis finalize(const GrCaps&, const GrAppliedClip*, GrProcessorSet*);
void accountForOwnPath(GrCCPathCache*, GrOnFlushResourceProvider*,
GrCCPerFlushResourceSpecs*);
void setupResources(GrCCPathCache*, GrOnFlushResourceProvider*, GrCCPerFlushResources*,
diff --git a/src/gpu/ccpr/GrCCPerFlushResources.cpp b/src/gpu/ccpr/GrCCPerFlushResources.cpp
index 5d4ca94..6be4f64 100644
--- a/src/gpu/ccpr/GrCCPerFlushResources.cpp
+++ b/src/gpu/ccpr/GrCCPerFlushResources.cpp
@@ -29,8 +29,8 @@
class AtlasOp : public GrDrawOp {
public:
FixedFunctionFlags fixedFunctionFlags() const override { return FixedFunctionFlags::kNone; }
- RequiresDstTexture finalize(const GrCaps&, const GrAppliedClip*) override {
- return RequiresDstTexture::kNo;
+ GrProcessorSet::Analysis finalize(const GrCaps&, const GrAppliedClip*) override {
+ return GrProcessorSet::EmptySetAnalysis();
}
CombineResult onCombineIfPossible(GrOp* other, const GrCaps&) override {
// We will only make multiple copy ops if they have different source proxies.
diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp
index 6b8f6c6..8d7316e 100644
--- a/src/gpu/ops/GrAAConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp
@@ -707,9 +707,9 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- &fPaths.back().fColor);
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ &fPaths.back().fColor);
}
private:
diff --git a/src/gpu/ops/GrAAFillRRectOp.cpp b/src/gpu/ops/GrAAFillRRectOp.cpp
index 2885414..513c15b 100644
--- a/src/gpu/ops/GrAAFillRRectOp.cpp
+++ b/src/gpu/ops/GrAAFillRRectOp.cpp
@@ -79,8 +79,7 @@
// We will write the color and local rect attribs during finalize().
}
-GrDrawOp::RequiresDstTexture GrAAFillRRectOp::finalize(const GrCaps& caps,
- const GrAppliedClip* clip) {
+GrProcessorSet::Analysis GrAAFillRRectOp::finalize(const GrCaps& caps, const GrAppliedClip* clip) {
SkASSERT(1 == fInstanceCount);
SkPMColor4f overrideColor;
@@ -97,7 +96,7 @@
}
fInstanceStride = fInstanceData.count();
- return RequiresDstTexture(analysis.requiresDstTexture());
+ return analysis;
}
GrDrawOp::CombineResult GrAAFillRRectOp::onCombineIfPossible(GrOp* op, const GrCaps&) {
diff --git a/src/gpu/ops/GrAAFillRRectOp.h b/src/gpu/ops/GrAAFillRRectOp.h
index b1428cf..b934fb0 100644
--- a/src/gpu/ops/GrAAFillRRectOp.h
+++ b/src/gpu/ops/GrAAFillRRectOp.h
@@ -19,7 +19,7 @@
const char* name() const override { return "GrAAFillRRectOp"; }
FixedFunctionFlags fixedFunctionFlags() const override { return FixedFunctionFlags::kNone; }
- RequiresDstTexture finalize(const GrCaps&, const GrAppliedClip*) override;
+ GrProcessorSet::Analysis finalize(const GrCaps&, const GrAppliedClip*) override;
CombineResult onCombineIfPossible(GrOp*, const GrCaps&) override;
void visitProxies(const VisitProxyFunc& fn, VisitorType) const override {
fProcessors.visitProxies(fn);
diff --git a/src/gpu/ops/GrAAHairLinePathRenderer.cpp b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
index e03ce3f..052e98f 100644
--- a/src/gpu/ops/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
@@ -839,9 +839,9 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- &fColor);
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ &fColor);
}
private:
diff --git a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
index b007245..f15bbc8 100644
--- a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
@@ -187,9 +187,9 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- &fPaths.back().fColor);
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ &fPaths.back().fColor);
}
private:
diff --git a/src/gpu/ops/GrAtlasTextOp.cpp b/src/gpu/ops/GrAtlasTextOp.cpp
index 976ab6f..08afa4b 100644
--- a/src/gpu/ops/GrAtlasTextOp.cpp
+++ b/src/gpu/ops/GrAtlasTextOp.cpp
@@ -140,8 +140,7 @@
return FixedFunctionFlags::kNone;
}
-GrDrawOp::RequiresDstTexture GrAtlasTextOp::finalize(const GrCaps& caps,
- const GrAppliedClip* clip) {
+GrProcessorSet::Analysis GrAtlasTextOp::finalize(const GrCaps& caps, const GrAppliedClip* clip) {
GrProcessorAnalysisCoverage coverage;
GrProcessorAnalysisColor color;
if (kColorBitmapMask_MaskType == fMaskType) {
@@ -169,7 +168,7 @@
fCanCombineOnTouchOrOverlap =
!analysis.requiresDstTexture() &&
!(fProcessors.xferProcessor() && fProcessors.xferProcessor()->xferBarrierType(caps));
- return analysis.requiresDstTexture() ? RequiresDstTexture::kYes : RequiresDstTexture::kNo;
+ return analysis;
}
static void clip_quads(const SkIRect& clipRect, char* currVertex, const char* blobVertices,
diff --git a/src/gpu/ops/GrAtlasTextOp.h b/src/gpu/ops/GrAtlasTextOp.h
index 6d31197..41bd9dc 100644
--- a/src/gpu/ops/GrAtlasTextOp.h
+++ b/src/gpu/ops/GrAtlasTextOp.h
@@ -75,7 +75,7 @@
FixedFunctionFlags fixedFunctionFlags() const override;
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override;
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override;
enum MaskType {
kGrayscaleCoverageMask_MaskType,
diff --git a/src/gpu/ops/GrDashOp.cpp b/src/gpu/ops/GrDashOp.cpp
index 7204869..89214dc 100644
--- a/src/gpu/ops/GrDashOp.cpp
+++ b/src/gpu/ops/GrDashOp.cpp
@@ -257,7 +257,7 @@
return flags;
}
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
GrProcessorAnalysisCoverage coverage;
if (AAMode::kNone == fAAMode && !clip->numClipCoverageFragmentProcessors()) {
coverage = GrProcessorAnalysisCoverage::kNone;
@@ -269,7 +269,7 @@
(fProcessorSet.xferProcessor() &&
fProcessorSet.xferProcessor()->xferBarrierType(caps));
fUsesLocalCoords = analysis.usesLocalCoords();
- return analysis.requiresDstTexture() ? RequiresDstTexture::kYes : RequiresDstTexture::kNo;
+ return analysis;
}
private:
diff --git a/src/gpu/ops/GrDefaultPathRenderer.cpp b/src/gpu/ops/GrDefaultPathRenderer.cpp
index 54e98f1..d62d22a 100644
--- a/src/gpu/ops/GrDefaultPathRenderer.cpp
+++ b/src/gpu/ops/GrDefaultPathRenderer.cpp
@@ -392,11 +392,11 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
GrProcessorAnalysisCoverage gpCoverage =
this->coverage() == 0xFF ? GrProcessorAnalysisCoverage::kNone
: GrProcessorAnalysisCoverage::kSingleChannel;
- return fHelper.xpRequiresDstTexture(caps, clip, gpCoverage, &fColor);
+ return fHelper.finalizeProcessors(caps, clip, gpCoverage, &fColor);
}
private:
diff --git a/src/gpu/ops/GrDrawAtlasOp.cpp b/src/gpu/ops/GrDrawAtlasOp.cpp
index e19bdb6..fdabd64 100644
--- a/src/gpu/ops/GrDrawAtlasOp.cpp
+++ b/src/gpu/ops/GrDrawAtlasOp.cpp
@@ -182,16 +182,15 @@
return fHelper.fixedFunctionFlags();
}
-GrDrawOp::RequiresDstTexture GrDrawAtlasOp::finalize(const GrCaps& caps,
- const GrAppliedClip* clip) {
+GrProcessorSet::Analysis GrDrawAtlasOp::finalize(const GrCaps& caps, const GrAppliedClip* clip) {
GrProcessorAnalysisColor gpColor;
if (this->hasColors()) {
gpColor.setToUnknown();
} else {
gpColor.setToConstant(fColor);
}
- auto result = fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kNone,
- &gpColor);
+ auto result = fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kNone,
+ &gpColor);
if (gpColor.isConstant(&fColor)) {
fHasColors = false;
}
diff --git a/src/gpu/ops/GrDrawAtlasOp.h b/src/gpu/ops/GrDrawAtlasOp.h
index 9a5576a..92820e9 100644
--- a/src/gpu/ops/GrDrawAtlasOp.h
+++ b/src/gpu/ops/GrDrawAtlasOp.h
@@ -48,7 +48,7 @@
FixedFunctionFlags fixedFunctionFlags() const override;
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override;
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override;
private:
void onPrepareDraws(Target*) override;
diff --git a/src/gpu/ops/GrDrawOp.h b/src/gpu/ops/GrDrawOp.h
index b6077e1..da54132 100644
--- a/src/gpu/ops/GrDrawOp.h
+++ b/src/gpu/ops/GrDrawOp.h
@@ -36,7 +36,6 @@
GR_DECL_BITFIELD_CLASS_OPS_FRIENDS(FixedFunctionFlags);
virtual FixedFunctionFlags fixedFunctionFlags() const = 0;
- enum class RequiresDstTexture : bool { kNo = false, kYes = true };
/**
* This is called after the GrAppliedClip has been computed and just prior to recording the op
* or combining it with a previously recorded op. The op should convert any proxies or resources
@@ -44,7 +43,7 @@
* at this time the op must report whether a copy of the destination (or destination texture
* itself) needs to be provided to the GrXferProcessor when this op executes.
*/
- virtual RequiresDstTexture finalize(const GrCaps&, const GrAppliedClip*) = 0;
+ virtual GrProcessorSet::Analysis finalize(const GrCaps&, const GrAppliedClip*) = 0;
#ifdef SK_DEBUG
bool fAddDrawOpCalled = false;
diff --git a/src/gpu/ops/GrDrawPathOp.h b/src/gpu/ops/GrDrawPathOp.h
index 7f2115d..8f67104 100644
--- a/src/gpu/ops/GrDrawPathOp.h
+++ b/src/gpu/ops/GrDrawPathOp.h
@@ -29,9 +29,8 @@
}
return FixedFunctionFlags::kUsesStencil;
}
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
- return this->doProcessorAnalysis(caps, clip).requiresDstTexture()
- ? RequiresDstTexture::kYes : RequiresDstTexture::kNo;
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ return this->doProcessorAnalysis(caps, clip);
}
void visitProxies(const VisitProxyFunc& func, VisitorType) const override {
diff --git a/src/gpu/ops/GrDrawVerticesOp.cpp b/src/gpu/ops/GrDrawVerticesOp.cpp
index 195f4b3..3a4219d 100644
--- a/src/gpu/ops/GrDrawVerticesOp.cpp
+++ b/src/gpu/ops/GrDrawVerticesOp.cpp
@@ -129,16 +129,15 @@
return fHelper.fixedFunctionFlags();
}
-GrDrawOp::RequiresDstTexture GrDrawVerticesOp::finalize(const GrCaps& caps,
- const GrAppliedClip* clip) {
+GrProcessorSet::Analysis GrDrawVerticesOp::finalize(const GrCaps& caps, const GrAppliedClip* clip) {
GrProcessorAnalysisColor gpColor;
if (this->requiresPerVertexColors()) {
gpColor.setToUnknown();
} else {
gpColor.setToConstant(fMeshes.front().fColor);
}
- auto result = fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kNone,
- &gpColor);
+ auto result = fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kNone,
+ &gpColor);
if (gpColor.isConstant(&fMeshes.front().fColor)) {
fMeshes.front().fIgnoreColors = true;
fFlags &= ~kRequiresPerVertexColors_Flag;
diff --git a/src/gpu/ops/GrDrawVerticesOp.h b/src/gpu/ops/GrDrawVerticesOp.h
index d160dee..6ecdf0c 100644
--- a/src/gpu/ops/GrDrawVerticesOp.h
+++ b/src/gpu/ops/GrDrawVerticesOp.h
@@ -61,7 +61,7 @@
FixedFunctionFlags fixedFunctionFlags() const override;
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override;
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override;
private:
enum class ColorArrayType {
diff --git a/src/gpu/ops/GrFillRectOp.cpp b/src/gpu/ops/GrFillRectOp.cpp
index 0ff0322..d784e96 100644
--- a/src/gpu/ops/GrFillRectOp.cpp
+++ b/src/gpu/ops/GrFillRectOp.cpp
@@ -121,7 +121,7 @@
}
#endif
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
// Initialize aggregate color analysis with the first quad's color (which always exists)
SkASSERT(this->quadCount() > 0);
GrProcessorAnalysisColor quadColors(fDeviceQuads.metadata(0).fColor);
@@ -141,7 +141,7 @@
GrProcessorAnalysisCoverage coverage = fHelper.aaType() == GrAAType::kCoverage ?
GrProcessorAnalysisCoverage::kSingleChannel :
GrProcessorAnalysisCoverage::kNone;
- auto result = fHelper.xpRequiresDstTexture(caps, clip, coverage, &quadColors);
+ auto result = fHelper.finalizeProcessors(caps, clip, coverage, &quadColors);
// If there is a constant color after analysis, that means all of the quads should be set
// to the same color (even if they started out with different colors).
SkPMColor4f colorOverride;
diff --git a/src/gpu/ops/GrLatticeOp.cpp b/src/gpu/ops/GrLatticeOp.cpp
index 68b15bc..154a039 100644
--- a/src/gpu/ops/GrLatticeOp.cpp
+++ b/src/gpu/ops/GrLatticeOp.cpp
@@ -193,12 +193,12 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
auto opaque = fPatches[0].fColor.isOpaque() && GrPixelConfigIsOpaque(fProxy->config())
? GrProcessorAnalysisColor::Opaque::kYes
: GrProcessorAnalysisColor::Opaque::kNo;
auto analysisColor = GrProcessorAnalysisColor(opaque);
- auto result = fHelper.xpRequiresDstTexture(
+ auto result = fHelper.finalizeProcessors(
caps, clip, GrProcessorAnalysisCoverage::kNone, &analysisColor);
analysisColor.isConstant(&fPatches[0].fColor);
return result;
diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp
index 7e2a9c8..feeef4f 100644
--- a/src/gpu/ops/GrOvalOpFactory.cpp
+++ b/src/gpu/ops/GrOvalOpFactory.cpp
@@ -1146,10 +1146,10 @@
}
#endif
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
SkPMColor4f* color = &fCircles.front().fColor;
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- color);
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ color);
}
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
@@ -1472,10 +1472,10 @@
}
#endif
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
SkPMColor4f* color = &fCircles.front().fColor;
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- color);
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ color);
}
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
@@ -1751,10 +1751,10 @@
}
#endif
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
SkPMColor4f* color = &fEllipses.front().fColor;
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- color);
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ color);
}
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
@@ -1972,10 +1972,10 @@
}
#endif
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
SkPMColor4f* color = &fEllipses.front().fColor;
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- color);
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ color);
}
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
@@ -2287,10 +2287,10 @@
}
#endif
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
SkPMColor4f* color = &fRRects.front().fColor;
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- color);
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ color);
}
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
@@ -2622,10 +2622,10 @@
}
#endif
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
SkPMColor4f* color = &fRRects.front().fColor;
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- color);
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ color);
}
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
diff --git a/src/gpu/ops/GrRegionOp.cpp b/src/gpu/ops/GrRegionOp.cpp
index 356f3a7..e57b62b 100644
--- a/src/gpu/ops/GrRegionOp.cpp
+++ b/src/gpu/ops/GrRegionOp.cpp
@@ -86,9 +86,9 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kNone,
- &fRegions[0].fColor);
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kNone,
+ &fRegions[0].fColor);
}
private:
diff --git a/src/gpu/ops/GrShadowRRectOp.cpp b/src/gpu/ops/GrShadowRRectOp.cpp
index f3444ef..c7ef699 100644
--- a/src/gpu/ops/GrShadowRRectOp.cpp
+++ b/src/gpu/ops/GrShadowRRectOp.cpp
@@ -255,8 +255,8 @@
FixedFunctionFlags fixedFunctionFlags() const override { return FixedFunctionFlags::kNone; }
- RequiresDstTexture finalize(const GrCaps&, const GrAppliedClip*) override {
- return RequiresDstTexture::kNo;
+ GrProcessorSet::Analysis finalize(const GrCaps&, const GrAppliedClip*) override {
+ return GrProcessorSet::EmptySetAnalysis();
}
private:
diff --git a/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp b/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp
index f8a7763..446d313 100644
--- a/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp
+++ b/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp
@@ -69,7 +69,7 @@
return result;
}
-GrDrawOp::RequiresDstTexture GrSimpleMeshDrawOpHelper::xpRequiresDstTexture(
+GrProcessorSet::Analysis GrSimpleMeshDrawOpHelper::finalizeProcessors(
const GrCaps& caps, const GrAppliedClip* clip, GrProcessorAnalysisCoverage geometryCoverage,
GrProcessorAnalysisColor* geometryColor) {
SkDEBUGCODE(fDidAnalysis = true);
@@ -94,15 +94,14 @@
fRequiresDstTexture = analysis.requiresDstTexture();
fUsesLocalCoords = analysis.usesLocalCoords();
fCompatibleWithAlphaAsCoveage = analysis.isCompatibleWithCoverageAsAlpha();
- return analysis.requiresDstTexture() ? GrDrawOp::RequiresDstTexture::kYes
- : GrDrawOp::RequiresDstTexture::kNo;
+ return analysis;
}
-GrDrawOp::RequiresDstTexture GrSimpleMeshDrawOpHelper::xpRequiresDstTexture(
+GrProcessorSet::Analysis GrSimpleMeshDrawOpHelper::finalizeProcessors(
const GrCaps& caps, const GrAppliedClip* clip, GrProcessorAnalysisCoverage geometryCoverage,
SkPMColor4f* geometryColor) {
GrProcessorAnalysisColor color = *geometryColor;
- auto result = this->xpRequiresDstTexture(caps, clip, geometryCoverage, &color);
+ auto result = this->finalizeProcessors(caps, clip, geometryCoverage, &color);
color.isConstant(geometryColor);
return result;
}
diff --git a/src/gpu/ops/GrSimpleMeshDrawOpHelper.h b/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
index 25cdb86..88f56e6 100644
--- a/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
+++ b/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
@@ -68,18 +68,18 @@
* this may be set to a known color in which case the op must output this
* color from its geometry processor instead.
*/
- GrDrawOp::RequiresDstTexture xpRequiresDstTexture(const GrCaps& caps, const GrAppliedClip* clip,
- GrProcessorAnalysisCoverage geometryCoverage,
- GrProcessorAnalysisColor* geometryColor);
+ GrProcessorSet::Analysis finalizeProcessors(const GrCaps& caps, const GrAppliedClip*,
+ GrProcessorAnalysisCoverage geometryCoverage,
+ GrProcessorAnalysisColor* geometryColor);
/**
* Version of above that can be used by ops that have a constant color geometry processor
* output. The op passes this color as 'geometryColor' and after return if 'geometryColor' has
* changed the op must override its geometry processor color output with the new color.
*/
- GrDrawOp::RequiresDstTexture xpRequiresDstTexture(const GrCaps&, const GrAppliedClip*,
- GrProcessorAnalysisCoverage geometryCoverage,
- SkPMColor4f* geometryColor);
+ GrProcessorSet::Analysis finalizeProcessors(const GrCaps&, const GrAppliedClip*,
+ GrProcessorAnalysisCoverage geometryCoverage,
+ SkPMColor4f* geometryColor);
bool isTrivial() const {
return fProcessors == nullptr;
@@ -173,7 +173,7 @@
using GrSimpleMeshDrawOpHelper::aaType;
using GrSimpleMeshDrawOpHelper::setAAType;
using GrSimpleMeshDrawOpHelper::isTrivial;
- using GrSimpleMeshDrawOpHelper::xpRequiresDstTexture;
+ using GrSimpleMeshDrawOpHelper::finalizeProcessors;
using GrSimpleMeshDrawOpHelper::usesLocalCoords;
using GrSimpleMeshDrawOpHelper::compatibleWithAlphaAsCoverage;
diff --git a/src/gpu/ops/GrSmallPathRenderer.cpp b/src/gpu/ops/GrSmallPathRenderer.cpp
index acb82af..ea27e7b 100644
--- a/src/gpu/ops/GrSmallPathRenderer.cpp
+++ b/src/gpu/ops/GrSmallPathRenderer.cpp
@@ -297,9 +297,9 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- &fShapes.front().fColor);
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ &fShapes.front().fColor);
}
private:
diff --git a/src/gpu/ops/GrStrokeRectOp.cpp b/src/gpu/ops/GrStrokeRectOp.cpp
index 250c46b..541c8a5 100644
--- a/src/gpu/ops/GrStrokeRectOp.cpp
+++ b/src/gpu/ops/GrStrokeRectOp.cpp
@@ -162,9 +162,8 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kNone,
- &fColor);
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kNone, &fColor);
}
private:
@@ -405,9 +404,9 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
- return fHelper.xpRequiresDstTexture(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
- &fRects.back().fColor);
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ return fHelper.finalizeProcessors(caps, clip, GrProcessorAnalysisCoverage::kSingleChannel,
+ &fRects.back().fColor);
}
private:
diff --git a/src/gpu/ops/GrTessellatingPathRenderer.cpp b/src/gpu/ops/GrTessellatingPathRenderer.cpp
index 39031e2..3690c7c 100644
--- a/src/gpu/ops/GrTessellatingPathRenderer.cpp
+++ b/src/gpu/ops/GrTessellatingPathRenderer.cpp
@@ -224,11 +224,11 @@
FixedFunctionFlags fixedFunctionFlags() const override { return fHelper.fixedFunctionFlags(); }
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
GrProcessorAnalysisCoverage coverage = fAntiAlias
? GrProcessorAnalysisCoverage::kSingleChannel
: GrProcessorAnalysisCoverage::kNone;
- return fHelper.xpRequiresDstTexture(caps, clip, coverage, &fColor);
+ return fHelper.finalizeProcessors(caps, clip, coverage, &fColor);
}
private:
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 1e49f5f..e83b435 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -186,14 +186,14 @@
}
#endif
- RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
+ GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip) override {
SkASSERT(!fFinalized);
fFinalized = true;
for (unsigned p = 0; p < fProxyCnt; ++p) {
fProxies[p].fProxy->addPendingRead();
fProxies[p].fProxy->unref();
}
- return RequiresDstTexture::kNo;
+ return GrProcessorSet::EmptySetAnalysis();
}
FixedFunctionFlags fixedFunctionFlags() const override {