bool onCombineIfPossible(GrBatch* t, const GrCaps& caps) override { AAConvexPathBatch* that = t->cast<AAConvexPathBatch>(); if (!GrPipeline::CanCombine(*this->pipeline(), this->bounds(), *that->pipeline(), that->bounds(), caps)) { return false; } if (this->color() != that->color()) { return false; } SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->viewMatrix())) { return false; } if (this->linesOnly() != that->linesOnly()) { return false; } // In the event of two batches, one who can tweak, one who cannot, we just fall back to // not tweaking if (this->canTweakAlphaForCoverage() != that->canTweakAlphaForCoverage()) { fBatch.fCanTweakAlphaForCoverage = false; } fGeoData.push_back_n(that->fGeoData.count(), that->fGeoData.begin()); this->joinBounds(*that); return true; }
bool onCombineIfPossible(GrBatch* t) override { AAConvexPathBatch* that = t->cast<AAConvexPathBatch>(); if (this->color() != that->color()) { return false; } SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->viewMatrix())) { return false; } fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); return true; }