X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Foptimize.cpp;h=1b9b41de20e07a63ff38cb7e6f984d7311df9664;hb=6ef956d2f41512081e6c19d41a1230e177547dde;hp=da95158903d2fea799d1aba55c3faca0762f7434;hpb=5871764de7aa23d2c40cac03ad9d07088fb57e06;p=libs%2Fgl.git diff --git a/source/glsl/optimize.cpp b/source/glsl/optimize.cpp index da951589..1b9b41de 100644 --- a/source/glsl/optimize.cpp +++ b/source/glsl/optimize.cpp @@ -191,12 +191,6 @@ void InlineContentInjector::visit(VariableReference &var) referenced_names.insert(var.name); } -void InlineContentInjector::visit(InterfaceBlockReference &iface) -{ - if(pass==REFERENCED) - referenced_names.insert(iface.name); -} - void InlineContentInjector::visit(FunctionCall &call) { if(pass==REFERENCED) @@ -1246,11 +1240,6 @@ void UnusedTypeRemover::visit(VariableDeclaration &var) TraversingVisitor::visit(var); } -void UnusedTypeRemover::visit(InterfaceBlock &iface) -{ - unused_nodes.erase(iface.type_declaration); -} - void UnusedTypeRemover::visit(FunctionDeclaration &func) { unused_nodes.erase(func.return_type_declaration); @@ -1313,14 +1302,6 @@ void UnusedVariableRemover::visit(VariableReference &var) referenced(var.declaration, var); } -void UnusedVariableRemover::visit(InterfaceBlockReference &iface) -{ - if(composite_reference) - r_reference.declaration = iface.declaration; - else if(iface.declaration) - referenced(iface.declaration, iface); -} - void UnusedVariableRemover::visit_composite(Expression &expr) { if(!composite_reference) @@ -1474,7 +1455,8 @@ void UnusedVariableRemover::visit(VariableDeclaration &var) /* Mark variables as output if they're used by the next stage or the graphics API. */ - var_info.output = (var.interface=="out" && (stage->type==Stage::FRAGMENT || var.linked_declaration || !var.name.compare(0, 3, "gl_"))); + bool builtin = (!var.name.compare(0, 3, "gl_") || (var.block_declaration && !var.block_declaration->block_name.compare(0, 3, "gl_"))); + var_info.output = (var.interface=="out" && (stage->type==Stage::FRAGMENT || var.linked_declaration || builtin)); // Linked outputs are automatically referenced. if(var_info.output && var.linked_declaration) @@ -1487,12 +1469,6 @@ void UnusedVariableRemover::visit(VariableDeclaration &var) } } -void UnusedVariableRemover::visit(InterfaceBlock &iface) -{ - VariableInfo &var_info = variables[&iface]; - var_info.output = (iface.interface=="out" && (iface.linked_block || !iface.block_name.compare(0, 3, "gl_"))); -} - void UnusedVariableRemover::merge_variables(const BlockVariableMap &other_vars) { for(const auto &kvp: other_vars)