Class CompilerGLSL
Defined in File spirv_glsl.hpp
Nested Relationships
Nested Types
Inheritance Relationships
Base Type
public SPIRV_CROSS_NAMESPACE::Compiler
(Class Compiler)
Derived Types
public SPIRV_CROSS_NAMESPACE::CompilerCPP
(Class CompilerCPP)public SPIRV_CROSS_NAMESPACE::CompilerHLSL
(Class CompilerHLSL)public SPIRV_CROSS_NAMESPACE::CompilerMSL
(Class CompilerMSL)public SPIRV_CROSS_NAMESPACE::CompilerReflection
(Class CompilerReflection)
Class Documentation
-
class CompilerGLSL : public SPIRV_CROSS_NAMESPACE::Compiler
Subclassed by SPIRV_CROSS_NAMESPACE::CompilerCPP, SPIRV_CROSS_NAMESPACE::CompilerHLSL, SPIRV_CROSS_NAMESPACE::CompilerMSL, SPIRV_CROSS_NAMESPACE::CompilerReflection
Public Functions
-
void remap_ext_framebuffer_fetch(uint32_t input_attachment_index, uint32_t color_location, bool coherent)
-
inline explicit CompilerGLSL(std::vector<uint32_t> spirv_)
-
inline CompilerGLSL(const uint32_t *ir_, size_t word_count)
-
virtual std::string compile() override
-
std::string get_partial_source()
-
void add_header_line(const std::string &str)
-
void require_extension(const std::string &ext)
-
const SmallVector<std::string> &get_required_extensions() const
-
void flatten_buffer_block(VariableID id)
-
bool variable_is_depth_or_compare(VariableID id) const
-
void mask_stage_output_by_location(uint32_t location, uint32_t component)
-
inline void set_float_formatter(FloatFormatter *formatter)
Protected Types
-
enum Polyfill
Values:
-
enumerator PolyfillTranspose2x2
-
enumerator PolyfillTranspose3x3
-
enumerator PolyfillTranspose4x4
-
enumerator PolyfillDeterminant2x2
-
enumerator PolyfillDeterminant3x3
-
enumerator PolyfillDeterminant4x4
-
enumerator PolyfillMatrixInverse2x2
-
enumerator PolyfillMatrixInverse3x3
-
enumerator PolyfillMatrixInverse4x4
-
enumerator PolyfillNMin16
-
enumerator PolyfillNMin32
-
enumerator PolyfillNMin64
-
enumerator PolyfillNMax16
-
enumerator PolyfillNMax32
-
enumerator PolyfillNMax64
-
enumerator PolyfillNClamp16
-
enumerator PolyfillNClamp32
-
enumerator PolyfillNClamp64
-
enumerator PolyfillTranspose2x2
Protected Functions
-
void reset(uint32_t iteration_count)
-
void emit_function(SPIRFunction &func, const Bitset &return_flags)
-
bool has_extension(const std::string &ext) const
-
void require_extension_internal(const std::string &ext)
-
virtual void emit_function_prototype(SPIRFunction &func, const Bitset &return_flags)
-
virtual void emit_instruction(const Instruction &instr)
-
TemporaryCopy handle_instruction_precision(const Instruction &instr)
-
GLSLstd450 get_remapped_glsl_op(GLSLstd450 std450_op) const
-
virtual void emit_glsl_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
-
virtual void emit_spv_amd_shader_ballot_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
-
virtual void emit_spv_amd_shader_explicit_vertex_parameter_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
-
virtual void emit_spv_amd_shader_trinary_minmax_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
-
virtual void emit_spv_amd_gcn_shader_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
-
virtual void emit_header()
-
void emit_line_directive(uint32_t file_id, uint32_t line_literal)
-
void build_workgroup_size(SmallVector<std::string> &arguments, const SpecializationConstant &x, const SpecializationConstant &y, const SpecializationConstant &z)
-
void request_subgroup_feature(ShaderSubgroupSupportHelper::Feature feature)
-
virtual void emit_sampled_image_op(uint32_t result_type, uint32_t result_id, uint32_t image_id, uint32_t samp_id)
-
virtual void emit_texture_op(const Instruction &i, bool sparse)
-
virtual std::string to_texture_op(const Instruction &i, bool sparse, bool *forward, SmallVector<uint32_t> &inherited_expressions)
-
virtual void emit_subgroup_op(const Instruction &i)
-
virtual std::string builtin_to_glsl(spv::BuiltIn builtin, spv::StorageClass storage)
-
virtual void emit_struct_member(const SPIRType &type, uint32_t member_type_id, uint32_t index, const std::string &qualifier = "", uint32_t base_offset = 0)
-
std::string constant_expression(const SPIRConstant &c, bool inside_block_like_struct_scope = false, bool inside_struct_scope = false)
-
virtual std::string constant_op_expression(const SPIRConstantOp &cop)
-
virtual std::string constant_expression_vector(const SPIRConstant &c, uint32_t vector)
-
virtual void emit_fixup()
-
virtual bool variable_decl_is_remapped_storage(const SPIRVariable &var, spv::StorageClass storage) const
-
virtual std::string to_func_call_arg(const SPIRFunction::Parameter &arg, uint32_t id)
-
virtual std::string to_function_name(const TextureFunctionNameArguments &args)
-
virtual std::string to_function_args(const TextureFunctionArguments &args, bool *p_forward)
-
void emit_sparse_feedback_temporaries(uint32_t result_type_id, uint32_t id, uint32_t &feedback_id, uint32_t &texel_id)
-
uint32_t get_sparse_feedback_texel_id(uint32_t id) const
-
virtual void emit_buffer_block(const SPIRVariable &type)
-
virtual void emit_push_constant_block(const SPIRVariable &var)
-
virtual void emit_uniform(const SPIRVariable &var)
-
virtual std::string unpack_expression_type(std::string expr_str, const SPIRType &type, uint32_t physical_type_id, bool packed_type, bool row_major)
-
virtual bool is_user_type_structured(uint32_t id) const
-
void emit_copy_logical_type(uint32_t lhs_id, uint32_t lhs_type_id, uint32_t rhs_id, uint32_t rhs_type_id, SmallVector<uint32_t> chain)
-
void begin_scope()
-
void end_scope()
-
void end_scope(const std::string &trailer)
-
void end_scope_decl()
-
void end_scope_decl(const std::string &decl)
-
virtual std::string variable_decl(const SPIRVariable &variable)
-
std::string variable_decl_function_local(SPIRVariable &variable)
-
void add_local_variable_name(uint32_t id)
-
void add_resource_name(uint32_t id)
-
void add_function_overload(const SPIRFunction &func)
-
virtual bool is_non_native_row_major_matrix(uint32_t id)
-
virtual std::string convert_row_major_matrix(std::string exp_str, const SPIRType &exp_type, uint32_t physical_type_id, bool is_packed, bool relaxed = false)
-
void preserve_alias_on_reset(uint32_t id)
-
void reset_name_caches()
-
void emit_resources()
-
void emit_extension_workarounds(spv::ExecutionModel model)
-
void emit_subgroup_arithmetic_workaround(const std::string &func, spv::Op op, spv::GroupOperation group_op)
-
void emit_polyfills(uint32_t polyfills, bool relaxed)
-
void emit_buffer_block_native(const SPIRVariable &var)
-
void emit_buffer_reference_block(uint32_t type_id, bool forward_declaration)
-
void emit_buffer_block_legacy(const SPIRVariable &var)
-
void emit_buffer_block_flattened(const SPIRVariable &type)
-
void fixup_implicit_builtin_block_names(spv::ExecutionModel model)
-
void emit_declared_builtin_block(spv::StorageClass storage, spv::ExecutionModel model)
-
bool should_force_emit_builtin_block(spv::StorageClass storage)
-
void emit_push_constant_block_vulkan(const SPIRVariable &var)
-
void emit_push_constant_block_glsl(const SPIRVariable &var)
-
void emit_interface_block(const SPIRVariable &type)
-
void emit_flattened_io_block(const SPIRVariable &var, const char *qual)
-
void emit_flattened_io_block_struct(const std::string &basename, const SPIRType &type, const char *qual, const SmallVector<uint32_t> &indices)
-
void emit_flattened_io_block_member(const std::string &basename, const SPIRType &type, const char *qual, const SmallVector<uint32_t> &indices)
-
void emit_hoisted_temporaries(SmallVector<std::pair<TypeID, ID>> &temporaries)
-
std::string constant_value_macro_name(uint32_t id)
-
int get_constant_mapping_to_workgroup_component(const SPIRConstant &constant) const
-
void emit_constant(const SPIRConstant &constant)
-
void emit_specialization_constant_op(const SPIRConstantOp &constant)
-
std::string emit_continue_block(uint32_t continue_block, bool follow_true_block, bool follow_false_block)
-
void flush_variable_declaration(uint32_t id)
-
void emit_variable_temporary_copies(const SPIRVariable &var)
-
bool should_dereference(uint32_t id)
-
bool should_forward(uint32_t id) const
-
bool should_suppress_usage_tracking(uint32_t id) const
-
void emit_mix_op(uint32_t result_type, uint32_t id, uint32_t left, uint32_t right, uint32_t lerp)
-
void emit_nminmax_op(uint32_t result_type, uint32_t id, uint32_t op0, uint32_t op1, GLSLstd450 op)
-
void emit_emulated_ahyper_op(uint32_t result_type, uint32_t result_id, uint32_t op0, GLSLstd450 op)
-
bool to_trivial_mix_op(const SPIRType &type, std::string &op, uint32_t left, uint32_t right, uint32_t lerp)
-
void emit_quaternary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2, uint32_t op3, const char *op)
-
void emit_trinary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2, const char *op)
-
void emit_binary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op)
-
void emit_atomic_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op)
-
void emit_atomic_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2, const char *op)
-
void emit_unary_func_op_cast(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op, SPIRType::BaseType input_type, SPIRType::BaseType expected_result_type)
-
void emit_binary_func_op_cast(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op, SPIRType::BaseType input_type, bool skip_cast_if_equal_type)
-
void emit_binary_func_op_cast_clustered(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op, SPIRType::BaseType input_type)
-
void emit_trinary_func_op_cast(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2, const char *op, SPIRType::BaseType input_type)
-
void emit_trinary_func_op_bitextract(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2, const char *op, SPIRType::BaseType expected_result_type, SPIRType::BaseType input_type0, SPIRType::BaseType input_type1, SPIRType::BaseType input_type2)
-
void emit_bitfield_insert_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2, uint32_t op3, const char *op, SPIRType::BaseType offset_count_type)
-
void emit_unary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op)
-
void emit_unrolled_unary_op(uint32_t result_type, uint32_t result_id, uint32_t operand, const char *op)
-
void emit_binary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op)
-
void emit_unrolled_binary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op, bool negate, SPIRType::BaseType expected_type)
-
void emit_binary_op_cast(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op, SPIRType::BaseType input_type, bool skip_cast_if_equal_type, bool implicit_integer_promotion)
-
SPIRType binary_op_bitcast_helper(std::string &cast_op0, std::string &cast_op1, SPIRType::BaseType &input_type, uint32_t op0, uint32_t op1, bool skip_cast_if_equal_type)
-
virtual bool emit_complex_bitcast(uint32_t result_type, uint32_t id, uint32_t op0)
-
std::string to_ternary_expression(const SPIRType &result_type, uint32_t select, uint32_t true_value, uint32_t false_value)
-
void emit_unary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op)
-
void emit_unary_op_cast(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op)
-
bool expression_is_forwarded(uint32_t id) const
-
bool expression_suppresses_usage_tracking(uint32_t id) const
-
bool expression_read_implies_multiple_reads(uint32_t id) const
-
SPIRExpression &emit_op(uint32_t result_type, uint32_t result_id, const std::string &rhs, bool forward_rhs, bool suppress_usage_tracking = false)
-
void access_chain_internal_append_index(std::string &expr, uint32_t base, const SPIRType *type, AccessChainFlags flags, bool &access_chain_is_arrayed, uint32_t index)
-
std::string access_chain_internal(uint32_t base, const uint32_t *indices, uint32_t count, AccessChainFlags flags, AccessChainMeta *meta)
-
spv::StorageClass get_expression_effective_storage_class(uint32_t ptr)
-
virtual bool access_chain_needs_stage_io_builtin_translation(uint32_t base)
-
virtual void check_physical_type_cast(std::string &expr, const SPIRType *type, uint32_t physical_type)
-
virtual bool prepare_access_chain_for_scalar_access(std::string &expr, const SPIRType &type, spv::StorageClass storage, bool &is_packed)
-
std::string access_chain(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, AccessChainMeta *meta = nullptr, bool ptr_chain = false)
-
std::string flattened_access_chain(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, uint32_t offset, uint32_t matrix_stride, uint32_t array_stride, bool need_transpose)
-
std::string flattened_access_chain_struct(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, uint32_t offset)
-
std::string flattened_access_chain_matrix(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, uint32_t offset, uint32_t matrix_stride, bool need_transpose)
-
std::string flattened_access_chain_vector(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, uint32_t offset, uint32_t matrix_stride, bool need_transpose)
-
std::pair<std::string, uint32_t> flattened_access_chain_offset(const SPIRType &basetype, const uint32_t *indices, uint32_t count, uint32_t offset, uint32_t word_stride, bool *need_transpose = nullptr, uint32_t *matrix_stride = nullptr, uint32_t *array_stride = nullptr, bool ptr_chain = false)
-
const char *index_to_swizzle(uint32_t index)
-
std::string remap_swizzle(const SPIRType &result_type, uint32_t input_components, const std::string &expr)
-
std::string declare_temporary(uint32_t type, uint32_t id)
-
void emit_uninitialized_temporary(uint32_t type, uint32_t id)
-
SPIRExpression &emit_uninitialized_temporary_expression(uint32_t type, uint32_t id)
-
void append_global_func_args(const SPIRFunction &func, uint32_t index, SmallVector<std::string> &arglist)
-
std::string to_non_uniform_aware_expression(uint32_t id)
-
std::string to_expression(uint32_t id, bool register_expression_read = true)
-
std::string to_composite_constructor_expression(const SPIRType &parent_type, uint32_t id, bool block_like_type)
-
std::string to_rerolled_array_expression(const SPIRType &parent_type, const std::string &expr, const SPIRType &type)
-
std::string to_enclosed_expression(uint32_t id, bool register_expression_read = true)
-
std::string to_unpacked_expression(uint32_t id, bool register_expression_read = true)
-
std::string to_unpacked_row_major_matrix_expression(uint32_t id)
-
std::string to_enclosed_unpacked_expression(uint32_t id, bool register_expression_read = true)
-
std::string to_dereferenced_expression(uint32_t id, bool register_expression_read = true)
-
std::string to_pointer_expression(uint32_t id, bool register_expression_read = true)
-
std::string to_enclosed_pointer_expression(uint32_t id, bool register_expression_read = true)
-
std::string to_extract_component_expression(uint32_t id, uint32_t index)
-
std::string to_extract_constant_composite_expression(uint32_t result_type, const SPIRConstant &c, const uint32_t *chain, uint32_t length)
-
std::string enclose_expression(const std::string &expr)
-
std::string address_of_expression(const std::string &expr)
-
void strip_enclosed_expression(std::string &expr)
-
virtual std::string to_member_reference(uint32_t base, const SPIRType &type, uint32_t index, bool ptr_chain_is_resolved)
-
std::string to_multi_member_reference(const SPIRType &type, const SmallVector<uint32_t> &indices)
-
std::string argument_decl(const SPIRFunction::Parameter &arg)
-
virtual std::string to_qualifiers_glsl(uint32_t id)
-
void fixup_io_block_patch_primitive_qualifiers(const SPIRVariable &var)
-
void emit_output_variable_initializer(const SPIRVariable &var)
-
std::string to_precision_qualifiers_glsl(uint32_t id)
-
virtual const char *to_storage_qualifiers_glsl(const SPIRVariable &var)
-
const char *format_to_glsl(spv::ImageFormat format)
-
std::string layout_for_variable(const SPIRVariable &variable)
-
std::string to_combined_image_sampler(VariableID image_id, VariableID samp_id)
-
virtual bool skip_argument(uint32_t id) const
-
virtual bool emit_array_copy(const char *expr, uint32_t lhs_id, uint32_t rhs_id, spv::StorageClass lhs_storage, spv::StorageClass rhs_storage)
-
virtual std::string to_initializer_expression(const SPIRVariable &var)
-
virtual std::string to_zero_initialized_expression(uint32_t type_id)
-
bool buffer_is_packing_standard(const SPIRType &type, BufferPackingStandard packing, uint32_t *failed_index = nullptr, uint32_t start_offset = 0, uint32_t end_offset = ~(0u))
-
std::string buffer_to_packing_standard(const SPIRType &type, bool support_std430_without_scalar_layout, bool support_enhanced_layouts)
-
uint32_t type_to_packed_base_size(const SPIRType &type, BufferPackingStandard packing)
-
uint32_t type_to_packed_alignment(const SPIRType &type, const Bitset &flags, BufferPackingStandard packing)
-
uint32_t type_to_packed_array_stride(const SPIRType &type, const Bitset &flags, BufferPackingStandard packing)
-
uint32_t type_to_packed_size(const SPIRType &type, const Bitset &flags, BufferPackingStandard packing)
-
std::string bitcast_expression(const SPIRType &target_type, SPIRType::BaseType expr_type, const std::string &expr)
-
std::string build_composite_combiner(uint32_t result_type, const uint32_t *elems, uint32_t length)
-
bool remove_duplicate_swizzle(std::string &op)
-
bool remove_unity_swizzle(uint32_t base, std::string &op)
-
bool check_atomic_image(uint32_t id)
-
virtual void replace_illegal_names()
-
void replace_illegal_names(const std::unordered_set<std::string> &keywords)
-
virtual void emit_entry_point_declarations()
-
void replace_fragment_output(SPIRVariable &var)
-
void replace_fragment_outputs()
-
void forward_relaxed_precision(uint32_t dst_id, const uint32_t *args, uint32_t length)
-
void analyze_precision_requirements(uint32_t type_id, uint32_t dst_id, uint32_t *args, uint32_t length)
-
std::string to_flattened_struct_member(const std::string &basename, const SPIRType &type, uint32_t index)
-
void store_flattened_struct(uint32_t lhs_id, uint32_t value)
-
void store_flattened_struct(const std::string &basename, uint32_t rhs, const SPIRType &type, const SmallVector<uint32_t> &indices)
-
std::string to_flattened_access_chain_expression(uint32_t id)
-
void track_expression_read(uint32_t id)
-
inline bool is_legacy() const
-
inline bool is_legacy_es() const
-
inline bool is_legacy_desktop() const
-
void ray_tracing_khr_fixup_locations()
-
bool args_will_forward(uint32_t id, const uint32_t *args, uint32_t num_args, bool pure)
-
void register_call_out_argument(uint32_t id)
-
void register_impure_function_call()
-
void register_control_dependent_expression(uint32_t expr)
-
const char *to_pls_qualifiers_glsl(const SPIRVariable &variable)
-
void emit_pls()
-
void remap_pls_variables()
-
bool location_is_framebuffer_fetch(uint32_t location) const
-
bool location_is_non_coherent_framebuffer_fetch(uint32_t location) const
-
bool subpass_input_is_framebuffer_fetch(uint32_t id) const
-
void emit_inout_fragment_outputs_copy_to_subpass_inputs()
-
const SPIRVariable *find_subpass_input_by_attachment_index(uint32_t index) const
-
const SPIRVariable *find_color_output_by_location(uint32_t location) const
-
void add_variable(std::unordered_set<std::string> &variables_primary, const std::unordered_set<std::string> &variables_secondary, std::string &name)
-
void check_function_call_constraints(const uint32_t *args, uint32_t length)
-
void handle_invalid_expression(uint32_t id)
-
void force_temporary_and_recompile(uint32_t id)
-
void find_static_extensions()
-
uint32_t consume_temporary_in_precision_context(uint32_t type_id, uint32_t id, Options::Precision precision)
-
bool optimize_read_modify_write(const SPIRType &type, const std::string &lhs, const std::string &rhs)
-
void fixup_image_load_store_access()
-
bool can_use_io_location(spv::StorageClass storage, bool block)
-
const Instruction *get_next_instruction_in_block(const Instruction &instr)
-
std::string convert_half_to_string(const SPIRConstant &value, uint32_t col, uint32_t row)
-
std::string convert_float_to_string(const SPIRConstant &value, uint32_t col, uint32_t row)
-
std::string convert_double_to_string(const SPIRConstant &value, uint32_t col, uint32_t row)
-
std::string convert_separate_image_to_expression(uint32_t id)
-
virtual SPIRType::BaseType get_builtin_basetype(spv::BuiltIn builtin, SPIRType::BaseType default_type)
-
virtual void cast_to_variable_store(uint32_t target_id, std::string &expr, const SPIRType &expr_type)
-
virtual void cast_from_variable_load(uint32_t source_id, std::string &expr, const SPIRType &expr_type)
-
void unroll_array_from_complex_load(uint32_t target_id, uint32_t source_id, std::string &expr)
-
bool unroll_array_to_complex_store(uint32_t target_id, uint32_t source_id)
-
void convert_non_uniform_expression(std::string &expr, uint32_t ptr_id)
-
void handle_store_to_invariant_variable(uint32_t store_id, uint32_t value_id)
-
void disallow_forwarding_in_expression_chain(const SPIRExpression &expr)
-
bool expression_is_constant_null(uint32_t id) const
-
bool expression_is_non_value_type_array(uint32_t ptr)
-
virtual void emit_store_statement(uint32_t lhs_expression, uint32_t rhs_expression)
-
uint32_t get_integer_width_for_instruction(const Instruction &instr) const
-
uint32_t get_integer_width_for_glsl_instruction(GLSLstd450 op, const uint32_t *arguments, uint32_t length) const
-
bool variable_is_lut(const SPIRVariable &var) const
-
void fixup_type_alias()
-
void reorder_type_alias()
-
void fixup_anonymous_struct_names()
-
bool is_stage_output_location_masked(uint32_t location, uint32_t component) const
-
bool is_stage_output_variable_masked(const SPIRVariable &var) const
-
bool is_stage_output_block_member_masked(const SPIRVariable &var, uint32_t index, bool strip_array) const
-
bool is_per_primitive_variable(const SPIRVariable &var) const
-
uint32_t get_accumulated_member_location(const SPIRVariable &var, uint32_t mbr_idx, bool strip_array) const
-
uint32_t get_declared_member_location(const SPIRVariable &var, uint32_t mbr_idx, bool strip_array) const
-
std::string format_float(float value) const
-
std::string format_double(double value) const
Protected Attributes
-
SmallVector<SPIRBlock*> current_emitting_switch_stack
-
bool current_emitting_switch_fallthrough = false
-
StringStream buffer
-
SmallVector<std::string> *redirect_statement = nullptr
-
bool block_temporary_hoisting = false
-
bool block_debug_directives = false
-
std::unordered_set<std::string> local_variable_names
-
std::unordered_set<std::string> resource_names
-
std::unordered_set<std::string> block_input_names
-
std::unordered_set<std::string> block_output_names
-
std::unordered_set<std::string> block_ubo_names
-
std::unordered_set<std::string> block_ssbo_names
-
std::unordered_set<std::string> block_names
-
std::unordered_map<std::string, std::unordered_set<uint64_t>> function_overloads
-
std::unordered_map<uint32_t, std::string> preserved_aliases
-
bool processing_entry_point = false
-
struct SPIRV_CROSS_NAMESPACE::CompilerGLSL::BackendVariations backend
-
uint32_t indent = 0
-
std::unordered_set<uint32_t> emitted_functions
-
std::unordered_set<uint32_t> flushed_phi_variables
-
std::unordered_set<uint32_t> flattened_buffer_blocks
-
std::unordered_map<uint32_t, bool> flattened_structs
-
ShaderSubgroupSupportHelper shader_subgroup_supporter
-
std::unordered_map<uint32_t, uint32_t> expression_usage_counts
-
SmallVector<std::string> forced_extensions
-
SmallVector<std::string> header_lines
-
std::unordered_map<uint32_t, uint32_t> extra_sub_expressions
-
SmallVector<TypeID> workaround_ubo_load_overload_types
-
uint32_t statement_count = 0
-
uint32_t required_polyfills = 0
-
uint32_t required_polyfills_relaxed = 0
-
bool ray_tracing_is_khr = false
-
bool barycentric_is_nv = false
-
std::vector<std::pair<uint32_t, uint32_t>> subpass_to_framebuffer_fetch_attachment
-
std::vector<std::pair<uint32_t, bool>> inout_color_attachments
-
std::unordered_map<uint32_t, uint32_t> temporary_to_mirror_precision_alias
-
std::unordered_set<uint32_t> composite_insert_overwritten
-
std::unordered_set<uint32_t> block_composite_insert_overwrite
-
char current_locale_radix_character = '.'
-
std::unordered_set<LocationComponentPair, InternalHasher> masked_output_locations
-
std::unordered_set<uint32_t> masked_output_builtins
-
FloatFormatter *float_formatter = nullptr
Protected Static Functions
-
static bool needs_enclose_expression(const std::string &expr)
-
static uint32_t mask_relevant_memory_semantics(uint32_t semantics)
-
static const char *vector_swizzle(int vecsize, int index)
-
struct BackendVariations
Public Members
-
std::string discard_literal = "discard"
-
std::string demote_literal = "demote"
-
std::string null_pointer_literal = ""
-
bool float_literal_suffix = false
-
bool double_literal_suffix = true
-
bool uint32_t_literal_suffix = true
-
bool long_long_literal_suffix = false
-
const char *basic_int_type = "int"
-
const char *basic_uint_type = "uint"
-
const char *basic_int8_type = "int8_t"
-
const char *basic_uint8_type = "uint8_t"
-
const char *basic_int16_type = "int16_t"
-
const char *basic_uint16_type = "uint16_t"
-
const char *int16_t_literal_suffix = "s"
-
const char *uint16_t_literal_suffix = "us"
-
const char *nonuniform_qualifier = "nonuniformEXT"
-
const char *boolean_mix_function = "mix"
-
bool swizzle_is_function = false
-
bool unsized_array_supported = true
-
bool explicit_struct_type = false
-
bool use_initializer_list = false
-
bool use_typed_initializer_list = false
-
bool can_declare_struct_inline = true
-
bool can_declare_arrays_inline = true
-
bool native_row_major_matrix = true
-
bool use_constructor_splatting = true
-
bool allow_precision_qualifiers = false
-
bool can_swizzle_scalar = false
-
bool force_gl_in_out_block = false
-
bool force_merged_mesh_block = false
-
bool can_return_array = true
-
bool allow_truncated_access_chain = false
-
bool supports_extensions = false
-
bool supports_empty_struct = false
-
bool array_is_value_type = true
-
bool array_is_value_type_in_buffer_blocks = true
-
bool comparison_image_samples_scalar = false
-
bool native_pointers = false
-
bool support_small_type_sampling_result = false
-
bool support_case_fallthrough = true
-
bool use_array_constructor = false
-
bool needs_row_major_load_workaround = false
-
bool support_pointer_to_pointer = false
-
bool support_precise_qualifier = false
-
bool support_64bit_switch = false
-
bool requires_relaxed_precision_analysis = false
-
bool implicit_c_integer_promotion_rules = false
-
std::string discard_literal = "discard"
-
struct Options
Public Types
Public Members
-
uint32_t version = 450
-
bool es = false
-
bool force_temporary = false
-
uint32_t force_recompile_max_debug_iterations = 3
-
bool vulkan_semantics = false
-
bool separate_shader_objects = false
-
bool flatten_multidimensional_arrays = false
-
bool enable_420pack_extension = true
-
bool emit_push_constant_as_uniform_buffer = false
-
bool emit_uniform_buffer_as_plain_uniforms = false
-
bool emit_line_directives = false
-
bool enable_storage_image_qualifier_deduction = true
-
bool force_zero_initialized_variables = false
-
bool force_flattened_io_blocks = false
-
bool relax_nan_checks = false
-
bool enable_row_major_load_workaround = true
-
uint32_t ovr_multiview_view_count = 0
-
struct SPIRV_CROSS_NAMESPACE::CompilerGLSL::Options::VertexOptions vertex
-
struct SPIRV_CROSS_NAMESPACE::CompilerGLSL::Options::FragmentOptions fragment
-
struct FragmentOptions
-
struct VertexOptions
-
uint32_t version = 450
-
struct ShaderSubgroupSupportHelper
Public Types
-
enum Candidate
Values:
-
enumerator KHR_shader_subgroup_ballot
-
enumerator KHR_shader_subgroup_basic
-
enumerator KHR_shader_subgroup_vote
-
enumerator KHR_shader_subgroup_arithmetic
-
enumerator NV_gpu_shader_5
-
enumerator NV_shader_thread_group
-
enumerator NV_shader_thread_shuffle
-
enumerator ARB_shader_ballot
-
enumerator ARB_shader_group_vote
-
enumerator AMD_gcn_shader
-
enumerator CandidateCount
-
enumerator KHR_shader_subgroup_ballot
-
enum Feature
Values:
-
enumerator SubgroupMask
-
enumerator SubgroupSize
-
enumerator SubgroupInvocationID
-
enumerator SubgroupID
-
enumerator NumSubgroups
-
enumerator SubgroupBroadcast_First
-
enumerator SubgroupBallotFindLSB_MSB
-
enumerator SubgroupAll_Any_AllEqualBool
-
enumerator SubgroupAllEqualT
-
enumerator SubgroupElect
-
enumerator SubgroupBarrier
-
enumerator SubgroupMemBarrier
-
enumerator SubgroupBallot
-
enumerator SubgroupInverseBallot_InclBitCount_ExclBitCout
-
enumerator SubgroupBallotBitExtract
-
enumerator SubgroupBallotBitCount
-
enumerator SubgroupArithmeticIAddReduce
-
enumerator SubgroupArithmeticIAddExclusiveScan
-
enumerator SubgroupArithmeticIAddInclusiveScan
-
enumerator SubgroupArithmeticFAddReduce
-
enumerator SubgroupArithmeticFAddExclusiveScan
-
enumerator SubgroupArithmeticFAddInclusiveScan
-
enumerator SubgroupArithmeticIMulReduce
-
enumerator SubgroupArithmeticIMulExclusiveScan
-
enumerator SubgroupArithmeticIMulInclusiveScan
-
enumerator SubgroupArithmeticFMulReduce
-
enumerator SubgroupArithmeticFMulExclusiveScan
-
enumerator SubgroupArithmeticFMulInclusiveScan
-
enumerator FeatureCount
-
enumerator SubgroupMask
-
using FeatureMask = uint32_t
-
using CandidateVector = SmallVector<Candidate, CandidateCount>
-
using FeatureVector = SmallVector<Feature>
Public Functions
Public Static Functions
-
static SmallVector<std::string> get_extra_required_extension_names(Candidate c)
-
static FeatureVector get_feature_dependencies(Feature feature)
-
static FeatureMask get_feature_dependency_mask(Feature feature)
-
static CandidateVector get_candidates_for_feature(Feature ft, const Result &r)
-
struct Result
Public Functions
-
Result()
Public Members
-
uint32_t weights[CandidateCount]
-
Result()
-
enum Candidate
-
struct TemporaryCopy
-
struct TextureFunctionArguments
Public Functions
-
TextureFunctionArguments() = default
Public Members
-
uint32_t coord = 0
-
uint32_t coord_components = 0
-
uint32_t dref = 0
-
uint32_t grad_x = 0
-
uint32_t grad_y = 0
-
uint32_t lod = 0
-
uint32_t offset = 0
-
uint32_t bias = 0
-
uint32_t component = 0
-
uint32_t sample = 0
-
uint32_t sparse_texel = 0
-
uint32_t min_lod = 0
-
bool nonuniform_expression = false
-
bool has_array_offsets = false
-
TextureFunctionArguments() = default
-
void remap_ext_framebuffer_fetch(uint32_t input_attachment_index, uint32_t color_location, bool coherent)