| Index: src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
|
| diff --git a/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp b/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
|
| index eb6a67dc20c9f32cc73c1c98494854ef6a1b7223..725358ebf161009516051afd22e2d8d09b077956 100644
|
| --- a/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
|
| +++ b/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
|
| @@ -128,17 +128,26 @@ public:
|
| typedef SkTDynamicHash<ShapeData, ShapeData::Key> ShapeCache;
|
| typedef GrAADistanceFieldPathRenderer::ShapeDataList ShapeDataList;
|
|
|
| - struct Geometry {
|
| - GrShape fShape;
|
| - GrColor fColor;
|
| - bool fAntiAlias;
|
| - };
|
| + AADistanceFieldPathBatch(GrColor color,
|
| + const GrShape& shape,
|
| + bool antiAlias,
|
| + const SkMatrix& viewMatrix,
|
| + GrBatchAtlas* atlas,
|
| + ShapeCache* shapeCache, ShapeDataList* shapeList,
|
| + bool gammaCorrect)
|
| + : INHERITED(ClassID()) {
|
| + SkASSERT(shape.hasUnstyledKey());
|
| + fBatch.fViewMatrix = viewMatrix;
|
| + fGeoData.emplace_back(Geometry{color, shape, antiAlias});
|
|
|
| - static GrDrawBatch* Create(const Geometry& geometry, const SkMatrix& viewMatrix,
|
| - GrBatchAtlas* atlas, ShapeCache* shapeCache,
|
| - ShapeDataList* shapeList, bool gammaCorrect) {
|
| - return new AADistanceFieldPathBatch(geometry, viewMatrix, atlas, shapeCache, shapeList,
|
| - gammaCorrect);
|
| + fAtlas = atlas;
|
| + fShapeCache = shapeCache;
|
| + fShapeList = shapeList;
|
| + fGammaCorrect = gammaCorrect;
|
| +
|
| + // Compute bounds
|
| + fBounds = shape.bounds();
|
| + viewMatrix.mapRect(&fBounds);
|
| }
|
|
|
| const char* name() const override { return "AADistanceFieldPathBatch"; }
|
| @@ -278,27 +287,6 @@ private:
|
| this->flush(target, &flushInfo);
|
| }
|
|
|
| - AADistanceFieldPathBatch(const Geometry& geometry,
|
| - const SkMatrix& viewMatrix,
|
| - GrBatchAtlas* atlas,
|
| - ShapeCache* shapeCache, ShapeDataList* shapeList,
|
| - bool gammaCorrect)
|
| - : INHERITED(ClassID()) {
|
| - SkASSERT(geometry.fShape.hasUnstyledKey());
|
| - fBatch.fViewMatrix = viewMatrix;
|
| - fGeoData.push_back(geometry);
|
| - SkASSERT(fGeoData[0].fShape.hasUnstyledKey());
|
| -
|
| - fAtlas = atlas;
|
| - fShapeCache = shapeCache;
|
| - fShapeList = shapeList;
|
| - fGammaCorrect = gammaCorrect;
|
| -
|
| - // Compute bounds
|
| - fBounds = geometry.fShape.bounds();
|
| - viewMatrix.mapRect(&fBounds);
|
| - }
|
| -
|
| bool addPathToAtlas(GrVertexBatch::Target* target,
|
| FlushInfo* flushInfo,
|
| GrBatchAtlas* atlas,
|
| @@ -507,6 +495,12 @@ private:
|
| bool fCoverageIgnored;
|
| };
|
|
|
| + struct Geometry {
|
| + GrColor fColor;
|
| + GrShape fShape;
|
| + bool fAntiAlias;
|
| + };
|
| +
|
| BatchTracker fBatch;
|
| SkSTArray<1, Geometry> fGeoData;
|
| GrBatchAtlas* fAtlas;
|
| @@ -537,15 +531,10 @@ bool GrAADistanceFieldPathRenderer::onDrawPath(const DrawPathArgs& args) {
|
| }
|
| }
|
|
|
| - AADistanceFieldPathBatch::Geometry geometry;
|
| - geometry.fShape = *args.fShape;
|
| - geometry.fColor = args.fColor;
|
| - geometry.fAntiAlias = args.fAntiAlias;
|
| -
|
| - SkAutoTUnref<GrDrawBatch> batch(AADistanceFieldPathBatch::Create(geometry,
|
| - *args.fViewMatrix, fAtlas,
|
| - &fShapeCache, &fShapeList,
|
| - args.fGammaCorrect));
|
| + SkAutoTUnref<GrDrawBatch> batch(new AADistanceFieldPathBatch(args.fColor, *args.fShape,
|
| + args.fAntiAlias, *args.fViewMatrix,
|
| + fAtlas, &fShapeCache, &fShapeList,
|
| + args.fGammaCorrect));
|
|
|
| GrPipelineBuilder pipelineBuilder(*args.fPaint);
|
| pipelineBuilder.setUserStencil(args.fUserStencilSettings);
|
| @@ -619,18 +608,18 @@ DRAW_BATCH_TEST_DEFINE(AADistanceFieldPathBatch) {
|
| GrColor color = GrRandomColor(random);
|
| bool gammaCorrect = random->nextBool();
|
|
|
| - AADistanceFieldPathBatch::Geometry geometry;
|
| // This path renderer only allows fill styles.
|
| GrShape shape(GrTest::TestPath(random), GrStyle::SimpleFill());
|
| - geometry.fShape = shape;
|
| - geometry.fColor = color;
|
| - geometry.fAntiAlias = random->nextBool();
|
| -
|
| - return AADistanceFieldPathBatch::Create(geometry, viewMatrix,
|
| - gTestStruct.fAtlas,
|
| - &gTestStruct.fShapeCache,
|
| - &gTestStruct.fShapeList,
|
| - gammaCorrect);
|
| + bool antiAlias = random->nextBool();
|
| +
|
| + return new AADistanceFieldPathBatch(color,
|
| + shape,
|
| + antiAlias,
|
| + viewMatrix,
|
| + gTestStruct.fAtlas,
|
| + &gTestStruct.fShapeCache,
|
| + &gTestStruct.fShapeList,
|
| + gammaCorrect);
|
| }
|
|
|
| #endif
|
|
|