]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/validate.h
Take care of SPIR-V load IDs in ternary expressions
[libs/gl.git] / source / glsl / validate.h
index b47a9911d95c6a147034f1937243f34bd69ebca9..c9a7b736035519e3d3767062e198cb22e5f8ba6b 100644 (file)
@@ -39,13 +39,14 @@ private:
                FUNCTION
        };
 
+       Features features;
        ScopeType scope = GLOBAL;
        InterfaceLayout *iface_layout = 0;
-       InterfaceBlock *iface_block = 0;
+       VariableDeclaration *iface_block = 0;
        VariableDeclaration *variable = 0;
 
 public:
-       void apply(Stage &s) { stage = &s; s.content.visit(*this); }
+       void apply(Stage &, const Features &);
 
 private:
        static const char *describe_variable(ScopeType);
@@ -56,7 +57,6 @@ private:
        virtual void visit(ImageTypeDeclaration &);
        virtual void visit(StructDeclaration &);
        virtual void visit(VariableDeclaration &);
-       virtual void visit(InterfaceBlock &);
        virtual void visit(FunctionDeclaration &);
 };
 
@@ -68,7 +68,7 @@ private:
        typedef std::map<std::string, Statement *> BlockDeclarationMap;
 
        std::map<Block *, BlockDeclarationMap> declarations;
-       std::map<std::string, InterfaceBlock *> interface_blocks;
+       std::map<std::string, VariableDeclaration *> interface_blocks;
        std::map<std::string, FunctionDeclaration *> overloaded_functions;
        bool anonymous_block = false;
 
@@ -86,7 +86,6 @@ private:
        virtual void visit(ImageTypeDeclaration &t) { visit(static_cast<TypeDeclaration &>(t)); }
        virtual void visit(StructDeclaration &);
        virtual void visit(VariableDeclaration &);
-       virtual void visit(InterfaceBlock &);
        virtual void visit(FunctionDeclaration &);
 };
 
@@ -101,10 +100,8 @@ private:
        virtual void visit(ImageTypeDeclaration &);
        virtual void visit(VariableReference &);
        virtual void visit(MemberAccess &);
-       virtual void visit(InterfaceBlockReference &);
        virtual void visit(FunctionCall &);
        virtual void visit(VariableDeclaration &);
-       virtual void visit(InterfaceBlock &);
        virtual void visit(FunctionDeclaration &);
 };
 
@@ -129,7 +126,6 @@ public:
 
 private:
        virtual void visit(VariableReference &);
-       virtual void visit(InterfaceBlockReference &);
        virtual void visit(Swizzle &);
        virtual void visit(UnaryExpression &);
        virtual void visit(BinaryExpression &);
@@ -174,8 +170,6 @@ public:
        void apply(Stage &s) { stage = &s; s.content.visit(*this); }
 
 private:
-       int get_location(const Layout &);
-
        virtual void visit(VariableDeclaration &);
        virtual void visit(FunctionDeclaration &) { }
 };
@@ -208,7 +202,6 @@ private:
        void check_uniform(const Uniform &);
 
        virtual void visit(VariableDeclaration &);
-       virtual void visit(InterfaceBlock &);
        virtual void visit(FunctionDeclaration &) { }
 };