[Mesa-dev] [RFC PATCH 2/3] mesa/main/extensions: first attempt to get the context levels right

Benedikt Schemmer ben at besd.de
Sat May 19 13:18:52 UTC 2018


These are just a few extensions for which I had the specifications handy, to
get a feel for what this might look like.

It's already been pointed out that applications might fail because of this.

(I haven't found an application that does yet but I can only test on 64-bit)
The argument for this change would be that its ok if the application fails
because it does something unexpected and its better to let it explicitly fail
and create a workaround for it than to just silently hope that everything is
going to be alright.

CC: "Marek Olšák" <maraeo at gmail.com> 
CC: Eric Anholt <eric at anholt.net>
CC: Emil Velikov <emil.l.velikov at gmail.com>
CC: Timothy Arceri <tarceri at itsqueeze.com>
CC: Ilia Mirkin <imirkin at alum.mit.edu>

Signed-off-by: Benedikt Schemmer <ben at besd.de>
---
 src/mesa/main/extensions_table.h | 98 ++++++++++++++++++++++------------------
 1 file changed, 53 insertions(+), 45 deletions(-)

diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 931e0d4d33..6e3bdbe99c 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -6,7 +6,8 @@
 #define ANYES2 0
 #define   x   ~0
 
-//EXT(name_str                              , driver_cap                             ,GLL_ver,GLC_ver, gles_ver, glES2_ver, yyyy)
+//highest GLL_ver = 46, lowest GLC_ver = 30
+//EXT(name_str                              , driver_cap                             ,GLL_ver,GLC_ver, gles_ver, glES2_ver, year)
 EXT(3DFX_texture_compression_FXT1           , TDFX_texture_compression_FXT1          , ANYGLL, ANYGLC,   x   ,   x   , 1999)
 
 EXT(AMD_conservative_depth                  , ARB_conservative_depth                 , ANYGLL, ANYGLC,   x   ,   x   , 2009)
@@ -31,60 +32,62 @@ EXT(APPLE_texture_max_level                 , dummy_true
 EXT(ARB_ES2_compatibility                   , ARB_ES2_compatibility                  , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_ES3_1_compatibility                 , ARB_ES3_1_compatibility                ,   x   , ANYGLC,   x   ,   x   , 2014)
 EXT(ARB_ES3_2_compatibility                 , ARB_ES3_2_compatibility                ,   x   , ANYGLC,   x   ,   x   , 2015)
-EXT(ARB_ES3_compatibility                   , ARB_ES3_compatibility                  , ANYGLL, ANYGLC,   x   ,   x   , 2012)
-EXT(ARB_arrays_of_arrays                    , ARB_arrays_of_arrays                   , ANYGLL, ANYGLC,   x   ,   x   , 2012)
+EXT(ARB_ES3_compatibility                   , ARB_ES3_compatibility                  ,  33   ,  33   ,   x   ,   x   , 2012) // requires ARB_ES2_compatibility, ARB_invalidate_subdata, ARB_texture_storage, OES_compressed_*
+EXT(ARB_arrays_of_arrays                    , ARB_arrays_of_arrays                   ,  12   ,  12   ,   x   ,   x   , 2012)
 EXT(ARB_base_instance                       , ARB_base_instance                      , ANYGLL, ANYGLC,   x   ,   x   , 2011)
 EXT(ARB_bindless_texture                    , ARB_bindless_texture                   , ANYGLL, ANYGLC,   x   ,   x   , 2013)
 EXT(ARB_blend_func_extended                 , ARB_blend_func_extended                , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_buffer_storage                      , ARB_buffer_storage                     , ANYGLL, ANYGLC,   x   ,   x   , 2013)
+//EXT(ARB_cl_event                            , ARB_cl_event                           ,  31   ,  31   ,   x   ,   x   , 2013) // requires GL_ARB_sync
 EXT(ARB_clear_buffer_object                 , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2012)
 EXT(ARB_clear_texture                       , ARB_clear_texture                      , ANYGLL, ANYGLC,   x   ,   x   , 2013)
 EXT(ARB_clip_control                        , ARB_clip_control                       , ANYGLL, ANYGLC,   x   ,   x   , 2014)
 EXT(ARB_color_buffer_float                  , ARB_color_buffer_float                 , ANYGLL, ANYGLC,   x   ,   x   , 2004)
 EXT(ARB_compatibility                       , ARB_compatibility                      , ANYGLL,   x   ,   x   ,   x   , 2009)
 EXT(ARB_compressed_texture_pixel_storage    , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2011)
-EXT(ARB_compute_shader                      , ARB_compute_shader                     , ANYGLL, ANYGLC,   x   ,   x   , 2012)
-EXT(ARB_compute_variable_group_size         , ARB_compute_variable_group_size        , ANYGLL, ANYGLC,   x   ,   x   , 2013)
+EXT(ARB_compute_shader                      , ARB_compute_shader                     ,  42   ,  42   ,   x   ,   x   , 2012)
+EXT(ARB_compute_variable_group_size         , ARB_compute_variable_group_size        ,  42   ,  42   ,   x   ,   x   , 2013) //or ARB compute shader
 EXT(ARB_conditional_render_inverted         , ARB_conditional_render_inverted        , ANYGLL, ANYGLC,   x   ,   x   , 2014)
 EXT(ARB_conservative_depth                  , ARB_conservative_depth                 , ANYGLL, ANYGLC,   x   ,   x   , 2011)
 EXT(ARB_copy_buffer                         , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2008)
-EXT(ARB_copy_image                          , ARB_copy_image                         , ANYGLL, ANYGLC,   x   ,   x   , 2012)
-EXT(ARB_cull_distance                       , ARB_cull_distance                      , ANYGLL, ANYGLC,   x   ,   x   , 2014)
-EXT(ARB_debug_output                        , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2009)
+EXT(ARB_copy_image                          , ARB_copy_image                         ,  11   ,  11   ,   x   ,   x   , 2012)
+EXT(ARB_cull_distance                       , ARB_cull_distance                      ,  30   ,  30   ,   x   ,   x   , 2014)
+EXT(ARB_debug_output                        , dummy_true                             ,  11   ,  11   ,   x   ,   x   , 2009)
 EXT(ARB_depth_buffer_float                  , ARB_depth_buffer_float                 , ANYGLL, ANYGLC,   x   ,   x   , 2008)
 EXT(ARB_depth_clamp                         , ARB_depth_clamp                        , ANYGLL, ANYGLC,   x   ,   x   , 2003)
-EXT(ARB_depth_texture                       , ARB_depth_texture                      , ANYGLL,   x   ,   x   ,   x   , 2001)
-EXT(ARB_derivative_control                  , ARB_derivative_control                 , ANYGLL, ANYGLC,   x   ,   x   , 2014)
-EXT(ARB_direct_state_access                 , dummy_true                             ,   x   , ANYGLC,   x   ,   x   , 2014)
+EXT(ARB_depth_texture                       , ARB_depth_texture                      ,  11   ,   x   ,   x   ,   x   , 2001)
+EXT(ARB_derivative_control                  , ARB_derivative_control                 ,  40   ,  40   ,   x   ,   x   , 2014)
+EXT(ARB_direct_state_access                 , dummy_true                             ,   x   ,  20   ,   x   ,   x   , 2014)
 EXT(ARB_draw_buffers                        , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2002)
 EXT(ARB_draw_buffers_blend                  , ARB_draw_buffers_blend                 , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_draw_elements_base_vertex           , ARB_draw_elements_base_vertex          , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_draw_indirect                       , ARB_draw_indirect                      ,   x   , ANYGLC,   x   ,   x   , 2010)
-EXT(ARB_draw_instanced                      , ARB_draw_instanced                     , ANYGLL, ANYGLC,   x   ,   x   , 2008)
-EXT(ARB_enhanced_layouts                    , ARB_enhanced_layouts                   , ANYGLL, ANYGLC,   x   ,   x   , 2013)
-EXT(ARB_explicit_attrib_location            , ARB_explicit_attrib_location           , ANYGLL, ANYGLC,   x   ,   x   , 2009)
+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
+EXT(ARB_enhanced_layouts                    , ARB_enhanced_layouts                   ,  31   ,  31   ,   x   ,   x   , 2013)
+EXT(ARB_explicit_attrib_location            , ARB_explicit_attrib_location           , ANYGLL, ANYGLC,   x   ,   x   , 2009) //GL_ARB_vertex_shader is always available
 EXT(ARB_explicit_uniform_location           , ARB_explicit_uniform_location          , ANYGLL, ANYGLC,   x   ,   x   , 2012)
 EXT(ARB_fragment_coord_conventions          , ARB_fragment_coord_conventions         , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_fragment_layer_viewport             , ARB_fragment_layer_viewport            ,   x   , ANYGLC,   x   ,   x   , 2012)
 EXT(ARB_fragment_program                    , ARB_fragment_program                   , ANYGLL,   x   ,   x   ,   x   , 2002)
 EXT(ARB_fragment_program_shadow             , ARB_fragment_program_shadow            , ANYGLL,   x   ,   x   ,   x   , 2003)
 EXT(ARB_fragment_shader                     , ARB_fragment_shader                    , ANYGLL, ANYGLC,   x   ,   x   , 2002)
-EXT(ARB_framebuffer_no_attachments          , ARB_framebuffer_no_attachments         , ANYGLL, ANYGLC,   x   ,   x   , 2012)
-EXT(ARB_framebuffer_object                  , ARB_framebuffer_object                 , ANYGLL, ANYGLC,   x   ,   x   , 2005)
+//EXT(ARB_fragment_shader_interlock           , ARB_fragment_shader_interlock          ,  42   ,  42   ,   x   ,   x   , 2015)
+EXT(ARB_framebuffer_no_attachments          , ARB_framebuffer_no_attachments         ,  11   ,  11   ,   x   ,   x   , 2012) // requires ARB_framebuffer_object
+EXT(ARB_framebuffer_object                  , ARB_framebuffer_object                 ,  11   ,  11   ,   x   ,   x   , 2005)
 EXT(ARB_framebuffer_sRGB                    , EXT_framebuffer_sRGB                   , ANYGLL, ANYGLC,   x   ,   x   , 1998)
 EXT(ARB_get_program_binary                  , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2010)
-EXT(ARB_get_texture_sub_image               , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2014)
-EXT(ARB_gl_spirv                            , ARB_gl_spirv                           ,   x   , ANYGLC,   x   ,   x   , 2016)
-EXT(ARB_gpu_shader5                         , ARB_gpu_shader5                        ,  32   ,  40   ,   x   ,   x   , 2010)
-EXT(ARB_gpu_shader_fp64                     , ARB_gpu_shader_fp64                    ,   x   , ANYGLC,   x   ,   x   , 2010)
-EXT(ARB_gpu_shader_int64                    , ARB_gpu_shader_int64                   ,   x   , ANYGLC,   x   ,   x   , 2015)
-EXT(ARB_half_float_pixel                    , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2003)
+EXT(ARB_get_texture_sub_image               , dummy_true                             ,  20   ,  20   ,   x   ,   x   , 2014)
+EXT(ARB_gl_spirv                            , ARB_gl_spirv                           ,   x   ,  33   ,   x   ,   x   , 2016)
+EXT(ARB_gpu_shader5                         , ARB_gpu_shader5                        ,  30   ,  30   ,   x   ,   x   , 2010)
+EXT(ARB_gpu_shader_fp64                     , ARB_gpu_shader_fp64                    ,  32   ,  32   ,   x   ,   x   , 2010)
+EXT(ARB_gpu_shader_int64                    , ARB_gpu_shader_int64                   ,   x   ,  40   ,   x   ,   x   , 2015)
+EXT(ARB_half_float_pixel                    , dummy_true                             ,  15   ,  15   ,   x   ,   x   , 2003)
 EXT(ARB_half_float_vertex                   , ARB_half_float_vertex                  , ANYGLL, ANYGLC,   x   ,   x   , 2008)
-EXT(ARB_indirect_parameters                 , ARB_indirect_parameters                ,   x   , ANYGLC,   x   ,   x   , 2013)
+EXT(ARB_indirect_parameters                 , ARB_indirect_parameters                ,   x   ,  42   ,   x   ,   x   , 2013)
 EXT(ARB_instanced_arrays                    , ARB_instanced_arrays                   , ANYGLL, ANYGLC,   x   ,   x   , 2008)
 EXT(ARB_internalformat_query                , ARB_internalformat_query               , ANYGLL, ANYGLC,   x   ,   x   , 2011)
 EXT(ARB_internalformat_query2               , ARB_internalformat_query2              , ANYGLL, ANYGLC,   x   ,   x   , 2013)
-EXT(ARB_invalidate_subdata                  , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2012)
+EXT(ARB_invalidate_subdata                  , dummy_true                             ,  20   ,  20   ,   x   ,   x   , 2012)
 EXT(ARB_map_buffer_alignment                , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2011)
 EXT(ARB_map_buffer_range                    , ARB_map_buffer_range                   , ANYGLL, ANYGLC,   x   ,   x   , 2008)
 EXT(ARB_multi_bind                          , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2013)
@@ -97,27 +100,28 @@ EXT(ARB_pipeline_statistics_query           , ARB_pipeline_statistics_query
 EXT(ARB_pixel_buffer_object                 , EXT_pixel_buffer_object                , ANYGLL, ANYGLC,   x   ,   x   , 2004)
 EXT(ARB_point_parameters                    , EXT_point_parameters                   , ANYGLL,   x   ,   x   ,   x   , 1997)
 EXT(ARB_point_sprite                        , ARB_point_sprite                       , ANYGLL, ANYGLC,   x   ,   x   , 2003)
-EXT(ARB_polygon_offset_clamp                , ARB_polygon_offset_clamp               , ANYGLL, ANYGLC,   x   ,   x   , 2017)
+EXT(ARB_polygon_offset_clamp                , ARB_polygon_offset_clamp               ,  33   ,  33   ,   x   ,   x   , 2017)
 EXT(ARB_post_depth_coverage                 , ARB_post_depth_coverage                ,   x   , ANYGLC,   x   ,   x   , 2015)
 EXT(ARB_program_interface_query             , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2012)
 EXT(ARB_provoking_vertex                    , EXT_provoking_vertex                   , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_query_buffer_object                 , ARB_query_buffer_object                , ANYGLL, ANYGLC,   x   ,   x   , 2013)
-EXT(ARB_robust_buffer_access_behavior       , ARB_robust_buffer_access_behavior      , ANYGLL, ANYGLC,   x   ,   x   , 2012)
+EXT(ARB_robust_buffer_access_behavior       , ARB_robust_buffer_access_behavior      , ANYGLL, ANYGLC,   x   ,   x   , 2012) // requires ARB_robustness extension
 EXT(ARB_robustness                          , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2010)
-EXT(ARB_sample_shading                      , ARB_sample_shading                     , ANYGLL, ANYGLC,   x   ,   x   , 2009)
+EXT(ARB_sample_shading                      , ARB_sample_shading                     ,  20   ,  20   ,   x   ,   x   , 2009)
+//EXT(ARB_sample_locations                    , ARB_sample_locations                   ,   x   ,   x   ,   x   ,   x   , 2009
 EXT(ARB_sampler_objects                     , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2009)
-EXT(ARB_seamless_cube_map                   , ARB_seamless_cube_map                  , ANYGLL, ANYGLC,   x   ,   x   , 2009)
+EXT(ARB_seamless_cube_map                   , ARB_seamless_cube_map                  ,  11   ,  11   ,   x   ,   x   , 2009) // requires ARB_texture_cube_map
 EXT(ARB_seamless_cubemap_per_texture        , AMD_seamless_cubemap_per_texture       , ANYGLL, ANYGLC,   x   ,   x   , 2013)
-EXT(ARB_separate_shader_objects             , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2010)
+EXT(ARB_separate_shader_objects             , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2010) // requires ARB_shader_objects
 EXT(ARB_shader_atomic_counter_ops           , ARB_shader_atomic_counter_ops          , ANYGLL, ANYGLC,   x   ,   x   , 2015)
 EXT(ARB_shader_atomic_counters              , ARB_shader_atomic_counters             , ANYGLL, ANYGLC,   x   ,   x   , 2011)
 EXT(ARB_shader_ballot                       , ARB_shader_ballot                      , ANYGLL, ANYGLC,   x   ,   x   , 2015)
 EXT(ARB_shader_bit_encoding                 , ARB_shader_bit_encoding                , ANYGLL, ANYGLC,   x   ,   x   , 2010)
 EXT(ARB_shader_clock                        , ARB_shader_clock                       , ANYGLL, ANYGLC,   x   ,   x   , 2015)
 EXT(ARB_shader_draw_parameters              , ARB_shader_draw_parameters             , ANYGLL, ANYGLC,   x   ,   x   , 2013)
-EXT(ARB_shader_group_vote                   , ARB_shader_group_vote                  , ANYGLL, ANYGLC,   x   ,   x   , 2013)
-EXT(ARB_shader_image_load_store             , ARB_shader_image_load_store            , ANYGLL, ANYGLC,   x   ,   x   , 2011)
-EXT(ARB_shader_image_size                   , ARB_shader_image_size                  , ANYGLL, ANYGLC,   x   ,   x   , 2012)
+EXT(ARB_shader_group_vote                   , ARB_shader_group_vote                  ,  42   ,  42   ,   x   ,   x   , 2013)
+EXT(ARB_shader_image_load_store             , ARB_shader_image_load_store            ,  30   ,  30   ,   x   ,   x   , 2011)
+EXT(ARB_shader_image_size                   , ARB_shader_image_size                  ,  42   ,  42   ,   x   ,   x   , 2012)
 EXT(ARB_shader_objects                      , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2002)
 EXT(ARB_shader_precision                    , ARB_shader_precision                   , ANYGLL, ANYGLC,   x   ,   x   , 2010)
 EXT(ARB_shader_stencil_export               , ARB_shader_stencil_export              , ANYGLL, ANYGLC,   x   ,   x   , 2009)
@@ -130,55 +134,59 @@ EXT(ARB_shading_language_100                , dummy_true
 EXT(ARB_shading_language_420pack            , ARB_shading_language_420pack           , ANYGLL, ANYGLC,   x   ,   x   , 2011)
 EXT(ARB_shading_language_packing            , ARB_shading_language_packing           , ANYGLL, ANYGLC,   x   ,   x   , 2011)
 EXT(ARB_shadow                              , ARB_shadow                             , ANYGLL,   x   ,   x   ,   x   , 2001)
+//EXT(ARB_shadow_ambient                      , ARB_shadow_ambient                     ,  11   ,   x   ,   x   ,   x   , 2001) //requires ARB_shadow
 EXT(ARB_sparse_buffer                       , ARB_sparse_buffer                      , ANYGLL, ANYGLC,   x   ,   x   , 2014)
+//EXT(ARB_sparse_texture                      , ARB_sparse_texture                     ,  11   ,  11   ,   x   ,   x   , 2014)
+//EXT(ARB_sparse_texture2                     , ARB_sparse_texture2                    ,  11   ,  11   ,   x   ,   x   , 2014) // requires ARB_sparse_texture
+//EXT(ARB_sparse_texture_clamp                , ARB_sparse_texture_clamp               ,  11   ,  11   ,   x   ,   x   , 2014) // requires ARB_sparse_texture2
 EXT(ARB_stencil_texturing                   , ARB_stencil_texturing                  , ANYGLL, ANYGLC,   x   ,   x   , 2012)
-EXT(ARB_sync                                , ARB_sync                               , ANYGLL, ANYGLC,   x   ,   x   , 2003)
+EXT(ARB_sync                                , ARB_sync                               ,  31   ,  31   ,   x   ,   x   , 2003)
 EXT(ARB_tessellation_shader                 , ARB_tessellation_shader                ,   x   , ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_texture_barrier                     , NV_texture_barrier                     , ANYGLL, ANYGLC,   x   ,   x   , 2014)
 EXT(ARB_texture_border_clamp                , ARB_texture_border_clamp               , ANYGLL,   x   ,   x   ,   x   , 2000)
 EXT(ARB_texture_buffer_object               , ARB_texture_buffer_object              , ANYGLL, ANYGLC,   x   ,   x   , 2008)
 EXT(ARB_texture_buffer_object_rgb32         , ARB_texture_buffer_object_rgb32        , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_texture_buffer_range                , ARB_texture_buffer_range               , ANYGLL, ANYGLC,   x   ,   x   , 2012)
-EXT(ARB_texture_compression                 , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 2000)
-EXT(ARB_texture_compression_bptc            , ARB_texture_compression_bptc           , ANYGLL, ANYGLC,   x   ,   x   , 2010)
-EXT(ARB_texture_compression_rgtc            , ARB_texture_compression_rgtc           , ANYGLL, ANYGLC,   x   ,   x   , 2004)
+EXT(ARB_texture_compression                 , dummy_true                             ,  11   ,   x   ,   x   ,   x   , 2000)
+EXT(ARB_texture_compression_bptc            , ARB_texture_compression_bptc           ,  11   ,  11   ,   x   ,   x   , 2010)
+EXT(ARB_texture_compression_rgtc            , ARB_texture_compression_rgtc           ,  11   ,  11   ,   x   ,   x   , 2004)  // requires ARB_texture_compression
 EXT(ARB_texture_cube_map                    , ARB_texture_cube_map                   , ANYGLL,   x   ,   x   ,   x   , 1999)
 EXT(ARB_texture_cube_map_array              , ARB_texture_cube_map_array             , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_texture_env_add                     , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 1999)
 EXT(ARB_texture_env_combine                 , ARB_texture_env_combine                , ANYGLL,   x   ,   x   ,   x   , 2001)
-EXT(ARB_texture_env_crossbar                , ARB_texture_env_crossbar               , ANYGLL,   x   ,   x   ,   x   , 2001)
+EXT(ARB_texture_env_crossbar                , ARB_texture_env_crossbar               ,  11   ,   x   ,   x   ,   x   , 2001) //why not core?
 EXT(ARB_texture_env_dot3                    , ARB_texture_env_dot3                   , ANYGLL,   x   ,   x   ,   x   , 2001)
 EXT(ARB_texture_filter_anisotropic          , ARB_texture_filter_anisotropic         , ANYGLL, ANYGLC,   x   ,   x   , 2017)
 EXT(ARB_texture_float                       , ARB_texture_float                      , ANYGLL, ANYGLC,   x   ,   x   , 2004)
 EXT(ARB_texture_gather                      , ARB_texture_gather                     , ANYGLL, ANYGLC,   x   ,   x   , 2009)
-EXT(ARB_texture_mirror_clamp_to_edge        , ARB_texture_mirror_clamp_to_edge       , ANYGLL, ANYGLC,   x   ,   x   , 2013)
+EXT(ARB_texture_mirror_clamp_to_edge        , ARB_texture_mirror_clamp_to_edge       ,  14   ,  14   ,   x   ,   x   , 2013)
 EXT(ARB_texture_mirrored_repeat             , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 2001)
 EXT(ARB_texture_multisample                 , ARB_texture_multisample                , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_texture_non_power_of_two            , ARB_texture_non_power_of_two           , ANYGLL, ANYGLC,   x   ,   x   , 2003)
-EXT(ARB_texture_query_levels                , ARB_texture_query_levels               , ANYGLL, ANYGLC,   x   ,   x   , 2012)
+EXT(ARB_texture_query_levels                , ARB_texture_query_levels               ,  30   ,  30   ,   x   ,   x   , 2012)
 EXT(ARB_texture_query_lod                   , ARB_texture_query_lod                  , ANYGLL, ANYGLC,   x   ,   x   , 2009)
-EXT(ARB_texture_rectangle                   , NV_texture_rectangle                   , ANYGLL, ANYGLC,   x   ,   x   , 2004)
+EXT(ARB_texture_rectangle                   , NV_texture_rectangle                   ,  11   ,  11   ,   x   ,   x   , 2004)
 EXT(ARB_texture_rg                          , ARB_texture_rg                         , ANYGLL, ANYGLC,   x   ,   x   , 2008)
 EXT(ARB_texture_rgb10_a2ui                  , ARB_texture_rgb10_a2ui                 , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_texture_stencil8                    , ARB_texture_stencil8                   , ANYGLL, ANYGLC,   x   ,   x   , 2013)
-EXT(ARB_texture_storage                     , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2011)
+EXT(ARB_texture_storage                     , dummy_true                             ,  12   ,  12   ,   x   ,   x   , 2011)
 EXT(ARB_texture_storage_multisample         , ARB_texture_multisample                , ANYGLL, ANYGLC,   x   ,   x   , 2012)
 EXT(ARB_texture_swizzle                     , EXT_texture_swizzle                    , ANYGLL, ANYGLC,   x   ,   x   , 2008)
 EXT(ARB_texture_view                        , ARB_texture_view                       , ANYGLL, ANYGLC,   x   ,   x   , 2012)
 EXT(ARB_timer_query                         , ARB_timer_query                        , ANYGLL, ANYGLC,   x   ,   x   , 2010)
 EXT(ARB_transform_feedback2                 , ARB_transform_feedback2                , ANYGLL, ANYGLC,   x   ,   x   , 2010)
 EXT(ARB_transform_feedback3                 , ARB_transform_feedback3                , ANYGLL, ANYGLC,   x   ,   x   , 2010)
-EXT(ARB_transform_feedback_instanced        , ARB_transform_feedback_instanced       , ANYGLL, ANYGLC,   x   ,   x   , 2011)
+EXT(ARB_transform_feedback_instanced        , ARB_transform_feedback_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
 EXT(ARB_transform_feedback_overflow_query   , ARB_transform_feedback_overflow_query  , ANYGLL, ANYGLC,   x   ,   x   , 2014)
 EXT(ARB_transpose_matrix                    , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 1999)
 EXT(ARB_uniform_buffer_object               , ARB_uniform_buffer_object              , ANYGLL, ANYGLC,   x   ,   x   , 2009)
-EXT(ARB_vertex_array_bgra                   , EXT_vertex_array_bgra                  , ANYGLL, ANYGLC,   x   ,   x   , 2008)
+EXT(ARB_vertex_array_bgra                   , EXT_vertex_array_bgra                  ,  11   ,  11   ,   x   ,   x   , 2008)
 EXT(ARB_vertex_array_object                 , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2006)
 EXT(ARB_vertex_attrib_64bit                 , ARB_vertex_attrib_64bit                ,   x   , ANYGLC,   x   ,   x   , 2010)
 EXT(ARB_vertex_attrib_binding               , dummy_true                             , ANYGLL, ANYGLC,   x   ,   x   , 2012)
 EXT(ARB_vertex_buffer_object                , dummy_true                             , ANYGLL,   x   ,   x   ,   x   , 2003)
-EXT(ARB_vertex_program                      , ARB_vertex_program                     , ANYGLL,   x   ,   x   ,   x   , 2002)
-EXT(ARB_vertex_shader                       , ARB_vertex_shader                      , ANYGLL, ANYGLC,   x   ,   x   , 2002)
+EXT(ARB_vertex_program                      , ARB_vertex_program                     ,  13   ,   x   ,   x   ,   x   , 2002)
+EXT(ARB_vertex_shader                       , ARB_vertex_shader                      , ANYGLL, ANYGLC,   x   ,   x   , 2002) // requires ARB_shader_objects
 EXT(ARB_vertex_type_10f_11f_11f_rev         , ARB_vertex_type_10f_11f_11f_rev        , ANYGLL, ANYGLC,   x   ,   x   , 2013)
 EXT(ARB_vertex_type_2_10_10_10_rev          , ARB_vertex_type_2_10_10_10_rev         , ANYGLL, ANYGLC,   x   ,   x   , 2009)
 EXT(ARB_viewport_array                      , ARB_viewport_array                     ,   x   , ANYGLC,   x   ,   x   , 2010)
-- 
2.14.1



More information about the mesa-dev mailing list