X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fprogramcompiler.h;h=461fac9a2e649b1fb3f2597da5ebed6759b218ff;hp=b14c03d8021fa5fa4726aa9a9ef6b9cbbb94be1c;hb=aa9873652630db493b5bd9faee4117e9c30ef226;hpb=573ea4e5602c4321cc1d75daf9ed0beed5cde280 diff --git a/source/programcompiler.h b/source/programcompiler.h index b14c03d8..461fac9a 100644 --- a/source/programcompiler.h +++ b/source/programcompiler.h @@ -169,17 +169,21 @@ private: FUNCTION }; + unsigned scope_level; DeclarationKind kind; + std::set ordered_funcs; + std::set needed_funcs; DeclarationReorderer(); using Visitor::visit; virtual void visit(ProgramSyntax::Block &); + virtual void visit(ProgramSyntax::FunctionCall &); virtual void visit(ProgramSyntax::InterfaceLayout &) { kind = LAYOUT; } virtual void visit(ProgramSyntax::StructDeclaration &) { kind = STRUCT; } - virtual void visit(ProgramSyntax::VariableDeclaration &) { kind = VARIABLE; } + virtual void visit(ProgramSyntax::VariableDeclaration &); virtual void visit(ProgramSyntax::InterfaceBlock &) { kind = VARIABLE; } - virtual void visit(ProgramSyntax::FunctionDeclaration &) { kind = FUNCTION; } + virtual void visit(ProgramSyntax::FunctionDeclaration &); }; struct InlineableFunctionLocator: Visitor @@ -212,6 +216,7 @@ private: virtual void visit(ProgramSyntax::Block &); virtual void visit(ProgramSyntax::UnaryExpression &); virtual void visit(ProgramSyntax::BinaryExpression &); + virtual void visit(ProgramSyntax::MemberAccess &); virtual void visit(ProgramSyntax::FunctionCall &); virtual void visit(ProgramSyntax::Return &); }; @@ -238,12 +243,14 @@ private: struct ConstantConditionEliminator: BlockModifier { unsigned scope_level; + bool record_only; ExpressionEvaluator::ValueMap variable_values; ConstantConditionEliminator(); using Visitor::visit; virtual void visit(ProgramSyntax::Block &); + virtual void visit(ProgramSyntax::UnaryExpression &); virtual void visit(ProgramSyntax::Assignment &); virtual void visit(ProgramSyntax::VariableDeclaration &); virtual void visit(ProgramSyntax::Conditional &); @@ -357,6 +364,8 @@ private: bool supports_unified_sampling_functions() const; virtual void visit(ProgramSyntax::FunctionCall &); bool supports_interface_layouts() const; + bool supports_centroid_sampling() const; + bool supports_sample_sampling() const; virtual void visit(ProgramSyntax::VariableDeclaration &); bool supports_interface_blocks(const std::string &) const; virtual void visit(ProgramSyntax::InterfaceBlock &);