| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef GrTBackendEffectFactory_DEFINED | 8 #ifndef GrTBackendEffectFactory_DEFINED |
| 9 #define GrTBackendEffectFactory_DEFINED | 9 #define GrTBackendEffectFactory_DEFINED |
| 10 | 10 |
| 11 #include "GrBackendEffectFactory.h" | 11 #include "GrBackendEffectFactory.h" |
| 12 #include "GrDrawEffect.h" | 12 #include "GrDrawEffect.h" |
| 13 #include "gl/GrGLProgramEffects.h" |
| 13 | 14 |
| 14 /** | 15 /** |
| 15 * Implements GrBackendEffectFactory for a GrEffect subclass as a singleton. | 16 * Implements GrBackendEffectFactory for a GrEffect subclass as a singleton. |
| 16 */ | 17 */ |
| 17 template <typename EffectClass> | 18 template <typename EffectClass> |
| 18 class GrTBackendEffectFactory : public GrBackendEffectFactory { | 19 class GrTBackendEffectFactory : public GrBackendEffectFactory { |
| 19 | 20 |
| 20 public: | 21 public: |
| 21 typedef typename EffectClass::GLEffect GLEffect; | 22 typedef typename EffectClass::GLEffect GLEffect; |
| 22 | 23 |
| 23 /** Returns a human-readable name that is accessible via GrEffect or | 24 /** Returns a human-readable name that is accessible via GrEffect or |
| 24 GrGLEffect and is consistent between the two of them. | 25 GrGLEffect and is consistent between the two of them. |
| 25 */ | 26 */ |
| 26 virtual const char* name() const SK_OVERRIDE { return EffectClass::Name(); } | 27 virtual const char* name() const SK_OVERRIDE { return EffectClass::Name(); } |
| 27 | 28 |
| 28 /** Returns a value that identifies the GLSL shader code generated by | 29 /** Returns a value that identifies the GLSL shader code generated by |
| 29 a GrEffect. This enables caching of generated shaders. Part of the | 30 a GrEffect. This enables caching of generated shaders. Part of the |
| 30 id identifies the GrEffect subclass. The remainder is based | 31 id identifies the GrEffect subclass. The remainder is based |
| 31 on the aspects of the GrEffect object's configuration that affect | 32 on the aspects of the GrEffect object's configuration that affect |
| 32 GLSL code generation. */ | 33 GLSL code generation. */ |
| 33 virtual EffectKey glEffectKey(const GrDrawEffect& drawEffect, | 34 virtual EffectKey glEffectKey(const GrDrawEffect& drawEffect, |
| 34 const GrGLCaps& caps) const SK_OVERRIDE { | 35 const GrGLCaps& caps) const SK_OVERRIDE { |
| 35 SkASSERT(kIllegalEffectClassID != fEffectClassID); | 36 SkASSERT(kIllegalEffectClassID != fEffectClassID); |
| 36 EffectKey effectKey = GLEffect::GenKey(drawEffect, caps); | 37 EffectKey effectKey = GLEffect::GenKey(drawEffect, caps); |
| 37 EffectKey textureKey = GLEffect::GenTextureKey(drawEffect, caps); | 38 EffectKey textureKey = GrGLProgramEffects::GenTextureKey(drawEffect, cap
s); |
| 38 EffectKey transformKey = GLEffect::GenTransformKey(drawEffect); | 39 EffectKey transformKey = GrGLProgramEffects::GenTransformKey(drawEffect)
; |
| 39 EffectKey attribKey = GLEffect::GenAttribKey(drawEffect); | 40 EffectKey attribKey = GrGLProgramEffects::GenAttribKey(drawEffect); |
| 40 #ifdef SK_DEBUG | 41 #ifdef SK_DEBUG |
| 41 static const EffectKey kIllegalEffectKeyMask = (uint16_t) (~((1U << kEff
ectKeyBits) - 1)); | 42 static const EffectKey kIllegalEffectKeyMask = (uint16_t) (~((1U << kEff
ectKeyBits) - 1)); |
| 42 SkASSERT(!(kIllegalEffectKeyMask & effectKey)); | 43 SkASSERT(!(kIllegalEffectKeyMask & effectKey)); |
| 43 | 44 |
| 44 static const EffectKey kIllegalTextureKeyMask = (uint16_t) (~((1U << kTe
xtureKeyBits) - 1)); | 45 static const EffectKey kIllegalTextureKeyMask = (uint16_t) (~((1U << kTe
xtureKeyBits) - 1)); |
| 45 SkASSERT(!(kIllegalTextureKeyMask & textureKey)); | 46 SkASSERT(!(kIllegalTextureKeyMask & textureKey)); |
| 46 | 47 |
| 47 static const EffectKey kIllegalTransformKeyMask = (uint16_t) (~((1U << k
TransformKeyBits) - 1)); | 48 static const EffectKey kIllegalTransformKeyMask = (uint16_t) (~((1U << k
TransformKeyBits) - 1)); |
| 48 SkASSERT(!(kIllegalTransformKeyMask & transformKey)); | 49 SkASSERT(!(kIllegalTransformKeyMask & transformKey)); |
| 49 | 50 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 79 return *gInstance; | 80 return *gInstance; |
| 80 } | 81 } |
| 81 | 82 |
| 82 protected: | 83 protected: |
| 83 GrTBackendEffectFactory() { | 84 GrTBackendEffectFactory() { |
| 84 fEffectClassID = GenID(); | 85 fEffectClassID = GenID(); |
| 85 } | 86 } |
| 86 }; | 87 }; |
| 87 | 88 |
| 88 #endif | 89 #endif |
| OLD | NEW |