X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fresolve.cpp;h=c03ecae08c80d5bbe9be4c942a8379482b2bbe14;hb=6306d2f7018fe9aab3600b49332397d70306ef11;hp=c12a0f48cd389997a95da283b0bd583b6867729f;hpb=e9a898f315b5d1396f196d785913a283c30940f2;p=libs%2Fgl.git diff --git a/source/glsl/resolve.cpp b/source/glsl/resolve.cpp index c12a0f48..c03ecae0 100644 --- a/source/glsl/resolve.cpp +++ b/source/glsl/resolve.cpp @@ -17,12 +17,6 @@ void BlockHierarchyResolver::enter(Block &block) } -TypeResolver::TypeResolver(): - stage(0), - iface_block(0), - r_any_resolved(false) -{ } - bool TypeResolver::apply(Stage &s) { stage = &s; @@ -151,13 +145,6 @@ void TypeResolver::visit(FunctionDeclaration &func) } -VariableResolver::VariableResolver(): - stage(0), - r_any_resolved(false), - record_target(false), - r_self_referencing(false) -{ } - bool VariableResolver::apply(Stage &s) { stage = &s; @@ -311,7 +298,7 @@ void VariableResolver::visit(MemberAccess &memacc) static const char component_names[] = { 'x', 'r', 's', 'y', 'g', 't', 'z', 'b', 'p', 'w', 'a', 'q' }; bool ok = true; - UInt8 components[4] = { }; + uint8_t components[4] = { }; for(unsigned i=0; (ok && iparent && ptr->interface==var.interface && ptr->type==var.type) { if(ptr->source==BUILTIN_SOURCE) - redeclared_builtins.push_back(&var); - else - stage->diagnostics.push_back(Diagnostic(Diagnostic::WARN, var.source, var.line, - format("Redeclaring non-builtin variable '%s' is deprecated", var.name))); + { + redeclared_builtins.push_back(ptr); - if(var.init_expression) - ptr->init_expression = var.init_expression; - if(var.layout) + if(var.layout) + { + if(ptr->layout) + merge_layouts(*ptr->layout, *var.layout); + else + ptr->layout = var.layout; + } + if(var.array_size) + ptr->array_size = var.array_size; + + nodes_to_remove.insert(&var); + r_any_resolved = true; + } + else if(ptr->array && !ptr->array_size && !var.layout && !var.init_expression) { - if(ptr->layout) - merge_layouts(*ptr->layout, *var.layout); - else - ptr->layout = var.layout; + ptr->array_size = var.array_size; + nodes_to_remove.insert(&var); + r_any_resolved = true; } - nodes_to_remove.insert(&var); - - r_any_resolved = true; } } @@ -444,11 +436,6 @@ void VariableResolver::visit(InterfaceBlock &iface) } -ExpressionResolver::ExpressionResolver(): - stage(0), - r_any_resolved(false) -{ } - bool ExpressionResolver::apply(Stage &s) { stage = &s;