ccpr: Add an MSAA atlas mode

Adds the option to use a multisampled (or mixed sampled) atlas, and
uses the sample mask and stencil buffer instead of coverage counts.

Bug: skia:
Change-Id: I9fb76d17895ae25208124f6c27e37977ac31b5eb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227428
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/ccpr/GrCCPathProcessor.h b/src/gpu/ccpr/GrCCPathProcessor.h
index ac97fd8..6ad8720 100644
--- a/src/gpu/ccpr/GrCCPathProcessor.h
+++ b/src/gpu/ccpr/GrCCPathProcessor.h
@@ -33,11 +33,6 @@
  */
 class GrCCPathProcessor : public GrGeometryProcessor {
 public:
-    enum class DoEvenOddFill : bool {
-        kNo = false,
-        kYes = true
-    };
-
     struct Instance {
         SkRect fDevBounds;  // "right < left" indicates even-odd fill type.
         SkRect fDevBounds45;  // Bounding box in "| 1  -1 | * devCoords" space. See GrOctoBounds.
@@ -45,8 +40,8 @@
         SkIVector fDevToAtlasOffset;  // Translation from device space to location in atlas.
         uint64_t fColor;  // Color always stored as 4 x fp16
 
-        void set(const GrOctoBounds&, const SkIVector& devToAtlasOffset, uint64_t, DoEvenOddFill);
-        void set(const GrCCPathCacheEntry&, const SkIVector& shift, uint64_t, DoEvenOddFill);
+        void set(const GrOctoBounds&, const SkIVector& devToAtlasOffset, uint64_t, GrFillRule);
+        void set(const GrCCPathCacheEntry&, const SkIVector& shift, uint64_t, GrFillRule);
     };
 
     GR_STATIC_ASSERT(4 * 12 == sizeof(Instance));
@@ -106,8 +101,8 @@
 
 inline void GrCCPathProcessor::Instance::set(
         const GrOctoBounds& octoBounds, const SkIVector& devToAtlasOffset, uint64_t color,
-        DoEvenOddFill doEvenOddFill) {
-    if (DoEvenOddFill::kNo == doEvenOddFill) {
+        GrFillRule fillRule) {
+    if (GrFillRule::kNonzero == fillRule) {
         // We cover "nonzero" paths with clockwise triangles, which is the default result from
         // normal octo bounds.
         fDevBounds = octoBounds.bounds();