-#ifndef MSP_GL_SL_SPIRV
-#define MSP_GL_SL_SPIRV
+#ifndef MSP_GL_SL_SPIRV_H_
+#define MSP_GL_SL_SPIRV_H_
#include <map>
#include <string>
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<Id> &);
};
std::map<Node *, Declaration> declared_ids;
std::map<std::string, Id> declared_uniform_ids;
std::map<TypeKey, Id> standard_type_ids;
+ std::map<Id, Id> image_type_ids;
std::map<TypeKey, Id> array_type_ids;
std::map<TypeKey, Id> pointer_type_ids;
std::map<std::string, Id> function_type_ids;
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);
virtual void visit(FunctionCall &);
void visit_constructor(FunctionCall &, const std::vector<Id> &, bool);
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_interpolate(FunctionCall &, const std::vector<Id> &);