Index: src/gpu/GrGeometryProcessor.h |
diff --git a/src/gpu/GrGeometryProcessor.h b/src/gpu/GrGeometryProcessor.h |
index 27383a4df49df6dd3e618f24f72fed5a5e745a1d..9e621d82a04a66e603976c7305745bd2da34c742 100644 |
--- a/src/gpu/GrGeometryProcessor.h |
+++ b/src/gpu/GrGeometryProcessor.h |
@@ -34,6 +34,8 @@ private: |
uint8_t fData[kMaxSize]; |
}; |
+class GrGLCaps; |
+class GrGLGeometryProcessor; |
class GrOptDrawState; |
/** |
@@ -55,7 +57,18 @@ public: |
, fHasVertexCoverage(false) |
, fHasLocalCoords(false) {} |
- virtual const GrBackendGeometryProcessorFactory& getFactory() const = 0; |
+ virtual const char* name() const = 0; |
+ |
+ /** Implemented using GLProcessor::GenKey as described in this class's comment. */ |
+ virtual void getGLProcessorKey(const GrBatchTracker& bt, |
+ const GrGLCaps& caps, |
+ GrProcessorKeyBuilder* b) const = 0; |
+ |
+ |
+ /** 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; |
/* |
* This is a safeguard to prevent GPs from going beyond platform specific attribute limits. |
@@ -91,7 +104,7 @@ public: |
would generate the same shader code. To test for identical code generation use the |
processors' keys computed by the GrBackendEffectFactory. */ |
bool isEqual(const GrGeometryProcessor& that) const { |
- if (&this->getFactory() != &that.getFactory() || !this->hasSameTextureAccesses(that)) { |
+ if (this->classID() != that.classID() || !this->hasSameTextureAccesses(that)) { |
return false; |
} |
return this->onIsEqual(that); |
@@ -143,5 +156,4 @@ private: |
typedef GrProcessor INHERITED; |
}; |
- |
#endif |