aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-03-06 12:02:34 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-06 18:16:28 +0000
commit9e50f7b11e9a9d3dc23c924bbb0f0b85c6f1d6cb (patch)
tree0bf1604c5ee4980a08eb0fd8b2b0b33d1be4814e /gm
parent488f0d674811ae038d34ece9d59c2824ebd4df8f (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')
-rw-r--r--gm/beziereffects.cpp31
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;