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

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

Issue 14633007: Key shader on whether frag pos read is relative to top-left or bottom-left (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: address comments Created 7 years, 7 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/GrGLProgramDesc.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 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 const char* body, 186 const char* body,
187 SkString* outName); 187 SkString* outName);
188 188
189 /** Generates a EffectKey for the shader code based on the texture access pa rameters and the 189 /** Generates a EffectKey for the shader code based on the texture access pa rameters and the
190 capabilities of the GL context. This is useful for keying the shader pr ograms that may 190 capabilities of the GL context. This is useful for keying the shader pr ograms that may
191 have multiple representations, based on the type/format of textures used . */ 191 have multiple representations, based on the type/format of textures used . */
192 static GrBackendEffectFactory::EffectKey KeyForTextureAccess(const GrTexture Access&, 192 static GrBackendEffectFactory::EffectKey KeyForTextureAccess(const GrTexture Access&,
193 const GrGLCaps& ); 193 const GrGLCaps& );
194 194
195 typedef uint8_t DstReadKey; 195 typedef uint8_t DstReadKey;
196 typedef uint8_t FragPosKey;
196 197
197 /** Returns a key for adding code to read the copy-of-dst color in service of effects that 198 /** Returns a key for adding code to read the copy-of-dst color in service of effects that
198 require reading the dst. It must not return 0 because 0 indicates that there is no dst 199 require reading the dst. It must not return 0 because 0 indicates that there is no dst
199 copy read at all. */ 200 copy read at all (in which case this function should not be called). */
200 static DstReadKey KeyForDstRead(const GrTexture* dstCopy, const GrGLCaps&); 201 static DstReadKey KeyForDstRead(const GrTexture* dstCopy, const GrGLCaps&);
201 202
203 /** Returns a key for reading the fragment location. This should only be cal led if there is an
204 effect that will requires the fragment position. If the fragment positio n is not required,
205 the key is 0. */
206 static FragPosKey KeyForFragmentPosition(const GrRenderTarget* dst, const Gr GLCaps&);
207
202 /** If texture swizzling is available using tex parameters then it is prefer red over mangling 208 /** If texture swizzling is available using tex parameters then it is prefer red over mangling
203 the generated shader code. This potentially allows greater reuse of cach ed shaders. */ 209 the generated shader code. This potentially allows greater reuse of cach ed shaders. */
204 static const GrGLenum* GetTexParamSwizzle(GrPixelConfig config, const GrGLCa ps& caps); 210 static const GrGLenum* GetTexParamSwizzle(GrPixelConfig config, const GrGLCa ps& caps);
205 211
206 /** Add a uniform variable to the current program, that has visibility in on e or more shaders. 212 /** Add a uniform variable to the current program, that has visibility in on e or more shaders.
207 visibility is a bitfield of ShaderType values indicating from which shad ers the uniform 213 visibility is a bitfield of ShaderType values indicating from which shad ers the uniform
208 should be accessible. At least one bit must be set. Geometry shader unif orms are not 214 should be accessible. At least one bit must be set. Geometry shader unif orms are not
209 supported at this time. The actual uniform name will be mangled. If outN ame is not NULL then 215 supported at this time. The actual uniform name will be mangled. If outN ame is not NULL then
210 it will refer to the final uniform name after return. Use the addUniform Array variant to add 216 it will refer to the final uniform name after return. Use the addUniform Array variant to add
211 an array of uniforms. 217 an array of uniforms.
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 void nameVariable(SkString* out, char prefix, const char* name); 423 void nameVariable(SkString* out, char prefix, const char* name);
418 424
419 // Interpretation of DstReadKey when generating code 425 // Interpretation of DstReadKey when generating code
420 enum { 426 enum {
421 kNoDstRead_DstReadKey = 0, 427 kNoDstRead_DstReadKey = 0,
422 kYesDstRead_DstReadKeyBit = 0x1, // Set if we do a dst-copy-read. 428 kYesDstRead_DstReadKeyBit = 0x1, // Set if we do a dst-copy-read.
423 kUseAlphaConfig_DstReadKeyBit = 0x2, // Set if dst-copy config is alpha only. 429 kUseAlphaConfig_DstReadKeyBit = 0x2, // Set if dst-copy config is alpha only.
424 kTopLeftOrigin_DstReadKeyBit = 0x4, // Set if dst-copy origin is top-le ft. 430 kTopLeftOrigin_DstReadKeyBit = 0x4, // Set if dst-copy origin is top-le ft.
425 }; 431 };
426 432
433 enum {
434 kNoFragPosRead_FragPosKey = 0, // The fragment positition wil l not be needed.
435 kTopLeftFragPosRead_FragPosKey = 0x1,// Read frag pos relative to t op-left.
436 kBottomLeftFragPosRead_FragPosKey = 0x2,// Read frag pos relative to b ottom-left.
437 };
438
427 const GrGLContextInfo& fCtxInfo; 439 const GrGLContextInfo& fCtxInfo;
428 GrGLUniformManager& fUniformManager; 440 GrGLUniformManager& fUniformManager;
429 uint32_t fFSFeaturesAddedMask; 441 uint32_t fFSFeaturesAddedMask;
430 SkString fFSFunctions; 442 SkString fFSFunctions;
431 SkString fFSExtensions; 443 SkString fFSExtensions;
432 444
433 bool fUsesGS; 445 bool fUsesGS;
434 446
435 SkString fFSCode; 447 SkString fFSCode;
436 SkString fVSCode; 448 SkString fVSCode;
437 SkString fGSCode; 449 SkString fGSCode;
438 450
439 bool fSetupFragPosition; 451 bool fSetupFragPosition;
440 TextureSampler fDstCopySampler; 452 TextureSampler fDstCopySampler;
441 453
442 GrGLUniformManager::UniformHandle fRTHeightUniform; 454 GrGLUniformManager::UniformHandle fRTHeightUniform;
443 GrGLUniformManager::UniformHandle fDstCopyTopLeftUniform; 455 GrGLUniformManager::UniformHandle fDstCopyTopLeftUniform;
444 GrGLUniformManager::UniformHandle fDstCopyScaleUniform; 456 GrGLUniformManager::UniformHandle fDstCopyScaleUniform;
445 457
458 bool fTopLeftFragPosRead;
459
446 SkSTArray<10, AttributePair, true> fEffectAttributes; 460 SkSTArray<10, AttributePair, true> fEffectAttributes;
447 461
448 GrGLShaderVar* fPositionVar; 462 GrGLShaderVar* fPositionVar;
449 GrGLShaderVar* fLocalCoordsVar; 463 GrGLShaderVar* fLocalCoordsVar;
450 464
451 }; 465 };
452 466
453 #endif 467 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLProgramDesc.cpp ('k') | src/gpu/gl/GrGLShaderBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698