]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/optimize.cpp
Support specialization constants in the GLSL compiler
[libs/gl.git] / source / glsl / optimize.cpp
index 3f63dd8a7debaac0c492c0f3f5a2e9491d989ebf..2215f8335cd06a23ea71e2c381cb1776362b81cd 100644 (file)
@@ -160,7 +160,13 @@ void ConstantConditionEliminator::visit(Assignment &assign)
 
 void ConstantConditionEliminator::visit(VariableDeclaration &var)
 {
-       if((var.constant || current_block->parent) && var.init_expression)
+       bool constant = var.constant;
+       if(constant && var.layout)
+       {
+               for(vector<Layout::Qualifier>::const_iterator i=var.layout->qualifiers.begin(); (constant && i!=var.layout->qualifiers.end()); ++i)
+                       constant = (i->name!="constant_id");
+       }
+       if((constant || current_block->parent) && var.init_expression)
                variable_values[&var] = var.init_expression.get();
 }