Move pipeline handling out of GrMeshDrawOp.

The monolithic GrPipeline is moved to a subclass GrLegacyDrawMeshOp.

The pipeline used to record a GrMesh draw in a GrMeshDrawOp must now be passed rather than implicitly using the op's pipeline.

Change-Id: I50d77e4dcc8d91a523fa7566ce43a9a291174706
Reviewed-on: https://skia-review.googlesource.com/11002
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp
index 523ccd3..c67018d 100644
--- a/gm/beziereffects.cpp
+++ b/gm/beziereffects.cpp
@@ -30,9 +30,10 @@
 
     const char* name() const override { return "BezierCubicOrConicTestOp"; }
 
-    static std::unique_ptr<GrMeshDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& rect,
-                                              GrColor color, const SkMatrix& klm, SkScalar sign) {
-        return std::unique_ptr<GrMeshDrawOp>(
+    static std::unique_ptr<GrLegacyMeshDrawOp> Make(sk_sp<GrGeometryProcessor> gp,
+                                                    const SkRect& rect, GrColor color,
+                                                    const SkMatrix& klm, SkScalar sign) {
+        return std::unique_ptr<GrLegacyMeshDrawOp>(
                 new BezierCubicOrConicTestOp(gp, rect, color, klm, sign));
     }
 
@@ -66,7 +67,7 @@
             SkScalar pt3[3] = {verts[v].fPosition.x(), verts[v].fPosition.y(), 1.f};
             fKLM.mapHomogeneousPoints(verts[v].fKLM, pt3, 1);
         }
-        helper.recordDraw(target, fGeometryProcessor.get());
+        helper.recordDraw(target, fGeometryProcessor.get(), this->pipeline());
     }
 
     SkMatrix fKLM;
@@ -197,10 +198,10 @@
                         sign = -1.0f;
                     }
 
-                    std::unique_ptr<GrMeshDrawOp> op =
+                    std::unique_ptr<GrLegacyMeshDrawOp> op =
                             BezierCubicOrConicTestOp::Make(gp, bounds, color, klm, sign);
 
-                    renderTargetContext->priv().testingOnly_addMeshDrawOp(
+                    renderTargetContext->priv().testingOnly_addLegacyMeshDrawOp(
                             std::move(grPaint), GrAAType::kNone, std::move(op));
                 }
                 ++col;
@@ -330,10 +331,10 @@
                     GrPaint grPaint;
                     grPaint.setXPFactory(GrPorterDuffXPFactory::Get(SkBlendMode::kSrc));
 
-                    std::unique_ptr<GrMeshDrawOp> op =
+                    std::unique_ptr<GrLegacyMeshDrawOp> op =
                             BezierCubicOrConicTestOp::Make(gp, bounds, color, klm, 1.f);
 
-                    renderTargetContext->priv().testingOnly_addMeshDrawOp(
+                    renderTargetContext->priv().testingOnly_addLegacyMeshDrawOp(
                             std::move(grPaint), GrAAType::kNone, std::move(op));
                 }
                 ++col;
@@ -396,10 +397,10 @@
     DEFINE_OP_CLASS_ID
     const char* name() const override { return "BezierQuadTestOp"; }
 
-    static std::unique_ptr<GrMeshDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& rect,
-                                              GrColor color,
-                                              const GrPathUtils::QuadUVMatrix& devToUV) {
-        return std::unique_ptr<GrMeshDrawOp>(new BezierQuadTestOp(gp, rect, color, devToUV));
+    static std::unique_ptr<GrLegacyMeshDrawOp> Make(sk_sp<GrGeometryProcessor> gp,
+                                                    const SkRect& rect, GrColor color,
+                                                    const GrPathUtils::QuadUVMatrix& devToUV) {
+        return std::unique_ptr<GrLegacyMeshDrawOp>(new BezierQuadTestOp(gp, rect, color, devToUV));
     }
 
 private:
@@ -426,7 +427,7 @@
         verts[0].fPosition.setRectFan(fRect.fLeft, fRect.fTop, fRect.fRight, fRect.fBottom,
                                       sizeof(Vertex));
         fDevToUV.apply<4, sizeof(Vertex), sizeof(SkPoint)>(verts);
-        helper.recordDraw(target, fGeometryProcessor.get());
+        helper.recordDraw(target, fGeometryProcessor.get(), this->pipeline());
     }
 
     GrPathUtils::QuadUVMatrix fDevToUV;
@@ -548,10 +549,10 @@
 
                     GrPathUtils::QuadUVMatrix DevToUV(pts);
 
-                    std::unique_ptr<GrMeshDrawOp> op =
+                    std::unique_ptr<GrLegacyMeshDrawOp> op =
                             BezierQuadTestOp::Make(gp, bounds, color, DevToUV);
 
-                    renderTargetContext->priv().testingOnly_addMeshDrawOp(
+                    renderTargetContext->priv().testingOnly_addLegacyMeshDrawOp(
                             std::move(grPaint), GrAAType::kNone, std::move(op));
                 }
                 ++col;