Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(852)

Unified Diff: src/gpu/batches/GrDrawPathBatch.h

Issue 1337513002: Late creation of GrPathProcessor (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: tweaks Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrStencilAndCoverTextContext.cpp ('k') | src/gpu/batches/GrDrawPathBatch.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/batches/GrDrawPathBatch.h
diff --git a/src/gpu/batches/GrDrawPathBatch.h b/src/gpu/batches/GrDrawPathBatch.h
index e605b3e2924bd69201c16755c4d7ad8ab02742f5..9d0da686e3304ea578c05097ecc050def27ccf13 100644
--- a/src/gpu/batches/GrDrawPathBatch.h
+++ b/src/gpu/batches/GrDrawPathBatch.h
@@ -20,42 +20,51 @@
class GrDrawPathBatchBase : public GrDrawBatch {
public:
void getInvariantOutputColor(GrInitInvariantOutput* out) const override {
- this->pathProcessor()->getInvariantOutputColor(out);
+ out->setKnownFourComponents(fColor);
}
void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override {
- this->pathProcessor()->getInvariantOutputCoverage(out);
+ out->setKnownSingleComponent(0xff);
}
void setStencilSettings(const GrStencilSettings& stencil) { fStencilSettings = stencil; }
protected:
- GrDrawPathBatchBase(const GrPathProcessor* pathProc) : fPrimitiveProcessor(pathProc) {}
+ GrDrawPathBatchBase(const SkMatrix& viewMatrix, GrColor initialColor)
+ : fViewMatrix(viewMatrix)
+ , fColor(initialColor) {}
- GrBatchTracker* tracker() { return reinterpret_cast<GrBatchTracker*>(&fWhatchamacallit); }
- const GrPathProcessor* pathProcessor() const { return fPrimitiveProcessor.get(); }
const GrStencilSettings& stencilSettings() const { return fStencilSettings; }
const GrPipelineOptimizations& opts() const { return fOpts; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
+ GrColor color() const { return fColor; }
+
+ // TODO delete
+ const GrBatchTracker* tracker() const { return &fBatchTracker; }
private:
void initBatchTracker(const GrPipelineOptimizations& opts) override {
- this->pathProcessor()->initBatchTracker(this->tracker(), opts);
+ opts.getOverrideColorIfSet(&fColor);
fOpts = opts;
}
- GrPendingProgramElement<const GrPathProcessor> fPrimitiveProcessor;
- PathBatchTracker fWhatchamacallit; // TODO: delete this
+ SkMatrix fViewMatrix;
+ GrColor fColor;
GrStencilSettings fStencilSettings;
GrPipelineOptimizations fOpts;
+ // TODO delete
+ GrBatchTracker fBatchTracker;
+
typedef GrDrawBatch INHERITED;
};
class GrDrawPathBatch final : public GrDrawPathBatchBase {
public:
// This can't return a more abstract type because we install the stencil settings late :(
- static GrDrawPathBatchBase* Create(const GrPathProcessor* primProc, const GrPath* path) {
- return new GrDrawPathBatch(primProc, path);
+ static GrDrawPathBatchBase* Create(const SkMatrix& viewMatrix, GrColor color,
+ const GrPath* path) {
+ return new GrDrawPathBatch(viewMatrix, color, path);
}
const char* name() const override { return "DrawPath"; }
@@ -63,11 +72,11 @@ public:
SkString dumpInfo() const override;
private:
- GrDrawPathBatch(const GrPathProcessor* pathProc, const GrPath* path)
- : INHERITED(pathProc)
+ GrDrawPathBatch(const SkMatrix& viewMatrix, GrColor color, const GrPath* path)
+ : INHERITED(viewMatrix, color)
, fPath(path) {
fBounds = path->getBounds();
- this->pathProcessor()->viewMatrix().mapRect(&fBounds);
+ viewMatrix.mapRect(&fBounds);
this->initClassID<GrDrawPathBatch>();
}
@@ -145,9 +154,9 @@ private:
class GrDrawPathRangeBatch final : public GrDrawPathBatchBase {
public:
// This can't return a more abstracet type because we install the stencil settings late :(
- static GrDrawPathBatchBase* Create(const GrPathProcessor* pathProc,
- GrPathRangeDraw* pathRangeDraw) {
- return SkNEW_ARGS(GrDrawPathRangeBatch, (pathProc, pathRangeDraw));
+ static GrDrawPathBatchBase* Create(const SkMatrix& viewMatrix, const SkMatrix& localMatrix,
+ GrColor color, GrPathRangeDraw* pathRangeDraw) {
+ return SkNEW_ARGS(GrDrawPathRangeBatch, (viewMatrix, localMatrix, color, pathRangeDraw));
}
~GrDrawPathRangeBatch() override;
@@ -159,7 +168,8 @@ public:
private:
inline bool isWinding() const;
- GrDrawPathRangeBatch(const GrPathProcessor* pathProc, GrPathRangeDraw* pathRangeDraw);
+ GrDrawPathRangeBatch(const SkMatrix& viewMatrix, const SkMatrix& localMatrix, GrColor color,
+ GrPathRangeDraw* pathRangeDraw);
bool onCombineIfPossible(GrBatch* t, const GrCaps& caps) override;
@@ -170,6 +180,7 @@ private:
typedef SkTLList<GrPathRangeDraw*> DrawList;
DrawList fDraws;
int fTotalPathCount;
+ SkMatrix fLocalMatrix;
typedef GrDrawPathBatchBase INHERITED;
};
« no previous file with comments | « src/gpu/GrStencilAndCoverTextContext.cpp ('k') | src/gpu/batches/GrDrawPathBatch.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698