X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Fspirv.h;h=6971e2a9c43eb2ec8cc180b94043a6388229858e;hp=add5a967d3659d525901101cb25e3712601a2f03;hb=38712d8ecc57d043a2419ffbaeeb57f7a6586f14;hpb=91e65bc9e24a6889995081035f6f6f0a78a6c20e diff --git a/source/glsl/spirv.h b/source/glsl/spirv.h index add5a967..6971e2a9 100644 --- a/source/glsl/spirv.h +++ b/source/glsl/spirv.h @@ -1,5 +1,5 @@ -#ifndef MSP_GL_SL_SPIRV -#define MSP_GL_SL_SPIRV +#ifndef MSP_GL_SL_SPIRV_H_ +#define MSP_GL_SL_SPIRV_H_ #include #include @@ -30,7 +30,8 @@ private: char arg_types[5]; char extension[13]; Word opcode; - UInt8 arg_order[4]; + std::uint8_t arg_order[4]; + Word capability; void (SpirVGenerator::*handler)(FunctionCall &, const std::vector &); }; @@ -69,8 +70,8 @@ private: bool operator<(const ConstantKey &) const; }; - Stage *stage; - FunctionDeclaration *current_function; + Stage *stage = 0; + FunctionDeclaration *current_function = 0; std::vector interface_layouts; SpirVContent content; SpirVWriter writer; @@ -79,24 +80,25 @@ private: std::map declared_ids; std::map declared_uniform_ids; std::map standard_type_ids; + std::map image_type_ids; std::map array_type_ids; std::map pointer_type_ids; std::map function_type_ids; std::map constant_ids; std::map variable_load_ids; - Id next_id; - Id r_expression_result_id; - bool r_constant_result; - bool constant_expression; - bool spec_constant; - bool reachable; - bool composite_access; - Id r_composite_base_id; - Node *r_composite_base; + Id next_id = 1; + Id r_expression_result_id = 0; + bool r_constant_result = false; + bool constant_expression = false; + bool spec_constant = false; + bool reachable = false; + bool composite_access = false; + Id r_composite_base_id = 0; + Node *r_composite_base = 0; std::vector r_composite_chain; - Id assignment_source_id; - Id loop_merge_block_id; - Id loop_continue_target_id; + Id assignment_source_id = 0; + Id loop_merge_block_id = 0; + Id loop_continue_target_id = 0; static const BuiltinFunctionInfo builtin_functions[]; @@ -113,6 +115,7 @@ private: Id import_extension(const std::string &); Id get_id(Node &) const; Id allocate_id(Node &, Id); + Id allocate_forward_id(Node &); Id write_constant(Id, Word, bool); static ConstantKey get_constant_key(Id, const Variant &value); Id get_constant_id(Id, const Variant &value); @@ -147,6 +150,7 @@ private: virtual void visit(FunctionCall &); void visit_constructor(FunctionCall &, const std::vector &, bool); 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_interpolate(FunctionCall &, const std::vector &);