Index: src/gpu/batches/GrTInstanceBatch.h |
diff --git a/src/gpu/batches/GrTInstanceBatch.h b/src/gpu/batches/GrTInstanceBatch.h |
index 5dc5988e58a6d0d930fa6cf287bb3daa81802b4c..d2d4d6c0a1bf335b76aaad4ad86699e58b27f899 100644 |
--- a/src/gpu/batches/GrTInstanceBatch.h |
+++ b/src/gpu/batches/GrTInstanceBatch.h |
@@ -29,15 +29,15 @@ |
* void UpdateBoundsAfterAppend(const Geometry& lastGeometry, SkRect* currentBounds) |
* |
* bool CanCombine(const Geometry& mine, const Geometry& theirs, |
- * const GrPipelineOptimizations&) |
+ * const GrXPOverridesForBatch&) |
* |
* const GrGeometryProcessor* CreateGP(const Geometry& seedGeometry, |
- * const GrPipelineOptimizations& opts) |
+ * const GrXPOverridesForBatch& overrides) |
* |
* const GrIndexBuffer* GetIndexBuffer(GrResourceProvider*) |
* |
* Tesselate(intptr_t vertices, size_t vertexStride, const Geometry& geo, |
- * const GrPipelineOptimizations& opts) |
+ * const GrXPOverridesForBatch& overrides) |
*/ |
template <typename Impl> |
class GrTInstanceBatch : public GrVertexBatch { |
@@ -59,18 +59,18 @@ public: |
return str; |
} |
- void getInvariantOutputColor(GrInitInvariantOutput* out) const override { |
+ void computePipelineOptimizations(GrInitInvariantOutput* color, |
+ GrInitInvariantOutput* coverage, |
+ GrBatchToXPOverrides* overrides) const override { |
// When this is called on a batch, there is only one geometry bundle |
- out->setKnownFourComponents(fGeoData[0].fColor); |
+ color->setKnownFourComponents(fGeoData[0].fColor); |
+ Impl::InitInvariantOutputCoverage(coverage); |
+ overrides->fUsePLSDstRead = false; |
} |
- void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { |
- Impl::InitInvariantOutputCoverage(out); |
- } |
- |
- void initBatchTracker(const GrPipelineOptimizations& opt) override { |
- opt.getOverrideColorIfSet(&fGeoData[0].fColor); |
- fOpts = opt; |
+ void initBatchTracker(const GrXPOverridesForBatch& overrides) override { |
+ overrides.getOverrideColorIfSet(&fGeoData[0].fColor); |
+ fOverrides = overrides; |
} |
SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } |
@@ -90,7 +90,8 @@ private: |
GrTInstanceBatch() : INHERITED(ClassID()) {} |
void onPrepareDraws(Target* target) override { |
- SkAutoTUnref<const GrGeometryProcessor> gp(Impl::CreateGP(this->seedGeometry(), fOpts)); |
+ SkAutoTUnref<const GrGeometryProcessor> gp(Impl::CreateGP(this->seedGeometry(), |
+ fOverrides)); |
if (!gp) { |
SkDebugf("Couldn't create GrGeometryProcessor\n"); |
return; |
@@ -115,7 +116,7 @@ private: |
for (int i = 0; i < instanceCount; i++) { |
intptr_t verts = reinterpret_cast<intptr_t>(vertices) + |
i * Impl::kVertsPerInstance * vertexStride; |
- Impl::Tesselate(verts, vertexStride, fGeoData[i], fOpts); |
+ Impl::Tesselate(verts, vertexStride, fGeoData[i], fOverrides); |
} |
helper.recordDraw(target); |
} |
@@ -129,14 +130,14 @@ private: |
return false; |
} |
- if (!Impl::CanCombine(this->seedGeometry(), that->seedGeometry(), fOpts)) { |
+ if (!Impl::CanCombine(this->seedGeometry(), that->seedGeometry(), fOverrides)) { |
return false; |
} |
// In the event of two batches, one who can tweak, one who cannot, we just fall back to |
// not tweaking |
- if (fOpts.canTweakAlphaForCoverage() && !that->fOpts.canTweakAlphaForCoverage()) { |
- fOpts = that->fOpts; |
+ if (fOverrides.canTweakAlphaForCoverage() && !that->fOverrides.canTweakAlphaForCoverage()) { |
+ fOverrides = that->fOverrides; |
} |
fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); |
@@ -144,7 +145,7 @@ private: |
return true; |
} |
- GrPipelineOptimizations fOpts; |
+ GrXPOverridesForBatch fOverrides; |
SkSTArray<1, Geometry, true> fGeoData; |
typedef GrVertexBatch INHERITED; |