X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fgenerate.cpp;h=4550b51c29360997e12c728208cb7c1decca0ba5;hb=59347f76bc985e8c9c769d4a3eee672cba9c920b;hp=92d172c586469f78cd17c5d338700fc68e503c00;hpb=c1b42fd479c5ca4cbab258ee0fa5c7cac319f928;p=libs%2Fgl.git diff --git a/source/glsl/generate.cpp b/source/glsl/generate.cpp index 92d172c5..4550b51c 100644 --- a/source/glsl/generate.cpp +++ b/source/glsl/generate.cpp @@ -13,12 +13,11 @@ void ConstantIdAssigner::apply(Module &module, const Features &features) for(list::iterator i=module.stages.begin(); i!=module.stages.end(); ++i) i->content.visit(*this); - unsigned max_id = features.max_constant_id; for(vector::iterator i=auto_constants.begin(); i!=auto_constants.end(); ++i) { - unsigned id = hash32((*i)->name)%(max_id+1); + unsigned id = hash32((*i)->name)%features.constant_id_range; while(used_ids.count(id)) - ++id; + id = (id+1)%features.constant_id_range; vector &qualifiers = (*i)->layout->qualifiers; for(vector::iterator j=qualifiers.begin(); j!=qualifiers.end(); ++j) @@ -135,7 +134,7 @@ VariableDeclaration *InterfaceGenerator::generate_interface(VariableDeclaration InterfaceBlock *InterfaceGenerator::generate_interface(InterfaceBlock &out_block) { - if(stage->interface_blocks.count("in"+out_block.block_name)) + if(stage->interface_blocks.count("in "+out_block.block_name)) return 0; InterfaceBlock *in_block = new InterfaceBlock; @@ -161,9 +160,9 @@ InterfaceBlock *InterfaceGenerator::generate_interface(InterfaceBlock &out_block } iface_target_block->body.insert(iface_insert_point, in_block); - stage->interface_blocks.insert(make_pair("in"+in_block->block_name, in_block)); + stage->interface_blocks.insert(make_pair("in "+in_block->block_name, in_block)); if(!in_block->instance_name.empty()) - stage->interface_blocks.insert(make_pair("_"+in_block->instance_name, in_block)); + stage->interface_blocks.insert(make_pair(in_block->instance_name, in_block)); SetFlag set_scope(function_scope, false); SetForScope set_block(current_block, &stage->content); @@ -216,7 +215,7 @@ void InterfaceGenerator::visit(VariableReference &var) } const map &prev_blocks = stage->previous->interface_blocks; - map::const_iterator j = prev_blocks.find("_"+var.name); + map::const_iterator j = prev_blocks.find(var.name); if(j!=prev_blocks.end() && j->second->interface=="out") { generate_interface(*j->second); @@ -292,7 +291,7 @@ void InterfaceGenerator::visit(InterfaceBlock &iface) if(!iface.linked_block && stage->previous) { const map &prev_blocks = stage->previous->interface_blocks; - map::const_iterator i = prev_blocks.find("out"+iface.block_name); + map::const_iterator i = prev_blocks.find("out "+iface.block_name); if(i!=prev_blocks.end()) { iface.linked_block = i->second;