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

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

Issue 1114813002: Add layout qualifiers to GrGLShaderBuilder (Closed) Base URL: https://skia.googlesource.com/skia.git@upload_zzz2_texbar
Patch Set: rebase Created 5 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
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 void appendTextureLookup(const char* samplerName, 132 void appendTextureLookup(const char* samplerName,
133 const char* coordName, 133 const char* coordName,
134 uint32_t configComponentMask, 134 uint32_t configComponentMask,
135 const char* swizzle); 135 const char* swizzle);
136 136
137 /* 137 /*
138 * A general function which enables an extension in a shader if the feature bit is not present 138 * A general function which enables an extension in a shader if the feature bit is not present
139 */ 139 */
140 void addFeature(uint32_t featureBit, const char* extensionName); 140 void addFeature(uint32_t featureBit, const char* extensionName);
141 141
142 enum InterfaceQualifier {
143 kOut_InterfaceQualifier,
144 kLastInterfaceQualifier = kOut_InterfaceQualifier
145 };
146
147 /*
148 * A low level function to build default layout qualifiers.
149 *
150 * e.g. layout(param1, param2, ...) out;
151 *
152 * GLSL allows default layout qualifiers for in, out, and uniform.
153 */
154 void addLayoutQualifier(const char* param, InterfaceQualifier);
155
156 void compileAndAppendLayoutQualifiers();
157
142 void nextStage() { 158 void nextStage() {
143 fShaderStrings.push_back(); 159 fShaderStrings.push_back();
144 fCompilerStrings.push_back(this->code().c_str()); 160 fCompilerStrings.push_back(this->code().c_str());
145 fCompilerStringLengths.push_back((int)this->code().size()); 161 fCompilerStringLengths.push_back((int)this->code().size());
146 fCodeIndex++; 162 fCodeIndex++;
147 } 163 }
148 164
149 SkString& versionDecl() { return fShaderStrings[kVersionDecl]; } 165 SkString& versionDecl() { return fShaderStrings[kVersionDecl]; }
150 SkString& extensions() { return fShaderStrings[kExtensions]; } 166 SkString& extensions() { return fShaderStrings[kExtensions]; }
151 SkString& precisionQualifier() { return fShaderStrings[kPrecisionQualifier]; } 167 SkString& precisionQualifier() { return fShaderStrings[kPrecisionQualifier]; }
168 SkString& layoutQualifiers() { return fShaderStrings[kLayoutQualifiers]; }
152 SkString& uniforms() { return fShaderStrings[kUniforms]; } 169 SkString& uniforms() { return fShaderStrings[kUniforms]; }
153 SkString& inputs() { return fShaderStrings[kInputs]; } 170 SkString& inputs() { return fShaderStrings[kInputs]; }
154 SkString& outputs() { return fShaderStrings[kOutputs]; } 171 SkString& outputs() { return fShaderStrings[kOutputs]; }
155 SkString& functions() { return fShaderStrings[kFunctions]; } 172 SkString& functions() { return fShaderStrings[kFunctions]; }
156 SkString& main() { return fShaderStrings[kMain]; } 173 SkString& main() { return fShaderStrings[kMain]; }
157 SkString& code() { return fShaderStrings[fCodeIndex]; } 174 SkString& code() { return fShaderStrings[fCodeIndex]; }
158 bool finalize(GrGLuint programId, GrGLenum type, SkTDArray<GrGLuint>* shader Ids); 175 bool finalize(GrGLuint programId, GrGLenum type, SkTDArray<GrGLuint>* shader Ids);
159 176
160 enum { 177 enum {
161 kVersionDecl, 178 kVersionDecl,
162 kExtensions, 179 kExtensions,
163 kPrecisionQualifier, 180 kPrecisionQualifier,
181 kLayoutQualifiers,
164 kUniforms, 182 kUniforms,
165 kInputs, 183 kInputs,
166 kOutputs, 184 kOutputs,
167 kFunctions, 185 kFunctions,
168 kMain, 186 kMain,
169 kCode, 187 kCode,
170 }; 188 };
171 189
172 GrGLProgramBuilder* fProgramBuilder; 190 GrGLProgramBuilder* fProgramBuilder;
173 SkSTArray<kCode, const char*, true> fCompilerStrings; 191 SkSTArray<kCode, const char*, true> fCompilerStrings;
174 SkSTArray<kCode, int, true> fCompilerStringLengths; 192 SkSTArray<kCode, int, true> fCompilerStringLengths;
175 SkSTArray<kCode, SkString> fShaderStrings; 193 SkSTArray<kCode, SkString> fShaderStrings;
176 SkString fCode; 194 SkString fCode;
177 SkString fFunctions; 195 SkString fFunctions;
178 SkString fExtensions; 196 SkString fExtensions;
179 197
180 VarArray fInputs; 198 VarArray fInputs;
181 VarArray fOutputs; 199 VarArray fOutputs;
182 uint32_t fFeaturesAddedMask; 200 uint32_t fFeaturesAddedMask;
201 SkSTArray<1, SkString> fLayoutParams[kLastInterfaceQualifier + 1];
183 int fCodeIndex; 202 int fCodeIndex;
184 bool fFinalized; 203 bool fFinalized;
185 204
186 friend class GrGLProgramBuilder; 205 friend class GrGLProgramBuilder;
187 }; 206 };
188 #endif 207 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp ('k') | src/gpu/gl/builders/GrGLShaderBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698