|
|
|
|
@ -72,455 +72,464 @@ using namespace Containers::Literals;
|
|
|
|
|
to be sorted alphabetically. */ |
|
|
|
|
namespace { |
|
|
|
|
|
|
|
|
|
#define _extension(vendor, extension) \ |
|
|
|
|
{Extensions::vendor::extension::Index, Extensions::vendor::extension::requiredVersion(), Extensions::vendor::extension::coreVersion(), Extensions::vendor::extension::string()} |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES |
|
|
|
|
constexpr Extension ExtensionList[]{ |
|
|
|
|
_extension(AMD,sample_positions), |
|
|
|
|
_extension(AMD,shader_explicit_vertex_parameter), |
|
|
|
|
_extension(AMD,shader_trinary_minmax), |
|
|
|
|
_extension(AMD,transform_feedback3_lines_triangles), |
|
|
|
|
_extension(AMD,vertex_shader_layer), |
|
|
|
|
_extension(ARB,ES3_2_compatibility), |
|
|
|
|
_extension(ARB,bindless_texture), |
|
|
|
|
_extension(ARB,compute_variable_group_size), |
|
|
|
|
_extension(ARB,robustness), |
|
|
|
|
_extension(ARB,robustness_application_isolation), |
|
|
|
|
_extension(ARB,robustness_isolation), |
|
|
|
|
_extension(ARB,robustness_share_group_isolation), |
|
|
|
|
_extension(ARB,sample_locations), |
|
|
|
|
_extension(ARB,seamless_cubemap_per_texture), |
|
|
|
|
_extension(ARB,sparse_buffer), |
|
|
|
|
_extension(ARB,sparse_texture), |
|
|
|
|
_extension(ATI,texture_mirror_once), |
|
|
|
|
_extension(EXT,debug_label), |
|
|
|
|
_extension(EXT,debug_marker), |
|
|
|
|
_extension(EXT,shader_integer_mix), |
|
|
|
|
_extension(EXT,texture_compression_dxt1), |
|
|
|
|
_extension(EXT,texture_compression_s3tc), |
|
|
|
|
_extension(EXT,texture_filter_anisotropic), |
|
|
|
|
_extension(EXT,texture_mirror_clamp), |
|
|
|
|
_extension(EXT,texture_sRGB_R8), |
|
|
|
|
_extension(EXT,texture_sRGB_decode), |
|
|
|
|
_extension(GREMEDY,string_marker), |
|
|
|
|
_extension(KHR,blend_equation_advanced), |
|
|
|
|
_extension(KHR,blend_equation_advanced_coherent), |
|
|
|
|
_extension(KHR,texture_compression_astc_hdr), |
|
|
|
|
_extension(KHR,texture_compression_astc_ldr), |
|
|
|
|
_extension(KHR,texture_compression_astc_sliced_3d), |
|
|
|
|
_extension(NV,fragment_shader_barycentric), |
|
|
|
|
_extension(NV,sample_locations), |
|
|
|
|
_extension(OVR,multiview), |
|
|
|
|
_extension(OVR,multiview2)}; |
|
|
|
|
Extensions::AMD::sample_positions{}, |
|
|
|
|
Extensions::AMD::shader_explicit_vertex_parameter{}, |
|
|
|
|
Extensions::AMD::shader_trinary_minmax{}, |
|
|
|
|
Extensions::AMD::transform_feedback3_lines_triangles{}, |
|
|
|
|
Extensions::AMD::vertex_shader_layer{}, |
|
|
|
|
Extensions::ARB::ES3_2_compatibility{}, |
|
|
|
|
Extensions::ARB::bindless_texture{}, |
|
|
|
|
Extensions::ARB::compute_variable_group_size{}, |
|
|
|
|
Extensions::ARB::robustness{}, |
|
|
|
|
Extensions::ARB::robustness_application_isolation{}, |
|
|
|
|
Extensions::ARB::robustness_isolation{}, |
|
|
|
|
Extensions::ARB::robustness_share_group_isolation{}, |
|
|
|
|
Extensions::ARB::sample_locations{}, |
|
|
|
|
Extensions::ARB::seamless_cubemap_per_texture{}, |
|
|
|
|
Extensions::ARB::sparse_buffer{}, |
|
|
|
|
Extensions::ARB::sparse_texture{}, |
|
|
|
|
Extensions::ATI::texture_mirror_once{}, |
|
|
|
|
Extensions::EXT::debug_label{}, |
|
|
|
|
Extensions::EXT::debug_marker{}, |
|
|
|
|
Extensions::EXT::shader_integer_mix{}, |
|
|
|
|
Extensions::EXT::texture_compression_dxt1{}, |
|
|
|
|
Extensions::EXT::texture_compression_s3tc{}, |
|
|
|
|
Extensions::EXT::texture_filter_anisotropic{}, |
|
|
|
|
Extensions::EXT::texture_mirror_clamp{}, |
|
|
|
|
Extensions::EXT::texture_sRGB_R8{}, |
|
|
|
|
Extensions::EXT::texture_sRGB_decode{}, |
|
|
|
|
Extensions::GREMEDY::string_marker{}, |
|
|
|
|
Extensions::KHR::blend_equation_advanced{}, |
|
|
|
|
Extensions::KHR::blend_equation_advanced_coherent{}, |
|
|
|
|
Extensions::KHR::texture_compression_astc_hdr{}, |
|
|
|
|
Extensions::KHR::texture_compression_astc_ldr{}, |
|
|
|
|
Extensions::KHR::texture_compression_astc_sliced_3d{}, |
|
|
|
|
Extensions::NV::fragment_shader_barycentric{}, |
|
|
|
|
Extensions::NV::sample_locations{}, |
|
|
|
|
Extensions::OVR::multiview{}, |
|
|
|
|
Extensions::OVR::multiview2{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList300[]{ |
|
|
|
|
_extension(ARB,color_buffer_float), |
|
|
|
|
_extension(ARB,depth_buffer_float), |
|
|
|
|
_extension(ARB,framebuffer_object), |
|
|
|
|
_extension(ARB,framebuffer_sRGB), |
|
|
|
|
_extension(ARB,half_float_pixel), |
|
|
|
|
_extension(ARB,half_float_vertex), |
|
|
|
|
_extension(ARB,map_buffer_range), |
|
|
|
|
_extension(ARB,texture_float), |
|
|
|
|
_extension(ARB,texture_rg), |
|
|
|
|
_extension(ARB,vertex_array_object), |
|
|
|
|
_extension(EXT,draw_buffers2), |
|
|
|
|
_extension(EXT,gpu_shader4), |
|
|
|
|
_extension(EXT,packed_float), |
|
|
|
|
_extension(EXT,texture_array), |
|
|
|
|
_extension(EXT,texture_compression_rgtc), |
|
|
|
|
_extension(EXT,texture_integer), |
|
|
|
|
_extension(EXT,texture_shared_exponent), |
|
|
|
|
_extension(EXT,transform_feedback), |
|
|
|
|
_extension(MAGNUM,shader_vertex_id), |
|
|
|
|
_extension(NV,conditional_render), |
|
|
|
|
_extension(NV,depth_buffer_float)}; |
|
|
|
|
Extensions::ARB::color_buffer_float{}, |
|
|
|
|
Extensions::ARB::depth_buffer_float{}, |
|
|
|
|
Extensions::ARB::framebuffer_object{}, |
|
|
|
|
Extensions::ARB::framebuffer_sRGB{}, |
|
|
|
|
Extensions::ARB::half_float_pixel{}, |
|
|
|
|
Extensions::ARB::half_float_vertex{}, |
|
|
|
|
Extensions::ARB::map_buffer_range{}, |
|
|
|
|
Extensions::ARB::texture_float{}, |
|
|
|
|
Extensions::ARB::texture_rg{}, |
|
|
|
|
Extensions::ARB::vertex_array_object{}, |
|
|
|
|
Extensions::EXT::draw_buffers2{}, |
|
|
|
|
Extensions::EXT::gpu_shader4{}, |
|
|
|
|
Extensions::EXT::packed_float{}, |
|
|
|
|
Extensions::EXT::texture_array{}, |
|
|
|
|
Extensions::EXT::texture_compression_rgtc{}, |
|
|
|
|
Extensions::EXT::texture_integer{}, |
|
|
|
|
Extensions::EXT::texture_shared_exponent{}, |
|
|
|
|
Extensions::EXT::transform_feedback{}, |
|
|
|
|
Extensions::MAGNUM::shader_vertex_id{}, |
|
|
|
|
Extensions::NV::conditional_render{}, |
|
|
|
|
Extensions::NV::depth_buffer_float{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList310[]{ |
|
|
|
|
_extension(ARB,copy_buffer), |
|
|
|
|
_extension(ARB,draw_instanced), |
|
|
|
|
_extension(ARB,texture_buffer_object), |
|
|
|
|
_extension(ARB,texture_rectangle), |
|
|
|
|
_extension(ARB,uniform_buffer_object), |
|
|
|
|
_extension(EXT,texture_snorm), |
|
|
|
|
_extension(NV,primitive_restart)}; |
|
|
|
|
Extensions::ARB::copy_buffer{}, |
|
|
|
|
Extensions::ARB::draw_instanced{}, |
|
|
|
|
Extensions::ARB::texture_buffer_object{}, |
|
|
|
|
Extensions::ARB::texture_rectangle{}, |
|
|
|
|
Extensions::ARB::uniform_buffer_object{}, |
|
|
|
|
Extensions::EXT::texture_snorm{}, |
|
|
|
|
Extensions::NV::primitive_restart{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList320[]{ |
|
|
|
|
_extension(ARB,depth_clamp), |
|
|
|
|
_extension(ARB,draw_elements_base_vertex), |
|
|
|
|
_extension(ARB,fragment_coord_conventions), |
|
|
|
|
_extension(ARB,geometry_shader4), |
|
|
|
|
_extension(ARB,provoking_vertex), |
|
|
|
|
_extension(ARB,seamless_cube_map), |
|
|
|
|
_extension(ARB,sync), |
|
|
|
|
_extension(ARB,texture_multisample), |
|
|
|
|
_extension(ARB,vertex_array_bgra)}; |
|
|
|
|
Extensions::ARB::depth_clamp{}, |
|
|
|
|
Extensions::ARB::draw_elements_base_vertex{}, |
|
|
|
|
Extensions::ARB::fragment_coord_conventions{}, |
|
|
|
|
Extensions::ARB::geometry_shader4{}, |
|
|
|
|
Extensions::ARB::provoking_vertex{}, |
|
|
|
|
Extensions::ARB::seamless_cube_map{}, |
|
|
|
|
Extensions::ARB::sync{}, |
|
|
|
|
Extensions::ARB::texture_multisample{}, |
|
|
|
|
Extensions::ARB::vertex_array_bgra{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList330[]{ |
|
|
|
|
_extension(ARB,blend_func_extended), |
|
|
|
|
_extension(ARB,explicit_attrib_location), |
|
|
|
|
_extension(ARB,instanced_arrays), |
|
|
|
|
_extension(ARB,occlusion_query2), |
|
|
|
|
_extension(ARB,sampler_objects), |
|
|
|
|
_extension(ARB,shader_bit_encoding), |
|
|
|
|
_extension(ARB,texture_rgb10_a2ui), |
|
|
|
|
_extension(ARB,texture_swizzle), |
|
|
|
|
_extension(ARB,timer_query), |
|
|
|
|
_extension(ARB,vertex_type_2_10_10_10_rev)}; |
|
|
|
|
Extensions::ARB::blend_func_extended{}, |
|
|
|
|
Extensions::ARB::explicit_attrib_location{}, |
|
|
|
|
Extensions::ARB::instanced_arrays{}, |
|
|
|
|
Extensions::ARB::occlusion_query2{}, |
|
|
|
|
Extensions::ARB::sampler_objects{}, |
|
|
|
|
Extensions::ARB::shader_bit_encoding{}, |
|
|
|
|
Extensions::ARB::texture_rgb10_a2ui{}, |
|
|
|
|
Extensions::ARB::texture_swizzle{}, |
|
|
|
|
Extensions::ARB::timer_query{}, |
|
|
|
|
Extensions::ARB::vertex_type_2_10_10_10_rev{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList400[]{ |
|
|
|
|
_extension(ARB,draw_buffers_blend), |
|
|
|
|
_extension(ARB,draw_indirect), |
|
|
|
|
_extension(ARB,gpu_shader5), |
|
|
|
|
_extension(ARB,gpu_shader_fp64), |
|
|
|
|
_extension(ARB,sample_shading), |
|
|
|
|
_extension(ARB,shader_subroutine), |
|
|
|
|
_extension(ARB,tessellation_shader), |
|
|
|
|
_extension(ARB,texture_buffer_object_rgb32), |
|
|
|
|
_extension(ARB,texture_cube_map_array), |
|
|
|
|
_extension(ARB,texture_gather), |
|
|
|
|
_extension(ARB,texture_query_lod), |
|
|
|
|
_extension(ARB,transform_feedback2), |
|
|
|
|
_extension(ARB,transform_feedback3)}; |
|
|
|
|
Extensions::ARB::draw_buffers_blend{}, |
|
|
|
|
Extensions::ARB::draw_indirect{}, |
|
|
|
|
Extensions::ARB::gpu_shader5{}, |
|
|
|
|
Extensions::ARB::gpu_shader_fp64{}, |
|
|
|
|
Extensions::ARB::sample_shading{}, |
|
|
|
|
Extensions::ARB::shader_subroutine{}, |
|
|
|
|
Extensions::ARB::tessellation_shader{}, |
|
|
|
|
Extensions::ARB::texture_buffer_object_rgb32{}, |
|
|
|
|
Extensions::ARB::texture_cube_map_array{}, |
|
|
|
|
Extensions::ARB::texture_gather{}, |
|
|
|
|
Extensions::ARB::texture_query_lod{}, |
|
|
|
|
Extensions::ARB::transform_feedback2{}, |
|
|
|
|
Extensions::ARB::transform_feedback3{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList410[]{ |
|
|
|
|
_extension(ARB,ES2_compatibility), |
|
|
|
|
_extension(ARB,get_program_binary), |
|
|
|
|
_extension(ARB,separate_shader_objects), |
|
|
|
|
_extension(ARB,shader_precision), |
|
|
|
|
_extension(ARB,vertex_attrib_64bit), |
|
|
|
|
_extension(ARB,viewport_array)}; |
|
|
|
|
Extensions::ARB::ES2_compatibility{}, |
|
|
|
|
Extensions::ARB::get_program_binary{}, |
|
|
|
|
Extensions::ARB::separate_shader_objects{}, |
|
|
|
|
Extensions::ARB::shader_precision{}, |
|
|
|
|
Extensions::ARB::vertex_attrib_64bit{}, |
|
|
|
|
Extensions::ARB::viewport_array{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList420[]{ |
|
|
|
|
_extension(ARB,base_instance), |
|
|
|
|
_extension(ARB,compressed_texture_pixel_storage), |
|
|
|
|
_extension(ARB,conservative_depth), |
|
|
|
|
_extension(ARB,internalformat_query), |
|
|
|
|
_extension(ARB,map_buffer_alignment), |
|
|
|
|
_extension(ARB,shader_atomic_counters), |
|
|
|
|
_extension(ARB,shader_image_load_store), |
|
|
|
|
_extension(ARB,shading_language_420pack), |
|
|
|
|
Extensions::ARB::base_instance{}, |
|
|
|
|
Extensions::ARB::compressed_texture_pixel_storage{}, |
|
|
|
|
Extensions::ARB::conservative_depth{}, |
|
|
|
|
Extensions::ARB::internalformat_query{}, |
|
|
|
|
Extensions::ARB::map_buffer_alignment{}, |
|
|
|
|
Extensions::ARB::shader_atomic_counters{}, |
|
|
|
|
Extensions::ARB::shader_image_load_store{}, |
|
|
|
|
Extensions::ARB::shading_language_420pack{}, |
|
|
|
|
/* Mentioned in GLSL 4.20 specs as newly added */ |
|
|
|
|
_extension(ARB,shading_language_packing), |
|
|
|
|
_extension(ARB,texture_compression_bptc), |
|
|
|
|
_extension(ARB,texture_storage), |
|
|
|
|
_extension(ARB,transform_feedback_instanced)}; |
|
|
|
|
Extensions::ARB::shading_language_packing{}, |
|
|
|
|
Extensions::ARB::texture_compression_bptc{}, |
|
|
|
|
Extensions::ARB::texture_storage{}, |
|
|
|
|
Extensions::ARB::transform_feedback_instanced{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList430[]{ |
|
|
|
|
_extension(ARB,ES3_compatibility), |
|
|
|
|
_extension(ARB,arrays_of_arrays), |
|
|
|
|
_extension(ARB,clear_buffer_object), |
|
|
|
|
_extension(ARB,compute_shader), |
|
|
|
|
_extension(ARB,copy_image), |
|
|
|
|
_extension(ARB,explicit_uniform_location), |
|
|
|
|
_extension(ARB,fragment_layer_viewport), |
|
|
|
|
_extension(ARB,framebuffer_no_attachments), |
|
|
|
|
_extension(ARB,internalformat_query2), |
|
|
|
|
_extension(ARB,invalidate_subdata), |
|
|
|
|
_extension(ARB,multi_draw_indirect), |
|
|
|
|
_extension(ARB,program_interface_query), |
|
|
|
|
_extension(ARB,robust_buffer_access_behavior), |
|
|
|
|
_extension(ARB,shader_image_size), |
|
|
|
|
_extension(ARB,shader_storage_buffer_object), |
|
|
|
|
_extension(ARB,stencil_texturing), |
|
|
|
|
_extension(ARB,texture_buffer_range), |
|
|
|
|
_extension(ARB,texture_query_levels), |
|
|
|
|
_extension(ARB,texture_storage_multisample), |
|
|
|
|
_extension(ARB,texture_view), |
|
|
|
|
_extension(ARB,vertex_attrib_binding), |
|
|
|
|
_extension(KHR,debug)}; |
|
|
|
|
Extensions::ARB::ES3_compatibility{}, |
|
|
|
|
Extensions::ARB::arrays_of_arrays{}, |
|
|
|
|
Extensions::ARB::clear_buffer_object{}, |
|
|
|
|
Extensions::ARB::compute_shader{}, |
|
|
|
|
Extensions::ARB::copy_image{}, |
|
|
|
|
Extensions::ARB::explicit_uniform_location{}, |
|
|
|
|
Extensions::ARB::fragment_layer_viewport{}, |
|
|
|
|
Extensions::ARB::framebuffer_no_attachments{}, |
|
|
|
|
Extensions::ARB::internalformat_query2{}, |
|
|
|
|
Extensions::ARB::invalidate_subdata{}, |
|
|
|
|
Extensions::ARB::multi_draw_indirect{}, |
|
|
|
|
Extensions::ARB::program_interface_query{}, |
|
|
|
|
Extensions::ARB::robust_buffer_access_behavior{}, |
|
|
|
|
Extensions::ARB::shader_image_size{}, |
|
|
|
|
Extensions::ARB::shader_storage_buffer_object{}, |
|
|
|
|
Extensions::ARB::stencil_texturing{}, |
|
|
|
|
Extensions::ARB::texture_buffer_range{}, |
|
|
|
|
Extensions::ARB::texture_query_levels{}, |
|
|
|
|
Extensions::ARB::texture_storage_multisample{}, |
|
|
|
|
Extensions::ARB::texture_view{}, |
|
|
|
|
Extensions::ARB::vertex_attrib_binding{}, |
|
|
|
|
Extensions::KHR::debug{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList440[]{ |
|
|
|
|
_extension(ARB,buffer_storage), |
|
|
|
|
_extension(ARB,clear_texture), |
|
|
|
|
_extension(ARB,enhanced_layouts), |
|
|
|
|
_extension(ARB,multi_bind), |
|
|
|
|
_extension(ARB,query_buffer_object), |
|
|
|
|
_extension(ARB,texture_mirror_clamp_to_edge), |
|
|
|
|
_extension(ARB,texture_stencil8), |
|
|
|
|
_extension(ARB,vertex_type_10f_11f_11f_rev)}; |
|
|
|
|
Extensions::ARB::buffer_storage{}, |
|
|
|
|
Extensions::ARB::clear_texture{}, |
|
|
|
|
Extensions::ARB::enhanced_layouts{}, |
|
|
|
|
Extensions::ARB::multi_bind{}, |
|
|
|
|
Extensions::ARB::query_buffer_object{}, |
|
|
|
|
Extensions::ARB::texture_mirror_clamp_to_edge{}, |
|
|
|
|
Extensions::ARB::texture_stencil8{}, |
|
|
|
|
Extensions::ARB::vertex_type_10f_11f_11f_rev{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList450[]{ |
|
|
|
|
_extension(ARB,ES3_1_compatibility), |
|
|
|
|
_extension(ARB,clip_control), |
|
|
|
|
_extension(ARB,conditional_render_inverted), |
|
|
|
|
_extension(ARB,cull_distance), |
|
|
|
|
_extension(ARB,derivative_control), |
|
|
|
|
_extension(ARB,direct_state_access), |
|
|
|
|
_extension(ARB,get_texture_sub_image), |
|
|
|
|
_extension(ARB,shader_texture_image_samples), |
|
|
|
|
_extension(ARB,texture_barrier), |
|
|
|
|
_extension(KHR,context_flush_control), |
|
|
|
|
_extension(KHR,robustness)}; |
|
|
|
|
Extensions::ARB::ES3_1_compatibility{}, |
|
|
|
|
Extensions::ARB::clip_control{}, |
|
|
|
|
Extensions::ARB::conditional_render_inverted{}, |
|
|
|
|
Extensions::ARB::cull_distance{}, |
|
|
|
|
Extensions::ARB::derivative_control{}, |
|
|
|
|
Extensions::ARB::direct_state_access{}, |
|
|
|
|
Extensions::ARB::get_texture_sub_image{}, |
|
|
|
|
Extensions::ARB::shader_texture_image_samples{}, |
|
|
|
|
Extensions::ARB::texture_barrier{}, |
|
|
|
|
Extensions::KHR::context_flush_control{}, |
|
|
|
|
Extensions::KHR::robustness{} |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionList460[]{ |
|
|
|
|
_extension(ARB,gl_spirv), |
|
|
|
|
_extension(ARB,indirect_parameters), |
|
|
|
|
_extension(ARB,pipeline_statistics_query), |
|
|
|
|
_extension(ARB,polygon_offset_clamp), |
|
|
|
|
_extension(ARB,shader_atomic_counter_ops), |
|
|
|
|
_extension(ARB,shader_draw_parameters), |
|
|
|
|
_extension(ARB,shader_group_vote), |
|
|
|
|
_extension(ARB,spirv_extensions), |
|
|
|
|
_extension(ARB,texture_filter_anisotropic), |
|
|
|
|
_extension(ARB,transform_feedback_overflow_query), |
|
|
|
|
_extension(KHR,no_error)}; |
|
|
|
|
Extensions::ARB::gl_spirv{}, |
|
|
|
|
Extensions::ARB::indirect_parameters{}, |
|
|
|
|
Extensions::ARB::pipeline_statistics_query{}, |
|
|
|
|
Extensions::ARB::polygon_offset_clamp{}, |
|
|
|
|
Extensions::ARB::shader_atomic_counter_ops{}, |
|
|
|
|
Extensions::ARB::shader_draw_parameters{}, |
|
|
|
|
Extensions::ARB::shader_group_vote{}, |
|
|
|
|
Extensions::ARB::spirv_extensions{}, |
|
|
|
|
Extensions::ARB::texture_filter_anisotropic{}, |
|
|
|
|
Extensions::ARB::transform_feedback_overflow_query{}, |
|
|
|
|
Extensions::KHR::no_error{} |
|
|
|
|
}; |
|
|
|
|
#elif defined(MAGNUM_TARGET_WEBGL) |
|
|
|
|
constexpr Extension ExtensionList[]{ |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,clip_cull_distance), |
|
|
|
|
Extensions::EXT::clip_cull_distance{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,color_buffer_float), |
|
|
|
|
Extensions::EXT::color_buffer_float{}, |
|
|
|
|
#endif |
|
|
|
|
#ifdef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,disjoint_timer_query), |
|
|
|
|
Extensions::EXT::disjoint_timer_query{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,disjoint_timer_query_webgl2), |
|
|
|
|
Extensions::EXT::disjoint_timer_query_webgl2{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,draw_buffers_indexed), |
|
|
|
|
Extensions::EXT::draw_buffers_indexed{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(EXT,float_blend), |
|
|
|
|
_extension(EXT,texture_compression_bptc), |
|
|
|
|
_extension(EXT,texture_compression_rgtc), |
|
|
|
|
_extension(EXT,texture_filter_anisotropic), |
|
|
|
|
_extension(EXT,texture_norm16), |
|
|
|
|
_extension(OES,texture_float_linear), |
|
|
|
|
Extensions::EXT::float_blend{}, |
|
|
|
|
Extensions::EXT::texture_compression_bptc{}, |
|
|
|
|
Extensions::EXT::texture_compression_rgtc{}, |
|
|
|
|
Extensions::EXT::texture_filter_anisotropic{}, |
|
|
|
|
Extensions::EXT::texture_norm16{}, |
|
|
|
|
Extensions::OES::texture_float_linear{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OVR,multiview2), |
|
|
|
|
Extensions::OVR::multiview2{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(WEBGL,blend_equation_advanced_coherent), |
|
|
|
|
_extension(WEBGL,compressed_texture_astc), |
|
|
|
|
_extension(WEBGL,compressed_texture_pvrtc), |
|
|
|
|
_extension(WEBGL,compressed_texture_s3tc), |
|
|
|
|
_extension(WEBGL,compressed_texture_s3tc_srgb), |
|
|
|
|
_extension(WEBGL,debug_renderer_info), |
|
|
|
|
_extension(WEBGL,debug_shaders), |
|
|
|
|
Extensions::WEBGL::blend_equation_advanced_coherent{}, |
|
|
|
|
Extensions::WEBGL::compressed_texture_astc{}, |
|
|
|
|
Extensions::WEBGL::compressed_texture_pvrtc{}, |
|
|
|
|
Extensions::WEBGL::compressed_texture_s3tc{}, |
|
|
|
|
Extensions::WEBGL::compressed_texture_s3tc_srgb{}, |
|
|
|
|
Extensions::WEBGL::debug_renderer_info{}, |
|
|
|
|
Extensions::WEBGL::debug_shaders{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(WEBGL,draw_instanced_base_vertex_base_instance), |
|
|
|
|
Extensions::WEBGL::draw_instanced_base_vertex_base_instance{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(WEBGL,lose_context), |
|
|
|
|
_extension(WEBGL,multi_draw), |
|
|
|
|
Extensions::WEBGL::lose_context{}, |
|
|
|
|
Extensions::WEBGL::multi_draw{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(WEBGL,multi_draw_instanced_base_vertex_base_instance) |
|
|
|
|
Extensions::WEBGL::multi_draw_instanced_base_vertex_base_instance{}, |
|
|
|
|
#endif |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionListES300[]{ |
|
|
|
|
#ifdef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(ANGLE,instanced_arrays), |
|
|
|
|
_extension(EXT,blend_minmax), |
|
|
|
|
_extension(EXT,color_buffer_half_float), |
|
|
|
|
_extension(EXT,frag_depth), |
|
|
|
|
_extension(EXT,sRGB), |
|
|
|
|
_extension(EXT,shader_texture_lod), |
|
|
|
|
Extensions::ANGLE::instanced_arrays{}, |
|
|
|
|
Extensions::EXT::blend_minmax{}, |
|
|
|
|
Extensions::EXT::color_buffer_half_float{}, |
|
|
|
|
Extensions::EXT::frag_depth{}, |
|
|
|
|
Extensions::EXT::sRGB{}, |
|
|
|
|
Extensions::EXT::shader_texture_lod{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(MAGNUM,shader_vertex_id), |
|
|
|
|
Extensions::MAGNUM::shader_vertex_id{}, |
|
|
|
|
#endif |
|
|
|
|
#ifdef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OES,element_index_uint), |
|
|
|
|
_extension(OES,fbo_render_mipmap), |
|
|
|
|
_extension(OES,standard_derivatives), |
|
|
|
|
_extension(OES,texture_float), |
|
|
|
|
_extension(OES,texture_half_float), |
|
|
|
|
_extension(OES,texture_half_float_linear), |
|
|
|
|
_extension(OES,vertex_array_object), |
|
|
|
|
_extension(WEBGL,color_buffer_float), |
|
|
|
|
_extension(WEBGL,depth_texture), |
|
|
|
|
_extension(WEBGL,draw_buffers) |
|
|
|
|
Extensions::OES::element_index_uint{}, |
|
|
|
|
Extensions::OES::fbo_render_mipmap{}, |
|
|
|
|
Extensions::OES::standard_derivatives{}, |
|
|
|
|
Extensions::OES::texture_float{}, |
|
|
|
|
Extensions::OES::texture_half_float{}, |
|
|
|
|
Extensions::OES::texture_half_float_linear{}, |
|
|
|
|
Extensions::OES::vertex_array_object{}, |
|
|
|
|
Extensions::WEBGL::color_buffer_float{}, |
|
|
|
|
Extensions::WEBGL::depth_texture{}, |
|
|
|
|
Extensions::WEBGL::draw_buffers{}, |
|
|
|
|
#endif |
|
|
|
|
}; |
|
|
|
|
#else |
|
|
|
|
constexpr Extension ExtensionList[]{ |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(ANDROID,extension_pack_es31a), |
|
|
|
|
Extensions::ANDROID::extension_pack_es31a{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(ANGLE,base_vertex_base_instance), |
|
|
|
|
Extensions::ANGLE::base_vertex_base_instance{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(ANGLE,multi_draw), |
|
|
|
|
_extension(ANGLE,texture_compression_dxt1), |
|
|
|
|
_extension(ANGLE,texture_compression_dxt3), |
|
|
|
|
_extension(ANGLE,texture_compression_dxt5), |
|
|
|
|
_extension(APPLE,clip_distance), |
|
|
|
|
_extension(APPLE,texture_format_BGRA8888), |
|
|
|
|
_extension(ARM,shader_framebuffer_fetch), |
|
|
|
|
_extension(ARM,shader_framebuffer_fetch_depth_stencil), |
|
|
|
|
Extensions::ANGLE::multi_draw{}, |
|
|
|
|
Extensions::ANGLE::texture_compression_dxt1{}, |
|
|
|
|
Extensions::ANGLE::texture_compression_dxt3{}, |
|
|
|
|
Extensions::ANGLE::texture_compression_dxt5{}, |
|
|
|
|
Extensions::APPLE::clip_distance{}, |
|
|
|
|
Extensions::APPLE::texture_format_BGRA8888{}, |
|
|
|
|
Extensions::ARM::shader_framebuffer_fetch{}, |
|
|
|
|
Extensions::ARM::shader_framebuffer_fetch_depth_stencil{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,clip_cull_distance), |
|
|
|
|
Extensions::EXT::clip_cull_distance{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(EXT,debug_label), |
|
|
|
|
_extension(EXT,debug_marker), |
|
|
|
|
_extension(EXT,disjoint_timer_query), |
|
|
|
|
_extension(EXT,draw_elements_base_vertex), |
|
|
|
|
_extension(EXT,multi_draw_arrays), |
|
|
|
|
_extension(EXT,multisampled_render_to_texture), |
|
|
|
|
_extension(EXT,polygon_offset_clamp), |
|
|
|
|
_extension(EXT,pvrtc_sRGB), |
|
|
|
|
_extension(EXT,read_format_bgra), |
|
|
|
|
_extension(EXT,robustness), |
|
|
|
|
_extension(EXT,sRGB_write_control), |
|
|
|
|
_extension(EXT,separate_shader_objects), |
|
|
|
|
_extension(EXT,shader_framebuffer_fetch), |
|
|
|
|
Extensions::EXT::debug_label{}, |
|
|
|
|
Extensions::EXT::debug_marker{}, |
|
|
|
|
Extensions::EXT::disjoint_timer_query{}, |
|
|
|
|
Extensions::EXT::draw_elements_base_vertex{}, |
|
|
|
|
Extensions::EXT::multi_draw_arrays{}, |
|
|
|
|
Extensions::EXT::multisampled_render_to_texture{}, |
|
|
|
|
Extensions::EXT::polygon_offset_clamp{}, |
|
|
|
|
Extensions::EXT::pvrtc_sRGB{}, |
|
|
|
|
Extensions::EXT::read_format_bgra{}, |
|
|
|
|
Extensions::EXT::robustness{}, |
|
|
|
|
Extensions::EXT::sRGB_write_control{}, |
|
|
|
|
Extensions::EXT::separate_shader_objects{}, |
|
|
|
|
Extensions::EXT::shader_framebuffer_fetch{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,shader_integer_mix), |
|
|
|
|
Extensions::EXT::shader_integer_mix{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,texture_compression_bptc), |
|
|
|
|
Extensions::EXT::texture_compression_bptc{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(EXT,texture_compression_dxt1), |
|
|
|
|
Extensions::EXT::texture_compression_dxt1{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,texture_compression_rgtc), |
|
|
|
|
Extensions::EXT::texture_compression_rgtc{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(EXT,texture_compression_s3tc), |
|
|
|
|
_extension(EXT,texture_compression_s3tc_srgb), |
|
|
|
|
_extension(EXT,texture_filter_anisotropic), |
|
|
|
|
_extension(EXT,texture_format_BGRA8888), |
|
|
|
|
Extensions::EXT::texture_compression_s3tc{}, |
|
|
|
|
Extensions::EXT::texture_compression_s3tc_srgb{}, |
|
|
|
|
Extensions::EXT::texture_filter_anisotropic{}, |
|
|
|
|
Extensions::EXT::texture_format_BGRA8888{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,texture_norm16), |
|
|
|
|
_extension(EXT,texture_sRGB_R8), |
|
|
|
|
Extensions::EXT::texture_norm16{}, |
|
|
|
|
Extensions::EXT::texture_sRGB_R8{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,texture_sRGB_RG8), |
|
|
|
|
Extensions::EXT::texture_sRGB_RG8{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(EXT,texture_sRGB_decode), |
|
|
|
|
_extension(IMG,texture_compression_pvrtc), |
|
|
|
|
_extension(KHR,blend_equation_advanced_coherent), |
|
|
|
|
_extension(KHR,context_flush_control), |
|
|
|
|
_extension(KHR,no_error), |
|
|
|
|
_extension(KHR,texture_compression_astc_hdr), |
|
|
|
|
_extension(KHR,texture_compression_astc_sliced_3d), |
|
|
|
|
Extensions::EXT::texture_sRGB_decode{}, |
|
|
|
|
Extensions::IMG::texture_compression_pvrtc{}, |
|
|
|
|
Extensions::KHR::blend_equation_advanced_coherent{}, |
|
|
|
|
Extensions::KHR::context_flush_control{}, |
|
|
|
|
Extensions::KHR::no_error{}, |
|
|
|
|
Extensions::KHR::texture_compression_astc_hdr{}, |
|
|
|
|
Extensions::KHR::texture_compression_astc_sliced_3d{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(NV,fragment_shader_barycentric), |
|
|
|
|
Extensions::NV::fragment_shader_barycentric{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(NV,polygon_mode), |
|
|
|
|
_extension(NV,read_buffer_front), |
|
|
|
|
_extension(NV,read_depth), |
|
|
|
|
_extension(NV,read_depth_stencil), |
|
|
|
|
_extension(NV,read_stencil), |
|
|
|
|
_extension(NV,sample_locations), |
|
|
|
|
Extensions::NV::polygon_mode{}, |
|
|
|
|
Extensions::NV::read_buffer_front{}, |
|
|
|
|
Extensions::NV::read_depth{}, |
|
|
|
|
Extensions::NV::read_depth_stencil{}, |
|
|
|
|
Extensions::NV::read_stencil{}, |
|
|
|
|
Extensions::NV::sample_locations{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(NV,shader_noperspective_interpolation), |
|
|
|
|
Extensions::NV::shader_noperspective_interpolation{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(NV,texture_border_clamp), |
|
|
|
|
_extension(OES,depth32), |
|
|
|
|
_extension(OES,draw_elements_base_vertex), |
|
|
|
|
_extension(OES,mapbuffer), |
|
|
|
|
_extension(OES,stencil1), |
|
|
|
|
_extension(OES,stencil4), |
|
|
|
|
Extensions::NV::texture_border_clamp{}, |
|
|
|
|
Extensions::OES::depth32{}, |
|
|
|
|
Extensions::OES::draw_elements_base_vertex{}, |
|
|
|
|
Extensions::OES::mapbuffer{}, |
|
|
|
|
Extensions::OES::stencil1{}, |
|
|
|
|
Extensions::OES::stencil4{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OES,texture_compression_astc), |
|
|
|
|
Extensions::OES::texture_compression_astc{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(OES,texture_float_linear), |
|
|
|
|
Extensions::OES::texture_float_linear{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OVR,multiview), |
|
|
|
|
Extensions::OVR::multiview{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OVR,multiview2), |
|
|
|
|
Extensions::OVR::multiview2{}, |
|
|
|
|
#endif |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionListES300[]{ |
|
|
|
|
#ifdef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(ANGLE,depth_texture), |
|
|
|
|
_extension(ANGLE,framebuffer_blit), |
|
|
|
|
_extension(ANGLE,framebuffer_multisample), |
|
|
|
|
_extension(ANGLE,instanced_arrays), |
|
|
|
|
_extension(APPLE,framebuffer_multisample), |
|
|
|
|
_extension(APPLE,texture_max_level), |
|
|
|
|
_extension(ARM,rgba8), |
|
|
|
|
_extension(EXT,blend_minmax), |
|
|
|
|
_extension(EXT,discard_framebuffer), |
|
|
|
|
_extension(EXT,draw_buffers), |
|
|
|
|
_extension(EXT,draw_instanced), |
|
|
|
|
_extension(EXT,instanced_arrays), |
|
|
|
|
_extension(EXT,map_buffer_range), |
|
|
|
|
_extension(EXT,occlusion_query_boolean), |
|
|
|
|
_extension(EXT,sRGB), |
|
|
|
|
_extension(EXT,shader_texture_lod), |
|
|
|
|
_extension(EXT,shadow_samplers), |
|
|
|
|
_extension(EXT,texture_rg), |
|
|
|
|
_extension(EXT,texture_storage), |
|
|
|
|
_extension(EXT,texture_type_2_10_10_10_REV), |
|
|
|
|
_extension(EXT,unpack_subimage), |
|
|
|
|
Extensions::ANGLE::depth_texture{}, |
|
|
|
|
Extensions::ANGLE::framebuffer_blit{}, |
|
|
|
|
Extensions::ANGLE::framebuffer_multisample{}, |
|
|
|
|
Extensions::ANGLE::instanced_arrays{}, |
|
|
|
|
Extensions::APPLE::framebuffer_multisample{}, |
|
|
|
|
Extensions::APPLE::texture_max_level{}, |
|
|
|
|
Extensions::ARM::rgba8{}, |
|
|
|
|
Extensions::EXT::blend_minmax{}, |
|
|
|
|
Extensions::EXT::discard_framebuffer{}, |
|
|
|
|
Extensions::EXT::draw_buffers{}, |
|
|
|
|
Extensions::EXT::draw_instanced{}, |
|
|
|
|
Extensions::EXT::instanced_arrays{}, |
|
|
|
|
Extensions::EXT::map_buffer_range{}, |
|
|
|
|
Extensions::EXT::occlusion_query_boolean{}, |
|
|
|
|
Extensions::EXT::sRGB{}, |
|
|
|
|
Extensions::EXT::shader_texture_lod{}, |
|
|
|
|
Extensions::EXT::shadow_samplers{}, |
|
|
|
|
Extensions::EXT::texture_rg{}, |
|
|
|
|
Extensions::EXT::texture_storage{}, |
|
|
|
|
Extensions::EXT::texture_type_2_10_10_10_REV{}, |
|
|
|
|
Extensions::EXT::unpack_subimage{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(MAGNUM,shader_vertex_id), |
|
|
|
|
Extensions::MAGNUM::shader_vertex_id{}, |
|
|
|
|
#endif |
|
|
|
|
#ifdef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(NV,draw_buffers), |
|
|
|
|
_extension(NV,draw_instanced), |
|
|
|
|
_extension(NV,fbo_color_attachments), |
|
|
|
|
_extension(NV,framebuffer_blit), |
|
|
|
|
_extension(NV,framebuffer_multisample), |
|
|
|
|
_extension(NV,instanced_arrays), |
|
|
|
|
_extension(NV,pack_subimage), |
|
|
|
|
_extension(NV,read_buffer), |
|
|
|
|
_extension(NV,shadow_samplers_array), |
|
|
|
|
_extension(NV,shadow_samplers_cube), |
|
|
|
|
_extension(OES,depth24), |
|
|
|
|
_extension(OES,depth_texture), |
|
|
|
|
_extension(OES,element_index_uint), |
|
|
|
|
_extension(OES,fbo_render_mipmap), |
|
|
|
|
_extension(OES,packed_depth_stencil), |
|
|
|
|
_extension(OES,required_internalformat), |
|
|
|
|
_extension(OES,rgb8_rgba8), |
|
|
|
|
_extension(OES,standard_derivatives), |
|
|
|
|
_extension(OES,surfaceless_context), |
|
|
|
|
_extension(OES,texture_3D), |
|
|
|
|
_extension(OES,texture_float), |
|
|
|
|
_extension(OES,texture_half_float), |
|
|
|
|
_extension(OES,texture_half_float_linear), |
|
|
|
|
_extension(OES,texture_npot), |
|
|
|
|
_extension(OES,vertex_array_object), |
|
|
|
|
_extension(OES,vertex_half_float), |
|
|
|
|
Extensions::NV::draw_buffers{}, |
|
|
|
|
Extensions::NV::draw_instanced{}, |
|
|
|
|
Extensions::NV::fbo_color_attachments{}, |
|
|
|
|
Extensions::NV::framebuffer_blit{}, |
|
|
|
|
Extensions::NV::framebuffer_multisample{}, |
|
|
|
|
Extensions::NV::instanced_arrays{}, |
|
|
|
|
Extensions::NV::pack_subimage{}, |
|
|
|
|
Extensions::NV::read_buffer{}, |
|
|
|
|
Extensions::NV::shadow_samplers_array{}, |
|
|
|
|
Extensions::NV::shadow_samplers_cube{}, |
|
|
|
|
Extensions::OES::depth24{}, |
|
|
|
|
Extensions::OES::depth_texture{}, |
|
|
|
|
Extensions::OES::element_index_uint{}, |
|
|
|
|
Extensions::OES::fbo_render_mipmap{}, |
|
|
|
|
Extensions::OES::packed_depth_stencil{}, |
|
|
|
|
Extensions::OES::required_internalformat{}, |
|
|
|
|
Extensions::OES::rgb8_rgba8{}, |
|
|
|
|
Extensions::OES::standard_derivatives{}, |
|
|
|
|
Extensions::OES::surfaceless_context{}, |
|
|
|
|
Extensions::OES::texture_3D{}, |
|
|
|
|
Extensions::OES::texture_float{}, |
|
|
|
|
Extensions::OES::texture_half_float{}, |
|
|
|
|
Extensions::OES::texture_half_float_linear{}, |
|
|
|
|
Extensions::OES::texture_npot{}, |
|
|
|
|
Extensions::OES::vertex_array_object{}, |
|
|
|
|
Extensions::OES::vertex_half_float{}, |
|
|
|
|
#endif |
|
|
|
|
}; |
|
|
|
|
constexpr Extension ExtensionListES320[]{ |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,color_buffer_float), |
|
|
|
|
Extensions::EXT::color_buffer_float{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(EXT,color_buffer_half_float), |
|
|
|
|
Extensions::EXT::color_buffer_half_float{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,copy_image), |
|
|
|
|
Extensions::EXT::copy_image{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(EXT,draw_buffers_indexed), |
|
|
|
|
Extensions::EXT::draw_buffers_indexed{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,geometry_shader), |
|
|
|
|
Extensions::EXT::geometry_shader{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,gpu_shader5), |
|
|
|
|
Extensions::EXT::gpu_shader5{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,primitive_bounding_box), |
|
|
|
|
Extensions::EXT::primitive_bounding_box{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,shader_io_blocks), |
|
|
|
|
Extensions::EXT::shader_io_blocks{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,tessellation_shader), |
|
|
|
|
Extensions::EXT::tessellation_shader{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(EXT,texture_border_clamp), |
|
|
|
|
Extensions::EXT::texture_border_clamp{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,texture_buffer), |
|
|
|
|
Extensions::EXT::texture_buffer{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(EXT,texture_cube_map_array), |
|
|
|
|
Extensions::EXT::texture_cube_map_array{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(KHR,blend_equation_advanced), |
|
|
|
|
_extension(KHR,debug), |
|
|
|
|
_extension(KHR,robust_buffer_access_behavior), |
|
|
|
|
_extension(KHR,robustness), |
|
|
|
|
_extension(KHR,texture_compression_astc_ldr), |
|
|
|
|
Extensions::KHR::blend_equation_advanced{}, |
|
|
|
|
Extensions::KHR::debug{}, |
|
|
|
|
Extensions::KHR::robust_buffer_access_behavior{}, |
|
|
|
|
Extensions::KHR::robustness{}, |
|
|
|
|
Extensions::KHR::texture_compression_astc_ldr{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OES,sample_shading), |
|
|
|
|
Extensions::OES::sample_shading{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OES,sample_variables), |
|
|
|
|
Extensions::OES::sample_variables{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OES,shader_image_atomic), |
|
|
|
|
Extensions::OES::shader_image_atomic{}, |
|
|
|
|
#endif |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OES,shader_multisample_interpolation), |
|
|
|
|
Extensions::OES::shader_multisample_interpolation{}, |
|
|
|
|
#endif |
|
|
|
|
_extension(OES,texture_stencil8), |
|
|
|
|
Extensions::OES::texture_stencil8{}, |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES2 |
|
|
|
|
_extension(OES,texture_storage_multisample_2d_array) |
|
|
|
|
Extensions::OES::texture_storage_multisample_2d_array{} |
|
|
|
|
#endif |
|
|
|
|
}; |
|
|
|
|
#endif |
|
|
|
|
#undef _extension |
|
|
|
|
|
|
|
|
|
constexpr struct { |
|
|
|
|
Version version; |
|
|
|
|
|