| Index: src/gpu/GrRectBatch.cpp
|
| diff --git a/src/gpu/GrRectBatch.cpp b/src/gpu/GrRectBatch.cpp
|
| index 100aafc4ca2690343575da4ad93fc92870b5d257..bf085bdfdf394aca677dde81efe7ce1658986787 100644
|
| --- a/src/gpu/GrRectBatch.cpp
|
| +++ b/src/gpu/GrRectBatch.cpp
|
| @@ -25,15 +25,19 @@
|
| The vertex attrib order is always pos, color, [local coords].
|
| */
|
| static const GrGeometryProcessor* create_rect_gp(bool hasExplicitLocalCoords,
|
| - GrColor color,
|
| - const SkMatrix* localMatrix) {
|
| + const SkMatrix* localMatrix,
|
| + bool usesLocalCoords,
|
| + bool coverageIgnored) {
|
| + // TODO remove color when we have ignored color from the XP
|
| uint32_t flags = GrDefaultGeoProcFactory::kPosition_GPType |
|
| GrDefaultGeoProcFactory::kColor_GPType;
|
| flags |= hasExplicitLocalCoords ? GrDefaultGeoProcFactory::kLocalCoord_GPType : 0;
|
| if (localMatrix) {
|
| - return GrDefaultGeoProcFactory::Create(flags, color, SkMatrix::I(), *localMatrix);
|
| + return GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords,
|
| + coverageIgnored, SkMatrix::I(), *localMatrix);
|
| } else {
|
| - return GrDefaultGeoProcFactory::Create(flags, color, SkMatrix::I(), SkMatrix::I());
|
| + return GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords,
|
| + coverageIgnored, SkMatrix::I(), SkMatrix::I());
|
| }
|
| }
|
|
|
| @@ -98,21 +102,12 @@ public:
|
| }
|
|
|
| SkAutoTUnref<const GrGeometryProcessor> gp(create_rect_gp(hasExplicitLocalCoords,
|
| - this->color(),
|
| - &invert));
|
| + &invert,
|
| + this->usesLocalCoords(),
|
| + this->coverageIgnored()));
|
|
|
| batchTarget->initDraw(gp, pipeline);
|
|
|
| - // TODO this is hacky, but the only way we have to initialize the GP is to use the
|
| - // GrPipelineInfo struct so we can generate the correct shader. Once we have GrBatch
|
| - // everywhere we can remove this nastiness
|
| - GrPipelineInfo init;
|
| - init.fColorIgnored = fBatch.fColorIgnored;
|
| - init.fOverrideColor = GrColor_ILLEGAL;
|
| - init.fCoverageIgnored = fBatch.fCoverageIgnored;
|
| - init.fUsesLocalCoords = this->usesLocalCoords();
|
| - gp->initBatchTracker(batchTarget->currentBatchTracker(), init);
|
| -
|
| int instanceCount = fGeoData.count();
|
| size_t vertexStride = gp->getVertexStride();
|
| SkASSERT(hasExplicitLocalCoords ?
|
| @@ -176,6 +171,7 @@ private:
|
| const SkMatrix& localMatrix() const { return fGeoData[0].fLocalMatrix; }
|
| bool hasLocalRect() const { return fGeoData[0].fHasLocalRect; }
|
| bool hasLocalMatrix() const { return fGeoData[0].fHasLocalMatrix; }
|
| + bool coverageIgnored() const { return fBatch.fCoverageIgnored; }
|
|
|
| bool onCombineIfPossible(GrBatch* t) override {
|
| RectBatch* that = t->cast<RectBatch>();
|
|
|