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

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

Issue 379113004: Makes GrGLProgramDesc's key store the lengths as well as offsets of the effect keys. (Closed) Base URL: https://skia.googlesource.com/skia.git@key
Patch Set: Fix sizeof(uint32_t) bug Created 6 years, 5 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
« no previous file with comments | « src/gpu/gl/GrGLProgramDesc.cpp ('k') | src/gpu/gl/GrGLProgramEffects.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 2013 Google Inc. 2 * Copyright 2013 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 GrGLProgramEffects_DEFINED 8 #ifndef GrGLProgramEffects_DEFINED
9 #define GrGLProgramEffects_DEFINED 9 #define GrGLProgramEffects_DEFINED
10 10
11 #include "GrBackendEffectFactory.h" 11 #include "GrBackendEffectFactory.h"
12 #include "GrGLUniformManager.h"
12 #include "GrTexture.h" 13 #include "GrTexture.h"
13 #include "GrTextureAccess.h" 14 #include "GrTextureAccess.h"
14 #include "GrGLUniformManager.h"
15 15
16 class GrEffect; 16 class GrEffect;
17 class GrEffectStage; 17 class GrEffectStage;
18 class GrGLVertexProgramEffectsBuilder; 18 class GrGLVertexProgramEffectsBuilder;
19 class GrGLShaderBuilder; 19 class GrGLShaderBuilder;
20 class GrGLFullShaderBuilder; 20 class GrGLFullShaderBuilder;
21 class GrGLFragmentOnlyShaderBuilder; 21 class GrGLFragmentOnlyShaderBuilder;
22 22
23 /** 23 /**
24 * This class encapsulates an array of GrGLEffects and their supporting data (co ord transforms 24 * This class encapsulates an array of GrGLEffects and their supporting data (co ord transforms
25 * and textures). It is built with GrGLProgramEffectsBuilder, then used to manag e the necessary GL 25 * and textures). It is built with GrGLProgramEffectsBuilder, then used to manag e the necessary GL
26 * state and shader uniforms. 26 * state and shader uniforms.
27 */ 27 */
28 class GrGLProgramEffects : public SkRefCnt { 28 class GrGLProgramEffects : public SkRefCnt {
29 public: 29 public:
30 typedef GrBackendEffectFactory::EffectKey EffectKey; 30 typedef GrBackendEffectFactory::EffectKey EffectKey;
31 typedef GrGLUniformManager::UniformHandle UniformHandle; 31 typedef GrGLUniformManager::UniformHandle UniformHandle;
32 32
33 /** 33 /**
34 * These methods generate different portions of an effect's final key. 34 * This class emits some of the code inserted into the shaders for an effect . The code it
35 * creates may be dependent on properties of the effect that the effect itse lf doesn't use
36 * in its key (e.g. the pixel format of textures used). So this class insert s a meta-key for
37 * every effect using this function. It is also responsible for inserting th e effect's class ID
38 * which must be different for every GrEffect subclass. It can fail if an ef fect uses too many
39 * textures, attributes, etc for the space allotted in the meta-key.
35 */ 40 */
36 static EffectKey GenAttribKey(const GrDrawEffect&); 41 static bool GenEffectMetaKey(const GrDrawEffect&, const GrGLCaps&, GrEffectK eyBuilder*);
37 static EffectKey GenTransformKey(const GrDrawEffect&);
38 static EffectKey GenTextureKey(const GrDrawEffect&, const GrGLCaps&);
39 42
40 virtual ~GrGLProgramEffects(); 43 virtual ~GrGLProgramEffects();
41 44
42 /** 45 /**
43 * Assigns a texture unit to each sampler. It starts on *texUnitIdx and writ es the next 46 * Assigns a texture unit to each sampler. It starts on *texUnitIdx and writ es the next
44 * available unit to *texUnitIdx when it returns. 47 * available unit to *texUnitIdx when it returns.
45 */ 48 */
46 void initSamplers(const GrGLUniformManager&, int* texUnitIdx); 49 void initSamplers(const GrGLUniformManager&, int* texUnitIdx);
47 50
48 /** 51 /**
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 94
92 private: 95 private:
93 UniformHandle fSamplerUniform; 96 UniformHandle fSamplerUniform;
94 uint32_t fConfigComponentMask; 97 uint32_t fConfigComponentMask;
95 char fSwizzle[5]; 98 char fSwizzle[5];
96 }; 99 };
97 100
98 typedef SkTArray<TextureSampler> TextureSamplerArray; 101 typedef SkTArray<TextureSampler> TextureSamplerArray;
99 102
100 protected: 103 protected:
104 /**
105 * Helpers for GenEffectMetaKey.
106 */
107 static EffectKey GenAttribKey(const GrDrawEffect&);
108 static EffectKey GenTransformKey(const GrDrawEffect&);
109 static EffectKey GenTextureKey(const GrDrawEffect&, const GrGLCaps&);
110
101 GrGLProgramEffects(int reserveCount) 111 GrGLProgramEffects(int reserveCount)
102 : fGLEffects(reserveCount) 112 : fGLEffects(reserveCount)
103 , fSamplers(reserveCount) { 113 , fSamplers(reserveCount) {
104 } 114 }
105 115
106 /** 116 /**
107 * Helper for emitEffect() in a subclasses. Emits uniforms for an effect's t exture accesses and 117 * Helper for emitEffect() in a subclasses. Emits uniforms for an effect's t exture accesses and
108 * appends the necessary data to the TextureSamplerArray* object so effects can add texture 118 * appends the necessary data to the TextureSamplerArray* object so effects can add texture
109 * lookups to their code. This method is only meant to be called during the construction phase. 119 * lookups to their code. This method is only meant to be called during the construction phase.
110 */ 120 */
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 GrGLProgramEffects* finish() { return fProgramEffects.detach(); } 327 GrGLProgramEffects* finish() { return fProgramEffects.detach(); }
318 328
319 private: 329 private:
320 GrGLFragmentOnlyShaderBuilder* fBuilder; 330 GrGLFragmentOnlyShaderBuilder* fBuilder;
321 SkAutoTDelete<GrGLPathTexGenProgramEffects> fProgramEffects; 331 SkAutoTDelete<GrGLPathTexGenProgramEffects> fProgramEffects;
322 332
323 typedef GrGLProgramEffectsBuilder INHERITED; 333 typedef GrGLProgramEffectsBuilder INHERITED;
324 }; 334 };
325 335
326 #endif 336 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLProgramDesc.cpp ('k') | src/gpu/gl/GrGLProgramEffects.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698