# 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: 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 (llvmpipe (*), softpipe (*), swr (*))

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


GL 3.1, GLSL 1.40 --- all DONE: 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 (swr)
  GL_ARB_draw_elements_base_vertex (Base vertex offset) DONE (swr)
  GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (swr)
  GL_ARB_provoking_vertex (Provoking vertex)            DONE (swr)
  GL_ARB_seamless_cube_map (Seamless cubemaps)          DONE (swr)
  GL_ARB_texture_multisample (Multisample textures)     DONE (swr)
  GL_ARB_depth_clamp (Frag depth clamp)                 DONE (swr)
  GL_ARB_sync (Fence objects)                           DONE (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 (swr)
  GL_ARB_explicit_attrib_location                       DONE (all drivers that support GLSL)
  GL_ARB_occlusion_query2                               DONE (swr)
  GL_ARB_sampler_objects                                DONE (all drivers)
  GL_ARB_shader_bit_encoding                            DONE (swr)
  GL_ARB_texture_rgb10_a2ui                             DONE (swr)
  GL_ARB_texture_swizzle                                DONE (swr)
  GL_ARB_timer_query                                    DONE (swr)
  GL_ARB_instanced_arrays                               DONE (swr)
  GL_ARB_vertex_type_2_10_10_10_rev                     DONE (swr)


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

  GL_ARB_draw_buffers_blend                             DONE (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 (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/gen8+, 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 (all drivers that support GLSL 4.10)
  GL_ARB_vertex_attrib_64bit                            DONE (llvmpipe, softpipe)
  GL_ARB_viewport_array                                 DONE (i965, nv50, llvmpipe, softpipe)


GL 4.2, GLSL 4.20 -- all DONE: i965/gen8+, 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/gen8+, 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 (i965/gen8+, nvc0, radeonsi)
  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/gen8+, 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
