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;