MCPcopy Create free account
hub / github.com/dfranx/ShaderDebugger / translateGlobalVariable

Method translateGlobalVariable

src/GLSLCompiler.cpp:216–283  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

214 }
215
216 void GLSLCompiler::translateGlobalVariable(glsl::astGlobalVariable *variable) {
217 m_globals.push_back(Variable());
218
219 Variable& var = m_globals[m_globals.size()-1];
220
221 // layout qualifiers
222 glsl::vector<glsl::astLayoutQualifier*> &qualifiers = variable->layoutQualifiers;
223 if (variable->layoutQualifiers.size()) {
224 for (size_t i = 0; i < qualifiers.size(); i++) {
225 glsl::astLayoutQualifier *qualifier = qualifiers[i];
226 if (qualifier->initialValue->type == glsl::astExpression::kIntConstant) {
227
228 // TODO: save other layout qualifiers too
229 if (strcmp(qualifier->name, "location") == 0)
230 var.InputSlot = ((glsl::astIntConstant*)qualifier->initialValue)->value;
231 // printf("[DEBUG] Setting layout qualifier...\n");
232 }
233 }
234 }
235
236 var.IsArray = variable->isArray;
237 var.Smooth = false;
238 var.Flat = false;
239 var.NoPerspective = false;
240 switch (variable->interpolation) {
241 case glsl::kSmooth:
242 var.Smooth = true;
243 break;
244 case glsl::kFlat:
245 var.Flat = true;
246 break;
247 case glsl::kNoPerspective:
248 var.NoPerspective = true;
249 break;
250 }
251
252 switch (variable->storage) {
253 case glsl::kConst: var.Storage = Variable::StorageType::Constant; break;
254 case glsl::kIn: var.Storage = Variable::StorageType::In; break;
255 case glsl::kOut: var.Storage = Variable::StorageType::Out; break;
256 case glsl::kAttribute: var.Storage = Variable::StorageType::Attribute; break;
257 case glsl::kUniform: var.Storage = Variable::StorageType::Uniform; break;
258 case glsl::kVarying: var.Storage = Variable::StorageType::Varying; break;
259 case glsl::kBuffer: var.Storage = Variable::StorageType::Buffer; break;
260 case glsl::kShared: var.Storage = Variable::StorageType::Shared; break;
261 }
262
263
264 glsl::astVariable* varData = (glsl::astVariable*)variable;
265 var.Name = varData->name;
266 if (variable->baseType->builtin)
267 var.Type = kTypes[((glsl::astBuiltin*)variable->baseType)->type];
268 else
269 var.Type = ((glsl::astStruct*)variable->baseType)->name;
270
271 if (isTypeActuallyStruct(var.Type))
272 m_initObjsInMain[var.Name] = var.Type;
273

Callers

nothing calls this directly

Calls 3

VariableClass · 0.85
sizeMethod · 0.80
AddGlobalMethod · 0.80

Tested by

no test coverage detected