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 () Map buffer subranges (GL_ARB_map_buffer_range) DONE () Clamping controls (GL_ARB_color_buffer_float) DONE () Float textures, renderbuffers (GL_ARB_texture_float) DONE () GL_EXT_packed_float DONE () GL_EXT_texture_shared_exponent DONE () Float depth buffers (GL_ARB_depth_buffer_float) DONE () Framebuffer objects (GL_ARB_framebuffer_object) 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 () Per-buffer blend and masks (GL_EXT_draw_buffers2) DONE () GL_EXT_texture_compression_rgtc DONE () GL_ARB_texture_rg DONE () Transform feedback (GL_EXT_transform_feedback) DONE () Vertex array objects (GL_ARB_vertex_array_object) DONE () 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 (llvmpipe (*), softpipe (*)) (*) 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 () Buffer copying (GL_ARB_copy_buffer) DONE () Primitive restart (GL_NV_primitive_restart) DONE () 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 () Uniform buffer objs (GL_ARB_uniform_buffer_object) DONE () Signed normalized textures (GL_EXT_texture_snorm) DONE () 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 () Base vertex offset(GL_ARB_draw_elements_base_vertex) DONE () Frag shader coord (GL_ARB_fragment_coord_conventions) DONE () Provoking vertex (GL_ARB_provoking_vertex) DONE () Seamless cubemaps (GL_ARB_seamless_cube_map) DONE () Multisample textures (GL_ARB_texture_multisample) DONE () Frag depth clamp (GL_ARB_depth_clamp) DONE () Fence objects (GL_ARB_sync) DONE () 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 () GL_ARB_sampler_objects DONE (all drivers) GL_ARB_shader_bit_encoding DONE () GL_ARB_texture_rgb10_a2ui DONE () GL_ARB_texture_swizzle DONE () GL_ARB_timer_query DONE () GL_ARB_instanced_arrays DONE () GL_ARB_vertex_type_2_10_10_10_rev DONE () GL 4.0, GLSL 4.00 --- all DONE: nvc0, radeonsi GL_ARB_draw_buffers_blend DONE (i965, nv50, r600, llvmpipe, softpipe) GL_ARB_draw_indirect DONE (i965, r600, llvmpipe, softpipe) GL_ARB_gpu_shader5 DONE (i965) - 'precise' qualifier DONE - Dynamically uniform sampler array indices DONE (r600, softpipe) - Dynamically uniform UBO array indices DONE (r600) - Implicit signed -> unsigned conversions DONE - Fused multiply-add DONE () - Packing/bitfield/conversion functions DONE (r600, softpipe) - Enhanced textureGather DONE (r600, softpipe) - Geometry shader instancing DONE (r600, llvmpipe, softpipe) - Geometry shader multiple streams DONE () - Enhanced per-sample shading DONE (r600) - Interpolation functions DONE (r600) - New overload resolution rules DONE GL_ARB_gpu_shader_fp64 DONE (llvmpipe, softpipe) GL_ARB_sample_shading DONE (i965, nv50, r600) GL_ARB_shader_subroutine DONE (i965, nv50, r600, llvmpipe, softpipe) GL_ARB_tessellation_shader DONE () GL_ARB_texture_buffer_object_rgb32 DONE (i965, r600, llvmpipe, softpipe) GL_ARB_texture_cube_map_array DONE (i965, nv50, r600, llvmpipe, softpipe) GL_ARB_texture_gather DONE (i965, nv50, r600, llvmpipe, softpipe) GL_ARB_texture_query_lod DONE (i965, nv50, r600) GL_ARB_transform_feedback2 DONE (i965, nv50, r600, llvmpipe, softpipe) GL_ARB_transform_feedback3 DONE (i965, nv50, r600, llvmpipe, softpipe) GL 4.1, GLSL 4.10 --- all DONE: nvc0, radeonsi GL_ARB_ES2_compatibility DONE (i965, nv50, r600, llvmpipe, softpipe) 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, 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, llvmpipe, softpipe) GL_ARB_base_instance DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe) GL_ARB_shader_image_load_store DONE (i965) 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, nvc0, 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) (gallium - in progress, VMware) 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, radeonsi, llvmpipe) GL_ARB_framebuffer_no_attachments DONE (i965) GL_ARB_internalformat_query2 not started GL_ARB_invalidate_subdata DONE (all drivers) GL_ARB_multi_draw_indirect DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe) GL_ARB_program_interface_query DONE (all drivers) GL_ARB_robust_buffer_access_behavior not started GL_ARB_shader_image_size DONE (i965) GL_ARB_shader_storage_buffer_object in progress (Iago Toral, Samuel Iglesias) 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, llvmpipe, softpipe) 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, nv50, nvc0, r600, radeonsi) GL_ARB_clear_texture DONE (i965) (gallium - in progress, VMware) 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, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe) GL_ARB_texture_stencil8 DONE (nv50, nvc0, r600, radeonsi, llvmpipe, softpipe) 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 (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe) GL_ARB_conditional_render_inverted DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe) GL_ARB_cull_distance in progress (Tobias) GL_ARB_derivative_control DONE (i965, nv50, nvc0, r600, radeonsi) GL_ARB_direct_state_access DONE (all drivers) GL_ARB_get_texture_sub_image DONE (all drivers) GL_ARB_shader_texture_image_samples not started GL_ARB_texture_barrier DONE (nv50, nvc0, r600, radeonsi) GL_KHR_context_flush_control DONE (all - but needs GLX/EXT extension to be useful) GL_KHR_robust_buffer_access_behavior not started GL_KHR_robustness 90% done (the ARB variant) 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 GL_ARB_arrays_of_arrays started (Timothy) GL_ARB_compute_shader in progress (jljusten) GL_ARB_draw_indirect DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe) GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL) GL_ARB_framebuffer_no_attachments DONE (i965) GL_ARB_program_interface_query DONE (all drivers) GL_ARB_shader_atomic_counters DONE (i965) GL_ARB_shader_image_load_store DONE (i965) GL_ARB_shader_image_size DONE (i965) GL_ARB_shader_storage_buffer_object in progress (Iago Toral, Samuel Iglesias) GL_ARB_shading_language_packing DONE (all drivers) GL_ARB_separate_shader_objects DONE (all drivers) GL_ARB_stencil_texturing DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe) Multisample textures (GL_ARB_texture_multisample) DONE (i965, nv50, nvc0, r600, radeonsi, 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, nvc0, r600, radeonsi) GS5 Packing/bitfield/conversion functions DONE (i965, nvc0, r600, radeonsi) GL_EXT_shader_integer_mix DONE (all drivers that support GLSL) Additional functions not covered above: glMemoryBarrierByRegion glGetTexLevelParameter[fi]v - needs updates to restrict to GLES enums glGetBooleani_v - needs updates to restrict to GLES enums More info about these features and the work involved can be found at http://dri.freedesktop.org/wiki/MissingFunctionality