diff options
author | Brian Salomon <bsalomon@google.com> | 2017-03-06 12:02:34 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-06 18:16:28 +0000 |
commit | 9e50f7b11e9a9d3dc23c924bbb0f0b85c6f1d6cb (patch) | |
tree | 0bf1604c5ee4980a08eb0fd8b2b0b33d1be4814e /gm/beziereffects.cpp | |
parent | 488f0d674811ae038d34ece9d59c2824ebd4df8f (diff) |
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 <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'gm/beziereffects.cpp')
-rw-r--r-- | gm/beziereffects.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
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<GrDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds, + static std::unique_ptr<GrDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& rect, GrColor color, const SkScalar klmEqs[9], SkScalar sign) { return std::unique_ptr<GrDrawOp>( - new BezierCubicOrConicTestOp(gp, bounds, color, klmEqs, sign)); + new BezierCubicOrConicTestOp(gp, rect, color, klmEqs, sign)); } private: - BezierCubicOrConicTestOp(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds, GrColor color, + BezierCubicOrConicTestOp(sk_sp<GrGeometryProcessor> 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<GrGeometryProcessor> 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<GrDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds, + static std::unique_ptr<GrDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& rect, GrColor color, const GrPathUtils::QuadUVMatrix& devToUV) { - return std::unique_ptr<GrDrawOp>(new BezierQuadTestOp(gp, bounds, color, devToUV)); + return std::unique_ptr<GrDrawOp>(new BezierQuadTestOp(gp, rect, color, devToUV)); } private: - BezierQuadTestOp(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds, GrColor color, + BezierQuadTestOp(sk_sp<GrGeometryProcessor> 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<GrGeometryProcessor> fGeometryProcessor; static constexpr int kVertsPerCubic = 4; |