Move GrAppliedClip into GrPipeline
Change-Id: I522c2fd52bea9813baba7cdb3f11b63e7ab96b50
Reviewed-on: https://skia-review.googlesource.com/28861
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrPipeline.cpp b/src/gpu/GrPipeline.cpp
index f684896..a6e8fba 100644
--- a/src/gpu/GrPipeline.cpp
+++ b/src/gpu/GrPipeline.cpp
@@ -17,20 +17,19 @@
#include "ops/GrOp.h"
-GrPipeline::GrPipeline(const InitArgs& args, GrProcessorSet&& processors) {
+GrPipeline::GrPipeline(const InitArgs& args, GrProcessorSet&& processors,
+ GrAppliedClip&& appliedClip) {
SkASSERT(args.fProxy);
SkASSERT(processors.isFinalized());
fProxy.reset(args.fProxy);
fFlags = args.fFlags;
- if (args.fAppliedClip) {
- fScissorState = args.fAppliedClip->scissorState();
- if (args.fAppliedClip->hasStencilClip()) {
- fFlags |= kHasStencilClip_Flag;
- }
- fWindowRectsState = args.fAppliedClip->windowRectsState();
+ fScissorState = appliedClip.scissorState();
+ if (appliedClip.hasStencilClip()) {
+ fFlags |= kHasStencilClip_Flag;
}
+ fWindowRectsState = appliedClip.windowRectsState();
if (!args.fUserStencil->isDisabled(fFlags & kHasStencilClip_Flag)) {
fFlags |= kStencilEnabled_Flag;
}
@@ -52,7 +51,8 @@
fNumColorProcessors = processors.numColorFragmentProcessors();
int numTotalProcessors =
fNumColorProcessors + processors.numCoverageFragmentProcessors();
- if (args.fAppliedClip && args.fAppliedClip->clipCoverageFragmentProcessor()) {
+ auto clipFP = appliedClip.detachClipCoverageFragmentProcessor();
+ if (clipFP) {
++numTotalProcessors;
}
fFragmentProcessors.reset(numTotalProcessors);
@@ -72,12 +72,10 @@
this->markAsBad();
}
}
- if (args.fAppliedClip) {
- if (const GrFragmentProcessor* fp = args.fAppliedClip->clipCoverageFragmentProcessor()) {
- fFragmentProcessors[currFPIdx].reset(fp);
- if (!fp->instantiate(args.fResourceProvider)) {
- this->markAsBad();
- }
+ if (clipFP) {
+ fFragmentProcessors[currFPIdx].reset(clipFP.get());
+ if (!fFragmentProcessors[currFPIdx]->instantiate(args.fResourceProvider)) {
+ this->markAsBad();
}
}
}