Simplify heuristics for selecting path tessellators

Now that hardware tessellators chop, support raw triangles, and can
handle any path, we don't need complicated logic anymore to determine
when we can't use them. This CL simplifies the criteria for selecting
a tessellation algorithm and adds a fAlwaysPreferHardwareTessellation
context option to override it.

Bug: skia:10419
Change-Id: I8492e8f285ff27eb9d0dd6b1e9817dbeeb386c63
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/411496
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/tessellate/GrPathStencilFillOp.h b/src/gpu/tessellate/GrPathStencilFillOp.h
index a3f2d7e..ee5e0af 100644
--- a/src/gpu/tessellate/GrPathStencilFillOp.h
+++ b/src/gpu/tessellate/GrPathStencilFillOp.h
@@ -22,7 +22,8 @@
     DEFINE_OP_CLASS_ID
 
     GrPathStencilFillOp(const SkMatrix& viewMatrix, const SkPath& path, GrPaint&& paint,
-                        GrAAType aaType, GrTessellationPathRenderer::OpFlags opFlags)
+                        GrAAType aaType, GrTessellationPathRenderer::OpFlags opFlags,
+                        const SkRect& devBounds)
             : GrDrawOp(ClassID())
             , fOpFlags(opFlags)
             , fViewMatrix(viewMatrix)
@@ -30,8 +31,6 @@
             , fAAType(aaType)
             , fColor(paint.getColor4f())
             , fProcessors(std::move(paint)) {
-        SkRect devBounds;
-        fViewMatrix.mapRect(&devBounds, path.getBounds());
         this->setBounds(devBounds, HasAABloat::kNo, IsHairline::kNo);
     }