chromium/third_party/glslang/src/glslang/MachineIndependent/Versions.h

//
// Copyright (C) 2002-2005  3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
// Copyright (C) 2017, 2022-2024 Arm Limited.
// Copyright (C) 2015-2018 Google, Inc.
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
//    Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
//
//    Redistributions in binary form must reproduce the above
//    copyright notice, this list of conditions and the following
//    disclaimer in the documentation and/or other materials provided
//    with the distribution.
//
//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its
//    contributors may be used to endorse or promote products derived
//    from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//

#ifndef _VERSIONS_INCLUDED_
#define _VERSIONS_INCLUDED_

#define LAST_ELEMENT_MARKER(x)

//
// Help manage multiple profiles, versions, extensions etc.
//

//
// Profiles are set up for masking operations, so queries can be done on multiple
// profiles at the same time.
//
// Don't maintain an ordinal set of enums (0,1,2,3...) to avoid all possible
// defects from mixing the two different forms.
//
EProfile;

namespace glslang {

//
// Map from profile enum to externally readable text name.
//
inline const char* ProfileName(EProfile profile)
{}

//
// What source rules, validation rules, target language, etc. are needed or
// desired for SPIR-V?
//
// 0 means a target or rule set is not enabled (ignore rules from that entity).
// Non-0 means to apply semantic rules arising from that version of its rule set.
// The union of all requested rule sets will be applied.
//
struct SpvVersion {};

//
// The behaviors from the GLSL "#extension extension_name : behavior"
//
TExtensionBehavior;

//
// Symbolic names for extensions.  Strings may be directly used when calling the
// functions, but better to have the compiler do spelling checks.
//
const char* const E_GL_OES_texture_3D                   =;
const char* const E_GL_OES_standard_derivatives         =;
const char* const E_GL_EXT_frag_depth                   =;
const char* const E_GL_OES_EGL_image_external           =;
const char* const E_GL_OES_EGL_image_external_essl3     =;
const char* const E_GL_EXT_YUV_target                   =;
const char* const E_GL_EXT_shader_texture_lod           =;
const char* const E_GL_EXT_shadow_samplers              =;

const char* const E_GL_ARB_texture_rectangle            =;
const char* const E_GL_3DL_array_objects                =;
const char* const E_GL_ARB_shading_language_420pack     =;
const char* const E_GL_ARB_texture_gather               =;
const char* const E_GL_ARB_gpu_shader5                  =;
const char* const E_GL_ARB_separate_shader_objects      =;
const char* const E_GL_ARB_compute_shader               =;
const char* const E_GL_ARB_tessellation_shader          =;
const char* const E_GL_ARB_enhanced_layouts             =;
const char* const E_GL_ARB_texture_cube_map_array       =;
const char* const E_GL_ARB_texture_multisample          =;
const char* const E_GL_ARB_shader_texture_lod           =;
const char* const E_GL_ARB_explicit_attrib_location     =;
const char* const E_GL_ARB_explicit_uniform_location    =;
const char* const E_GL_ARB_shader_image_load_store      =;
const char* const E_GL_ARB_shader_atomic_counters       =;
const char* const E_GL_ARB_shader_atomic_counter_ops    =;
const char* const E_GL_ARB_shader_draw_parameters       =;
const char* const E_GL_ARB_shader_group_vote            =;
const char* const E_GL_ARB_derivative_control           =;
const char* const E_GL_ARB_shader_texture_image_samples =;
const char* const E_GL_ARB_viewport_array               =;
const char* const E_GL_ARB_gpu_shader_int64             =;
const char* const E_GL_ARB_gpu_shader_fp64              =;
const char* const E_GL_ARB_shader_ballot                =;
const char* const E_GL_ARB_sparse_texture2              =;
const char* const E_GL_ARB_sparse_texture_clamp         =;
const char* const E_GL_ARB_shader_stencil_export        =;
// const char* const E_GL_ARB_cull_distance            = "GL_ARB_cull_distance";  // present for 4.5, but need extension control over block members
const char* const E_GL_ARB_post_depth_coverage          =;
const char* const E_GL_ARB_shader_viewport_layer_array  =;
const char* const E_GL_ARB_fragment_shader_interlock    =;
const char* const E_GL_ARB_shader_clock                 =;
const char* const E_GL_ARB_uniform_buffer_object        =;
const char* const E_GL_ARB_sample_shading               =;
const char* const E_GL_ARB_shader_bit_encoding          =;
const char* const E_GL_ARB_shader_image_size            =;
const char* const E_GL_ARB_shader_storage_buffer_object =;
const char* const E_GL_ARB_shading_language_packing     =;
const char* const E_GL_ARB_texture_query_lod            =;
const char* const E_GL_ARB_vertex_attrib_64bit          =;
const char* const E_GL_ARB_draw_instanced               =;
const char* const E_GL_ARB_fragment_coord_conventions   =;
const char* const E_GL_ARB_bindless_texture             =;

const char* const E_GL_KHR_shader_subgroup_basic            =;
const char* const E_GL_KHR_shader_subgroup_vote             =;
const char* const E_GL_KHR_shader_subgroup_arithmetic       =;
const char* const E_GL_KHR_shader_subgroup_ballot           =;
const char* const E_GL_KHR_shader_subgroup_shuffle          =;
const char* const E_GL_KHR_shader_subgroup_shuffle_relative =;
const char* const E_GL_KHR_shader_subgroup_rotate           =;
const char* const E_GL_KHR_shader_subgroup_clustered        =;
const char* const E_GL_KHR_shader_subgroup_quad             =;
const char* const E_GL_KHR_memory_scope_semantics           =;
const char* const E_GL_KHR_cooperative_matrix               =;

const char* const E_GL_EXT_shader_atomic_int64              =;

const char* const E_GL_EXT_shader_non_constant_global_initializers =;
const char* const E_GL_EXT_shader_image_load_formatted =;

const char* const E_GL_EXT_shader_16bit_storage             =;
const char* const E_GL_EXT_shader_8bit_storage              =;


// EXT extensions
const char* const E_GL_EXT_device_group                     =;
const char* const E_GL_EXT_multiview                        =;
const char* const E_GL_EXT_post_depth_coverage              =;
const char* const E_GL_EXT_control_flow_attributes          =;
const char* const E_GL_EXT_nonuniform_qualifier             =;
const char* const E_GL_EXT_samplerless_texture_functions    =;
const char* const E_GL_EXT_scalar_block_layout              =;
const char* const E_GL_EXT_fragment_invocation_density      =;
const char* const E_GL_EXT_buffer_reference                 =;
const char* const E_GL_EXT_buffer_reference2                =;
const char* const E_GL_EXT_buffer_reference_uvec2           =;
const char* const E_GL_EXT_demote_to_helper_invocation      =;
const char* const E_GL_EXT_shader_realtime_clock            =;
const char* const E_GL_EXT_debug_printf                     =;
const char* const E_GL_EXT_ray_tracing                      =;
const char* const E_GL_EXT_ray_query                        =;
const char* const E_GL_EXT_ray_flags_primitive_culling      =;
const char* const E_GL_EXT_ray_cull_mask                    =;
const char* const E_GL_EXT_blend_func_extended              =;
const char* const E_GL_EXT_shader_implicit_conversions      =;
const char* const E_GL_EXT_fragment_shading_rate            =;
const char* const E_GL_EXT_shader_image_int64               =;
const char* const E_GL_EXT_null_initializer                 =;
const char* const E_GL_EXT_shared_memory_block              =;
const char* const E_GL_EXT_subgroup_uniform_control_flow    =;
const char* const E_GL_EXT_spirv_intrinsics                 =;
const char* const E_GL_EXT_fragment_shader_barycentric      =;
const char* const E_GL_EXT_mesh_shader                      =;
const char* const E_GL_EXT_opacity_micromap                 =;
const char* const E_GL_EXT_shader_quad_control              =;
const char* const E_GL_EXT_draw_instanced                   =;
const char* const E_GL_EXT_texture_array                    =;
const char* const E_GL_EXT_maximal_reconvergence            =;
const char* const E_GL_EXT_expect_assume                    =;
const char* const E_GL_EXT_control_flow_attributes2         =;
const char* const E_GL_EXT_spec_constant_composites         =;

// Arrays of extensions for the above viewportEXTs duplications

const char* const post_depth_coverageEXTs[] =;
const int Num_post_depth_coverageEXTs =;

// Array of extensions to cover both extensions providing ray tracing capabilities.
const char* const ray_tracing_EXTs[] =;
const int Num_ray_tracing_EXTs =;

// OVR extensions
const char* const E_GL_OVR_multiview                    =;
const char* const E_GL_OVR_multiview2                   =;

const char* const OVR_multiview_EXTs[] =;
const int Num_OVR_multiview_EXTs =;

// #line and #include
const char* const E_GL_GOOGLE_cpp_style_line_directive          =;
const char* const E_GL_GOOGLE_include_directive                 =;
const char* const E_GL_ARB_shading_language_include             =;

const char* const E_GL_AMD_shader_ballot                        =;
const char* const E_GL_AMD_shader_trinary_minmax                =;
const char* const E_GL_AMD_shader_explicit_vertex_parameter     =;
const char* const E_GL_AMD_gcn_shader                           =;
const char* const E_GL_AMD_gpu_shader_half_float                =;
const char* const E_GL_AMD_texture_gather_bias_lod              =;
const char* const E_GL_AMD_gpu_shader_int16                     =;
const char* const E_GL_AMD_shader_image_load_store_lod          =;
const char* const E_GL_AMD_shader_fragment_mask                 =;
const char* const E_GL_AMD_gpu_shader_half_float_fetch          =;
const char* const E_GL_AMD_shader_early_and_late_fragment_tests =;

const char* const E_GL_INTEL_shader_integer_functions2          =;

const char* const E_GL_NV_sample_mask_override_coverage         =;
const char* const E_SPV_NV_geometry_shader_passthrough          =;
const char* const E_GL_NV_viewport_array2                       =;
const char* const E_GL_NV_stereo_view_rendering                 =;
const char* const E_GL_NVX_multiview_per_view_attributes        =;
const char* const E_GL_NV_shader_atomic_int64                   =;
const char* const E_GL_NV_conservative_raster_underestimation   =;
const char* const E_GL_NV_shader_noperspective_interpolation    =;
const char* const E_GL_NV_shader_subgroup_partitioned           =;
const char* const E_GL_NV_shading_rate_image                    =;
const char* const E_GL_NV_ray_tracing                           =;
const char* const E_GL_NV_ray_tracing_motion_blur               =;
const char* const E_GL_NV_fragment_shader_barycentric           =;
const char* const E_GL_NV_compute_shader_derivatives            =;
const char* const E_GL_NV_shader_texture_footprint              =;
const char* const E_GL_NV_mesh_shader                           =;
const char* const E_GL_NV_cooperative_matrix                    =;
const char* const E_GL_NV_shader_sm_builtins                    =;
const char* const E_GL_NV_integer_cooperative_matrix            =;
const char* const E_GL_NV_shader_invocation_reorder             =;
const char* const E_GL_EXT_ray_tracing_position_fetch           =;
const char* const E_GL_NV_displacement_micromap                 =;
const char* const E_GL_NV_shader_atomic_fp16_vector             =;

// ARM
const char* const E_GL_ARM_shader_core_builtins                 =;

// Arrays of extensions for the above viewportEXTs duplications

const char* const viewportEXTs[] =;
const int Num_viewportEXTs =;


const char* const E_GL_QCOM_image_processing                    =;
const char* const E_GL_QCOM_image_processing2                   =;

// AEP
const char* const E_GL_ANDROID_extension_pack_es31a             =;
const char* const E_GL_KHR_blend_equation_advanced              =;
const char* const E_GL_OES_sample_variables                     =;
const char* const E_GL_OES_shader_image_atomic                  =;
const char* const E_GL_OES_shader_multisample_interpolation     =;
const char* const E_GL_OES_texture_storage_multisample_2d_array =;
const char* const E_GL_EXT_geometry_shader                      =;
const char* const E_GL_EXT_geometry_point_size                  =;
const char* const E_GL_EXT_gpu_shader5                          =;
const char* const E_GL_EXT_primitive_bounding_box               =;
const char* const E_GL_EXT_shader_io_blocks                     =;
const char* const E_GL_EXT_tessellation_shader                  =;
const char* const E_GL_EXT_tessellation_point_size              =;
const char* const E_GL_EXT_texture_buffer                       =;
const char* const E_GL_EXT_texture_cube_map_array               =;
const char* const E_GL_EXT_shader_integer_mix                   =;

// OES matching AEP
const char* const E_GL_OES_geometry_shader                      =;
const char* const E_GL_OES_geometry_point_size                  =;
const char* const E_GL_OES_gpu_shader5                          =;
const char* const E_GL_OES_primitive_bounding_box               =;
const char* const E_GL_OES_shader_io_blocks                     =;
const char* const E_GL_OES_tessellation_shader                  =;
const char* const E_GL_OES_tessellation_point_size              =;
const char* const E_GL_OES_texture_buffer                       =;
const char* const E_GL_OES_texture_cube_map_array               =;

// EXT
const char* const E_GL_EXT_shader_explicit_arithmetic_types          =;
const char* const E_GL_EXT_shader_explicit_arithmetic_types_int8     =;
const char* const E_GL_EXT_shader_explicit_arithmetic_types_int16    =;
const char* const E_GL_EXT_shader_explicit_arithmetic_types_int32    =;
const char* const E_GL_EXT_shader_explicit_arithmetic_types_int64    =;
const char* const E_GL_EXT_shader_explicit_arithmetic_types_float16  =;
const char* const E_GL_EXT_shader_explicit_arithmetic_types_float32  =;
const char* const E_GL_EXT_shader_explicit_arithmetic_types_float64  =;

const char* const E_GL_EXT_shader_subgroup_extended_types_int8    =;
const char* const E_GL_EXT_shader_subgroup_extended_types_int16   =;
const char* const E_GL_EXT_shader_subgroup_extended_types_int64   =;
const char* const E_GL_EXT_shader_subgroup_extended_types_float16 =;
const char* const E_GL_EXT_terminate_invocation =;

const char* const E_GL_EXT_shader_atomic_float =;
const char* const E_GL_EXT_shader_atomic_float2 =;

const char* const E_GL_EXT_shader_tile_image =;

const char* const E_GL_EXT_texture_shadow_lod =;

// Arrays of extensions for the above AEP duplications

const char* const AEP_geometry_shader[] =;
const int Num_AEP_geometry_shader =;

const char* const AEP_geometry_point_size[] =;
const int Num_AEP_geometry_point_size =;

const char* const AEP_gpu_shader5[] =;
const int Num_AEP_gpu_shader5 =;

const char* const AEP_primitive_bounding_box[] =;
const int Num_AEP_primitive_bounding_box =;

const char* const AEP_shader_io_blocks[] =;
const int Num_AEP_shader_io_blocks =;

const char* const AEP_tessellation_shader[] =;
const int Num_AEP_tessellation_shader =;

const char* const AEP_tessellation_point_size[] =;
const int Num_AEP_tessellation_point_size =;

const char* const AEP_texture_buffer[] =;
const int Num_AEP_texture_buffer =;

const char* const AEP_texture_cube_map_array[] =;
const int Num_AEP_texture_cube_map_array =;

const char* const AEP_mesh_shader[] =;
const int Num_AEP_mesh_shader =;

} // end namespace glslang

#endif // _VERSIONS_INCLUDED_