<div dir="ltr"><div>I'd like to ignore GL version and extension requirements in extensions, because they are sometimes added due to laziness of extension authors and the requirements can be unreasonable.</div><div><br></div><div>Marek<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, May 19, 2018 at 9:18 AM, Benedikt Schemmer <span dir="ltr"><<a href="mailto:ben@besd.de" target="_blank">ben@besd.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">These are just a few extensions for which I had the specifications handy, to<br>
get a feel for what this might look like.<br>
<br>
It's already been pointed out that applications might fail because of this.<br>
<br>
(I haven't found an application that does yet but I can only test on 64-bit)<br>
The argument for this change would be that its ok if the application fails<br>
because it does something unexpected and its better to let it explicitly fail<br>
and create a workaround for it than to just silently hope that everything is<br>
going to be alright.<br>
<br>
CC: "Marek Olšák" <<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>> <br>
CC: Eric Anholt <<a href="mailto:eric@anholt.net">eric@anholt.net</a>><br>
CC: Emil Velikov <<a href="mailto:emil.l.velikov@gmail.com">emil.l.velikov@gmail.com</a>><br>
CC: Timothy Arceri <<a href="mailto:tarceri@itsqueeze.com">tarceri@itsqueeze.com</a>><br>
CC: Ilia Mirkin <<a href="mailto:imirkin@alum.mit.edu">imirkin@alum.mit.edu</a>><br>
<br>
Signed-off-by: Benedikt Schemmer <<a href="mailto:ben@besd.de">ben@besd.de</a>><br>
---<br>
 src/mesa/main/extensions_<wbr>table.h | 98 ++++++++++++++++++++++--------<wbr>----------<br>
 1 file changed, 53 insertions(+), 45 deletions(-)<br>
<br>
diff --git a/src/mesa/main/extensions_<wbr>table.h b/src/mesa/main/extensions_<wbr>table.h<br>
index 931e0d4d33..6e3bdbe99c 100644<br>
--- a/src/mesa/main/extensions_<wbr>table.h<br>
+++ b/src/mesa/main/extensions_<wbr>table.h<br>
@@ -6,7 +6,8 @@<br>
 #define ANYES2 0<br>
 #define   x   ~0<br>
<br>
-//EXT(name_str                              , driver_cap                             ,GLL_ver,GLC_ver, gles_ver, glES2_ver, yyyy)<br>
+//highest GLL_ver = 46, lowest GLC_ver = 30<br>
+//EXT(name_str                              , driver_cap                             ,GLL_ver,GLC_ver, gles_ver, glES2_ver, year)<br>
 EXT(3DFX_texture_compression_<wbr>FXT1           , TDFX_texture_compression_FXT1          , ANYGLL, ANYGLC,   x   ,   x   , 1999)<br>
<br>
 EXT(AMD_conservative_depth                  , ARB_conservative_depth                 , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
@@ -31,60 +32,62 @@ EXT(APPLE_texture_max_level                 , dummy_true<br>
 EXT(ARB_ES2_compatibility                   , ARB_ES2_compatibility                  , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_ES3_1_compatibility                 , ARB_ES3_1_compatibility                ,   x   , ANYGLC,   x   ,   x   , 2014)<br>
 EXT(ARB_ES3_2_compatibility                 , ARB_ES3_2_compatibility                ,   x   , ANYGLC,   x   ,   x   , 2015)<br>
-EXT(ARB_ES3_compatibility                   , ARB_ES3_compatibility                  , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
-EXT(ARB_arrays_of_arrays                    , ARB_arrays_of_arrays                   , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
+EXT(ARB_ES3_compatibility                   , ARB_ES3_compatibility                  ,  33   ,  33   ,   x   ,   x   , 2012) // requires ARB_ES2_compatibility, ARB_invalidate_subdata, ARB_texture_storage, OES_compressed_*<br>
+EXT(ARB_arrays_of_arrays                    , ARB_arrays_of_arrays                   ,  12   ,  12   ,   x   ,   x   , 2012)<br>
 EXT(ARB_base_instance                       , ARB_base_instance                      , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
 EXT(ARB_bindless_texture                    , ARB_bindless_texture                   , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
 EXT(ARB_blend_func_extended                 , ARB_blend_func_extended                , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_buffer_storage                      , ARB_buffer_storage                     , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
+//EXT(ARB_cl_event                            , ARB_cl_event                           ,  31   ,  31   ,   x   ,   x   , 2013) // requires GL_ARB_sync<br>
 EXT(ARB_clear_buffer_object                 , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
 EXT(ARB_clear_texture                       , ARB_clear_texture                      , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
 EXT(ARB_clip_control                        , ARB_clip_control                       , ANYGLL, ANYGLC,   x   ,   x   , 2014)<br>
 EXT(ARB_color_buffer_float                  , ARB_color_buffer_float                 , ANYGLL, ANYGLC,   x   ,   x   , 2004)<br>
 EXT(ARB_compatibility                       , ARB_compatibility                      , ANYGLL,   x   ,   x   ,   x   , 2009)<br>
 EXT(ARB_compressed_texture_<wbr>pixel_storage    , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
-EXT(ARB_compute_shader                      , ARB_compute_shader                     , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
-EXT(ARB_compute_variable_<wbr>group_size         , ARB_compute_variable_group_<wbr>size        , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
+EXT(ARB_compute_shader                      , ARB_compute_shader                     ,  42   ,  42   ,   x   ,   x   , 2012)<br>
+EXT(ARB_compute_variable_<wbr>group_size         , ARB_compute_variable_group_<wbr>size        ,  42   ,  42   ,   x   ,   x   , 2013) //or ARB compute shader<br>
 EXT(ARB_conditional_render_<wbr>inverted         , ARB_conditional_render_<wbr>inverted        , ANYGLL, ANYGLC,   x   ,   x   , 2014)<br>
 EXT(ARB_conservative_depth                  , ARB_conservative_depth                 , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
 EXT(ARB_copy_buffer                         , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
-EXT(ARB_copy_image                          , ARB_copy_image                         , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
-EXT(ARB_cull_distance                       , ARB_cull_distance                      , ANYGLL, ANYGLC,   x   ,   x   , 2014)<br>
-EXT(ARB_debug_output                        , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
+EXT(ARB_copy_image                          , ARB_copy_image                         ,  11   ,  11   ,   x   ,   x   , 2012)<br>
+EXT(ARB_cull_distance                       , ARB_cull_distance                      ,  30   ,  30   ,   x   ,   x   , 2014)<br>
+EXT(ARB_debug_output                        , dummy_true                             ,  11   ,  11   ,   x   ,   x   , 2009)<br>
 EXT(ARB_depth_buffer_float                  , ARB_depth_buffer_float                 , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
 EXT(ARB_depth_clamp                         , ARB_depth_clamp                        , ANYGLL, ANYGLC,   x   ,   x   , 2003)<br>
-EXT(ARB_depth_texture                       , ARB_depth_texture                      , ANYGLL,   x   ,   x   ,   x   , 2001)<br>
-EXT(ARB_derivative_control                  , ARB_derivative_control                 , ANYGLL, ANYGLC,   x   ,   x   , 2014)<br>
-EXT(ARB_direct_state_access                 , dummy_true                             ,   x   , ANYGLC,   x   ,   x   , 2014)<br>
+EXT(ARB_depth_texture                       , ARB_depth_texture                      ,  11   ,   x   ,   x   ,   x   , 2001)<br>
+EXT(ARB_derivative_control                  , ARB_derivative_control                 ,  40   ,  40   ,   x   ,   x   , 2014)<br>
+EXT(ARB_direct_state_access                 , dummy_true                             ,   x   ,  20   ,   x   ,   x   , 2014)<br>
 EXT(ARB_draw_buffers                        , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2002)<br>
 EXT(ARB_draw_buffers_blend                  , ARB_draw_buffers_blend                 , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_draw_elements_base_<wbr>vertex           , ARB_draw_elements_base_vertex          , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_draw_indirect                       , ARB_draw_indirect                      ,   x   , ANYGLC,   x   ,   x   , 2010)<br>
-EXT(ARB_draw_instanced                      , ARB_draw_instanced                     , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
-EXT(ARB_enhanced_layouts                    , ARB_enhanced_layouts                   , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
-EXT(ARB_explicit_attrib_<wbr>location            , ARB_explicit_attrib_location           , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
+EXT(ARB_draw_instanced                      , ARB_draw_instanced                     ,  20   ,  20   ,   x   ,   x   , 2008) // EXT_gpu_shader4 or NV_vertex_program4 or OpenGL 3.0 is required<br>
+EXT(ARB_enhanced_layouts                    , ARB_enhanced_layouts                   ,  31   ,  31   ,   x   ,   x   , 2013)<br>
+EXT(ARB_explicit_attrib_<wbr>location            , ARB_explicit_attrib_location           , ANYGLL, ANYGLC,   x   ,   x   , 2009) //GL_ARB_vertex_shader is always available<br>
 EXT(ARB_explicit_uniform_<wbr>location           , ARB_explicit_uniform_location          , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
 EXT(ARB_fragment_coord_<wbr>conventions          , ARB_fragment_coord_conventions         , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_fragment_layer_<wbr>viewport             , ARB_fragment_layer_viewport            ,   x   , ANYGLC,   x   ,   x   , 2012)<br>
 EXT(ARB_fragment_program                    , ARB_fragment_program                   , ANYGLL,   x   ,   x   ,   x   , 2002)<br>
 EXT(ARB_fragment_program_<wbr>shadow             , ARB_fragment_program_shadow            , ANYGLL,   x   ,   x   ,   x   , 2003)<br>
 EXT(ARB_fragment_shader                     , ARB_fragment_shader                    , ANYGLL, ANYGLC,   x   ,   x   , 2002)<br>
-EXT(ARB_framebuffer_no_<wbr>attachments          , ARB_framebuffer_no_attachments         , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
-EXT(ARB_framebuffer_object                  , ARB_framebuffer_object                 , ANYGLL, ANYGLC,   x   ,   x   , 2005)<br>
+//EXT(ARB_fragment_shader_<wbr>interlock           , ARB_fragment_shader_interlock          ,  42   ,  42   ,   x   ,   x   , 2015)<br>
+EXT(ARB_framebuffer_no_<wbr>attachments          , ARB_framebuffer_no_attachments         ,  11   ,  11   ,   x   ,   x   , 2012) // requires ARB_framebuffer_object<br>
+EXT(ARB_framebuffer_object                  , ARB_framebuffer_object                 ,  11   ,  11   ,   x   ,   x   , 2005)<br>
 EXT(ARB_framebuffer_sRGB                    , EXT_framebuffer_sRGB                   , ANYGLL, ANYGLC,   x   ,   x   , 1998)<br>
 EXT(ARB_get_program_binary                  , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2010)<br>
-EXT(ARB_get_texture_sub_image               , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2014)<br>
-EXT(ARB_gl_spirv                            , ARB_gl_spirv                           ,   x   , ANYGLC,   x   ,   x   , 2016)<br>
-EXT(ARB_gpu_shader5                         , ARB_gpu_shader5                        ,  32   ,  40   ,   x   ,   x   , 2010)<br>
-EXT(ARB_gpu_shader_fp64                     , ARB_gpu_shader_fp64                    ,   x   , ANYGLC,   x   ,   x   , 2010)<br>
-EXT(ARB_gpu_shader_int64                    , ARB_gpu_shader_int64                   ,   x   , ANYGLC,   x   ,   x   , 2015)<br>
-EXT(ARB_half_float_pixel                    , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2003)<br>
+EXT(ARB_get_texture_sub_image               , dummy_true                             ,  20   ,  20   ,   x   ,   x   , 2014)<br>
+EXT(ARB_gl_spirv                            , ARB_gl_spirv                           ,   x   ,  33   ,   x   ,   x   , 2016)<br>
+EXT(ARB_gpu_shader5                         , ARB_gpu_shader5                        ,  30   ,  30   ,   x   ,   x   , 2010)<br>
+EXT(ARB_gpu_shader_fp64                     , ARB_gpu_shader_fp64                    ,  32   ,  32   ,   x   ,   x   , 2010)<br>
+EXT(ARB_gpu_shader_int64                    , ARB_gpu_shader_int64                   ,   x   ,  40   ,   x   ,   x   , 2015)<br>
+EXT(ARB_half_float_pixel                    , dummy_true                             ,  15   ,  15   ,   x   ,   x   , 2003)<br>
 EXT(ARB_half_float_vertex                   , ARB_half_float_vertex                  , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
-EXT(ARB_indirect_parameters                 , ARB_indirect_parameters                ,   x   , ANYGLC,   x   ,   x   , 2013)<br>
+EXT(ARB_indirect_parameters                 , ARB_indirect_parameters                ,   x   ,  42   ,   x   ,   x   , 2013)<br>
 EXT(ARB_instanced_arrays                    , ARB_instanced_arrays                   , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
 EXT(ARB_internalformat_query                , ARB_internalformat_query               , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
 EXT(ARB_internalformat_query2               , ARB_internalformat_query2              , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
-EXT(ARB_invalidate_subdata                  , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
+EXT(ARB_invalidate_subdata                  , dummy_true                             ,  20   ,  20   ,   x   ,   x   , 2012)<br>
 EXT(ARB_map_buffer_alignment                , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
 EXT(ARB_map_buffer_range                    , ARB_map_buffer_range                   , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
 EXT(ARB_multi_bind                          , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
@@ -97,27 +100,28 @@ EXT(ARB_pipeline_statistics_<wbr>query           , ARB_pipeline_statistics_query<br>
 EXT(ARB_pixel_buffer_object                 , EXT_pixel_buffer_object                , ANYGLL, ANYGLC,   x   ,   x   , 2004)<br>
 EXT(ARB_point_parameters                    , EXT_point_parameters                   , ANYGLL,   x   ,   x   ,   x   , 1997)<br>
 EXT(ARB_point_sprite                        , ARB_point_sprite                       , ANYGLL, ANYGLC,   x   ,   x   , 2003)<br>
-EXT(ARB_polygon_offset_clamp                , ARB_polygon_offset_clamp               , ANYGLL, ANYGLC,   x   ,   x   , 2017)<br>
+EXT(ARB_polygon_offset_clamp                , ARB_polygon_offset_clamp               ,  33   ,  33   ,   x   ,   x   , 2017)<br>
 EXT(ARB_post_depth_coverage                 , ARB_post_depth_coverage                ,   x   , ANYGLC,   x   ,   x   , 2015)<br>
 EXT(ARB_program_interface_<wbr>query             , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
 EXT(ARB_provoking_vertex                    , EXT_provoking_vertex                   , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_query_buffer_object                 , ARB_query_buffer_object                , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
-EXT(ARB_robust_buffer_access_<wbr>behavior       , ARB_robust_buffer_access_<wbr>behavior      , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
+EXT(ARB_robust_buffer_access_<wbr>behavior       , ARB_robust_buffer_access_<wbr>behavior      , ANYGLL, ANYGLC,   x   ,   x   , 2012) // requires ARB_robustness extension<br>
 EXT(ARB_robustness                          , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2010)<br>
-EXT(ARB_sample_shading                      , ARB_sample_shading                     , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
+EXT(ARB_sample_shading                      , ARB_sample_shading                     ,  20   ,  20   ,   x   ,   x   , 2009)<br>
+//EXT(ARB_sample_locations                    , ARB_sample_locations                   ,   x   ,   x   ,   x   ,   x   , 2009<br>
 EXT(ARB_sampler_objects                     , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
-EXT(ARB_seamless_cube_map                   , ARB_seamless_cube_map                  , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
+EXT(ARB_seamless_cube_map                   , ARB_seamless_cube_map                  ,  11   ,  11   ,   x   ,   x   , 2009) // requires ARB_texture_cube_map<br>
 EXT(ARB_seamless_cubemap_per_<wbr>texture        , AMD_seamless_cubemap_per_<wbr>texture       , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
-EXT(ARB_separate_shader_<wbr>objects             , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2010)<br>
+EXT(ARB_separate_shader_<wbr>objects             , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2010) // requires ARB_shader_objects<br>
 EXT(ARB_shader_atomic_counter_<wbr>ops           , ARB_shader_atomic_counter_ops          , ANYGLL, ANYGLC,   x   ,   x   , 2015)<br>
 EXT(ARB_shader_atomic_counters              , ARB_shader_atomic_counters             , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
 EXT(ARB_shader_ballot                       , ARB_shader_ballot                      , ANYGLL, ANYGLC,   x   ,   x   , 2015)<br>
 EXT(ARB_shader_bit_encoding                 , ARB_shader_bit_encoding                , ANYGLL, ANYGLC,   x   ,   x   , 2010)<br>
 EXT(ARB_shader_clock                        , ARB_shader_clock                       , ANYGLL, ANYGLC,   x   ,   x   , 2015)<br>
 EXT(ARB_shader_draw_parameters              , ARB_shader_draw_parameters             , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
-EXT(ARB_shader_group_vote                   , ARB_shader_group_vote                  , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
-EXT(ARB_shader_image_load_<wbr>store             , ARB_shader_image_load_store            , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
-EXT(ARB_shader_image_size                   , ARB_shader_image_size                  , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
+EXT(ARB_shader_group_vote                   , ARB_shader_group_vote                  ,  42   ,  42   ,   x   ,   x   , 2013)<br>
+EXT(ARB_shader_image_load_<wbr>store             , ARB_shader_image_load_store            ,  30   ,  30   ,   x   ,   x   , 2011)<br>
+EXT(ARB_shader_image_size                   , ARB_shader_image_size                  ,  42   ,  42   ,   x   ,   x   , 2012)<br>
 EXT(ARB_shader_objects                      , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2002)<br>
 EXT(ARB_shader_precision                    , ARB_shader_precision                   , ANYGLL, ANYGLC,   x   ,   x   , 2010)<br>
 EXT(ARB_shader_stencil_export               , ARB_shader_stencil_export              , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
@@ -130,55 +134,59 @@ EXT(ARB_shading_language_100                , dummy_true<br>
 EXT(ARB_shading_language_<wbr>420pack            , ARB_shading_language_420pack           , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
 EXT(ARB_shading_language_<wbr>packing            , ARB_shading_language_packing           , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
 EXT(ARB_shadow                              , ARB_shadow                             , ANYGLL,   x   ,   x   ,   x   , 2001)<br>
+//EXT(ARB_shadow_ambient                      , ARB_shadow_ambient                     ,  11   ,   x   ,   x   ,   x   , 2001) //requires ARB_shadow<br>
 EXT(ARB_sparse_buffer                       , ARB_sparse_buffer                      , ANYGLL, ANYGLC,   x   ,   x   , 2014)<br>
+//EXT(ARB_sparse_texture                      , ARB_sparse_texture                     ,  11   ,  11   ,   x   ,   x   , 2014)<br>
+//EXT(ARB_sparse_texture2                     , ARB_sparse_texture2                    ,  11   ,  11   ,   x   ,   x   , 2014) // requires ARB_sparse_texture<br>
+//EXT(ARB_sparse_texture_<wbr>clamp                , ARB_sparse_texture_clamp               ,  11   ,  11   ,   x   ,   x   , 2014) // requires ARB_sparse_texture2<br>
 EXT(ARB_stencil_texturing                   , ARB_stencil_texturing                  , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
-EXT(ARB_sync                                , ARB_sync                               , ANYGLL, ANYGLC,   x   ,   x   , 2003)<br>
+EXT(ARB_sync                                , ARB_sync                               ,  31   ,  31   ,   x   ,   x   , 2003)<br>
 EXT(ARB_tessellation_shader                 , ARB_tessellation_shader                ,   x   , ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_texture_barrier                     , NV_texture_barrier                     , ANYGLL, ANYGLC,   x   ,   x   , 2014)<br>
 EXT(ARB_texture_border_clamp                , ARB_texture_border_clamp               , ANYGLL,   x   ,   x   ,   x   , 2000)<br>
 EXT(ARB_texture_buffer_object               , ARB_texture_buffer_object              , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
 EXT(ARB_texture_buffer_object_<wbr>rgb32         , ARB_texture_buffer_object_<wbr>rgb32        , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_texture_buffer_range                , ARB_texture_buffer_range               , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
-EXT(ARB_texture_compression                 , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 2000)<br>
-EXT(ARB_texture_compression_<wbr>bptc            , ARB_texture_compression_bptc           , ANYGLL, ANYGLC,   x   ,   x   , 2010)<br>
-EXT(ARB_texture_compression_<wbr>rgtc            , ARB_texture_compression_rgtc           , ANYGLL, ANYGLC,   x   ,   x   , 2004)<br>
+EXT(ARB_texture_compression                 , dummy_true                             ,  11   ,   x   ,   x   ,   x   , 2000)<br>
+EXT(ARB_texture_compression_<wbr>bptc            , ARB_texture_compression_bptc           ,  11   ,  11   ,   x   ,   x   , 2010)<br>
+EXT(ARB_texture_compression_<wbr>rgtc            , ARB_texture_compression_rgtc           ,  11   ,  11   ,   x   ,   x   , 2004)  // requires ARB_texture_compression<br>
 EXT(ARB_texture_cube_map                    , ARB_texture_cube_map                   , ANYGLL,   x   ,   x   ,   x   , 1999)<br>
 EXT(ARB_texture_cube_map_array              , ARB_texture_cube_map_array             , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_texture_env_add                     , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 1999)<br>
 EXT(ARB_texture_env_combine                 , ARB_texture_env_combine                , ANYGLL,   x   ,   x   ,   x   , 2001)<br>
-EXT(ARB_texture_env_crossbar                , ARB_texture_env_crossbar               , ANYGLL,   x   ,   x   ,   x   , 2001)<br>
+EXT(ARB_texture_env_crossbar                , ARB_texture_env_crossbar               ,  11   ,   x   ,   x   ,   x   , 2001) //why not core?<br>
 EXT(ARB_texture_env_dot3                    , ARB_texture_env_dot3                   , ANYGLL,   x   ,   x   ,   x   , 2001)<br>
 EXT(ARB_texture_filter_<wbr>anisotropic          , ARB_texture_filter_anisotropic         , ANYGLL, ANYGLC,   x   ,   x   , 2017)<br>
 EXT(ARB_texture_float                       , ARB_texture_float                      , ANYGLL, ANYGLC,   x   ,   x   , 2004)<br>
 EXT(ARB_texture_gather                      , ARB_texture_gather                     , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
-EXT(ARB_texture_mirror_clamp_<wbr>to_edge        , ARB_texture_mirror_clamp_to_<wbr>edge       , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
+EXT(ARB_texture_mirror_clamp_<wbr>to_edge        , ARB_texture_mirror_clamp_to_<wbr>edge       ,  14   ,  14   ,   x   ,   x   , 2013)<br>
 EXT(ARB_texture_mirrored_<wbr>repeat             , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 2001)<br>
 EXT(ARB_texture_multisample                 , ARB_texture_multisample                , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_texture_non_power_of_<wbr>two            , ARB_texture_non_power_of_two           , ANYGLL, ANYGLC,   x   ,   x   , 2003)<br>
-EXT(ARB_texture_query_levels                , ARB_texture_query_levels               , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
+EXT(ARB_texture_query_levels                , ARB_texture_query_levels               ,  30   ,  30   ,   x   ,   x   , 2012)<br>
 EXT(ARB_texture_query_lod                   , ARB_texture_query_lod                  , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
-EXT(ARB_texture_rectangle                   , NV_texture_rectangle                   , ANYGLL, ANYGLC,   x   ,   x   , 2004)<br>
+EXT(ARB_texture_rectangle                   , NV_texture_rectangle                   ,  11   ,  11   ,   x   ,   x   , 2004)<br>
 EXT(ARB_texture_rg                          , ARB_texture_rg                         , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
 EXT(ARB_texture_rgb10_a2ui                  , ARB_texture_rgb10_a2ui                 , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_texture_stencil8                    , ARB_texture_stencil8                   , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
-EXT(ARB_texture_storage                     , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
+EXT(ARB_texture_storage                     , dummy_true                             ,  12   ,  12   ,   x   ,   x   , 2011)<br>
 EXT(ARB_texture_storage_<wbr>multisample         , ARB_texture_multisample                , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
 EXT(ARB_texture_swizzle                     , EXT_texture_swizzle                    , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
 EXT(ARB_texture_view                        , ARB_texture_view                       , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
 EXT(ARB_timer_query                         , ARB_timer_query                        , ANYGLL, ANYGLC,   x   ,   x   , 2010)<br>
 EXT(ARB_transform_feedback2                 , ARB_transform_feedback2                , ANYGLL, ANYGLC,   x   ,   x   , 2010)<br>
 EXT(ARB_transform_feedback3                 , ARB_transform_feedback3                , ANYGLL, ANYGLC,   x   ,   x   , 2010)<br>
-EXT(ARB_transform_feedback_<wbr>instanced        , ARB_transform_feedback_<wbr>instanced       , ANYGLL, ANYGLC,   x   ,   x   , 2011)<br>
+EXT(ARB_transform_feedback_<wbr>instanced        , ARB_transform_feedback_<wbr>instanced       ,  20   ,  20   ,   x   ,   x   , 2011) // OpenGL 4.0 or the ARB_transform_feedback2 extension is required, OpenGL 3.1 or the ARB_draw_instanced extension is required<br>
 EXT(ARB_transform_feedback_<wbr>overflow_query   , ARB_transform_feedback_<wbr>overflow_query  , ANYGLL, ANYGLC,   x   ,   x   , 2014)<br>
 EXT(ARB_transpose_matrix                    , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 1999)<br>
 EXT(ARB_uniform_buffer_object               , ARB_uniform_buffer_object              , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
-EXT(ARB_vertex_array_bgra                   , EXT_vertex_array_bgra                  , ANYGLL, ANYGLC,   x   ,   x   , 2008)<br>
+EXT(ARB_vertex_array_bgra                   , EXT_vertex_array_bgra                  ,  11   ,  11   ,   x   ,   x   , 2008)<br>
 EXT(ARB_vertex_array_object                 , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2006)<br>
 EXT(ARB_vertex_attrib_64bit                 , ARB_vertex_attrib_64bit                ,   x   , ANYGLC,   x   ,   x   , 2010)<br>
 EXT(ARB_vertex_attrib_binding               , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2012)<br>
 EXT(ARB_vertex_buffer_object                , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 2003)<br>
-EXT(ARB_vertex_program                      , ARB_vertex_program                     , ANYGLL,   x   ,   x   ,   x   , 2002)<br>
-EXT(ARB_vertex_shader                       , ARB_vertex_shader                      , ANYGLL, ANYGLC,   x   ,   x   , 2002)<br>
+EXT(ARB_vertex_program                      , ARB_vertex_program                     ,  13   ,   x   ,   x   ,   x   , 2002)<br>
+EXT(ARB_vertex_shader                       , ARB_vertex_shader                      , ANYGLL, ANYGLC,   x   ,   x   , 2002) // requires ARB_shader_objects<br>
 EXT(ARB_vertex_type_10f_11f_<wbr>11f_rev         , ARB_vertex_type_10f_11f_11f_<wbr>rev        , ANYGLL, ANYGLC,   x   ,   x   , 2013)<br>
 EXT(ARB_vertex_type_2_10_10_<wbr>10_rev          , ARB_vertex_type_2_10_10_10_rev         , ANYGLL, ANYGLC,   x   ,   x   , 2009)<br>
 EXT(ARB_viewport_array                      , ARB_viewport_array                     ,   x   , ANYGLC,   x   ,   x   , 2010)<br>
<span class="HOEnZb"><font color="#888888">-- <br>
2.14.1<br>
<br>
</font></span></blockquote></div><br></div>