| Index: src/gpu/batches/GrAAFillRectBatch.cpp
|
| diff --git a/src/gpu/batches/GrAAFillRectBatch.cpp b/src/gpu/batches/GrAAFillRectBatch.cpp
|
| index 5b22422e1098b6ff2ebb31c8780c93f4d3f9822d..2c754beedcf3e6537451ed9a6c5762fc1ceaf07d 100644
|
| --- a/src/gpu/batches/GrAAFillRectBatch.cpp
|
| +++ b/src/gpu/batches/GrAAFillRectBatch.cpp
|
| @@ -288,25 +288,23 @@ public:
|
| typedef GrTInstanceBatch<AAFillRectBatchNoLocalMatrixImp> AAFillRectBatchNoLocalMatrix;
|
| typedef GrTInstanceBatch<AAFillRectBatchLocalMatrixImp> AAFillRectBatchLocalMatrix;
|
|
|
| -inline static void append_to_batch(AAFillRectBatchNoLocalMatrix* batch, GrColor color,
|
| - const SkMatrix& viewMatrix, const SkRect& rect,
|
| - const SkRect& devRect) {
|
| - AAFillRectBatchNoLocalMatrix::Geometry& geo = batch->geoData()->push_back();
|
| - geo.fColor = color;
|
| - geo.fViewMatrix = viewMatrix;
|
| - geo.fRect = rect;
|
| - geo.fDevRect = devRect;
|
| +inline static void setup_geo(AAFillRectBatchNoLocalMatrix::Geometry* geo, GrColor color,
|
| + const SkMatrix& viewMatrix, const SkRect& rect,
|
| + const SkRect& devRect) {
|
| + geo->fColor = color;
|
| + geo->fViewMatrix = viewMatrix;
|
| + geo->fRect = rect;
|
| + geo->fDevRect = devRect;
|
| }
|
|
|
| -inline static void append_to_batch(AAFillRectBatchLocalMatrix* batch, GrColor color,
|
| - const SkMatrix& viewMatrix, const SkMatrix& localMatrix,
|
| - const SkRect& rect, const SkRect& devRect) {
|
| - AAFillRectBatchLocalMatrix::Geometry& geo = batch->geoData()->push_back();
|
| - geo.fColor = color;
|
| - geo.fViewMatrix = viewMatrix;
|
| - geo.fLocalMatrix = localMatrix;
|
| - geo.fRect = rect;
|
| - geo.fDevRect = devRect;
|
| +inline static void setup_geo(AAFillRectBatchLocalMatrix::Geometry* geo, GrColor color,
|
| + const SkMatrix& viewMatrix, const SkMatrix& localMatrix,
|
| + const SkRect& rect, const SkRect& devRect) {
|
| + geo->fColor = color;
|
| + geo->fViewMatrix = viewMatrix;
|
| + geo->fLocalMatrix = localMatrix;
|
| + geo->fRect = rect;
|
| + geo->fDevRect = devRect;
|
| }
|
|
|
| namespace GrAAFillRectBatch {
|
| @@ -316,7 +314,7 @@ GrDrawBatch* Create(GrColor color,
|
| const SkRect& rect,
|
| const SkRect& devRect) {
|
| AAFillRectBatchNoLocalMatrix* batch = AAFillRectBatchNoLocalMatrix::Create();
|
| - append_to_batch(batch, color, viewMatrix, rect, devRect);
|
| + setup_geo(&batch->geoData()->push_back(), color, viewMatrix, rect, devRect);
|
| batch->init();
|
| return batch;
|
| }
|
| @@ -324,33 +322,41 @@ GrDrawBatch* Create(GrColor color,
|
| GrDrawBatch* Create(GrColor color,
|
| const SkMatrix& viewMatrix,
|
| const SkMatrix& localMatrix,
|
| - const SkRect& rect,
|
| - const SkRect& devRect) {
|
| + const SkRect& rect) {
|
| + //map rect
|
| + SkRect devRect;
|
| + viewMatrix.mapRect(&devRect, rect);
|
| +
|
| AAFillRectBatchLocalMatrix* batch = AAFillRectBatchLocalMatrix::Create();
|
| - append_to_batch(batch, color, viewMatrix, localMatrix, rect, devRect);
|
| + setup_geo(&batch->geoData()->push_back(), color, viewMatrix, localMatrix, rect, devRect);
|
| batch->init();
|
| return batch;
|
| }
|
|
|
| -void Append(GrBatch* origBatch,
|
| +bool Append(GrBatch* origBatch,
|
| GrColor color,
|
| const SkMatrix& viewMatrix,
|
| - const SkRect& rect,
|
| - const SkRect& devRect) {
|
| + const SkRect& rect) {
|
| + // map rect
|
| + SkRect devRect;
|
| + viewMatrix.mapRect(&devRect, rect);
|
| +
|
| AAFillRectBatchNoLocalMatrix* batch = origBatch->cast<AAFillRectBatchNoLocalMatrix>();
|
| - append_to_batch(batch, color, viewMatrix, rect, devRect);
|
| - batch->updateBoundsAfterAppend();
|
| + AAFillRectBatchNoLocalMatrix::Geometry geo;
|
| + setup_geo(&geo, color, viewMatrix, rect, devRect);
|
| + return batch->appendIfPossible(geo);
|
| }
|
|
|
| -void Append(GrBatch* origBatch,
|
| +bool Append(GrBatch* origBatch,
|
| GrColor color,
|
| const SkMatrix& viewMatrix,
|
| const SkMatrix& localMatrix,
|
| const SkRect& rect,
|
| const SkRect& devRect) {
|
| AAFillRectBatchLocalMatrix* batch = origBatch->cast<AAFillRectBatchLocalMatrix>();
|
| - append_to_batch(batch, color, viewMatrix, localMatrix, rect, devRect);
|
| - batch->updateBoundsAfterAppend();
|
| + AAFillRectBatchLocalMatrix::Geometry geo;
|
| + setup_geo(&geo, color, viewMatrix, localMatrix, rect, devRect);
|
| + return batch->appendIfPossible(geo);
|
| }
|
|
|
| };
|
| @@ -374,8 +380,7 @@ DRAW_BATCH_TEST_DEFINE(AAFillRectBatchLocalMatrix) {
|
| SkMatrix viewMatrix = GrTest::TestMatrixInvertible(random);
|
| SkMatrix localMatrix = GrTest::TestMatrix(random);
|
| SkRect rect = GrTest::TestRect(random);
|
| - SkRect devRect = GrTest::TestRect(random);
|
| - return GrAAFillRectBatch::Create(color, viewMatrix, localMatrix, rect, devRect);
|
| + return GrAAFillRectBatch::Create(color, viewMatrix, localMatrix, rect);
|
| }
|
|
|
| #endif
|
|
|