X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Fcompiler.cpp;h=4a7a19e29759770966db8ae105c0967bdd5c4f9b;hp=89ffd7f3f0bb73cfa295a76ccac9b5f2776a099a;hb=c0be4e4ae1a8b6ac31ff6b7080e2242c13d947ff;hpb=efeb3137935ec5ef6a16531c2e6b915caa3db481 diff --git a/source/glsl/compiler.cpp b/source/glsl/compiler.cpp index 89ffd7f3..4a7a19e2 100644 --- a/source/glsl/compiler.cpp +++ b/source/glsl/compiler.cpp @@ -19,6 +19,12 @@ namespace GL { namespace SL { Compiler::Compiler(): + features(Features::from_context()), + module(0) +{ } + +Compiler::Compiler(const Features &f): + features(f), module(0) { } @@ -162,8 +168,8 @@ void Compiler::append_stage(Stage &stage) target = &*i; } - if(stage.required_version>target->required_version) - target->required_version = stage.required_version; + if(stage.required_features.glsl_version>target->required_features.glsl_version) + target->required_features.glsl_version = stage.required_features.glsl_version; for(NodeList::iterator i=stage.content.body.begin(); i!=stage.content.body.end(); ++i) target->content.body.push_back(*i); DeclarationCombiner().apply(*target); @@ -185,8 +191,9 @@ void Compiler::import(DataFile::Collection *resources, const string &name) void Compiler::generate(Stage &stage, Mode mode) { - if(module->shared.required_version>stage.required_version) - stage.required_version = module->shared.required_version; + stage.required_features.gl_api = features.gl_api; + if(module->shared.required_features.glsl_version>stage.required_features.glsl_version) + stage.required_features.glsl_version = module->shared.required_features.glsl_version; inject_block(stage.content, module->shared.content); DeclarationReorderer().apply(stage); @@ -198,7 +205,7 @@ void Compiler::generate(Stage &stage, Mode mode) DeclarationReorderer().apply(stage); FunctionResolver().apply(stage); if(mode==PROGRAM) - LegacyConverter().apply(stage); + LegacyConverter().apply(stage, features); } bool Compiler::optimize(Stage &stage)