Move Software and Small PathRenderers to skgpu::v1 namespace

Bug: skia:11837
Change-Id: Ia34f1840aaa7360ea9a3ca40fef5cb96b68c6ca3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/439781
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
diff --git a/src/gpu/ops/SoftwarePathRenderer.h b/src/gpu/ops/SoftwarePathRenderer.h
new file mode 100644
index 0000000..169bcdd
--- /dev/null
+++ b/src/gpu/ops/SoftwarePathRenderer.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SoftwarePathRenderer_DEFINED
+#define SoftwarePathRenderer_DEFINED
+
+#include "src/gpu/GrPathRenderer.h"
+#include "src/gpu/GrSurfaceProxyView.h"
+
+class GrProxyProvider;
+
+namespace skgpu::v1 {
+
+/**
+ * This class uses the software side to render a path to an SkBitmap and
+ * then uploads the result to the gpu
+ */
+class SoftwarePathRenderer final : public GrPathRenderer {
+public:
+    const char* name() const override { return "SW"; }
+
+    SoftwarePathRenderer(GrProxyProvider* proxyProvider, bool allowCaching)
+            : fProxyProvider(proxyProvider)
+            , fAllowCaching(allowCaching) {
+    }
+
+    static bool GetShapeAndClipBounds(SurfaceDrawContext*,
+                                      const GrClip*,
+                                      const GrStyledShape&,
+                                      const SkMatrix& viewMatrix,
+                                      SkIRect* unclippedDevShapeBounds,
+                                      SkIRect* clippedDevShapeBounds,
+                                      SkIRect* devClipBounds);
+
+private:
+    static void DrawNonAARect(SurfaceDrawContext*,
+                              GrPaint&&,
+                              const GrUserStencilSettings&,
+                              const GrClip*,
+                              const SkMatrix& viewMatrix,
+                              const SkRect& rect,
+                              const SkMatrix& localMatrix);
+    static void DrawAroundInvPath(SurfaceDrawContext*,
+                                  GrPaint&&,
+                                  const GrUserStencilSettings&,
+                                  const GrClip*,
+                                  const SkMatrix& viewMatrix,
+                                  const SkIRect& devClipBounds,
+                                  const SkIRect& devPathBounds);
+
+    // This utility draws a path mask using a provided paint. The rectangle is drawn in device
+    // space. The 'viewMatrix' will be used to ensure the correct local coords are provided to
+    // any fragment processors in the paint.
+    static void DrawToTargetWithShapeMask(GrSurfaceProxyView,
+                                          SurfaceDrawContext*,
+                                          GrPaint&&,
+                                          const GrUserStencilSettings&,
+                                          const GrClip*,
+                                          const SkMatrix& viewMatrix,
+                                          const SkIPoint& textureOriginInDeviceSpace,
+                                          const SkIRect& deviceSpaceRectToDraw);
+
+    StencilSupport onGetStencilSupport(const GrStyledShape&) const override {
+        return GrPathRenderer::kNoSupport_StencilSupport;
+    }
+
+    CanDrawPath onCanDrawPath(const CanDrawPathArgs&) const override;
+
+    bool onDrawPath(const DrawPathArgs&) override;
+
+private:
+    GrProxyProvider* fProxyProvider;
+    bool             fAllowCaching;
+
+    using INHERITED = GrPathRenderer;
+};
+
+} // namespace skgpu::v1
+
+#endif // SoftwarePathRenderer_DEFINED