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

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

Issue 12668019: Make GrGLShaderBuilder responsible for enabling GLSL extensions (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: sync to TOT Created 7 years, 8 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/GrGLSL.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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 100
101 enum ShaderType { 101 enum ShaderType {
102 kVertex_ShaderType = 0x1, 102 kVertex_ShaderType = 0x1,
103 kGeometry_ShaderType = 0x2, 103 kGeometry_ShaderType = 0x2,
104 kFragment_ShaderType = 0x4, 104 kFragment_ShaderType = 0x4,
105 }; 105 };
106 106
107 GrGLShaderBuilder(const GrGLContextInfo&, GrGLUniformManager&, const GrGLPro gramDesc&); 107 GrGLShaderBuilder(const GrGLContextInfo&, GrGLUniformManager&, const GrGLPro gramDesc&);
108 108
109 /** 109 /**
110 * Use of these features may require a GLSL extension to be enabled. Shaders may not compile
111 * if code is added that uses one of these features without calling enableFe ature()
112 */
113 enum GLSLFeature {
114 kStandardDerivatives_GLSLFeature = 0,
115
116 kLastGLSLFeature = kStandardDerivatives_GLSLFeature
117 };
118
119 /**
120 * If the feature is supported then true is returned and any necessary #exte nsion declarations
121 * are added to the shaders. If the feature is not supported then false will be returned.
122 */
123 bool enableFeature(GLSLFeature);
124
125 /**
110 * Called by GrGLEffects to add code to one of the shaders. 126 * Called by GrGLEffects to add code to one of the shaders.
111 */ 127 */
112 void vsCodeAppendf(const char format[], ...) SK_PRINTF_LIKE(2, 3) { 128 void vsCodeAppendf(const char format[], ...) SK_PRINTF_LIKE(2, 3) {
113 va_list args; 129 va_list args;
114 va_start(args, format); 130 va_start(args, format);
115 this->codeAppendf(kVertex_ShaderType, format, args); 131 this->codeAppendf(kVertex_ShaderType, format, args);
116 va_end(args); 132 va_end(args);
117 } 133 }
118 134
119 void gsCodeAppendf(const char format[], ...) SK_PRINTF_LIKE(2, 3) { 135 void gsCodeAppendf(const char format[], ...) SK_PRINTF_LIKE(2, 3) {
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 322
307 void appendDecls(const VarArray&, SkString*) const; 323 void appendDecls(const VarArray&, SkString*) const;
308 void appendUniformDecls(ShaderType, SkString*) const; 324 void appendUniformDecls(ShaderType, SkString*) const;
309 325
310 typedef GrGLUniformManager::BuilderUniform BuilderUniform; 326 typedef GrGLUniformManager::BuilderUniform BuilderUniform;
311 GrGLUniformManager::BuilderUniformArray fUniforms; 327 GrGLUniformManager::BuilderUniformArray fUniforms;
312 328
313 // TODO: Everything below here private. 329 // TODO: Everything below here private.
314 public: 330 public:
315 331
316 SkString fHeader; // VS+FS, GLSL version, etc
317 VarArray fVSAttrs; 332 VarArray fVSAttrs;
318 VarArray fVSOutputs; 333 VarArray fVSOutputs;
319 VarArray fGSInputs; 334 VarArray fGSInputs;
320 VarArray fGSOutputs; 335 VarArray fGSOutputs;
321 VarArray fFSInputs; 336 VarArray fFSInputs;
322 SkString fGSHeader; // layout qualifiers specific to GS 337 SkString fGSHeader; // layout qualifiers specific to GS
323 VarArray fFSOutputs; 338 VarArray fFSOutputs;
324 339
325 private: 340 private:
326 enum { 341 enum {
327 kNonStageIdx = -1, 342 kNonStageIdx = -1,
328 }; 343 };
329 344
345 /**
346 * Features that should only be enabled by GrGLShaderBuilder itself.
347 */
348 enum GLSLPrivateFeature {
349 kFragCoordConventions_GLSLPrivateFeature = kLastGLSLFeature + 1
350 };
351 bool enablePrivateFeature(GLSLPrivateFeature);
352
353 // If we ever have VS/GS features we can expand this to take a bitmask of Sh aderType and track
354 // the enables separately for each shader.
355 void addFSFeature(uint32_t featureBit, const char* extensionName);
356
330 // Interpretation of DstReadKey when generating code 357 // Interpretation of DstReadKey when generating code
331 enum { 358 enum {
332 kNoDstRead_DstReadKey = 0, 359 kNoDstRead_DstReadKey = 0,
333 kYesDstRead_DstReadKeyBit = 0x1, // Set if we do a dst-copy-read. 360 kYesDstRead_DstReadKeyBit = 0x1, // Set if we do a dst-copy-read.
334 kUseAlphaConfig_DstReadKeyBit = 0x2, // Set if dst-copy config is alpha only. 361 kUseAlphaConfig_DstReadKeyBit = 0x2, // Set if dst-copy config is alpha only.
335 kTopLeftOrigin_DstReadKeyBit = 0x4, // Set if dst-copy origin is top-le ft. 362 kTopLeftOrigin_DstReadKeyBit = 0x4, // Set if dst-copy origin is top-le ft.
336 }; 363 };
337 364
338 const GrGLContextInfo& fCtxInfo; 365 const GrGLContextInfo& fCtxInfo;
339 GrGLUniformManager& fUniformManager; 366 GrGLUniformManager& fUniformManager;
340 int fCurrentStageIdx; 367 int fCurrentStageIdx;
368 uint32_t fFSFeaturesAddedMask;
341 SkString fFSFunctions; 369 SkString fFSFunctions;
342 SkString fFSHeader; 370 SkString fFSHeader;
343 371
344 bool fUsesGS; 372 bool fUsesGS;
345 373
346 SkString fFSCode; 374 SkString fFSCode;
347 SkString fVSCode; 375 SkString fVSCode;
348 SkString fGSCode; 376 SkString fGSCode;
349 377
350 bool fSetupFragPosition; 378 bool fSetupFragPosition;
351 TextureSampler fDstCopySampler; 379 TextureSampler fDstCopySampler;
352 380
353 GrGLUniformManager::UniformHandle fRTHeightUniform; 381 GrGLUniformManager::UniformHandle fRTHeightUniform;
354 GrGLUniformManager::UniformHandle fDstCopyTopLeftUniform; 382 GrGLUniformManager::UniformHandle fDstCopyTopLeftUniform;
355 GrGLUniformManager::UniformHandle fDstCopyScaleUniform; 383 GrGLUniformManager::UniformHandle fDstCopyScaleUniform;
356 384
357 SkSTArray<10, AttributePair, true> fEffectAttributes; 385 SkSTArray<10, AttributePair, true> fEffectAttributes;
358 386
359 GrGLShaderVar* fPositionVar; 387 GrGLShaderVar* fPositionVar;
360 GrGLShaderVar* fLocalCoordsVar; 388 GrGLShaderVar* fLocalCoordsVar;
361 389
362 }; 390 };
363 391
364 #endif 392 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLSL.cpp ('k') | src/gpu/gl/GrGLShaderBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698