Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Side by Side Diff: include/gpu/GrTBackendEffectFactory.h

Issue 12462008: Add GrEllipseEdgeEffect (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: rebase again Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « include/gpu/GrEffectStage.h ('k') | include/gpu/GrTypesPriv.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
(...skipping 17 matching lines...) Expand all
28 /** Returns a value that identifies the GLSL shader code generated by 28 /** Returns a value that identifies the GLSL shader code generated by
29 a GrEffect. This enables caching of generated shaders. Part of the 29 a GrEffect. This enables caching of generated shaders. Part of the
30 id identifies the GrEffect subclass. The remainder is based 30 id identifies the GrEffect subclass. The remainder is based
31 on the aspects of the GrEffect object's configuration that affect 31 on the aspects of the GrEffect object's configuration that affect
32 GLSL code generation. */ 32 GLSL code generation. */
33 virtual EffectKey glEffectKey(const GrEffectStage& stage, 33 virtual EffectKey glEffectKey(const GrEffectStage& stage,
34 const GrGLCaps& caps) const SK_OVERRIDE { 34 const GrGLCaps& caps) const SK_OVERRIDE {
35 GrAssert(kIllegalEffectClassID != fEffectClassID); 35 GrAssert(kIllegalEffectClassID != fEffectClassID);
36 EffectKey effectKey = GLEffect::GenKey(stage, caps); 36 EffectKey effectKey = GLEffect::GenKey(stage, caps);
37 EffectKey textureKey = GLEffect::GenTextureKey(stage.getEffect(), caps); 37 EffectKey textureKey = GLEffect::GenTextureKey(stage.getEffect(), caps);
38 EffectKey attribKey = GLEffect::GenAttribKey(stage);
38 #if GR_DEBUG 39 #if GR_DEBUG
39 static const EffectKey kIllegalIDMask = (uint16_t) (~((1U << kEffectKeyB its) - 1)); 40 static const EffectKey kIllegalIDMask = (uint16_t) (~((1U << kEffectKeyB its) - 1));
40 GrAssert(!(kIllegalIDMask & effectKey)); 41 GrAssert(!(kIllegalIDMask & effectKey));
41 42
42 static const EffectKey kIllegalTextureKeyMask = (uint16_t) (~((1U << kTe xtureKeyBits) - 1)); 43 static const EffectKey kIllegalTextureKeyMask = (uint16_t) (~((1U << kTe xtureKeyBits) - 1));
43 GrAssert(!(kIllegalTextureKeyMask & textureKey)); 44 GrAssert(!(kIllegalTextureKeyMask & textureKey));
45
46 static const EffectKey kIllegalAttribKeyMask = (uint16_t) (~((1U << kAtt ribKeyBits) - 1));
47 GrAssert(!(kIllegalAttribKeyMask & textureKey));
44 #endif 48 #endif
45 return fEffectClassID | (textureKey << kEffectKeyBits) | effectKey; 49 return fEffectClassID | (attribKey << (kEffectKeyBits+kTextureKeyBits)) |
50 (textureKey << kEffectKeyBits) | effectKey;
46 } 51 }
47 52
48 /** Returns a new instance of the appropriate *GL* implementation class 53 /** Returns a new instance of the appropriate *GL* implementation class
49 for the given GrEffect; caller is responsible for deleting 54 for the given GrEffect; caller is responsible for deleting
50 the object. */ 55 the object. */
51 virtual GLEffect* createGLInstance(const GrEffectRef& effect) const SK_OVERR IDE { 56 virtual GLEffect* createGLInstance(const GrEffectRef& effect) const SK_OVERR IDE {
52 return SkNEW_ARGS(GLEffect, (*this, effect)); 57 return SkNEW_ARGS(GLEffect, (*this, effect));
53 } 58 }
54 59
55 /** This class is a singleton. This function returns the single instance. 60 /** This class is a singleton. This function returns the single instance.
56 */ 61 */
57 static const GrBackendEffectFactory& getInstance() { 62 static const GrBackendEffectFactory& getInstance() {
58 static SkAlignedSTStorage<1, GrTBackendEffectFactory> gInstanceMem; 63 static SkAlignedSTStorage<1, GrTBackendEffectFactory> gInstanceMem;
59 static const GrTBackendEffectFactory* gInstance; 64 static const GrTBackendEffectFactory* gInstance;
60 if (!gInstance) { 65 if (!gInstance) {
61 gInstance = SkNEW_PLACEMENT(gInstanceMem.get(), 66 gInstance = SkNEW_PLACEMENT(gInstanceMem.get(),
62 GrTBackendEffectFactory); 67 GrTBackendEffectFactory);
63 } 68 }
64 return *gInstance; 69 return *gInstance;
65 } 70 }
66 71
67 protected: 72 protected:
68 GrTBackendEffectFactory() { 73 GrTBackendEffectFactory() {
69 fEffectClassID = GenID() << (kEffectKeyBits + kTextureKeyBits) ; 74 fEffectClassID = GenID() << (kEffectKeyBits + kTextureKeyBits) ;
70 } 75 }
71 }; 76 };
72 77
73 #endif 78 #endif
OLDNEW
« no previous file with comments | « include/gpu/GrEffectStage.h ('k') | include/gpu/GrTypesPriv.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698