]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/compiler.cpp
Recognize unknown index as matching any index
[libs/gl.git] / source / glsl / compiler.cpp
index 233e37ea33727814042069dd7df2b068abed7670..4b1d4edf11d0e6e29c8410ab123521b440826128 100644 (file)
@@ -25,17 +25,11 @@ namespace GL {
 namespace SL {
 
 Compiler::Compiler():
-       features(DeviceInfo::get_global().glsl_features),
-       module(0),
-       compiled(false),
-       specialized(false)
+       features(DeviceInfo::get_global().glsl_features)
 { }
 
 Compiler::Compiler(const Features &f):
-       features(f),
-       module(0),
-       compiled(false),
-       specialized(false)
+       features(f)
 { }
 
 Compiler::~Compiler()
@@ -279,7 +273,7 @@ void Compiler::import(ModuleCache &mod_cache, const string &name)
 
 void Compiler::generate(Stage &stage)
 {
-       stage.required_features.gl_api = features.gl_api;
+       stage.required_features.target_api = features.target_api;
        if(module->shared.required_features.glsl_version>stage.required_features.glsl_version)
                stage.required_features.glsl_version = module->shared.required_features.glsl_version;
 
@@ -369,6 +363,11 @@ Compiler::OptimizeResult Compiler::optimize(Stage &stage)
                resolve(stage, RESOLVE_TYPES|RESOLVE_VARIABLES|RESOLVE_FUNCTIONS|RESOLVE_EXPRESSIONS);
                any_inlined = true;
        }
+       if(AggregateDismantler().apply(stage))
+       {
+               resolve(stage, RESOLVE_TYPES|RESOLVE_VARIABLES|RESOLVE_FUNCTIONS|RESOLVE_EXPRESSIONS);
+               any_inlined = true;
+       }
        if(ExpressionInliner().apply(stage))
        {
                resolve(stage, RESOLVE_VARIABLES|RESOLVE_FUNCTIONS|RESOLVE_EXPRESSIONS);