| Index: include/gpu/GrEffect.h
|
| ===================================================================
|
| --- include/gpu/GrEffect.h (revision 8091)
|
| +++ include/gpu/GrEffect.h (working copy)
|
| @@ -14,6 +14,7 @@
|
| #include "GrRefCnt.h"
|
| #include "GrTexture.h"
|
| #include "GrTextureAccess.h"
|
| +#include "GrTypesPriv.h"
|
|
|
| class GrBackendEffectFactory;
|
| class GrContext;
|
| @@ -136,6 +137,14 @@
|
| /** Shortcut for textureAccess(index).texture(); */
|
| GrTexture* texture(int index) const { return this->textureAccess(index).getTexture(); }
|
|
|
| +
|
| + int numVertexAttribs() const { return fVertexAttribTypes.count(); }
|
| +
|
| + GrSLType vertexAttribType(int index) const { return fVertexAttribTypes[index]; }
|
| +
|
| + static const int kMaxVertexAttribs = 2;
|
| +
|
| +
|
| /** Useful for effects that want to insert a texture matrix that is implied by the texture
|
| dimensions */
|
| static inline SkMatrix MakeDivByTextureWHMatrix(const GrTexture* texture) {
|
| @@ -168,12 +177,19 @@
|
|
|
| protected:
|
| /**
|
| - * Subclasses call this from their constructor to register GrTextureAcceses. The effect subclass
|
| - * manages the lifetime of the accesses (this function only stores a pointer). This must only be
|
| - * called from the constructor because GrEffects are supposed to be immutable.
|
| + * Subclasses call this from their constructor to register GrTextureAccesses. The effect
|
| + * subclass manages the lifetime of the accesses (this function only stores a pointer). This
|
| + * must only be called from the constructor because GrEffects are immutable.
|
| */
|
| void addTextureAccess(const GrTextureAccess* textureAccess);
|
|
|
| + /**
|
| + * Subclasses call this from their constructor to register vertex attributes (at most
|
| + * kMaxVertexAttribs). This must only be called from the constructor because GrEffects are
|
| + * immutable.
|
| + */
|
| + void addVertexAttrib(GrSLType type);
|
| +
|
| GrEffect() : fEffectRef(NULL) {};
|
|
|
| /** This should be called by GrEffect subclass factories. See the comment on AutoEffectUnref for
|
| @@ -246,8 +262,9 @@
|
| // from deferred state, to call isEqual on naked GrEffects, and
|
| // to inc/dec deferred ref counts.
|
|
|
| - SkSTArray<4, const GrTextureAccess*, true> fTextureAccesses;
|
| - GrEffectRef* fEffectRef;
|
| + SkSTArray<4, const GrTextureAccess*, true> fTextureAccesses;
|
| + SkSTArray<kMaxVertexAttribs, GrSLType, true> fVertexAttribTypes;
|
| + GrEffectRef* fEffectRef;
|
|
|
| typedef GrRefCnt INHERITED;
|
| };
|
|
|