# Status of OpenGL extensions in Mesa

Here's how to read this file:

all DONE: <driver>, ...
    All the extensions are done for the given list of drivers.

DONE
    The extension is done for Mesa and no implementation is necessary on the
    driver-side.

DONE ()
    The extension is done for Mesa and all the drivers in the "all DONE" list.

DONE (<driver>, ...)
    The extension is done for Mesa, all the drivers in the "all DONE" list, and
    all the drivers in the brackets.

in progress
    The extension is started but not finished yet.

not started
    The extension isn't started yet.

# OpenGL Core and Compatibility context support

Some drivers do not support the Compatibility profile or the
ARB_compatibility extensions.  If an application does not request a
specific version without the forward-compatiblity flag, such drivers
will be limited to OpenGL 3.0.  If an application requests OpenGL 3.1,
it will get a context that may or may not have the ARB_compatibility
extension enabled.  Some of the later GL features are exposed in the 3.0
context as extensions.


Feature                                                 Status
------------------------------------------------------- ------------------------

GL 3.0, GLSL 1.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl, zink

  glBindFragDataLocation, glGetFragDataLocation         DONE
  GL_NV_conditional_render (Conditional rendering)      DONE ()
  GL_ARB_map_buffer_range (Map buffer subranges)        DONE (v3d)
  GL_ARB_color_buffer_float (Clamping controls)         DONE (v3d)
  GL_ARB_texture_float (Float textures, renderbuffers)  DONE (v3d)
  GL_EXT_packed_float                                   DONE (v3d)
  GL_EXT_texture_shared_exponent                        DONE (v3d)
  GL_ARB_depth_buffer_float (Float depth buffers)       DONE (v3d)
  GL_ARB_framebuffer_object (Framebuffer objects)       DONE (v3d)
  GL_ARB_half_float_pixel                               DONE (all drivers)
  GL_ARB_half_float_vertex                              DONE (v3d)
  GL_EXT_texture_integer                                DONE (v3d)
  GL_EXT_texture_array                                  DONE (v3d)
  GL_EXT_draw_buffers2 (Per-buffer blend and masks)     DONE (v3d)
  GL_EXT_texture_compression_rgtc                       DONE ()
  GL_ARB_texture_rg                                     DONE (v3d)
  GL_EXT_transform_feedback (Transform feedback)        DONE (v3d)
  GL_ARB_vertex_array_object (Vertex array objects)     DONE (v3d)
  GL_EXT_framebuffer_sRGB (sRGB framebuffer format)     DONE (v3d)
  glClearBuffer commands                                DONE
  glGetStringi command                                  DONE
  glTexParameterI, glGetTexParameterI commands          DONE
  glVertexAttribI commands                              DONE
  Depth format cube textures                            DONE ()
  GLX_ARB_create_context (GLX 1.4 is required)          DONE (v3d)
  Multisample anti-aliasing                             DONE (freedreno/a5xx+, freedreno (*), llvmpipe (*), softpipe (*), swr (*))
  8 draw buffers                                        DONE ()

(*) freedreno (a2xx-a4xx), llvmpipe, softpipe, and swr have fake Multisample anti-aliasing support


GL 3.1, GLSL 1.40 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl

  Forward compatible context support/deprecations       DONE
  GL_ARB_draw_instanced (Instanced drawing)             DONE (v3d, zink)
  GL_ARB_copy_buffer (Buffer copying)                   DONE (v3d, zink)
  GL_NV_primitive_restart (Primitive restart)           DONE ()
  16 vertex texture image units                         DONE (zink)
  GL_ARB_texture_buffer_object (Texture buffer objs)    DONE (zink)
  GL_ARB_texture_rectangle (Rectangular textures)       DONE (v3d, zink)
  GL_ARB_uniform_buffer_object (Uniform buffer objs)    DONE (v3d)
  GL_EXT_texture_snorm (Signed normalized textures)     DONE (v3d, zink)


GL 3.2, GLSL 1.50 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl

  Core/compatibility profiles                           DONE
  Geometry shaders                                      DONE ()
  GL_ARB_vertex_array_bgra (BGRA vertex order)          DONE (freedreno, zink)
  GL_ARB_draw_elements_base_vertex (Base vertex offset) DONE (freedreno, v3d, zink)
  GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (freedreno, v3d)
  GL_ARB_provoking_vertex (Provoking vertex)            DONE (freedreno, v3d)
  GL_ARB_seamless_cube_map (Seamless cubemaps)          DONE (freedreno, zink)
  GL_ARB_texture_multisample (Multisample textures)     DONE (freedreno/a5xx+, v3d, zink)
  GL_ARB_depth_clamp (Frag depth clamp)                 DONE (freedreno)
  GL_ARB_sync (Fence objects)                           DONE (freedreno, v3d, zink)
  GLX_ARB_create_context_profile                        DONE


GL 3.3, GLSL 3.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl

  GL_ARB_blend_func_extended                            DONE (freedreno/a3xx, swr, zink)
  GL_ARB_explicit_attrib_location                       DONE (all drivers that support GLSL)
  GL_ARB_occlusion_query2                               DONE (freedreno, swr, v3d, zink)
  GL_ARB_sampler_objects                                DONE (all drivers)
  GL_ARB_shader_bit_encoding                            DONE (freedreno, swr, v3d)
  GL_ARB_texture_rgb10_a2ui                             DONE (freedreno, swr, zink)
  GL_ARB_texture_swizzle                                DONE (freedreno, swr, v3d, zink)
  GL_ARB_timer_query                                    DONE (freedreno, swr)
  GL_ARB_instanced_arrays                               DONE (freedreno, swr, v3d)
  GL_ARB_vertex_type_2_10_10_10_rev                     DONE (freedreno, swr, v3d)


GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl

  GL_ARB_draw_buffers_blend                             DONE (freedreno, i965/gen6+, nv50, softpipe, swr, zink)
  GL_ARB_draw_indirect                                  DONE (freedreno, i965/gen7+, softpipe, swr, v3d)
  GL_ARB_gpu_shader5                                    DONE (i965/gen7+)
  - 'precise' qualifier                                 DONE (softpipe)
  - Dynamically uniform sampler array indices           DONE (softpipe)
  - Dynamically uniform UBO array indices               DONE (freedreno, softpipe)
  - Implicit signed -> unsigned conversions             DONE (softpipe, swr)
  - Fused multiply-add                                  DONE (softpipe, swr)
  - Packing/bitfield/conversion functions               DONE (freedreno, softpipe, swr)
  - Enhanced textureGather                              DONE (freedreno, softpipe, swr)
  - Geometry shader instancing                          DONE (softpipe, swr)
  - Geometry shader multiple streams                    DONE (softpipe, swr)
  - Enhanced per-sample shading                         DONE ()
  - Interpolation functions                             DONE (softpipe)
  - New overload resolution rules                       DONE (softpipe)
  GL_ARB_gpu_shader_fp64                                DONE (i965/gen7+, softpipe, swr)
  GL_ARB_sample_shading                                 DONE (freedreno/a6xx, i965/gen6+, nv50)
  GL_ARB_shader_subroutine                              DONE (freedreno, i965/gen6+, nv50, softpipe, swr)
  GL_ARB_tessellation_shader                            DONE (i965/gen7+, swr)
  GL_ARB_texture_buffer_object_rgb32                    DONE (freedreno, i965/gen6+, softpipe, swr)
  GL_ARB_texture_cube_map_array                         DONE (i965/gen6+, nv50, softpipe, swr, zink)
  GL_ARB_texture_gather                                 DONE (freedreno, i965/gen6+, nv50, softpipe, swr, v3d)
  GL_ARB_texture_query_lod                              DONE (freedreno, i965, nv50, softpipe, swr, v3d)
  GL_ARB_transform_feedback2                            DONE (i965/gen6+, nv50, softpipe, swr, v3d)
  GL_ARB_transform_feedback3                            DONE (i965/gen7+, softpipe, swr)


GL 4.1, GLSL 4.10 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl

  GL_ARB_ES2_compatibility                              DONE (freedreno, i965, nv50, softpipe, swr, v3d, zink)
  GL_ARB_get_program_binary                             DONE (0 or 1 binary formats)
  GL_ARB_separate_shader_objects                        DONE (all drivers)
  GL_ARB_shader_precision                               DONE (i965/gen7+, all drivers that support GLSL 4.10)
  GL_ARB_vertex_attrib_64bit                            DONE (i965/gen7+, softpipe, swr)
  GL_ARB_viewport_array                                 DONE (i965, nv50, softpipe, swr, zink)


GL 4.2, GLSL 4.20 -- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl

  GL_ARB_texture_compression_bptc                       DONE (freedreno, i965, softpipe, swr, zink)
  GL_ARB_compressed_texture_pixel_storage               DONE (all drivers)
  GL_ARB_shader_atomic_counters                         DONE (freedreno/a5xx+, i965, softpipe, v3d)
  GL_ARB_texture_storage                                DONE (all drivers)
  GL_ARB_transform_feedback_instanced                   DONE (freedreno, i965, nv50, softpipe, swr, v3d)
  GL_ARB_base_instance                                  DONE (freedreno, i965, nv50, softpipe, swr, v3d)
  GL_ARB_shader_image_load_store                        DONE (freedreno/a5xx+, i965, softpipe, v3d)
  GL_ARB_conservative_depth                             DONE (all drivers that support GLSL 1.30)
  GL_ARB_shading_language_420pack                       DONE (all drivers that support GLSL 1.30)
  GL_ARB_shading_language_packing                       DONE (all drivers)
  GL_ARB_internalformat_query                           DONE (freedreno, i965, nv50, softpipe, swr, v3d, zink)
  GL_ARB_map_buffer_alignment                           DONE (all drivers)


GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, virgl

  GL_ARB_arrays_of_arrays                               DONE (all drivers that support GLSL 1.30)
  GL_ARB_ES3_compatibility                              DONE (all drivers that support GLSL 3.30)
  GL_ARB_clear_buffer_object                            DONE (all drivers)
  GL_ARB_compute_shader                                 DONE (freedreno/a5xx+, i965, llvmpipe, softpipe, v3d)
  GL_ARB_copy_image                                     DONE (i965, nv50, softpipe, llvmpipe, swr)
  GL_KHR_debug                                          DONE (all drivers)
  GL_ARB_explicit_uniform_location                      DONE (all drivers that support GLSL)
  GL_ARB_fragment_layer_viewport                        DONE (i965, nv50, llvmpipe, softpipe, swr)
  GL_ARB_framebuffer_no_attachments                     DONE (freedreno, i965, llvmpipe, softpipe, v3d)
  GL_ARB_internalformat_query2                          DONE (all drivers)
  GL_ARB_invalidate_subdata                             DONE (all drivers)
  GL_ARB_multi_draw_indirect                            DONE (freedreno, i965, llvmpipe, softpipe, swr, v3d)
  GL_ARB_program_interface_query                        DONE (all drivers)
  GL_ARB_robust_buffer_access_behavior                  DONE (i965)
  GL_ARB_shader_image_size                              DONE (freedreno/a5xx+, i965, llvmpipe, softpipe, v3d)
  GL_ARB_shader_storage_buffer_object                   DONE (freedreno/a5xx+, i965, llvmpipe, softpipe, v3d)
  GL_ARB_stencil_texturing                              DONE (freedreno, i965/hsw+, nv50, llvmpipe, softpipe, swr, v3d)
  GL_ARB_texture_buffer_range                           DONE (freedreno, nv50, i965, softpipe, llvmpipe, swr)
  GL_ARB_texture_query_levels                           DONE (all drivers that support GLSL 1.30)
  GL_ARB_texture_storage_multisample                    DONE (all drivers that support GL_ARB_texture_multisample)
  GL_ARB_texture_view                                   DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr)
  GL_ARB_vertex_attrib_binding                          DONE (all drivers)


GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi

  GL_MAX_VERTEX_ATTRIB_STRIDE                           DONE (all drivers)
  GL_ARB_buffer_storage                                 DONE (freedreno, i965, nv50, llvmpipe, swr, v3d)
  GL_ARB_clear_texture                                  DONE (i965, nv50, llvmpipe, softpipe, swr, virgl)
  GL_ARB_enhanced_layouts                               DONE (i965, nv50, llvmpipe, softpipe, virgl)
  - compile-time constant expressions                   DONE
  - explicit byte offsets for blocks                    DONE
  - forced alignment within blocks                      DONE
  - specified vec4-slot component numbers               DONE
  - specified transform/feedback layout                 DONE
  - input/output block locations                        DONE
  GL_ARB_multi_bind                                     DONE (all drivers)
  GL_ARB_query_buffer_object                            DONE (i965/hsw+, llvmpipe, virgl)
  GL_ARB_texture_mirror_clamp_to_edge                   DONE (i965, nv50, llvmpipe, softpipe, swr, virgl)
  GL_ARB_texture_stencil8                               DONE (freedreno, i965/hsw+, nv50, llvmpipe, softpipe, swr, virgl, v3d)
  GL_ARB_vertex_type_10f_11f_11f_rev                    DONE (i965, nv50, llvmpipe, softpipe, swr, virgl, zink)

GL 4.5, GLSL 4.50 -- all DONE: nvc0, r600, radeonsi

  GL_ARB_ES3_1_compatibility                            DONE (i965/hsw+, softpipe, virgl)
  GL_ARB_clip_control                                   DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr, virgl)
  GL_ARB_conditional_render_inverted                    DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr, virgl)
  GL_ARB_cull_distance                                  DONE (i965, nv50, llvmpipe, softpipe, swr, virgl)
  GL_ARB_derivative_control                             DONE (i965, nv50, llvmpipe, softpipe, virgl)
  GL_ARB_direct_state_access                            DONE (all drivers)
  GL_ARB_get_texture_sub_image                          DONE (all drivers)
  GL_ARB_shader_texture_image_samples                   DONE (i965, nv50, llvmpipe, virgl)
  GL_ARB_texture_barrier                                DONE (freedreno, i965, nv50, llvmpipe, virgl)
  GL_KHR_context_flush_control                          DONE (all - but needs GLX/EGL extension to be useful)
  GL_KHR_robustness                                     DONE (freedreno, i965, virgl)
  GL_EXT_shader_integer_mix                             DONE (all drivers that support GLSL)

GL 4.6, GLSL 4.60 -- all DONE: radeonsi

  GL_ARB_gl_spirv                                       DONE (i965/gen7+)
  GL_ARB_indirect_parameters                            DONE (i965/gen7+, nvc0, llvmpipe, virgl)
  GL_ARB_pipeline_statistics_query                      DONE (i965, nvc0, r600, llvmpipe, softpipe, swr)
  GL_ARB_polygon_offset_clamp                           DONE (freedreno, i965, nv50, nvc0, r600, llvmpipe, swr, virgl)
  GL_ARB_shader_atomic_counter_ops                      DONE (freedreno/a5xx+, i965/gen7+, nvc0, r600, llvmpipe, softpipe, virgl, v3d)
  GL_ARB_shader_draw_parameters                         DONE (i965, llvmpipe, nvc0)
  GL_ARB_shader_group_vote                              DONE (i965, nvc0, llvmpipe)
  GL_ARB_spirv_extensions                               DONE (i965/gen7+)
  GL_ARB_texture_filter_anisotropic                     DONE (etnaviv/HALTI0, freedreno, i965, nv50, nvc0, r600, softpipe (*), llvmpipe (*))
  GL_ARB_transform_feedback_overflow_query              DONE (i965/gen6+, nvc0, llvmpipe, softpipe, virgl)
  GL_KHR_no_error                                       DONE (all drivers)

(*) softpipe and llvmpipe advertise 16x anisotropy but simply ignore the setting

These are the extensions cherry-picked to make GLES 3.1
GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, r600, radeonsi, virgl, v3d

  GL_ARB_arrays_of_arrays                               DONE (all drivers that support GLSL 1.30)
  GL_ARB_compute_shader                                 DONE (freedreno/a5xx+, i965/gen7+, llvmpipe, softpipe)
  GL_ARB_draw_indirect                                  DONE (freedreno, i965/gen7+, llvmpipe, softpipe, swr)
  GL_ARB_explicit_uniform_location                      DONE (all drivers that support GLSL)
  GL_ARB_framebuffer_no_attachments                     DONE (freedreno, i965/gen7+, llvmpipe, softpipe)
  GL_ARB_program_interface_query                        DONE (all drivers)
  GL_ARB_shader_atomic_counters                         DONE (freedreno/a5xx+, i965/gen7+, llvmpipe, softpipe)
  GL_ARB_shader_image_load_store                        DONE (freedreno/a5xx+, i965/gen7+, llvmpipe, softpipe)
  GL_ARB_shader_image_size                              DONE (freedreno/a5xx+, i965/gen7+, llvmpipe, softpipe)
  GL_ARB_shader_storage_buffer_object                   DONE (freedreno/a5xx+, i965/gen7+, llvmpipe, softpipe)
  GL_ARB_shading_language_packing                       DONE (all drivers)
  GL_ARB_separate_shader_objects                        DONE (all drivers)
  GL_ARB_stencil_texturing                              DONE (freedreno, nv50, llvmpipe, softpipe, swr)
  GL_ARB_texture_multisample (Multisample textures)     DONE (freedreno/a5xx+, i965/gen7+, nv50, llvmpipe, softpipe)
  GL_ARB_texture_storage_multisample                    DONE (all drivers that support GL_ARB_texture_multisample)
  GL_ARB_vertex_attrib_binding                          DONE (all drivers)
  GS5 Enhanced textureGather                            DONE (freedreno, i965/gen7+)
  GS5 Packing/bitfield/conversion functions             DONE (freedreno/a5xx+, i965/gen6+)
  GL_EXT_shader_integer_mix                             DONE (all drivers that support GLSL)

  Additional functionality not covered above:
      glMemoryBarrierByRegion                           DONE
      glGetTexLevelParameter[fi]v - needs updates       DONE
      glGetBooleani_v - restrict to GLES enums
      gl_HelperInvocation support                       DONE (i965, r600)

GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+, radeonsi, virgl

  GL_EXT_color_buffer_float                             DONE (all drivers)
  GL_KHR_blend_equation_advanced                        DONE (freedreno/a6xx, i965, nvc0)
  GL_KHR_debug                                          DONE (all drivers)
  GL_KHR_robustness                                     DONE (freedreno, i965, nvc0, r600)
  GL_KHR_texture_compression_astc_ldr                   DONE (freedreno, i965/gen9+, r600, v3d)
  GL_OES_copy_image                                     DONE (all drivers)
  GL_OES_draw_buffers_indexed                           DONE (all drivers that support GL_ARB_draw_buffers_blend)
  GL_OES_draw_elements_base_vertex                      DONE (all drivers)
  GL_OES_geometry_shader                                DONE (freedreno/a6xx, i965/hsw+, nvc0, r600, softpipe, v3d)
  GL_OES_gpu_shader5                                    DONE (freedreno/a6xx, all drivers that support GL_ARB_gpu_shader5)
  GL_OES_primitive_bounding_box                         DONE (freedreno/a5xx+, i965/gen7+, nvc0, r600, softpipe, v3d)
  GL_OES_sample_shading                                 DONE (freedreno/a6xx, i965, nvc0, r600)
  GL_OES_sample_variables                               DONE (freedreno/a6xx, i965, nvc0, r600)
  GL_OES_shader_image_atomic                            DONE (all drivers that support GL_ARB_shader_image_load_store)
  GL_OES_shader_io_blocks                               DONE (All drivers that support GLES 3.1)
  GL_OES_shader_multisample_interpolation               DONE (freedreno/a6xx, i965, nvc0, r600)
  GL_OES_tessellation_shader                            DONE (freedreno/a6xx, all drivers that support GL_ARB_tessellation_shader)
  GL_OES_texture_border_clamp                           DONE (all drivers)
  GL_OES_texture_buffer                                 DONE (freedreno, i965, nvc0, r600, softpipe)
  GL_OES_texture_cube_map_array                         DONE (freedreno/a4xx+, i965/hsw+, nvc0, r600, softpipe)
  GL_OES_texture_stencil8                               DONE (all drivers that support GL_ARB_texture_stencil8)
  GL_OES_texture_storage_multisample_2d_array           DONE (all drivers that support GL_ARB_texture_multisample)

Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES version:

  GL_ARB_bindless_texture                               DONE (nvc0, radeonsi)
  GL_ARB_cl_event                                       not started
  GL_ARB_compute_variable_group_size                    DONE (i965/gen7+, nvc0, radeonsi)
  GL_ARB_ES3_2_compatibility                            DONE (i965/gen8+, radeonsi, virgl)
  GL_ARB_fragment_shader_interlock                      DONE (i965)
  GL_ARB_gpu_shader_int64                               DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe)
  GL_ARB_parallel_shader_compile                        DONE (all drivers)
  GL_ARB_post_depth_coverage                            DONE (i965, nvc0, radeonsi, llvmpipe)
  GL_ARB_robustness_isolation                           not started
  GL_ARB_sample_locations                               DONE (nvc0)
  GL_ARB_seamless_cubemap_per_texture                   DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, i965, nvc0, r600, radeonsi, softpipe, swr, virgl)
  GL_ARB_shader_ballot                                  DONE (i965/gen8+, nvc0, radeonsi)
  GL_ARB_shader_clock                                   DONE (i965/gen7+, nv50, nvc0, r600, radeonsi, virgl)
  GL_ARB_shader_stencil_export                          DONE (i965/gen9+, r600, radeonsi, softpipe, llvmpipe, swr, virgl)
  GL_ARB_shader_viewport_layer_array                    DONE (i965/gen6+, nvc0, radeonsi)
  GL_ARB_shading_language_include                       DONE
  GL_ARB_sparse_buffer                                  DONE (radeonsi/CIK+)
  GL_ARB_sparse_texture                                 not started
  GL_ARB_sparse_texture2                                not started
  GL_ARB_sparse_texture_clamp                           not started
  GL_ARB_texture_filter_minmax                          not started
  GL_EXT_memory_object                                  DONE (radeonsi)
  GL_EXT_memory_object_fd                               DONE (radeonsi)
  GL_EXT_memory_object_win32                            not started
  GL_EXT_render_snorm                                   DONE (i965, r600, radeonsi)
  GL_EXT_semaphore                                      DONE (radeonsi)
  GL_EXT_semaphore_fd                                   DONE (radeonsi)
  GL_EXT_semaphore_win32                                not started
  GL_EXT_shader_group_vote                              DONE (all drivers that support ARB_shader_group_vote)
  GL_EXT_sRGB_write_control                             DONE (all drivers that support GLES 3.0+)
  GL_EXT_texture_norm16                                 DONE (freedreno, i965, r600, radeonsi, nvc0)
  GL_EXT_texture_sRGB_R8                                DONE (all drivers that support GLES 3.0+)
  GL_KHR_blend_equation_advanced_coherent               DONE (i965/gen9+)
  GL_KHR_texture_compression_astc_hdr                   DONE (i965/bxt)
  GL_KHR_texture_compression_astc_sliced_3d             DONE (i965/gen9+, r600, radeonsi)
  GL_OES_depth_texture_cube_map                         DONE (all drivers that support GLSL 1.30+)
  GL_OES_EGL_image                                      DONE (all drivers)
  GL_OES_EGL_image_external                             DONE (all drivers)
  GL_OES_EGL_image_external_essl3                       DONE (all drivers)
  GL_OES_required_internalformat                        DONE (all drivers)
  GL_OES_surfaceless_context                            DONE (all drivers)
  GL_OES_texture_compression_astc                       DONE (core only)
  GL_OES_texture_float                                  DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
  GL_OES_texture_float_linear                           DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
  GL_OES_texture_half_float                             DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
  GL_OES_texture_half_float_linear                      DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
  GL_OES_texture_view                                   DONE (freedreno, i965/gen8+, r600, radeonsi, nv50, nvc0, softpipe, llvmpipe, swr)
  GL_OES_viewport_array                                 DONE (i965, nvc0, r600, radeonsi, softpipe)
  GLX_ARB_context_flush_control                         not started
  GLX_ARB_robustness_application_isolation              not started
  GLX_ARB_robustness_share_group_isolation              not started

GL_EXT_direct_state_access subfeatures (in the spec order):
  GL 1.1: Client commands                               DONE
  GL 1.0-1.3: Matrix and transpose matrix commands      DONE
  GL 1.1-1.2: Texture commands                          DONE
  GL 1.2: 3D texture commands                           DONE
  GL 1.2.1: Multitexture commands                       DONE
  GL 1.2.1-3.0: Indexed texture commands                DONE
  GL 1.2.1-3.0: Indexed generic queries                 DONE
  GL 1.2.1: EnableIndexed.. Get*Indexed                 DONE
  GL_ARB_vertex_program                                 DONE
  GL 1.3: Compressed texture and multitexture commands  DONE
  GL 1.5: Buffer commands                               DONE
  GL 2.0-2.1: Uniform and uniform matrix commands       DONE
  GL_EXT_texture_buffer_object                          DONE
  GL_EXT_texture_integer                                DONE
  GL_EXT_gpu_shader4                                    DONE
  GL_EXT_gpu_program_parameters                         DONE
  GL_NV_gpu_program4                                    n/a
  GL_NV_framebuffer_multisample_coverage                n/a
  GL 3.0: Renderbuffer/framebuffer commands, Gen*Mipmap DONE
  GL 3.0: CopyBuffer command                            DONE
  GL_EXT_geometry_shader4 commands (expose in GL 3.2)   DONE
  GL_NV_explicit_multisample                            n/a
  GL 3.0: Vertex array/attrib/query/map commands        DONE
  Matrix GL tokens                                      DONE

GL_EXT_direct_state_access additions from other extensions (complete list):
  GL_AMD_framebuffer_sample_positions                   n/a
  GL_AMD_gpu_shader_int64                               n/a (not enabled in compat profile)
  GL_ARB_bindless_texture                               DONE
  GL_ARB_buffer_storage                                 DONE
  GL_ARB_clear_buffer_object                            DONE
  GL_ARB_framebuffer_no_attachments                     DONE
  GL_ARB_gpu_shader_fp64                                DONE
  GL_ARB_instanced_arrays                               DONE
  GL_ARB_internalformat_query2                          DONE
  GL_ARB_sparse_texture                                 n/a
  GL_ARB_sparse_buffer                                  DONE
  GL_ARB_texture_buffer_range                           DONE
  GL_ARB_texture_storage                                DONE
  GL_ARB_texture_storage_multisample                    DONE
  GL_ARB_vertex_attrib_64bit                            DONE
  GL_ARB_vertex_attrib_binding                          DONE
  GL_EXT_buffer_storage                                 DONE
  GL_EXT_external_buffer                                n/a
  GL_EXT_separate_shader_objects                        n/a
  GL_EXT_sparse_texture                                 n/a
  GL_EXT_texture_storage                                n/a
  GL_EXT_vertex_attrib_64bit                            DONE
  GL_EXT_EGL_image_storage                              n/a
  GL_NV_bindless_texture                                n/a
  GL_NV_gpu_shader5                                     n/a
  GL_NV_texture_multisample                             n/a
  GL_NV_vertex_buffer_unified_memory                    n/a
  GL_NVX_linked_gpu_multicast                           n/a
  GLX_NV_copy_buffer                                    n/a

The following extensions are not part of any OpenGL or OpenGL ES version, and
we DO NOT WANT implementations of these extensions for Mesa.

  GL_ARB_geometry_shader4                               Superseded by GL 3.2 geometry shaders
  GL_ARB_matrix_palette                                 Superseded by GL_ARB_vertex_program
  GL_ARB_shadow_ambient                                 Superseded by GL_ARB_fragment_program
  GL_ARB_vertex_blend                                   Superseded by GL_ARB_vertex_program

Vulkan 1.0 -- all DONE: anv, radv

Vulkan 1.1 -- all DONE: anv, radv

  VK_KHR_16bit_storage                                  DONE (anv/gen8+, radv)
  VK_KHR_bind_memory2                                   DONE (anv, radv)
  VK_KHR_dedicated_allocation                           DONE (anv, radv)
  VK_KHR_descriptor_update_template                     DONE (anv, radv)
  VK_KHR_device_group                                   not started
  VK_KHR_device_group_creation                          not started
  VK_KHR_external_fence                                 DONE (anv, radv)
  VK_KHR_external_fence_capabilities                    DONE (anv, radv)
  VK_KHR_external_memory                                DONE (anv, radv)
  VK_KHR_external_memory_capabilities                   DONE (anv, radv)
  VK_KHR_external_semaphore                             DONE (anv, radv)
  VK_KHR_external_semaphore_capabilities                DONE (anv, radv)
  VK_KHR_get_memory_requirements2                       DONE (anv, radv)
  VK_KHR_get_physical_device_properties2                DONE (anv, radv)
  VK_KHR_maintenance1                                   DONE (anv, radv)
  VK_KHR_maintenance2                                   DONE (anv, radv)
  VK_KHR_maintenance3                                   DONE (anv, radv)
  VK_KHR_multiview                                      DONE (anv, radv)
  VK_KHR_relaxed_block_layout                           DONE (anv, radv)
  VK_KHR_sampler_ycbcr_conversion                       DONE (anv, radv)
  VK_KHR_shader_draw_parameters                         DONE (anv, radv)
  VK_KHR_storage_buffer_storage_class                   DONE (anv, radv)
  VK_KHR_variable_pointers                              DONE (anv, radv)

Khronos extensions that are not part of any Vulkan version:

  VK_KHR_8bit_storage                                   DONE (anv/gen8+, radv)
  VK_KHR_android_surface                                not started
  VK_KHR_create_renderpass2                             DONE (anv, radv)
  VK_KHR_depth_stencil_resolve                          DONE (anv, radv)
  VK_KHR_display                                        DONE (anv, radv)
  VK_KHR_display_swapchain                              not started
  VK_KHR_draw_indirect_count                            DONE (anv, radv)
  VK_KHR_driver_properties                              DONE (anv, radv)
  VK_KHR_external_fence_fd                              DONE (anv, radv)
  VK_KHR_external_fence_win32                           not started
  VK_KHR_external_memory_fd                             DONE (anv, radv)
  VK_KHR_external_memory_win32                          not started
  VK_KHR_external_semaphore_fd                          DONE (anv, radv)
  VK_KHR_external_semaphore_win32                       not started
  VK_KHR_get_display_properties2                        DONE (anv, radv)
  VK_KHR_get_surface_capabilities2                      DONE (anv, radv)
  VK_KHR_image_format_list                              DONE (anv, radv)
  VK_KHR_imageless_framebuffer                          DONE (anv, radv)
  VK_KHR_incremental_present                            DONE (anv, radv)
  VK_KHR_mir_surface                                    not started
  VK_KHR_pipeline_executable_properties                 DONE (anv, radv)
  VK_KHR_push_descriptor                                DONE (anv, radv)
  VK_KHR_sampler_mirror_clamp_to_edge                   DONE (anv, radv)
  VK_KHR_shader_atomic_int64                            DONE (anv, radv)
  VK_KHR_shader_float16_int8                            DONE (anv/gen8+, radv)
  VK_KHR_shader_float_controls                          DONE (anv/gen8+, radv)
  VK_KHR_shader_subgroup_extended_types                 DONE (radv)
  VK_KHR_shared_presentable_image                       not started
  VK_KHR_surface                                        DONE (anv, radv)
  VK_KHR_surface_protected_capabilities                 DONE (anv, radv)
  VK_KHR_swapchain                                      DONE (anv, radv)
  VK_KHR_swapchain_mutable_format                       DONE (anv, radv)
  VK_KHR_uniform_buffer_standard_layout                 DONE (anv, radv)
  VK_KHR_vulkan_memory_model                            not started
  VK_KHR_wayland_surface                                DONE (anv, radv)
  VK_KHR_win32_keyed_mutex                              not started
  VK_KHR_win32_surface                                  not started
  VK_KHR_xcb_surface                                    DONE (anv, radv)
  VK_KHR_xlib_surface                                   DONE (anv, radv)


A graphical representation of this information can be found at
https://mesamatrix.net/
