From 9e50f7b11e9a9d3dc23c924bbb0f0b85c6f1d6cb Mon Sep 17 00:00:00 2001 From: Brian Salomon Date: Mon, 6 Mar 2017 12:02:34 -0500 Subject: Store clipped bounds on GrOp rather than in parallel in GrRenderTargetOpList. When the op is recorded we update its bounds to incorporate both clipping and aa bloat. Change-Id: Ia205e058ebeda5fcdb2cd5e9b8a30a4972672b14 Reviewed-on: https://skia-review.googlesource.com/9233 Reviewed-by: Greg Daniel Commit-Queue: Brian Salomon --- gm/beziereffects.cpp | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) (limited to 'gm/beziereffects.cpp') diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp index 661e7709d3..d2d4aa9dff 100644 --- a/gm/beziereffects.cpp +++ b/gm/beziereffects.cpp @@ -34,16 +34,16 @@ public: const char* name() const override { return "BezierCubicOrConicTestOp"; } - static std::unique_ptr Make(sk_sp gp, const SkRect& bounds, + static std::unique_ptr Make(sk_sp gp, const SkRect& rect, GrColor color, const SkScalar klmEqs[9], SkScalar sign) { return std::unique_ptr( - new BezierCubicOrConicTestOp(gp, bounds, color, klmEqs, sign)); + new BezierCubicOrConicTestOp(gp, rect, color, klmEqs, sign)); } private: - BezierCubicOrConicTestOp(sk_sp gp, const SkRect& bounds, GrColor color, + BezierCubicOrConicTestOp(sk_sp gp, const SkRect& rect, GrColor color, const SkScalar klmEqs[9], SkScalar sign) - : INHERITED(ClassID(), bounds, color), fGeometryProcessor(std::move(gp)) { + : INHERITED(ClassID(), rect, color), fRect(rect), fGeometryProcessor(std::move(gp)) { for (int i = 0; i < 9; i++) { fKlmEqs[i] = klmEqs[i]; } @@ -62,8 +62,7 @@ private: if (!verts) { return; } - const SkRect& bounds = this->bounds(); - verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom, + verts[0].fPosition.setRectFan(fRect.fLeft, fRect.fTop, fRect.fRight, fRect.fBottom, sizeof(Vertex)); for (int v = 0; v < 4; ++v) { verts[v].fKLM[0] = eval_line(verts[v].fPosition, fKlmEqs + 0, fSign); @@ -73,8 +72,9 @@ private: helper.recordDraw(target, fGeometryProcessor.get()); } - SkScalar fKlmEqs[9]; - SkScalar fSign; + SkScalar fKlmEqs[9]; + SkScalar fSign; + SkRect fRect; sk_sp fGeometryProcessor; static constexpr int kVertsPerCubic = 4; @@ -394,16 +394,17 @@ public: DEFINE_OP_CLASS_ID const char* name() const override { return "BezierQuadTestOp"; } - static std::unique_ptr Make(sk_sp gp, const SkRect& bounds, + static std::unique_ptr Make(sk_sp gp, const SkRect& rect, GrColor color, const GrPathUtils::QuadUVMatrix& devToUV) { - return std::unique_ptr(new BezierQuadTestOp(gp, bounds, color, devToUV)); + return std::unique_ptr(new BezierQuadTestOp(gp, rect, color, devToUV)); } private: - BezierQuadTestOp(sk_sp gp, const SkRect& bounds, GrColor color, + BezierQuadTestOp(sk_sp gp, const SkRect& rect, GrColor color, const GrPathUtils::QuadUVMatrix& devToUV) - : INHERITED(ClassID(), bounds, color) + : INHERITED(ClassID(), rect, color) , fDevToUV(devToUV) + , fRect(rect) , fGeometryProcessor(std::move(gp)) {} struct Vertex { @@ -419,14 +420,14 @@ private: if (!verts) { return; } - const SkRect& bounds = this->bounds(); - verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom, + 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()); } - GrPathUtils::QuadUVMatrix fDevToUV; + GrPathUtils::QuadUVMatrix fDevToUV; + SkRect fRect; sk_sp fGeometryProcessor; static constexpr int kVertsPerCubic = 4; -- cgit v1.2.3