| Index: gm/convexpolyeffect.cpp
|
| diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
|
| index fb767ddc89f760d4994b6c137d77039fe4045e2e..4071159d48581d836299bf0c9573251f22ab25a0 100644
|
| --- a/gm/convexpolyeffect.cpp
|
| +++ b/gm/convexpolyeffect.cpp
|
| @@ -14,6 +14,7 @@
|
|
|
| #include "GrContext.h"
|
| #include "GrDefaultGeoProcFactory.h"
|
| +#include "GrDrawContext.h"
|
| #include "GrPathUtils.h"
|
| #include "GrTest.h"
|
| #include "SkColorPriv.h"
|
| @@ -32,7 +33,9 @@ class ConvexPolyTestBatch : public GrTestBatch {
|
| public:
|
| DEFINE_BATCH_CLASS_ID
|
| struct Geometry : public GrTestBatch::Geometry {
|
| - SkRect fBounds;
|
| + SkRect fRect;
|
| + SkRect fBounds; // This will be == fRect, except fBounds must be sorted, whereas fRect can
|
| + // be inverted
|
| };
|
|
|
| const char* name() const override { return "ConvexPolyTestBatch"; }
|
| @@ -48,6 +51,7 @@ private:
|
| // Make sure any artifacts around the exterior of path are visible by using overly
|
| // conservative bounding geometry.
|
| fGeometry.fBounds.outset(5.f, 5.f);
|
| + fGeometry.fRect.outset(5.f, 5.f);
|
| }
|
|
|
| Geometry* geoData(int index) override {
|
| @@ -69,7 +73,7 @@ private:
|
| return;
|
| }
|
|
|
| - fGeometry.fBounds.toQuad(verts);
|
| + fGeometry.fRect.toQuad(verts);
|
|
|
| helper.recordDraw(target);
|
| }
|
| @@ -159,6 +163,11 @@ protected:
|
| return;
|
| }
|
|
|
| + SkAutoTUnref<GrDrawContext> drawContext(context->drawContext(rt));
|
| + if (!drawContext) {
|
| + return;
|
| + }
|
| +
|
| Color color(0xff000000);
|
| Coverage coverage(Coverage::kSolid_Type);
|
| LocalCoords localCoords(LocalCoords::kUnused_Type);
|
| @@ -173,12 +182,6 @@ protected:
|
| SkScalar x = 0;
|
|
|
| for (int et = 0; et < kGrProcessorEdgeTypeCnt; ++et) {
|
| - GrTestTarget tt;
|
| - context->getTestTarget(&tt, rt);
|
| - if (nullptr == tt.target()) {
|
| - SkDEBUGFAIL("Couldn't get Gr test target.");
|
| - return;
|
| - }
|
| const SkMatrix m = SkMatrix::MakeTrans(x, y);
|
| SkPath p;
|
| path->transform(m, &p);
|
| @@ -197,11 +200,12 @@ protected:
|
|
|
| ConvexPolyTestBatch::Geometry geometry;
|
| geometry.fColor = color.fColor;
|
| + geometry.fRect = p.getBounds();
|
| geometry.fBounds = p.getBounds();
|
|
|
| SkAutoTUnref<GrDrawBatch> batch(ConvexPolyTestBatch::Create(gp, geometry));
|
|
|
| - tt.target()->drawBatch(pipelineBuilder, batch);
|
| + drawContext->internal_drawBatch(pipelineBuilder, batch);
|
|
|
| x += SkScalarCeilToScalar(path->getBounds().width() + 10.f);
|
| }
|
| @@ -226,12 +230,6 @@ protected:
|
| SkScalar x = 0;
|
|
|
| for (int et = 0; et < kGrProcessorEdgeTypeCnt; ++et) {
|
| - GrTestTarget tt;
|
| - context->getTestTarget(&tt, rt);
|
| - if (nullptr == tt.target()) {
|
| - SkDEBUGFAIL("Couldn't get Gr test target.");
|
| - return;
|
| - }
|
| SkRect rect = *iter.get();
|
| rect.offset(x, y);
|
| GrPrimitiveEdgeType edgeType = (GrPrimitiveEdgeType) et;
|
| @@ -248,11 +246,13 @@ protected:
|
|
|
| ConvexPolyTestBatch::Geometry geometry;
|
| geometry.fColor = color.fColor;
|
| + geometry.fRect = rect;
|
| geometry.fBounds = rect;
|
| + geometry.fBounds.sort();
|
|
|
| SkAutoTUnref<GrDrawBatch> batch(ConvexPolyTestBatch::Create(gp, geometry));
|
|
|
| - tt.target()->drawBatch(pipelineBuilder, batch);
|
| + drawContext->internal_drawBatch(pipelineBuilder, batch);
|
|
|
| x += SkScalarCeilToScalar(rect.width() + 10.f);
|
| }
|
|
|