]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/spirv.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / glsl / spirv.h
index 59c7b50b0cc45fede654eff5d3580840c5eecf1a..e98fd91e7142ec0fecabd8850c76557071c5ea06 100644 (file)
@@ -70,6 +70,7 @@ private:
                bool operator<(const ConstantKey &) const;
        };
 
+       Features features;
        Stage *stage = 0;
        FunctionDeclaration *current_function = 0;
        std::vector<const InterfaceLayout *> interface_layouts;
@@ -106,12 +107,13 @@ private:
 public:
        SpirVGenerator();
 
-       void apply(Module &);
+       void apply(Module &, const Features &);
        const std::vector<Word> &get_code() const { return content.code; }
 
 private:
        static StorageClass get_interface_storage(const std::string &, bool);
        static SpirVBuiltin get_builtin_semantic(const std::string &);
+       static SpirVFormat get_format(const std::string &);
        void use_capability(Capability);
        Id import_extension(const std::string &);
        Id get_id(Node &) const;
@@ -123,7 +125,7 @@ private:
        Id get_vector_constant_id(Id, unsigned, Id);
        Id get_standard_type_id(BasicTypeDeclaration::Kind, unsigned, bool = true);
        bool is_scalar_type(Id, BasicTypeDeclaration::Kind) const;
-       Id get_array_type_id(TypeDeclaration &, unsigned);
+       Id get_array_type_id(TypeDeclaration &, Id, bool);
        Id get_pointer_type_id(Id, StorageClass);
        Id get_variable_type_id(const VariableDeclaration &);
        Id get_load_id(VariableDeclaration &);
@@ -138,7 +140,6 @@ private:
        virtual void visit(Block &);
        virtual void visit(Literal &);
        virtual void visit(VariableReference &);
-       virtual void visit(InterfaceBlockReference &);
        void generate_composite_access(TypeDeclaration &);
        void visit_composite(Expression &, unsigned, TypeDeclaration &);
        void visit_isolated(Expression &);
@@ -153,7 +154,8 @@ private:
        void visit_builtin_matrix_comp_mult(FunctionCall &, const std::vector<Id> &);
        void visit_builtin_texture_query(FunctionCall &, const std::vector<Id> &);
        void visit_builtin_texture(FunctionCall &, const std::vector<Id> &);
-       void visit_builtin_texel_fetch(FunctionCall &, const std::vector<Id> &);
+       void visit_builtin_texture_fetch(FunctionCall &, const std::vector<Id> &);
+       void visit_builtin_texture_store(FunctionCall &, const std::vector<Id> &);
        void visit_builtin_interpolate(FunctionCall &, const std::vector<Id> &);
        virtual void visit(ExpressionStatement &);
        virtual void visit(InterfaceLayout &);
@@ -163,7 +165,6 @@ private:
        virtual void visit(ImageTypeDeclaration &);
        virtual void visit(StructDeclaration &);
        virtual void visit(VariableDeclaration &);
-       virtual void visit(InterfaceBlock &);
        void visit_entry_point(FunctionDeclaration &, Id);
        virtual void visit(FunctionDeclaration &);
        virtual void visit(Conditional &);