1 #ifndef MSP_GL_SL_COMPATIBILITY_H_
2 #define MSP_GL_SL_COMPATIBILITY_H_
11 class DefaultPrecisionGenerator: private TraversingVisitor
15 std::set<std::string> have_default;
16 NodeList<Statement>::iterator insert_point;
19 DefaultPrecisionGenerator();
24 virtual void visit(Block &);
25 virtual void visit(Precision &);
26 virtual void visit(VariableDeclaration &);
27 using TraversingVisitor::visit;
30 class PrecisionRemover: private TraversingVisitor
33 std::set<Node *> nodes_to_remove;
39 virtual void visit(Precision &);
40 virtual void visit(VariableDeclaration &);
41 using TraversingVisitor::visit;
44 class LegacyConverter: private TraversingVisitor
49 Version target_version;
51 VariableDeclaration *frag_out;
52 NodeList<Statement>::iterator uniform_insert_point;
53 std::set<Node *> nodes_to_remove;
58 virtual void apply(Stage &);
61 virtual void visit(Block &);
62 bool check_version(const Version &) const;
63 bool check_extension(const Extension &) const;
64 bool supports_unified_interface_syntax() const;
65 virtual void visit(VariableReference &);
66 virtual void visit(Assignment &);
67 bool supports_unified_sampling_functions() const;
68 virtual void visit(FunctionCall &);
69 bool supports_interface_layouts() const;
70 bool supports_centroid_sampling() const;
71 bool supports_sample_sampling() const;
72 virtual void visit(VariableDeclaration &);
73 bool supports_interface_blocks(const std::string &) const;
74 virtual void visit(InterfaceBlock &);
75 using TraversingVisitor::visit;