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

Unified Diff: src/gpu/GrGeometryProcessor.h

Issue 822423004: Move most of the transform logic into the primitive processors (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: cleanup Created 5 years, 11 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/GrDefaultGeoProcFactory.cpp ('k') | src/gpu/GrGeometryProcessor.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrGeometryProcessor.h
diff --git a/src/gpu/GrGeometryProcessor.h b/src/gpu/GrGeometryProcessor.h
index ad75d2376854387d39e05a96ffc3d67f8cb15e45..074fffcfb08410e64ebe572a6506665ade05d611 100644
--- a/src/gpu/GrGeometryProcessor.h
+++ b/src/gpu/GrGeometryProcessor.h
@@ -66,7 +66,7 @@ private:
};
class GrGLCaps;
-class GrGLGeometryProcessor;
+class GrGLPrimitiveProcessor;
class GrOptDrawState;
struct GrInitInvariantOutput;
@@ -122,6 +122,11 @@ public:
virtual void getInvariantOutputCoverage(GrInitInvariantOutput* out) const = 0;
/**
+ * Gets a transformKey from an array of coord transforms
+ */
+ uint32_t getTransformKey(const SkTArray<const GrCoordTransform*, true>&) const;
+
+ /**
* Sets a unique key on the GrProcessorKeyBuilder that is directly associated with this geometry
* processor's GL backend implementation.
*/
@@ -133,7 +138,8 @@ public:
/** Returns a new instance of the appropriate *GL* implementation class
for the given GrProcessor; caller is responsible for deleting
the object. */
- virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) const = 0;
+ virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt,
+ const GrGLCaps& caps) const = 0;
protected:
GrPrimitiveProcessor(const SkMatrix& viewMatrix, const SkMatrix& localMatrix)
@@ -171,6 +177,8 @@ protected:
}
private:
+ virtual bool hasExplicitLocalCoords() const = 0;
+
SkMatrix fViewMatrix;
SkMatrix fLocalMatrix;
@@ -261,7 +269,6 @@ public:
return this->onCanMakeEqual(mine, other, theirs);
}
-
// TODO we can remove color from the GrGeometryProcessor base class once we have bundles of
// primitive data
@@ -270,9 +277,6 @@ public:
// TODO this is a total hack until the gp can do deferred geometry
bool hasVertexColor() const { return fHasVertexColor; }
- // TODO this is a total hack until gp can setup and manage local coords
- bool hasLocalCoords() const { return fHasLocalCoords; }
-
void getInvariantOutputColor(GrInitInvariantOutput* out) const SK_OVERRIDE;
void getInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE;
@@ -332,9 +336,12 @@ private:
virtual bool onCanMakeEqual(const GrBatchTracker& mine,
const GrGeometryProcessor& that,
const GrBatchTracker& theirs) const = 0;
+
// TODO delete this when we have more advanced equality testing via bundles and the BT
virtual bool onIsEqual(const GrGeometryProcessor&) const = 0;
+ bool hasExplicitLocalCoords() const SK_OVERRIDE { return fHasLocalCoords; }
+
SkSTArray<kMaxVertexAttribs, GrAttribute, true> fAttribs;
size_t fVertexStride;
GrColor fColor;
@@ -375,12 +382,18 @@ public:
const GrGLCaps& caps,
GrProcessorKeyBuilder* b) const SK_OVERRIDE;
- GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) const SK_OVERRIDE;
+ virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt,
+ const GrGLCaps& caps) const SK_OVERRIDE;
-private:
+protected:
GrPathProcessor(GrColor color, const SkMatrix& viewMatrix, const SkMatrix& localMatrix);
+
+private:
+ bool hasExplicitLocalCoords() const SK_OVERRIDE { return false; }
+
GrColor fColor;
typedef GrPrimitiveProcessor INHERITED;
};
+
#endif
« no previous file with comments | « src/gpu/GrDefaultGeoProcFactory.cpp ('k') | src/gpu/GrGeometryProcessor.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698