| OLD | NEW | 
|---|
| 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 "GrGLProgramDataManager.h" | 12 #include "GrGLProgramDataManager.h" | 
| 13 #include "GrTexture.h" | 13 #include "GrTexture.h" | 
| 14 #include "GrTextureAccess.h" | 14 #include "GrTextureAccess.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 GrGLProgramBuilder; | 
| 20 class GrGLFullShaderBuilder; | 20 class GrGLFullProgramBuilder; | 
| 21 class GrGLFragmentOnlyShaderBuilder; | 21 class GrGLFragmentOnlyProgramBuilder; | 
| 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 GrGLProgramDataManager::UniformHandle UniformHandle; | 30     typedef GrGLProgramDataManager::UniformHandle UniformHandle; | 
| 31 | 31 | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
| 47      */ | 47      */ | 
| 48     void initSamplers(const GrGLProgramDataManager&, int* texUnitIdx); | 48     void initSamplers(const GrGLProgramDataManager&, int* texUnitIdx); | 
| 49 | 49 | 
| 50     /** | 50     /** | 
| 51      * Calls setData() on each effect, and sets their transformation matrices an
     d texture bindings. | 51      * Calls setData() on each effect, and sets their transformation matrices an
     d texture bindings. | 
| 52      */ | 52      */ | 
| 53     virtual void setData(GrGpuGL*, | 53     virtual void setData(GrGpuGL*, | 
| 54                          const GrGLProgramDataManager&, | 54                          const GrGLProgramDataManager&, | 
| 55                          const GrEffectStage* effectStages[]) = 0; | 55                          const GrEffectStage* effectStages[]) = 0; | 
| 56 | 56 | 
|  | 57     void addEffect(GrGLEffect* effect) { fGLEffects.push_back(effect); } | 
|  | 58 | 
| 57     /** | 59     /** | 
| 58      * Passed to GrGLEffects so they can add transformed coordinates to their sh
     ader code. | 60      * Passed to GrGLEffects so they can add transformed coordinates to their sh
     ader code. | 
| 59      */ | 61      */ | 
| 60     class TransformedCoords { | 62     class TransformedCoords { | 
| 61     public: | 63     public: | 
| 62         TransformedCoords(const SkString& name, GrSLType type) | 64         TransformedCoords(const SkString& name, GrSLType type) | 
| 63             : fName(name), fType(type) { | 65             : fName(name), fType(type) { | 
| 64         } | 66         } | 
| 65 | 67 | 
| 66         const char* c_str() const { return fName.c_str(); } | 68         const char* c_str() const { return fName.c_str(); } | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 93 | 95 | 
| 94     private: | 96     private: | 
| 95         UniformHandle fSamplerUniform; | 97         UniformHandle fSamplerUniform; | 
| 96         uint32_t      fConfigComponentMask; | 98         uint32_t      fConfigComponentMask; | 
| 97         char          fSwizzle[5]; | 99         char          fSwizzle[5]; | 
| 98     }; | 100     }; | 
| 99 | 101 | 
| 100     typedef SkTArray<TextureSampler> TextureSamplerArray; | 102     typedef SkTArray<TextureSampler> TextureSamplerArray; | 
| 101 | 103 | 
| 102 protected: | 104 protected: | 
|  | 105 | 
| 103     /** | 106     /** | 
| 104      * Helpers for GenEffectMetaKey. | 107      * Helpers for GenEffectMetaKey. | 
| 105      */ | 108      */ | 
| 106     static uint32_t GenAttribKey(const GrDrawEffect&); | 109     static uint32_t GenAttribKey(const GrDrawEffect&); | 
| 107     static uint32_t GenTransformKey(const GrDrawEffect&); | 110     static uint32_t GenTransformKey(const GrDrawEffect&); | 
| 108     static uint32_t GenTextureKey(const GrDrawEffect&, const GrGLCaps&); | 111     static uint32_t GenTextureKey(const GrDrawEffect&, const GrGLCaps&); | 
| 109 | 112 | 
| 110     GrGLProgramEffects(int reserveCount) | 113     GrGLProgramEffects(int reserveCount) | 
| 111         : fGLEffects(reserveCount) | 114         : fGLEffects(reserveCount) | 
| 112         , fSamplers(reserveCount) { | 115         , fSamplers(reserveCount) { | 
| 113     } | 116     } | 
| 114 | 117 | 
| 115     /** | 118     /** | 
| 116      * Helper for emitEffect() in a subclasses. Emits uniforms for an effect's t
     exture accesses and | 119      * Helper for emitEffect() in a subclasses. Emits uniforms for an effect's t
     exture accesses and | 
| 117      * appends the necessary data to the TextureSamplerArray* object so effects 
     can add texture | 120      * appends the necessary data to the TextureSamplerArray* object so effects 
     can add texture | 
| 118      * lookups to their code. This method is only meant to be called during the 
     construction phase. | 121      * lookups to their code. This method is only meant to be called during the 
     construction phase. | 
| 119      */ | 122      */ | 
| 120     void emitSamplers(GrGLShaderBuilder*, const GrEffect*, TextureSamplerArray*)
     ; | 123     void emitSamplers(GrGLProgramBuilder*, const GrEffect*, TextureSamplerArray*
     ); | 
| 121 | 124 | 
| 122     /** | 125     /** | 
| 123      * Helper for setData(). Binds all the textures for an effect. | 126      * Helper for setData(). Binds all the textures for an effect. | 
| 124      */ | 127      */ | 
| 125     void bindTextures(GrGpuGL*, const GrEffect*, int effectIdx); | 128     void bindTextures(GrGpuGL*, const GrEffect*, int effectIdx); | 
| 126 | 129 | 
| 127     struct Sampler { | 130     struct Sampler { | 
| 128         SkDEBUGCODE(Sampler() : fTextureUnit(-1) {}) | 131         SkDEBUGCODE(Sampler() : fTextureUnit(-1) {}) | 
| 129         UniformHandle fUniform; | 132         UniformHandle fUniform; | 
| 130         int           fTextureUnit; | 133         int           fTextureUnit; | 
| 131     }; | 134     }; | 
| 132 | 135 | 
| 133     SkTArray<GrGLEffect*>                  fGLEffects; | 136     SkTArray<GrGLEffect*>                  fGLEffects; | 
| 134     SkTArray<SkSTArray<4, Sampler, true> > fSamplers; | 137     SkTArray<SkSTArray<4, Sampler, true> > fSamplers; | 
| 135 | 138 | 
| 136 private: | 139 private: | 
|  | 140     friend class GrGLFragmentO; | 
| 137     typedef SkRefCnt INHERITED; | 141     typedef SkRefCnt INHERITED; | 
| 138 }; | 142 }; | 
| 139 | 143 | 
| 140 /** | 144 /** | 
| 141  * This is an abstract base class for constructing different types of GrGLProgra
     mEffects objects. | 145  * This is an abstract base class for constructing different types of GrGLProgra
     mEffects objects. | 
| 142  */ | 146  */ | 
| 143 class GrGLProgramEffectsBuilder { | 147 class GrGLProgramEffectsBuilder { | 
| 144 public: | 148 public: | 
| 145     virtual ~GrGLProgramEffectsBuilder() { } | 149     virtual ~GrGLProgramEffectsBuilder() { } | 
| 146 |  | 
| 147     /** | 150     /** | 
| 148      * Emits the effect's shader code, and stores the necessary uniforms interna
     lly. | 151      * Emits the effect's shader code, and stores the necessary uniforms interna
     lly. | 
| 149      */ | 152      */ | 
| 150     virtual void emitEffect(const GrEffectStage&, | 153     virtual void emitEffect(const GrEffectStage&, | 
| 151                             const GrEffectKey&, | 154                             const GrEffectKey&, | 
| 152                             const char* outColor, | 155                             const char* outColor, | 
| 153                             const char* inColor, | 156                             const char* inColor, | 
| 154                             int stageIndex) = 0; | 157                             int stageIndex) = 0; | 
| 155 }; | 158 }; | 
| 156 | 159 | 
| 157 //////////////////////////////////////////////////////////////////////////////// | 160 //////////////////////////////////////////////////////////////////////////////// | 
| 158 | 161 | 
| 159 /** | 162 /** | 
| 160  * This is a GrGLProgramEffects implementation that does coord transforms with t
     he vertex shader. | 163  * This is a GrGLProgramEffects implementation that does coord transforms with t
     he vertex shader. | 
| 161  */ | 164  */ | 
| 162 class GrGLVertexProgramEffects : public GrGLProgramEffects { | 165 class GrGLVertexProgramEffects : public GrGLProgramEffects { | 
| 163 public: | 166 public: | 
| 164     virtual void setData(GrGpuGL*, | 167     virtual void setData(GrGpuGL*, | 
| 165                          const GrGLProgramDataManager&, | 168                          const GrGLProgramDataManager&, | 
| 166                          const GrEffectStage* effectStages[]) SK_OVERRIDE; | 169                          const GrEffectStage* effectStages[]) SK_OVERRIDE; | 
| 167 | 170 | 
| 168 private: | 171 private: | 
| 169     friend class GrGLVertexProgramEffectsBuilder; | 172     friend class GrGLFullProgramBuilder; | 
| 170 | 173 | 
| 171     GrGLVertexProgramEffects(int reserveCount, bool explicitLocalCoords) | 174     GrGLVertexProgramEffects(int reserveCount, bool explicitLocalCoords) | 
| 172         : INHERITED(reserveCount) | 175         : INHERITED(reserveCount) | 
| 173         , fTransforms(reserveCount) | 176         , fTransforms(reserveCount) | 
| 174         , fHasExplicitLocalCoords(explicitLocalCoords) { | 177         , fHasExplicitLocalCoords(explicitLocalCoords) { | 
| 175     } | 178     } | 
| 176 |  | 
| 177     /** | 179     /** | 
| 178      * Helper for GrGLProgramEffectsBuilder::emitEfffect(). This method is meant
      to only be called | 180      * This method is meant to only be called during the construction phase. | 
| 179      * during the construction phase. |  | 
| 180      */ | 181      */ | 
| 181     void emitEffect(GrGLFullShaderBuilder*, | 182     void emitEffect(GrGLFullProgramBuilder*, | 
| 182                     const GrEffectStage&, | 183                     const GrEffectStage&, | 
| 183                     const GrEffectKey&, | 184                     const GrEffectKey&, | 
| 184                     const char* outColor, | 185                     const char* outColor, | 
| 185                     const char* inColor, | 186                     const char* inColor, | 
| 186                     int stageIndex); | 187                     int stageIndex); | 
| 187 | 188 | 
| 188     /** | 189     /** | 
| 189      * Helper for emitEffect(). Emits any attributes an effect may have. | 190      * Helper for emitEffect(). Emits any attributes an effect may have. | 
| 190      */ | 191      */ | 
| 191     void emitAttributes(GrGLFullShaderBuilder*, const GrEffectStage&); | 192     void emitAttributes(GrGLFullProgramBuilder*, const GrEffectStage&); | 
| 192 | 193 | 
| 193     /** | 194     /** | 
| 194      * Helper for emitEffect(). Emits code to implement an effect's coord transf
     orms in the VS. | 195      * Helper for emitEffect(). Emits code to implement an effect's coord transf
     orms in the VS. | 
| 195      * Varyings are added as an outputs of the VS and inputs to the FS. The vary
     ings may be either a | 196      * Varyings are added as an outputs of the VS and inputs to the FS. The vary
     ings may be either a | 
| 196      * vec2f or vec3f depending upon whether perspective interpolation is requir
     ed or not. The names | 197      * vec2f or vec3f depending upon whether perspective interpolation is requir
     ed or not. The names | 
| 197      * of the varyings in the VS and FS as well their types are appended to the | 198      * of the varyings in the VS and FS as well their types are appended to the | 
| 198      * TransformedCoordsArray* object, which is in turn passed to the effect's e
     mitCode() function. | 199      * TransformedCoordsArray* object, which is in turn passed to the effect's e
     mitCode() function. | 
| 199      */ | 200      */ | 
| 200     void emitTransforms(GrGLFullShaderBuilder*, | 201     void emitTransforms(GrGLFullProgramBuilder*, | 
| 201                         const GrDrawEffect&, | 202                         const GrDrawEffect&, | 
| 202                         TransformedCoordsArray*); | 203                         TransformedCoordsArray*); | 
| 203 | 204 | 
| 204     /** | 205     /** | 
| 205      * Helper for setData(). Sets all the transform matrices for an effect. | 206      * Helper for setData(). Sets all the transform matrices for an effect. | 
| 206      */ | 207      */ | 
| 207     void setTransformData(const GrGLProgramDataManager&, const GrDrawEffect&, in
     t effectIdx); | 208     void setTransformData(const GrGLProgramDataManager&, const GrDrawEffect&, in
     t effectIdx); | 
| 208 | 209 | 
| 209     struct Transform { | 210     struct Transform { | 
| 210         Transform() { fCurrentValue = SkMatrix::InvalidMatrix(); } | 211         Transform() { fCurrentValue = SkMatrix::InvalidMatrix(); } | 
| 211         UniformHandle fHandle; | 212         UniformHandle fHandle; | 
| 212         SkMatrix      fCurrentValue; | 213         SkMatrix      fCurrentValue; | 
| 213     }; | 214     }; | 
| 214 | 215 | 
| 215     SkTArray<SkSTArray<2, Transform, true> > fTransforms; | 216     SkTArray<SkSTArray<2, Transform, true> > fTransforms; | 
| 216     bool                                     fHasExplicitLocalCoords; | 217     bool                                     fHasExplicitLocalCoords; | 
| 217 | 218 | 
|  | 219     friend class GrGLVertexProgramEffectsBuilder; | 
|  | 220 | 
| 218     typedef GrGLProgramEffects INHERITED; | 221     typedef GrGLProgramEffects INHERITED; | 
| 219 }; | 222 }; | 
| 220 | 223 | 
| 221 /** | 224 /** | 
| 222  * This class is used to construct a GrGLVertexProgramEffects* object. | 225  * This class is used to construct a GrGLVertexProgramEffects* object. | 
| 223  */ | 226  */ | 
| 224 class GrGLVertexProgramEffectsBuilder : public GrGLProgramEffectsBuilder { | 227 class GrGLVertexProgramEffectsBuilder : public GrGLProgramEffectsBuilder { | 
| 225 public: | 228 public: | 
| 226     GrGLVertexProgramEffectsBuilder(GrGLFullShaderBuilder*, int reserveCount); | 229     GrGLVertexProgramEffectsBuilder(GrGLFullProgramBuilder*, int reserveCount); | 
| 227     virtual ~GrGLVertexProgramEffectsBuilder() { } | 230     virtual ~GrGLVertexProgramEffectsBuilder() { } | 
| 228 |  | 
| 229     virtual void emitEffect(const GrEffectStage&, | 231     virtual void emitEffect(const GrEffectStage&, | 
| 230                             const GrEffectKey&, | 232                             const GrEffectKey&, | 
| 231                             const char* outColor, | 233                             const char* outColor, | 
| 232                             const char* inColor, | 234                             const char* inColor, | 
| 233                             int stageIndex) SK_OVERRIDE; | 235                             int stageIndex) SK_OVERRIDE; | 
| 234 |  | 
| 235     /** | 236     /** | 
| 236      * Finalizes the building process and returns the effect array. After this c
     all, the builder | 237      * Finalizes the building process and returns the effect array. After this c
     all, the builder | 
| 237      * becomes invalid. | 238      * becomes invalid. | 
| 238      */ | 239      */ | 
| 239     GrGLProgramEffects* finish() { return fProgramEffects.detach(); } | 240     GrGLProgramEffects* finish() { return fProgramEffects.detach(); } | 
| 240 |  | 
| 241 private: | 241 private: | 
| 242     GrGLFullShaderBuilder*                  fBuilder; | 242     GrGLFullProgramBuilder*                 fBuilder; | 
| 243     SkAutoTDelete<GrGLVertexProgramEffects> fProgramEffects; | 243     SkAutoTDelete<GrGLVertexProgramEffects> fProgramEffects; | 
| 244 |  | 
| 245     typedef GrGLProgramEffectsBuilder INHERITED; | 244     typedef GrGLProgramEffectsBuilder INHERITED; | 
| 246 }; | 245 }; | 
| 247 | 246 | 
| 248 //////////////////////////////////////////////////////////////////////////////// | 247 //////////////////////////////////////////////////////////////////////////////// | 
| 249 | 248 | 
| 250 /** | 249 /** | 
| 251  * This is a GrGLProgramEffects implementation that does coord transforms with | 250  * This is a GrGLProgramEffects implementation that does coord transforms with | 
| 252  * the the  NV_path_rendering PathTexGen functionality. | 251  * the the  NV_path_rendering PathTexGen functionality. | 
| 253  */ | 252  */ | 
| 254 class GrGLPathTexGenProgramEffects : public GrGLProgramEffects { | 253 class GrGLPathTexGenProgramEffects : public GrGLProgramEffects { | 
| 255 public: | 254 public: | 
| 256     virtual void setData(GrGpuGL*, | 255     virtual void setData(GrGpuGL*, | 
| 257                          const GrGLProgramDataManager&, | 256                          const GrGLProgramDataManager&, | 
| 258                          const GrEffectStage* effectStages[]) SK_OVERRIDE; | 257                          const GrEffectStage* effectStages[]) SK_OVERRIDE; | 
| 259 | 258 | 
| 260 private: | 259 private: | 
| 261     friend class GrGLPathTexGenProgramEffectsBuilder; | 260     friend class GrGLFragmentOnlyProgramBuilder; | 
| 262 | 261 | 
| 263     GrGLPathTexGenProgramEffects(int reserveCount) | 262     GrGLPathTexGenProgramEffects(int reserveCount) | 
| 264         : INHERITED(reserveCount) | 263         : INHERITED(reserveCount) | 
| 265         , fTransforms(reserveCount) { | 264         , fTransforms(reserveCount) { | 
| 266     } | 265     } | 
| 267 | 266 | 
| 268     /** | 267     /** | 
| 269      * Helper for GrGLProgramEffectsBuilder::emitEfffect(). This method is meant
      to only be called | 268      * This method is meant to only be called during the construction phase. | 
| 270      * during the construction phase. |  | 
| 271      */ | 269      */ | 
| 272     void emitEffect(GrGLFragmentOnlyShaderBuilder*, | 270     void emitEffect(GrGLFragmentOnlyProgramBuilder*, | 
| 273                     const GrEffectStage&, | 271                     const GrEffectStage&, | 
| 274                     const GrEffectKey&, | 272                     const GrEffectKey&, | 
| 275                     const char* outColor, | 273                     const char* outColor, | 
| 276                     const char* inColor, | 274                     const char* inColor, | 
| 277                     int stageIndex); | 275                     int stageIndex); | 
| 278 | 276 | 
| 279     /** | 277     /** | 
| 280      * Helper for emitEffect(). Allocates texture units from the builder for eac
     h transform in an | 278      * Helper for emitEffect(). Allocates texture units from the builder for eac
     h transform in an | 
| 281      * effect. The transforms all use adjacent texture units. They either use tw
     o or three of the | 279      * effect. The transforms all use adjacent texture units. They either use tw
     o or three of the | 
| 282      * coordinates at a given texture unit, depending on if they need perspectiv
     e interpolation. | 280      * coordinates at a given texture unit, depending on if they need perspectiv
     e interpolation. | 
| 283      * The expressions to access the transformed coords (i.e. 'vec2(gl_TexCoord[
     0])') as well as the | 281      * The expressions to access the transformed coords (i.e. 'vec2(gl_TexCoord[
     0])') as well as the | 
| 284      * types are appended to the TransformedCoordsArray* object, which is in tur
     n passed to the | 282      * types are appended to the TransformedCoordsArray* object, which is in tur
     n passed to the | 
| 285      * effect's emitCode() function. | 283      * effect's emitCode() function. | 
| 286      */ | 284      */ | 
| 287     void setupPathTexGen(GrGLFragmentOnlyShaderBuilder*, | 285     void setupPathTexGen(GrGLFragmentOnlyProgramBuilder*, | 
| 288                          const GrDrawEffect&, | 286                          const GrDrawEffect&, | 
| 289                          TransformedCoordsArray*); | 287                          TransformedCoordsArray*); | 
| 290 | 288 | 
| 291     /** | 289     /** | 
| 292      * Helper for setData(). Sets the PathTexGen state for each transform in an 
     effect. | 290      * Helper for setData(). Sets the PathTexGen state for each transform in an 
     effect. | 
| 293      */ | 291      */ | 
| 294     void setPathTexGenState(GrGpuGL*, const GrDrawEffect&, int effectIdx); | 292     void setPathTexGenState(GrGpuGL*, const GrDrawEffect&, int effectIdx); | 
| 295 | 293 | 
| 296     struct Transforms { | 294     struct Transforms { | 
| 297         Transforms(uint32_t transformKey, int texCoordIndex) | 295         Transforms(uint32_t transformKey, int texCoordIndex) | 
| 298             : fTransformKey(transformKey), fTexCoordIndex(texCoordIndex) {} | 296             : fTransformKey(transformKey), fTexCoordIndex(texCoordIndex) {} | 
| 299         uint32_t    fTransformKey; | 297         uint32_t    fTransformKey; | 
| 300         int         fTexCoordIndex; | 298         int         fTexCoordIndex; | 
| 301     }; | 299     }; | 
| 302 | 300 | 
| 303     SkTArray<Transforms> fTransforms; | 301     SkTArray<Transforms> fTransforms; | 
| 304 | 302 | 
|  | 303     friend class GrGLPathTexGenProgramEffectsBuilder; | 
| 305     typedef GrGLProgramEffects INHERITED; | 304     typedef GrGLProgramEffects INHERITED; | 
| 306 }; | 305 }; | 
| 307 | 306 | 
| 308 /** | 307 /** | 
| 309  * This class is used to construct a GrGLPathTexGenProgramEffects* object. | 308  * This class is used to construct a GrGLPathTexGenProgramEffects* object. | 
| 310  */ | 309  */ | 
| 311 class GrGLPathTexGenProgramEffectsBuilder : public GrGLProgramEffectsBuilder { | 310 class GrGLPathTexGenProgramEffectsBuilder : public GrGLProgramEffectsBuilder { | 
| 312 public: | 311 public: | 
| 313     GrGLPathTexGenProgramEffectsBuilder(GrGLFragmentOnlyShaderBuilder*, int rese
     rveCount); | 312     GrGLPathTexGenProgramEffectsBuilder(GrGLFragmentOnlyProgramBuilder*, int res
     erveCount); | 
| 314     virtual ~GrGLPathTexGenProgramEffectsBuilder() { } | 313     virtual ~GrGLPathTexGenProgramEffectsBuilder() { } | 
| 315 |  | 
| 316     virtual void emitEffect(const GrEffectStage&, | 314     virtual void emitEffect(const GrEffectStage&, | 
| 317                             const GrEffectKey&, | 315                             const GrEffectKey&, | 
| 318                             const char* outColor, | 316                             const char* outColor, | 
| 319                             const char* inColor, | 317                             const char* inColor, | 
| 320                             int stageIndex) SK_OVERRIDE; | 318                             int stageIndex) SK_OVERRIDE; | 
| 321 |  | 
| 322     /** | 319     /** | 
| 323      * Finalizes the building process and returns the effect array. After this c
     all, the builder | 320      * Finalizes the building process and returns the effect array. After this c
     all, the builder | 
| 324      * becomes invalid. | 321      * becomes invalid. | 
| 325      */ | 322      */ | 
| 326     GrGLProgramEffects* finish() { return fProgramEffects.detach(); } | 323     GrGLProgramEffects* finish() { return fProgramEffects.detach(); } | 
| 327 |  | 
| 328 private: | 324 private: | 
| 329     GrGLFragmentOnlyShaderBuilder*          fBuilder; | 325     GrGLFragmentOnlyProgramBuilder*          fBuilder; | 
| 330     SkAutoTDelete<GrGLPathTexGenProgramEffects> fProgramEffects; | 326     SkAutoTDelete<GrGLPathTexGenProgramEffects> fProgramEffects; | 
| 331 |  | 
| 332     typedef GrGLProgramEffectsBuilder INHERITED; | 327     typedef GrGLProgramEffectsBuilder INHERITED; | 
| 333 }; | 328 }; | 
| 334 | 329 | 
|  | 330 | 
| 335 #endif | 331 #endif | 
| OLD | NEW | 
|---|