Alter gpu veto

This CL unifies the treatment of the dashed and concave paths.

Before:
TP 28 FP 15 TN 8 FN 3 IND 3

After:
TP 28 FP 18 TN 7 FN 2 IND 2

One of the TrueNegatives that became a FalsePositive was the motivation use case (the Chromium busy spinner).

Review URL: https://codereview.chromium.org/875913002
diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp
index 871a62e..c7e36e7 100644
--- a/src/core/SkPicture.cpp
+++ b/src/core/SkPicture.cpp
@@ -239,31 +239,22 @@
 bool SkPicture::Analysis::suitableForGpuRasterization(const char** reason,
                                                       int sampleCount) const {
     // TODO: the heuristic used here needs to be refined
-    static const int kNumPaintWithPathEffectsUsesTol = 1;
-    static const int kNumAAConcavePathsTol = 5;
+    static const int kNumSlowPathsTol = 6;
 
-    int numNonDashedPathEffects = fNumPaintWithPathEffectUses -
-                                  fNumFastPathDashEffects;
-    bool suitableForDash = (0 == fNumPaintWithPathEffectUses) ||
-                           (numNonDashedPathEffects < kNumPaintWithPathEffectsUsesTol
-                               && 0 == sampleCount);
+    int numSlowPathDashedPaths = fNumPaintWithPathEffectUses;
+    if (0 == sampleCount) {
+        // The fast dashing path only works when MSAA is disabled
+        numSlowPathDashedPaths -= fNumFastPathDashEffects;
+    }
 
-    bool ret = suitableForDash &&
-               (fNumAAConcavePaths - fNumAAHairlineConcavePaths - fNumAADFEligibleConcavePaths)
-                   < kNumAAConcavePathsTol;
+    int numSlowPaths = fNumAAConcavePaths - 
+                       fNumAAHairlineConcavePaths -
+                       fNumAADFEligibleConcavePaths;
+
+    bool ret = numSlowPathDashedPaths + numSlowPaths < kNumSlowPathsTol;
 
     if (!ret && reason) {
-        if (!suitableForDash) {
-            if (0 != sampleCount) {
-                *reason = "Can't use multisample on dash effect.";
-            } else {
-                *reason = "Too many non dashed path effects.";
-            }
-        } else if ((fNumAAConcavePaths - fNumAAHairlineConcavePaths - fNumAADFEligibleConcavePaths)
-                    >= kNumAAConcavePathsTol)
-            *reason = "Too many anti-aliased concave paths.";
-        else
-            *reason = "Unknown reason for GPU unsuitability.";
+        *reason = "Too many slow paths (either concave or dashed).";
     }
     return ret;
 }