
Status of OpenGL 3.x features in Mesa


Note: when an item is marked as "DONE" it means all the core Mesa
infrastructure is complete but it may be the case that few (if any) drivers
implement the features.


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

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

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


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

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


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

  Core/compatibility profiles                           DONE
  Geometry shaders                                      DONE ()
  BGRA vertex order (GL_ARB_vertex_array_bgra)          DONE (r300, swrast)
  Base vertex offset(GL_ARB_draw_elements_base_vertex)  DONE (r300, swrast)
  Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (r300, swrast)
  Provoking vertex (GL_ARB_provoking_vertex)            DONE (r300, swrast)
  Seamless cubemaps (GL_ARB_seamless_cube_map)          DONE ()
  Multisample textures (GL_ARB_texture_multisample)     DONE ()
  Frag depth clamp (GL_ARB_depth_clamp)                 DONE (swrast)
  Fence objects (GL_ARB_sync)                           DONE (r300, swrast)
  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 ()
  GL_ARB_explicit_attrib_location                       DONE (all drivers that support GLSL)
  GL_ARB_occlusion_query2                               DONE (r300, swrast)
  GL_ARB_sampler_objects                                DONE (all drivers)
  GL_ARB_shader_bit_encoding                            DONE ()
  GL_ARB_texture_rgb10_a2ui                             DONE ()
  GL_ARB_texture_swizzle                                DONE (r300, swrast)
  GL_ARB_timer_query                                    DONE ()
  GL_ARB_instanced_arrays                               DONE (r300)
  GL_ARB_vertex_type_2_10_10_10_rev                     DONE ()


GL 4.0, GLSL 4.00:

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


GL 4.1, GLSL 4.10:

  GL_ARB_ES2_compatibility                             DONE (i965, nv50, nvc0, r300, r600, radeonsi, llvmpipe, softpipe)
  GL_ARB_get_program_binary                            DONE (0 binary formats)
  GL_ARB_separate_shader_objects                       DONE (all drivers)
  GL_ARB_shader_precision                              started (Micah)
  GL_ARB_vertex_attrib_64bit                           started (Dave)
  GL_ARB_viewport_array                                DONE (i965, nv50, nvc0, r600, llvmpipe)


GL 4.2, GLSL 4.20:

  GL_ARB_texture_compression_bptc                      DONE (i965, nvc0, r600, radeonsi)
  GL_ARB_compressed_texture_pixel_storage              DONE (all drivers)
  GL_ARB_shader_atomic_counters                        DONE (i965)
  GL_ARB_texture_storage                               DONE (all drivers)
  GL_ARB_transform_feedback_instanced                  DONE (i965, nv50, nvc0, r600, radeonsi)
  GL_ARB_base_instance                                 DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
  GL_ARB_shader_image_load_store                       in progress (curro)
  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_internalformat_query                          DONE (i965, nv50, nvc0, r300, r600, radeonsi, llvmpipe, softpipe)
  GL_ARB_map_buffer_alignment                          DONE (all drivers)


GL 4.3, GLSL 4.30:

  GL_ARB_arrays_of_arrays                              started (Timothy)
  GL_ARB_ES3_compatibility                             DONE (all drivers that support GLSL 3.30)
  GL_ARB_clear_buffer_object                           DONE (all drivers)
  GL_ARB_compute_shader                                in progress (jljusten)
  GL_ARB_copy_image                                    DONE (i965)
  GL_KHR_debug                                         DONE (all drivers)
  GL_ARB_explicit_uniform_location                     DONE (all drivers that support GLSL)
  GL_ARB_fragment_layer_viewport                       DONE (nv50, nvc0, r600, llvmpipe)
  GL_ARB_framebuffer_no_attachments                    not started
  GL_ARB_internalformat_query2                         not started
  GL_ARB_invalidate_subdata                            DONE (all drivers)
  GL_ARB_multi_draw_indirect                           DONE (i965, nvc0, radeonsi, llvmpipe, softpipe)
  GL_ARB_program_interface_query                       not started
  GL_ARB_robust_buffer_access_behavior                 not started
  GL_ARB_shader_image_size                             not started
  GL_ARB_shader_storage_buffer_object                  not started
  GL_ARB_stencil_texturing                             DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
  GL_ARB_texture_buffer_range                          DONE (nv50, nvc0, i965, r600, radeonsi, 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, nvc0)
  GL_ARB_vertex_attrib_binding                         DONE (all drivers)


GL 4.4, GLSL 4.40:

  GL_MAX_VERTEX_ATTRIB_STRIDE                          DONE (all drivers)
  GL_ARB_buffer_storage                                DONE (i965, nv30, nv50, nvc0, r300, r600, radeonsi)
  GL_ARB_clear_texture                                 DONE (i965)
  GL_ARB_enhanced_layouts                              not started
  GL_ARB_multi_bind                                    DONE (all drivers)
  GL_ARB_query_buffer_object                           not started
  GL_ARB_texture_mirror_clamp_to_edge                  DONE (i965, nv30, nv50, nvc0, r300, r600, radeonsi, swrast, llvmpipe, softpipe)
  GL_ARB_texture_stencil8                              not started
  GL_ARB_vertex_type_10f_11f_11f_rev                   DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)

GL 4.5, GLSL 4.50:

  GL_ARB_ES3_1_compatibility                           not started
  GL_ARB_clip_control                                  DONE (llvmpipe, softpipe, r300, r600, radeonsi)
  GL_ARB_conditional_render_inverted                   DONE (i965, nv50, nvc0, llvmpipe, softpipe)
  GL_ARB_cull_distance                                 not started
  GL_ARB_derivative_control                            DONE (i965, nv50, nvc0, r600)
  GL_ARB_direct_state_access                           not started
  GL_ARB_get_texture_sub_image                         started (Brian Paul)
  GL_ARB_shader_texture_image_samples                  not started
  GL_ARB_texture_barrier                               DONE (nv50, nvc0, r300, r600, radeonsi)
  GL_KHR_context_flush_control                         not started
  GL_KHR_robust_buffer_access_behavior                 not started
  GL_KHR_robustness                                    90% done (the ARB variant)

These are the extensions cherry-picked to make GLES 3.1
GLES3.1, GLSL ES 3.1
  GL_ARB_arrays_of_arrays                              started (Timothy)
  GL_ARB_compute_shader                                in progress (jljusten)
  GL_ARB_explicit_uniform_location                     DONE (all drivers that support GLSL)
  GL_ARB_framebuffer_no_attachments                    not started
  GL_ARB_program_interface_query                       not started
  GL_ARB_shader_atomic_counters                        DONE (i965)
  GL_ARB_shader_image_load_store                       in progress (curro)
  GL_ARB_shader_storage_buffer_object                  not started
  GL_ARB_separate_shader_objects                       DONE (all drivers)
  GL_ARB_stencil_texturing                             DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
  GL_ARB_vertex_attrib_binding                         DONE (all drivers)
  GS5 Enhanced textureGather                           DONE (i965, nvc0, r600, radeonsi)
  GS5 Packing/bitfield/conversion functions            DONE (i965, nvc0, r600)
  GL_EXT_shader_integer_mix                            DONE (all drivers that support GLSL)


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