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

Side by Side Diff: src/gpu/gl/GrGLShaderBuilder.h

Issue 22340010: Refactor GrGLUniformManager::UniformHandle to initialize itself by default (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: description Created 7 years, 4 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 | « src/gpu/gl/GrGLProgram.cpp ('k') | src/gpu/gl/GrGLShaderBuilder.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 GrGLShaderBuilder_DEFINED 8 #ifndef GrGLShaderBuilder_DEFINED
9 #define GrGLShaderBuilder_DEFINED 9 #define GrGLShaderBuilder_DEFINED
10 10
(...skipping 15 matching lines...) Expand all
26 manipulate that state. 26 manipulate that state.
27 */ 27 */
28 class GrGLShaderBuilder { 28 class GrGLShaderBuilder {
29 public: 29 public:
30 /** 30 /**
31 * Passed to GrGLEffects to add texture reads to their shader code. 31 * Passed to GrGLEffects to add texture reads to their shader code.
32 */ 32 */
33 class TextureSampler { 33 class TextureSampler {
34 public: 34 public:
35 TextureSampler() 35 TextureSampler()
36 : fConfigComponentMask(0) 36 : fConfigComponentMask(0) {
37 , fSamplerUniform(GrGLUniformManager::kInvalidUniformHandle) {
38 // we will memcpy the first 4 bytes from passed in swizzle. This ens ures the string is 37 // we will memcpy the first 4 bytes from passed in swizzle. This ens ures the string is
39 // terminated. 38 // terminated.
40 fSwizzle[4] = '\0'; 39 fSwizzle[4] = '\0';
41 } 40 }
42 41
43 TextureSampler(const TextureSampler& other) { *this = other; } 42 TextureSampler(const TextureSampler& other) { *this = other; }
44 43
45 TextureSampler& operator= (const TextureSampler& other) { 44 TextureSampler& operator= (const TextureSampler& other) {
46 GrAssert(0 == fConfigComponentMask); 45 GrAssert(0 == fConfigComponentMask);
47 GrAssert(GrGLUniformManager::kInvalidUniformHandle == fSamplerUnifor m); 46 GrAssert(!fSamplerUniform.isValid());
48 47
49 fConfigComponentMask = other.fConfigComponentMask; 48 fConfigComponentMask = other.fConfigComponentMask;
50 fSamplerUniform = other.fSamplerUniform; 49 fSamplerUniform = other.fSamplerUniform;
51 return *this; 50 return *this;
52 } 51 }
53 52
54 // bitfield of GrColorComponentFlags present in the texture's config. 53 // bitfield of GrColorComponentFlags present in the texture's config.
55 uint32_t configComponentMask() const { return fConfigComponentMask; } 54 uint32_t configComponentMask() const { return fConfigComponentMask; }
56 55
57 const char* swizzle() const { return fSwizzle; } 56 const char* swizzle() const { return fSwizzle; }
58 57
59 bool isInitialized() const { return 0 != fConfigComponentMask; } 58 bool isInitialized() const { return 0 != fConfigComponentMask; }
60 59
61 private: 60 private:
62 // The idx param is used to ensure multiple samplers within a single eff ect have unique 61 // The idx param is used to ensure multiple samplers within a single eff ect have unique
63 // uniform names. swizzle is a four char max string made up of chars 'r' , 'g', 'b', and 'a'. 62 // uniform names. swizzle is a four char max string made up of chars 'r' , 'g', 'b', and 'a'.
64 void init(GrGLShaderBuilder* builder, 63 void init(GrGLShaderBuilder* builder,
65 uint32_t configComponentMask, 64 uint32_t configComponentMask,
66 const char* swizzle, 65 const char* swizzle,
67 int idx) { 66 int idx) {
68 GrAssert(!this->isInitialized()); 67 GrAssert(!this->isInitialized());
69 GrAssert(0 != configComponentMask); 68 GrAssert(0 != configComponentMask);
70 GrAssert(GrGLUniformManager::kInvalidUniformHandle == fSamplerUnifor m); 69 GrAssert(!fSamplerUniform.isValid());
71 70
72 GrAssert(NULL != builder); 71 GrAssert(NULL != builder);
73 SkString name; 72 SkString name;
74 name.printf("Sampler%d", idx); 73 name.printf("Sampler%d", idx);
75 fSamplerUniform = builder->addUniform(GrGLShaderBuilder::kFragment_S haderType, 74 fSamplerUniform = builder->addUniform(GrGLShaderBuilder::kFragment_S haderType,
76 kSampler2D_GrSLType, 75 kSampler2D_GrSLType,
77 name.c_str()); 76 name.c_str());
78 GrAssert(GrGLUniformManager::kInvalidUniformHandle != fSamplerUnifor m); 77 GrAssert(fSamplerUniform.isValid());
79 78
80 fConfigComponentMask = configComponentMask; 79 fConfigComponentMask = configComponentMask;
81 memcpy(fSwizzle, swizzle, 4); 80 memcpy(fSwizzle, swizzle, 4);
82 } 81 }
83 82
84 void init(GrGLShaderBuilder* builder, const GrTextureAccess* access, int idx) { 83 void init(GrGLShaderBuilder* builder, const GrTextureAccess* access, int idx) {
85 GrAssert(NULL != access); 84 GrAssert(NULL != access);
86 this->init(builder, 85 this->init(builder,
87 GrPixelConfigComponentMask(access->getTexture()->config() ), 86 GrPixelConfigComponentMask(access->getTexture()->config() ),
88 access->getSwizzle(), 87 access->getSwizzle(),
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 const char* name, 220 const char* name,
222 const char** outName = NULL) { 221 const char** outName = NULL) {
223 return this->addUniformArray(visibility, type, name, GrGLShaderVar::kNon Array, outName); 222 return this->addUniformArray(visibility, type, name, GrGLShaderVar::kNon Array, outName);
224 } 223 }
225 GrGLUniformManager::UniformHandle addUniformArray(uint32_t visibility, 224 GrGLUniformManager::UniformHandle addUniformArray(uint32_t visibility,
226 GrSLType type, 225 GrSLType type,
227 const char* name, 226 const char* name,
228 int arrayCount, 227 int arrayCount,
229 const char** outName = NUL L); 228 const char** outName = NUL L);
230 229
231 const GrGLShaderVar& getUniformVariable(GrGLUniformManager::UniformHandle) c onst; 230 const GrGLShaderVar& getUniformVariable(GrGLUniformManager::UniformHandle u) const {
231 return fUniformManager.getBuilderUniform(fUniforms, u).fVariable;
232 }
232 233
233 /** 234 /**
234 * Shortcut for getUniformVariable(u).c_str() 235 * Shortcut for getUniformVariable(u).c_str()
235 */ 236 */
236 const char* getUniformCStr(GrGLUniformManager::UniformHandle u) const { 237 const char* getUniformCStr(GrGLUniformManager::UniformHandle u) const {
237 return this->getUniformVariable(u).c_str(); 238 return this->getUniformVariable(u).c_str();
238 } 239 }
239 240
240 /** Add a vertex attribute to the current program that is passed in from the vertex data. 241 /** Add a vertex attribute to the current program that is passed in from the vertex data.
241 Returns false if the attribute was already there, true otherwise. */ 242 Returns false if the attribute was already there, true otherwise. */
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 bool fTopLeftFragPosRead; 459 bool fTopLeftFragPosRead;
459 460
460 SkSTArray<10, AttributePair, true> fEffectAttributes; 461 SkSTArray<10, AttributePair, true> fEffectAttributes;
461 462
462 GrGLShaderVar* fPositionVar; 463 GrGLShaderVar* fPositionVar;
463 GrGLShaderVar* fLocalCoordsVar; 464 GrGLShaderVar* fLocalCoordsVar;
464 465
465 }; 466 };
466 467
467 #endif 468 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLProgram.cpp ('k') | src/gpu/gl/GrGLShaderBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698