Simplify the boilerplate of cloning a fragment processor.

GrFragmentProcessor now provides an (explicit) copy constructor which
clones all child processors and flags from the passed-in FP. Since we no
longer have flags which propagate up to the root node of the FP tree,
all flags are now safe to copy, since a cloned FP also clones all of its
children.

Change-Id: Ia9f80e0ec540ed1056d25dbb1861a174a1d55f4b
Bug: skia:12299
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437836
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/effects/GrModulateAtlasCoverageEffect.cpp b/src/gpu/effects/GrModulateAtlasCoverageEffect.cpp
index 738e126..e42fc8f 100644
--- a/src/gpu/effects/GrModulateAtlasCoverageEffect.cpp
+++ b/src/gpu/effects/GrModulateAtlasCoverageEffect.cpp
@@ -28,12 +28,9 @@
 
 GrModulateAtlasCoverageEffect::GrModulateAtlasCoverageEffect(
         const GrModulateAtlasCoverageEffect& that)
-        : GrFragmentProcessor(kTessellate_GrModulateAtlasCoverageEffect_ClassID,
-                              kCompatibleWithCoverageAsAlpha_OptimizationFlag)
+        : GrFragmentProcessor(that)
         , fFlags(that.fFlags)
-        , fBounds(that.fBounds) {
-    this->cloneAndRegisterAllChildProcessors(that);
-}
+        , fBounds(that.fBounds) {}
 
 std::unique_ptr<GrFragmentProcessor::ProgramImpl>
 GrModulateAtlasCoverageEffect::onMakeProgramImpl() const {