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

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

Issue 24853002: Make GPU coord transforms automatic (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: rebase Created 7 years, 2 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/GrEffect.h ('k') | src/core/SkXfermode.cpp » ('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 GrDrawEffect& drawEffect, 33 virtual EffectKey glEffectKey(const GrDrawEffect& drawEffect,
34 const GrGLCaps& caps) const SK_OVERRIDE { 34 const GrGLCaps& caps) const SK_OVERRIDE {
35 SkASSERT(kIllegalEffectClassID != fEffectClassID); 35 SkASSERT(kIllegalEffectClassID != fEffectClassID);
36 EffectKey effectKey = GLEffect::GenKey(drawEffect, caps); 36 EffectKey effectKey = GLEffect::GenKey(drawEffect, caps);
37 EffectKey textureKey = GLEffect::GenTextureKey(drawEffect, caps); 37 EffectKey textureKey = GLEffect::GenTextureKey(drawEffect, caps);
38 EffectKey transformKey = GLEffect::GenTransformKey(drawEffect);
38 EffectKey attribKey = GLEffect::GenAttribKey(drawEffect); 39 EffectKey attribKey = GLEffect::GenAttribKey(drawEffect);
39 #ifdef SK_DEBUG 40 #ifdef SK_DEBUG
40 static const EffectKey kIllegalIDMask = (uint16_t) (~((1U << kEffectKeyB its) - 1)); 41 static const EffectKey kIllegalEffectKeyMask = (uint16_t) (~((1U << kEff ectKeyBits) - 1));
41 SkASSERT(!(kIllegalIDMask & effectKey)); 42 SkASSERT(!(kIllegalEffectKeyMask & effectKey));
42 43
43 static const EffectKey kIllegalTextureKeyMask = (uint16_t) (~((1U << kTe xtureKeyBits) - 1)); 44 static const EffectKey kIllegalTextureKeyMask = (uint16_t) (~((1U << kTe xtureKeyBits) - 1));
44 SkASSERT(!(kIllegalTextureKeyMask & textureKey)); 45 SkASSERT(!(kIllegalTextureKeyMask & textureKey));
45 46
47 static const EffectKey kIllegalTransformKeyMask = (uint16_t) (~((1U << k TransformKeyBits) - 1));
48 SkASSERT(!(kIllegalTransformKeyMask & transformKey));
49
46 static const EffectKey kIllegalAttribKeyMask = (uint16_t) (~((1U << kAtt ribKeyBits) - 1)); 50 static const EffectKey kIllegalAttribKeyMask = (uint16_t) (~((1U << kAtt ribKeyBits) - 1));
47 SkASSERT(!(kIllegalAttribKeyMask & textureKey)); 51 SkASSERT(!(kIllegalAttribKeyMask & textureKey));
52
53 static const EffectKey kIllegalClassIDMask = (uint16_t) (~((1U << kClass IDBits) - 1));
54 SkASSERT(!(kIllegalClassIDMask & fEffectClassID));
48 #endif 55 #endif
49 return fEffectClassID | (attribKey << (kEffectKeyBits+kTextureKeyBits)) | 56 return (fEffectClassID << (kEffectKeyBits+kTextureKeyBits+kTransformKeyB its+kAttribKeyBits)) |
50 (textureKey << kEffectKeyBits) | effectKey; 57 (attribKey << (kEffectKeyBits+kTextureKeyBits+kTransformKeyBits)) |
58 (transformKey << (kEffectKeyBits+kTextureKeyBits)) |
59 (textureKey << kEffectKeyBits) |
60 (effectKey);
51 } 61 }
52 62
53 /** Returns a new instance of the appropriate *GL* implementation class 63 /** Returns a new instance of the appropriate *GL* implementation class
54 for the given GrEffect; caller is responsible for deleting 64 for the given GrEffect; caller is responsible for deleting
55 the object. */ 65 the object. */
56 virtual GLEffect* createGLInstance(const GrDrawEffect& drawEffect) const SK_ OVERRIDE { 66 virtual GLEffect* createGLInstance(const GrDrawEffect& drawEffect) const SK_ OVERRIDE {
57 return SkNEW_ARGS(GLEffect, (*this, drawEffect)); 67 return SkNEW_ARGS(GLEffect, (*this, drawEffect));
58 } 68 }
59 69
60 /** This class is a singleton. This function returns the single instance. 70 /** This class is a singleton. This function returns the single instance.
61 */ 71 */
62 static const GrBackendEffectFactory& getInstance() { 72 static const GrBackendEffectFactory& getInstance() {
63 static SkAlignedSTStorage<1, GrTBackendEffectFactory> gInstanceMem; 73 static SkAlignedSTStorage<1, GrTBackendEffectFactory> gInstanceMem;
64 static const GrTBackendEffectFactory* gInstance; 74 static const GrTBackendEffectFactory* gInstance;
65 if (!gInstance) { 75 if (!gInstance) {
66 gInstance = SkNEW_PLACEMENT(gInstanceMem.get(), 76 gInstance = SkNEW_PLACEMENT(gInstanceMem.get(),
67 GrTBackendEffectFactory); 77 GrTBackendEffectFactory);
68 } 78 }
69 return *gInstance; 79 return *gInstance;
70 } 80 }
71 81
72 protected: 82 protected:
73 GrTBackendEffectFactory() { 83 GrTBackendEffectFactory() {
74 fEffectClassID = GenID() << (kAttribKeyBits + kEffectKeyBits + kTextureK eyBits) ; 84 fEffectClassID = GenID();
75 } 85 }
76 }; 86 };
77 87
78 #endif 88 #endif
OLDNEW
« no previous file with comments | « include/gpu/GrEffect.h ('k') | src/core/SkXfermode.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698