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

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

Issue 25023003: Implement color filter as GrGLEffect (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: address review comments Created 7 years, 1 month 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/GrGLSL_impl.h ('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 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 is in device space (e.g. 0,0 is the top left and pixel centers are at ha lf-integers). */ 161 is in device space (e.g. 0,0 is the top left and pixel centers are at ha lf-integers). */
162 const char* fragmentPosition(); 162 const char* fragmentPosition();
163 163
164 /** Returns the color of the destination pixel. This may be NULL if no effec t advertised 164 /** Returns the color of the destination pixel. This may be NULL if no effec t advertised
165 that it will read the destination. */ 165 that it will read the destination. */
166 const char* dstColor(); 166 const char* dstColor();
167 167
168 /** 168 /**
169 * Interfaces used by GrGLProgram. 169 * Interfaces used by GrGLProgram.
170 */ 170 */
171 const GrGLSLExpr<4>& getInputColor() const { 171 const GrGLSLExpr4& getInputColor() const {
172 return fInputColor; 172 return fInputColor;
173 } 173 }
174 const GrGLSLExpr<4>& getInputCoverage() const { 174 const GrGLSLExpr4& getInputCoverage() const {
175 return fInputCoverage; 175 return fInputCoverage;
176 } 176 }
177 177
178 /** 178 /**
179 * Adds code for effects and returns a GrGLProgramEffects* object. The calle r is responsible for 179 * Adds code for effects and returns a GrGLProgramEffects* object. The calle r is responsible for
180 * deleting it when finished. effectStages contains the effects to add. effe ctKeys[i] is the key 180 * deleting it when finished. effectStages contains the effects to add. effe ctKeys[i] is the key
181 * generated from effectStages[i]. inOutFSColor specifies the input color to the first stage and 181 * generated from effectStages[i]. inOutFSColor specifies the input color to the first stage and
182 * is updated to be the output color of the last stage. 182 * is updated to be the output color of the last stage.
183 * The handles to texture samplers for effectStage[i] are added to 183 * The handles to texture samplers for effectStage[i] are added to
184 * effectSamplerHandles[i]. 184 * effectSamplerHandles[i].
185 */ 185 */
186 virtual GrGLProgramEffects* createAndEmitEffects(const GrEffectStage* effect Stages[], 186 virtual GrGLProgramEffects* createAndEmitEffects(const GrEffectStage* effect Stages[],
187 const EffectKey effectKeys[ ], 187 const EffectKey effectKeys[ ],
188 int effectCnt, 188 int effectCnt,
189 GrGLSLExpr<4>* inOutFSColor ) = 0; 189 GrGLSLExpr4* inOutFSColor) = 0;
190 190
191 const char* getColorOutputName() const; 191 const char* getColorOutputName() const;
192 const char* enableSecondaryOutput(); 192 const char* enableSecondaryOutput();
193 193
194 GrGLUniformManager::UniformHandle getRTHeightUniform() const { return fRTHei ghtUniform; } 194 GrGLUniformManager::UniformHandle getRTHeightUniform() const { return fRTHei ghtUniform; }
195 GrGLUniformManager::UniformHandle getDstCopyTopLeftUniform() const { 195 GrGLUniformManager::UniformHandle getDstCopyTopLeftUniform() const {
196 return fDstCopyTopLeftUniform; 196 return fDstCopyTopLeftUniform;
197 } 197 }
198 GrGLUniformManager::UniformHandle getDstCopyScaleUniform() const { 198 GrGLUniformManager::UniformHandle getDstCopyScaleUniform() const {
199 return fDstCopyScaleUniform; 199 return fDstCopyScaleUniform;
200 } 200 }
201 GrGLUniformManager::UniformHandle getColorUniform() const { return fColorUni form; } 201 GrGLUniformManager::UniformHandle getColorUniform() const { return fColorUni form; }
202 GrGLUniformManager::UniformHandle getCoverageUniform() const { return fCover ageUniform; } 202 GrGLUniformManager::UniformHandle getCoverageUniform() const { return fCover ageUniform; }
203 GrGLUniformManager::UniformHandle getDstCopySamplerUniform() const { 203 GrGLUniformManager::UniformHandle getDstCopySamplerUniform() const {
204 return fDstCopySamplerUniform; 204 return fDstCopySamplerUniform;
205 } 205 }
206 206
207 bool finish(GrGLuint* outProgramId); 207 bool finish(GrGLuint* outProgramId);
208 208
209 const GrGLContextInfo& ctxInfo() const; 209 const GrGLContextInfo& ctxInfo() const;
210 210
211 protected: 211 protected:
212 GrGpuGL* gpu() const { return fGpu; } 212 GrGpuGL* gpu() const { return fGpu; }
213 213
214 void setInputColor(const GrGLSLExpr<4>& inputColor) { fInputColor = inputCol or; } 214 void setInputColor(const GrGLSLExpr4& inputColor) { fInputColor = inputColor ; }
215 void setInputCoverage(const GrGLSLExpr<4>& inputCoverage) { fInputCoverage = inputCoverage; } 215 void setInputCoverage(const GrGLSLExpr4& inputCoverage) { fInputCoverage = i nputCoverage; }
216 216
217 /** Add input/output variable declarations (i.e. 'varying') to the fragment shader. */ 217 /** Add input/output variable declarations (i.e. 'varying') to the fragment shader. */
218 GrGLShaderVar& fsInputAppend() { return fFSInputs.push_back(); } 218 GrGLShaderVar& fsInputAppend() { return fFSInputs.push_back(); }
219 219
220 // Generates a name for a variable. The generated string will be name prefix ed by the prefix 220 // Generates a name for a variable. The generated string will be name prefix ed by the prefix
221 // char (unless the prefix is '\0'). It also mangles the name to be stage-sp ecific if we're 221 // char (unless the prefix is '\0'). It also mangles the name to be stage-sp ecific if we're
222 // generating stage code. 222 // generating stage code.
223 void nameVariable(SkString* out, char prefix, const char* name); 223 void nameVariable(SkString* out, char prefix, const char* name);
224 224
225 // Helper for emitEffects(). 225 // Helper for emitEffects().
226 void createAndEmitEffects(GrGLProgramEffectsBuilder*, 226 void createAndEmitEffects(GrGLProgramEffectsBuilder*,
227 const GrEffectStage* effectStages[], 227 const GrEffectStage* effectStages[],
228 const EffectKey effectKeys[], 228 const EffectKey effectKeys[],
229 int effectCnt, 229 int effectCnt,
230 GrGLSLExpr<4>* inOutFSColor); 230 GrGLSLExpr4* inOutFSColor);
231 231
232 virtual bool compileAndAttachShaders(GrGLuint programId) const; 232 virtual bool compileAndAttachShaders(GrGLuint programId) const;
233 virtual void bindProgramLocations(GrGLuint programId) const; 233 virtual void bindProgramLocations(GrGLuint programId) const;
234 234
235 void appendDecls(const VarArray&, SkString*) const; 235 void appendDecls(const VarArray&, SkString*) const;
236 void appendUniformDecls(ShaderVisibility, SkString*) const; 236 void appendUniformDecls(ShaderVisibility, SkString*) const;
237 237
238 private: 238 private:
239 class CodeStage : public SkNoncopyable { 239 class CodeStage : public SkNoncopyable {
240 public: 240 public:
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 SkString fFSExtensions; 322 SkString fFSExtensions;
323 VarArray fFSInputs; 323 VarArray fFSInputs;
324 VarArray fFSOutputs; 324 VarArray fFSOutputs;
325 GrGLUniformManager::BuilderUniformArray fUniforms; 325 GrGLUniformManager::BuilderUniformArray fUniforms;
326 326
327 SkString fFSCode; 327 SkString fFSCode;
328 328
329 bool fSetupFragPosition; 329 bool fSetupFragPosition;
330 GrGLUniformManager::UniformHandle fDstCopySamplerUniform; 330 GrGLUniformManager::UniformHandle fDstCopySamplerUniform;
331 331
332 GrGLSLExpr<4> fInputColor; 332 GrGLSLExpr4 fInputColor;
333 GrGLSLExpr<4> fInputCoverage; 333 GrGLSLExpr4 fInputCoverage;
334 334
335 bool fHasCustomColorOutput; 335 bool fHasCustomColorOutput;
336 bool fHasSecondaryOutput; 336 bool fHasSecondaryOutput;
337 337
338 GrGLUniformManager::UniformHandle fRTHeightUniform; 338 GrGLUniformManager::UniformHandle fRTHeightUniform;
339 GrGLUniformManager::UniformHandle fDstCopyTopLeftUniform; 339 GrGLUniformManager::UniformHandle fDstCopyTopLeftUniform;
340 GrGLUniformManager::UniformHandle fDstCopyScaleUniform; 340 GrGLUniformManager::UniformHandle fDstCopyScaleUniform;
341 GrGLUniformManager::UniformHandle fColorUniform; 341 GrGLUniformManager::UniformHandle fColorUniform;
342 GrGLUniformManager::UniformHandle fCoverageUniform; 342 GrGLUniformManager::UniformHandle fCoverageUniform;
343 343
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 */ 389 */
390 bool hasExplicitLocalCoords() const { return (fLocalCoordsVar != fPositionVa r); } 390 bool hasExplicitLocalCoords() const { return (fLocalCoordsVar != fPositionVa r); }
391 391
392 bool addEffectAttribute(int attributeIndex, GrSLType type, const SkString& n ame); 392 bool addEffectAttribute(int attributeIndex, GrSLType type, const SkString& n ame);
393 const SkString* getEffectAttributeName(int attributeIndex) const; 393 const SkString* getEffectAttributeName(int attributeIndex) const;
394 394
395 virtual GrGLProgramEffects* createAndEmitEffects( 395 virtual GrGLProgramEffects* createAndEmitEffects(
396 const GrEffectStage* effectStages[], 396 const GrEffectStage* effectStages[],
397 const EffectKey effectKeys[], 397 const EffectKey effectKeys[],
398 int effectCnt, 398 int effectCnt,
399 GrGLSLExpr<4>* inOutFSColor) SK_OVERRIDE; 399 GrGLSLExpr4* inOutFSColor) SK_OVERRIDE;
400 400
401 GrGLUniformManager::UniformHandle getViewMatrixUniform() const { 401 GrGLUniformManager::UniformHandle getViewMatrixUniform() const {
402 return fViewMatrixUniform; 402 return fViewMatrixUniform;
403 } 403 }
404 404
405 protected: 405 protected:
406 virtual bool compileAndAttachShaders(GrGLuint programId) const SK_OVERRIDE; 406 virtual bool compileAndAttachShaders(GrGLuint programId) const SK_OVERRIDE;
407 virtual void bindProgramLocations(GrGLuint programId) const SK_OVERRIDE; 407 virtual void bindProgramLocations(GrGLuint programId) const SK_OVERRIDE;
408 408
409 private: 409 private:
(...skipping 28 matching lines...) Expand all
438 public: 438 public:
439 GrGLFragmentOnlyShaderBuilder(GrGpuGL*, GrGLUniformManager&, const GrGLProgr amDesc&); 439 GrGLFragmentOnlyShaderBuilder(GrGpuGL*, GrGLUniformManager&, const GrGLProgr amDesc&);
440 440
441 int getNumTexCoordSets() const { return fNumTexCoordSets; } 441 int getNumTexCoordSets() const { return fNumTexCoordSets; }
442 int addTexCoordSets(int count); 442 int addTexCoordSets(int count);
443 443
444 virtual GrGLProgramEffects* createAndEmitEffects( 444 virtual GrGLProgramEffects* createAndEmitEffects(
445 const GrEffectStage* effectStages[], 445 const GrEffectStage* effectStages[],
446 const EffectKey effectKeys[], 446 const EffectKey effectKeys[],
447 int effectCnt, 447 int effectCnt,
448 GrGLSLExpr<4>* inOutFSColor) SK_OVERRIDE; 448 GrGLSLExpr4* inOutFSColor) SK_OVERRIDE;
449 449
450 private: 450 private:
451 int fNumTexCoordSets; 451 int fNumTexCoordSets;
452 452
453 typedef GrGLShaderBuilder INHERITED; 453 typedef GrGLShaderBuilder INHERITED;
454 }; 454 };
455 455
456 #endif 456 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLSL_impl.h ('k') | src/gpu/gl/GrGLShaderBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698