X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fcompatibility.h;fp=source%2Fglsl%2Fcompatibility.h;h=f33768767b0b0909614e9c8181cf26a32cf66487;hb=696a97bd7411d69953c1a9e4b5f3dfb4c1d848f1;hp=0000000000000000000000000000000000000000;hpb=c1ec86d6b9ceb6c71f787fed3b2ea6c75457a474;p=libs%2Fgl.git diff --git a/source/glsl/compatibility.h b/source/glsl/compatibility.h new file mode 100644 index 00000000..f3376876 --- /dev/null +++ b/source/glsl/compatibility.h @@ -0,0 +1,67 @@ +#ifndef MSP_GL_SL_COMPATIBILITY_H_ +#define MSP_GL_SL_COMPATIBILITY_H_ + +#include +#include "visitor.h" + +namespace Msp { +namespace GL { +namespace SL { + +class DefaultPrecisionGenerator: public BlockModifier +{ +private: + bool toplevel; + std::set have_default; + +public: + DefaultPrecisionGenerator(); + + using StageVisitor::visit; + virtual void visit(Block &); + virtual void visit(Precision &); + virtual void visit(VariableDeclaration &); +}; + +class PrecisionRemover: public BlockModifier +{ +public: + using StageVisitor::visit; + virtual void visit(Precision &); + virtual void visit(VariableDeclaration &); +}; + +class LegacyConverter: public BlockModifier +{ +private: + GLApi target_api; + Version target_version; + std::string type; + VariableDeclaration *frag_out; + +public: + LegacyConverter(); + LegacyConverter(const Version &); + +private: + bool check_version(const Version &) const; + bool check_extension(const Extension &) const; + using StageVisitor::visit; + bool supports_unified_interface_syntax() const; + virtual void visit(VariableReference &); + virtual void visit(Assignment &); + bool supports_unified_sampling_functions() const; + virtual void visit(FunctionCall &); + bool supports_interface_layouts() const; + bool supports_centroid_sampling() const; + bool supports_sample_sampling() const; + virtual void visit(VariableDeclaration &); + bool supports_interface_blocks(const std::string &) const; + virtual void visit(InterfaceBlock &); +}; + +} // namespace SL +} // namespace GL +} // namespace Msp + +#endif