X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Foptimize.cpp;fp=source%2Fglsl%2Foptimize.cpp;h=a8ff44a50e44fa94b8eb3d799f3ec1d64eb22988;hp=0d6f753768ad2bd5fdbf7ff4d3a8f44ff75f1cb9;hb=c43203c52410ee8a734e775e7ee7368a12f82ff7;hpb=6f06479b765946bdd3174b2c05e7a1dda24c31c2 diff --git a/source/glsl/optimize.cpp b/source/glsl/optimize.cpp index 0d6f7537..a8ff44a5 100644 --- a/source/glsl/optimize.cpp +++ b/source/glsl/optimize.cpp @@ -1267,16 +1267,8 @@ bool UnusedVariableRemover::apply(Stage &s) for(AssignmentInfo *a: kvp.second.assignments) unused_nodes.erase(a->node); } - - if(!kvp.second.output && !kvp.second.referenced) - { - // Don't remove variables from inside interface blocks. - if(!kvp.second.interface_block) - unused_nodes.insert(kvp.first); - } - else if(kvp.second.interface_block) - // Interface blocks are kept if even one member is used. - unused_nodes.erase(kvp.second.interface_block); + else if(!kvp.second.referenced) + unused_nodes.insert(kvp.first); } NodeRemover().apply(s, unused_nodes); @@ -1493,14 +1485,10 @@ void UnusedVariableRemover::visit(VariableDeclaration &var) return; VariableInfo &var_info = variables[&var]; - var_info.interface_block = interface_block; /* Mark variables as output if they're used by the next stage or the graphics API. */ - if(interface_block) - var_info.output = (interface_block->interface=="out" && (interface_block->linked_block || !interface_block->block_name.compare(0, 3, "gl_"))); - else - var_info.output = (var.interface=="out" && (stage->type==Stage::FRAGMENT || var.linked_declaration || !var.name.compare(0, 3, "gl_"))); + var_info.output = (var.interface=="out" && (stage->type==Stage::FRAGMENT || var.linked_declaration || !var.name.compare(0, 3, "gl_"))); if(var.init_expression) {