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" <mar...@gmail.com> CC: Eric Anholt <e...@anholt.net> CC: Emil Velikov <emil.l.veli...@gmail.com> CC: Timothy Arceri <tarc...@itsqueeze.com> CC: Ilia Mirkin <imir...@alum.mit.edu> Signed-off-by: Benedikt Schemmer <b...@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev