# 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

OpenGL 3.1 and later versions are only supported with the Core profile.
There are no plans to support GL_ARB_compatibility. The last supported OpenGL
version with all deprecated features is 3.0. 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

  glBindFragDataLocation, glGetFragDataLocation         DONE
  GL_NV_conditional_render (Conditional rendering)      DONE ()
  GL_ARB_map_buffer_range (Map buffer subranges)        DONE ()
  GL_ARB_color_buffer_float (Clamping controls)         DONE ()
  GL_ARB_texture_float (Float textures, renderbuffers)  DONE ()
  GL_EXT_packed_float                                   DONE ()
  GL_EXT_texture_shared_exponent                        DONE ()
  GL_ARB_depth_buffer_float (Float depth buffers)       DONE ()
  GL_ARB_framebuffer_object (Framebuffer objects)       DONE ()
  GL_ARB_half_float_pixel                               DONE (all drivers)
  GL_ARB_half_float_vertex                              DONE ()
  GL_EXT_texture_integer                                DONE ()
  GL_EXT_texture_array                                  DONE ()
  GL_EXT_draw_buffers2 (Per-buffer blend and masks)     DONE ()
  GL_EXT_texture_compression_rgtc                       DONE ()
  GL_ARB_texture_rg                                     DONE ()
  GL_EXT_transform_feedback (Transform feedback)        DONE ()
  GL_ARB_vertex_array_object (Vertex array objects)     DONE ()
  GL_EXT_framebuffer_sRGB (sRGB framebuffer format)     DONE ()
  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
  Multisample anti-aliasing                             DONE (freedreno (*), llvmpipe (*), softpipe (*), swr (*))

(*) freedreno, 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

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


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

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


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

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


GL 4.0, GLSL 4.00 --- all DONE: i965/hsw+, nvc0, r600, radeonsi

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


GL 4.1, GLSL 4.10 --- all DONE: i965/hsw+, nvc0, r600, radeonsi

  GL_ARB_ES2_compatibility                              DONE (i965, nv50, llvmpipe, softpipe, swr)
  GL_ARB_get_program_binary                             DONE (0 binary formats)
  GL_ARB_separate_shader_objects                        DONE (all drivers)
  GL_ARB_shader_precision                               DONE (i965/hsw+, all drivers that support GLSL 4.10)
  GL_ARB_vertex_attrib_64bit                            DONE (i965/hsw+, llvmpipe, softpipe)
  GL_ARB_viewport_array                                 DONE (i965, nv50, llvmpipe, softpipe)


GL 4.2, GLSL 4.20 -- all DONE: i965/hsw+, nvc0, radeonsi

  GL_ARB_texture_compression_bptc                       DONE (i965, r600)
  GL_ARB_compressed_texture_pixel_storage               DONE (all drivers)
  GL_ARB_shader_atomic_counters                         DONE (i965, softpipe)
  GL_ARB_texture_storage                                DONE (all drivers)
  GL_ARB_transform_feedback_instanced                   DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_base_instance                                  DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_shader_image_load_store                        DONE (i965, softpipe)
  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 (i965, nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_map_buffer_alignment                           DONE (all drivers)


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

  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 (i965, softpipe)
  GL_ARB_copy_image                                     DONE (i965, nv50, r600, softpipe, llvmpipe)
  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, r600, llvmpipe, softpipe)
  GL_ARB_framebuffer_no_attachments                     DONE (i965, r600, softpipe)
  GL_ARB_internalformat_query2                          DONE (all drivers)
  GL_ARB_invalidate_subdata                             DONE (all drivers)
  GL_ARB_multi_draw_indirect                            DONE (i965, r600, llvmpipe, softpipe, swr)
  GL_ARB_program_interface_query                        DONE (all drivers)
  GL_ARB_robust_buffer_access_behavior                  DONE (i965)
  GL_ARB_shader_image_size                              DONE (i965, softpipe)
  GL_ARB_shader_storage_buffer_object                   DONE (i965, softpipe)
  GL_ARB_stencil_texturing                              DONE (i965/hsw+, nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_texture_buffer_range                           DONE (nv50, i965, r600, llvmpipe)
  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 (i965, nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_vertex_attrib_binding                          DONE (all drivers)


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

  GL_MAX_VERTEX_ATTRIB_STRIDE                           DONE (all drivers)
  GL_ARB_buffer_storage                                 DONE (i965, nv50, r600)
  GL_ARB_clear_texture                                  DONE (i965, nv50, r600)
  GL_ARB_enhanced_layouts                               DONE (i965, nv50, llvmpipe, softpipe)
  - compile-time constant expressions                   DONE
  - explicit byte offsets for blocks                    DONE
  - forced alignment within blocks                      DONE
  - specified vec4-slot component numbers               DONE (i965, nv50, llvmpipe, softpipe)
  - 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+)
  GL_ARB_texture_mirror_clamp_to_edge                   DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_texture_stencil8                               DONE (i965/hsw+, nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_vertex_type_10f_11f_11f_rev                    DONE (i965, nv50, r600, llvmpipe, softpipe, swr)

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

  GL_ARB_ES3_1_compatibility                            DONE (i965/hsw+)
  GL_ARB_clip_control                                   DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_conditional_render_inverted                    DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_cull_distance                                  DONE (i965, nv50, llvmpipe, softpipe, swr)
  GL_ARB_derivative_control                             DONE (i965, nv50, r600)
  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, r600)
  GL_ARB_texture_barrier                                DONE (i965, nv50, r600)
  GL_KHR_context_flush_control                          DONE (all - but needs GLX/EGL extension to be useful)
  GL_KHR_robustness                                     DONE (i965)
  GL_EXT_shader_integer_mix                             DONE (all drivers that support GLSL)

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

  GL_ARB_arrays_of_arrays                               DONE (all drivers that support GLSL 1.30)
  GL_ARB_compute_shader                                 DONE (i965/gen7+, softpipe)
  GL_ARB_draw_indirect                                  DONE (i965/gen7+, r600, llvmpipe, softpipe, swr)
  GL_ARB_explicit_uniform_location                      DONE (all drivers that support GLSL)
  GL_ARB_framebuffer_no_attachments                     DONE (i965/gen7+, r600, softpipe)
  GL_ARB_program_interface_query                        DONE (all drivers)
  GL_ARB_shader_atomic_counters                         DONE (i965/gen7+, softpipe)
  GL_ARB_shader_image_load_store                        DONE (i965/gen7+, softpipe)
  GL_ARB_shader_image_size                              DONE (i965/gen7+, softpipe)
  GL_ARB_shader_storage_buffer_object                   DONE (i965/gen7+, softpipe)
  GL_ARB_shading_language_packing                       DONE (all drivers)
  GL_ARB_separate_shader_objects                        DONE (all drivers)
  GL_ARB_stencil_texturing                              DONE (nv50, r600, llvmpipe, softpipe, swr)
  GL_ARB_texture_multisample (Multisample textures)     DONE (i965/gen7+, nv50, r600, 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 (i965/gen7+, r600)
  GS5 Packing/bitfield/conversion functions             DONE (i965/gen6+, r600)
  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+

  GL_EXT_color_buffer_float                             DONE (all drivers)
  GL_KHR_blend_equation_advanced                        DONE (i965)
  GL_KHR_debug                                          DONE (all drivers)
  GL_KHR_robustness                                     DONE (i965, nvc0, radeonsi)
  GL_KHR_texture_compression_astc_ldr                   DONE (i965/gen9+)
  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 (i965/hsw+, nvc0, radeonsi)
  GL_OES_gpu_shader5                                    DONE (all drivers that support GL_ARB_gpu_shader5)
  GL_OES_primitive_bounding_box                         DONE (i965/gen7+, nvc0, radeonsi)
  GL_OES_sample_shading                                 DONE (i965, nvc0, r600, radeonsi)
  GL_OES_sample_variables                               DONE (i965, nvc0, r600, radeonsi)
  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 (i965, nvc0, r600, radeonsi)
  GL_OES_tessellation_shader                            DONE (all drivers that support GL_ARB_tessellation_shader)
  GL_OES_texture_border_clamp                           DONE (all drivers)
  GL_OES_texture_buffer                                 DONE (i965, nvc0, radeonsi)
  GL_OES_texture_cube_map_array                         DONE (i965/hsw+, nvc0, radeonsi)
  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                               started (airlied)
  GL_ARB_cl_event                                       not started
  GL_ARB_compute_variable_group_size                    DONE (nvc0, radeonsi)
  GL_ARB_ES3_2_compatibility                            DONE (i965/gen8+)
  GL_ARB_fragment_shader_interlock                      not started
  GL_ARB_gl_spirv                                       not started
  GL_ARB_gpu_shader_int64                               started (airlied for core and Gallium, idr for i965)
  GL_ARB_indirect_parameters                            DONE (nvc0, radeonsi)
  GL_ARB_parallel_shader_compile                        not started, but Chia-I Wu did some related work in 2014
  GL_ARB_pipeline_statistics_query                      DONE (i965, nvc0, radeonsi, softpipe, swr)
  GL_ARB_post_depth_coverage                            DONE (i965)
  GL_ARB_robustness_isolation                           not started
  GL_ARB_sample_locations                               not started
  GL_ARB_seamless_cubemap_per_texture                   DONE (i965, nvc0, radeonsi, r600, softpipe, swr)
  GL_ARB_shader_atomic_counter_ops                      DONE (nvc0, radeonsi, softpipe)
  GL_ARB_shader_ballot                                  not started
  GL_ARB_shader_clock                                   DONE (i965/gen7+)
  GL_ARB_shader_draw_parameters                         DONE (i965, nvc0, radeonsi)
  GL_ARB_shader_group_vote                              DONE (nvc0)
  GL_ARB_shader_stencil_export                          DONE (i965/gen9+, radeonsi, softpipe, llvmpipe, swr)
  GL_ARB_shader_viewport_layer_array                    DONE (i965/gen6+)
  GL_ARB_sparse_buffer                                  not started
  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_ARB_transform_feedback_overflow_query              not started
  GL_KHR_blend_equation_advanced_coherent               DONE (i965/gen9+)
  GL_KHR_no_error                                       not started
  GL_KHR_texture_compression_astc_hdr                   DONE (core only)
  GL_KHR_texture_compression_astc_sliced_3d             not started
  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_essl3                       not started
  GL_OES_required_internalformat                        not started - GLES2 extension based on OpenGL ES 3.0 feature
  GL_OES_surfaceless_context                            DONE (all drivers)
  GL_OES_texture_compression_astc                       DONE (core only)
  GL_OES_texture_float                                  DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
  GL_OES_texture_float_linear                           DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
  GL_OES_texture_half_float                             DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
  GL_OES_texture_half_float_linear                      DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
  GL_OES_texture_view                                   not started - based on GL_ARB_texture_view
  GL_OES_viewport_array                                 DONE (i965, nvc0, radeonsi)
  GLX_ARB_context_flush_control                         not started
  GLX_ARB_robustness_application_isolation              not started
  GLX_ARB_robustness_share_group_isolation              not started

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_shading_language_include                       Not interesting
  GL_ARB_shadow_ambient                                 Superseded by GL_ARB_fragment_program
  GL_ARB_vertex_blend                                   Superseded by GL_ARB_vertex_program

More info about these features and the work involved can be found at
http://dri.freedesktop.org/wiki/MissingFunctionality
