Use analytic coverage FPs with MSAA

This addresses the performance regressions on vkmsaa8 and other msaa
locked devices from the new GrClipStack. Now that elements are forced
to upgrade to AA, this allows axis-aligned anti-aliased rects to be
implemented as an FP instead of generating a stencil mask.

This is an alternative to https://skia-review.googlesource.com/c/skia/+/317772
and does not appear to regress visual quality.

Bug: skia:10370
Change-Id: If89b4368fb0c684851e6648bf70e1b608e19852c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317836
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
diff --git a/src/gpu/GrClipStack.cpp b/src/gpu/GrClipStack.cpp
index 22644b4..6711e5d 100644
--- a/src/gpu/GrClipStack.cpp
+++ b/src/gpu/GrClipStack.cpp
@@ -1326,10 +1326,11 @@
     bool scissorIsNeeded = SkToBool(cs.shader());
 
     int remainingAnalyticFPs = kMaxAnalyticFPs;
-    if (rtc->numSamples() > 1 || aa == GrAAType::kMSAA || hasUserStencilSettings) {
-        // Disable analytic clips when we have MSAA. In MSAA we never conflate coverage and opacity.
+    if (hasUserStencilSettings) {
+        // Disable analytic clips when there are user stencil settings to ensure the clip is
+        // respected in the stencil buffer.
         remainingAnalyticFPs = 0;
-        // We disable MSAA when avoiding stencil so shouldn't get here.
+        // If we have user stencil settings, we shouldn't be avoiding the stencil buffer anyways.
         SkASSERT(!context->priv().caps()->avoidStencilBuffers());
     }