Index: include/gpu/GrFragmentProcessor.h |
diff --git a/include/gpu/GrFragmentProcessor.h b/include/gpu/GrFragmentProcessor.h |
index 044e807aae985547481920ef76d2018fc406df1e..3f308d7e75048df485d03aac3e9c148db80fd77f 100644 |
--- a/include/gpu/GrFragmentProcessor.h |
+++ b/include/gpu/GrFragmentProcessor.h |
@@ -11,6 +11,9 @@ |
#include "GrProcessor.h" |
class GrCoordTransform; |
+class GrGLCaps; |
+class GrGLFragmentProcessor; |
+class GrProcessorKeyBuilder; |
/** Provides custom fragment shader code. Fragment processors receive an input color (vec4f) and |
produce an output color. They may reference textures and uniforms. They may use |
@@ -24,7 +27,18 @@ public: |
, fWillReadDstColor(false) |
, fWillUseInputColor(true) {} |
- virtual const GrBackendFragmentProcessorFactory& getFactory() const = 0; |
+ /** Implemented using GLFragmentProcessor::GenKey as described in this class's comment. */ |
+ virtual void getGLProcessorKey(const GrGLCaps& caps, |
+ GrProcessorKeyBuilder* b) const = 0; |
+ |
+ /** Returns a new instance of the appropriate *GL* implementation class |
+ for the given GrFragmentProcessor; caller is responsible for deleting |
+ the object. */ |
+ virtual GrGLFragmentProcessor* createGLInstance() const = 0; |
+ |
+ /** Human-meaningful string to identify this GrFragmentProcessor; may be embedded |
+ in generated shader code. */ |
+ virtual const char* name() const = 0; |
int numTransforms() const { return fCoordTransforms.count(); } |
@@ -38,15 +52,14 @@ public: |
/** Will this prceossor read the source color value? */ |
bool willUseInputColor() const { return fWillUseInputColor; } |
- /** Returns true if this and other prceossor conservatively draw identically. It can only return |
- true when the two prceossor are of the same subclass (i.e. they return the same object from |
+ /** Returns true if this and other processor conservatively draw identically. It can only return |
+ true when the two processor are of the same subclass (i.e. they return the same object from |
from getFactory()). |
- A return value of true from isEqual() should not be used to test whether the prceossor would |
- generate the same shader code. To test for identical code generation use the prceossor' keys |
- computed by the GrBackendProcessorFactory. */ |
+ A return value of true from isEqual() should not be used to test whether the processor would |
+ generate the same shader code. To test for identical code generation use getGLProcessorKey*/ |
bool isEqual(const GrFragmentProcessor& that) const { |
- if (&this->getFactory() != &that.getFactory() || |
+ if (this->classID() != that.classID() || |
!this->hasSameTransforms(that) || |
!this->hasSameTextureAccesses(that)) { |
return false; |