Lift atlas clip FP creation out of GrClip::apply

Atlas clips always had a potential point of failure: If the SDC's
opsTask ever got closed between GrClip::apply and
GrOpsTask::addDrawOp, their mask would have gotten sent to the wrong
opsTask. It didn't _look_ like this could happen with the current
code, but it could have also been inadvertently changed quite easily.

This CL adds a "pathsForClipAtlas" array for GrClip::apply to fill out
instead of creating FPs. The SDC then generates the actual clip atlas
FPs once it knows exactly which opsTask they will belong in.

Bug: chromium:928984
Change-Id: I507ab13b2b5e8c3c3c1916d97611297dbbd8a522
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/389926
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
diff --git a/src/gpu/ccpr/GrCoverageCountingPathRenderer.cpp b/src/gpu/ccpr/GrCoverageCountingPathRenderer.cpp
index 21e158c..12bd622 100644
--- a/src/gpu/ccpr/GrCoverageCountingPathRenderer.cpp
+++ b/src/gpu/ccpr/GrCoverageCountingPathRenderer.cpp
@@ -66,8 +66,9 @@
 
     if (deviceSpacePath.isEmpty() ||
         !SkIRect::Intersects(accessRect, deviceSpacePath.getBounds().roundOut())) {
-        // "Intersect" draws that don't intersect the clip can be dropped.
-        return deviceSpacePath.isInverseFillType() ? GrFPSuccess(nullptr) : GrFPFailure(nullptr);
+        // The accessRect never touches the path.
+        return deviceSpacePath.isInverseFillType() ? GrFPSuccess(std::move(inputFP))  // Wide open.
+                                                   : GrFPFailure(nullptr);  // Clipped out.
     }
 
     uint32_t key = deviceSpacePath.getGenerationID();