Index: src/gpu/gl/GrGLProgramEffects.h |
diff --git a/src/gpu/gl/GrGLProgramEffects.h b/src/gpu/gl/GrGLProgramEffects.h |
index 5a2fefd7d4d76672eb835f4b344a81654c83a56b..c4d884392a26c23488bd459789eccca1a716f170 100644 |
--- a/src/gpu/gl/GrGLProgramEffects.h |
+++ b/src/gpu/gl/GrGLProgramEffects.h |
@@ -9,9 +9,9 @@ |
#define GrGLProgramEffects_DEFINED |
#include "GrBackendEffectFactory.h" |
+#include "GrGLUniformManager.h" |
#include "GrTexture.h" |
#include "GrTextureAccess.h" |
-#include "GrGLUniformManager.h" |
class GrEffect; |
class GrEffectStage; |
@@ -31,11 +31,14 @@ public: |
typedef GrGLUniformManager::UniformHandle UniformHandle; |
/** |
- * These methods generate different portions of an effect's final key. |
+ * This class emits some of the code inserted into the shaders for an effect. The code it |
+ * creates may be dependent on properties of the effect that the effect itself doesn't use |
+ * in its key (e.g. the pixel format of textures used). So this class inserts a meta-key for |
+ * every effect using this function. It is also responsible for inserting the effect's class ID |
+ * which must be different for every GrEffect subclass. It can fail if an effect uses too many |
+ * textures, attributes, etc for the space allotted in the meta-key. |
*/ |
- static EffectKey GenAttribKey(const GrDrawEffect&); |
- static EffectKey GenTransformKey(const GrDrawEffect&); |
- static EffectKey GenTextureKey(const GrDrawEffect&, const GrGLCaps&); |
+ static bool GenEffectMetaKey(const GrDrawEffect&, const GrGLCaps&, GrEffectKeyBuilder*); |
virtual ~GrGLProgramEffects(); |
@@ -98,6 +101,13 @@ public: |
typedef SkTArray<TextureSampler> TextureSamplerArray; |
protected: |
+ /** |
+ * Helpers for GenEffectMetaKey. |
+ */ |
+ static EffectKey GenAttribKey(const GrDrawEffect&); |
+ static EffectKey GenTransformKey(const GrDrawEffect&); |
+ static EffectKey GenTextureKey(const GrDrawEffect&, const GrGLCaps&); |
+ |
GrGLProgramEffects(int reserveCount) |
: fGLEffects(reserveCount) |
, fSamplers(reserveCount) { |