X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fspirv.h;h=e98fd91e7142ec0fecabd8850c76557071c5ea06;hb=08d3b5a55fad7439b47fc93d8ba604cbeb7e19ca;hp=59c7b50b0cc45fede654eff5d3580840c5eecf1a;hpb=f7682c3c2e9f028cef6945ffbada66cff33585c0;p=libs%2Fgl.git diff --git a/source/glsl/spirv.h b/source/glsl/spirv.h index 59c7b50b..e98fd91e 100644 --- a/source/glsl/spirv.h +++ b/source/glsl/spirv.h @@ -70,6 +70,7 @@ private: bool operator<(const ConstantKey &) const; }; + Features features; Stage *stage = 0; FunctionDeclaration *current_function = 0; std::vector interface_layouts; @@ -106,12 +107,13 @@ private: public: SpirVGenerator(); - void apply(Module &); + void apply(Module &, const Features &); const std::vector &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 &); void visit_builtin_texture_query(FunctionCall &, const std::vector &); void visit_builtin_texture(FunctionCall &, const std::vector &); - void visit_builtin_texel_fetch(FunctionCall &, const std::vector &); + void visit_builtin_texture_fetch(FunctionCall &, const std::vector &); + void visit_builtin_texture_store(FunctionCall &, const std::vector &); void visit_builtin_interpolate(FunctionCall &, const std::vector &); 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 &);