OpenGL 4.3 Support Is A Ways Out In Mesa
While the OpenGL 4.3 specification was just released (along with OpenGL ES 3.0), there's already a beta NVIDIA Linux proprietary driver supporting this latest desktop graphics API from Khronos. AMD will also soon be released a Catalyst beta with the GL 4.3 / GLSL 4.30 support. However, the open-source Mesa support will still be a ways out.
The Mesa documentation was updated today to reflect what's left in supporting the latest revisions of the OpenGL standard. Unfortunately, there's a lot left with officially Mesa/Gallium3D still being limited to OpenGL 3.0 compliance.
There's many new OpenGL 4.3 functions to support aside from all of the new features of the matching GL Shading Language update. From what made it into the OpenGL 4.3 specification, the only items that have been started by Mesa developers to date has been GL_ARB_compute_shader and GL_ARB_debug_output. Early work on the ARB_compute_shader extension has been done within Gallium3D and is used for dealing with graphics compute programs/shaders, but the support is currently incomplete.
The GL_ARB_debug_output support in Mesa originated with a request from Valve for Mesa supporting this OpenGL extension that allows for applications/games to be notified when different events occur, which is used during application development and testing/debugging.
The other OpenGL 4.3 extensions like ARB_ES3_compatibility, ARB_arrays_of_arrays, and ARB_copy_image have yet to be started. Before some of the GL 4.3 specifications can be implemented, earlier versions of the OpenGL specifications need to be implemented where needed.
Large portions of the OpenGL 3.1/3.2/3.3 are nearing (or at) completion, but still it will be at least until early next year that a major new version of OpenGL compliance is reached -- Mesa 8.1 is coming this month and there's still a six-month release cycle for major Mesa releases. Perhaps in the following Mesa release it will be able to jump straight to OpenGL 3.2 or even OpenGL 3.3 if being rather optimistic. However, for OpenGL 4.0/4.1/4.2/4.3 there's still much left where I would be very surprised if that's reached before 2014, unless some profound shift happens with Mesa/Gallium3D development (keep in mind that it took nearly four years for Mesa to go from OpenGL 2.1 to 3.0 support). Some of this development also needs to happen before OpenGL ES 3.0 support is reached by Mesa/Gallium3D as well.
Below is the Mesa GL3/GL4 status documentation as of this evening in Git.
GL 3.0: GLSL 1.30 DONE glBindFragDataLocation, glGetFragDataLocation DONE Conditional rendering (GL_NV_conditional_render) DONE (i965, r300, r600, swrast) Map buffer subranges (GL_ARB_map_buffer_range) DONE (i965, r300, r600, swrast) Clamping controls (GL_ARB_color_buffer_float) DONE (i965, r300, r600) Float textures, renderbuffers (GL_ARB_texture_float) DONE (i965, r300, r600) GL_EXT_packed_float DONE (i965, r600) GL_EXT_texture_shared_exponent DONE (i965, r600, swrast) Float depth buffers (GL_ARB_depth_buffer_float) DONE (i965, r600) Framebuffer objects (GL_ARB_framebuffer_object) DONE (i965, r300, r600, swrast) Half-float DONE Non-normalized Integer texture/framebuffer formats DONE (i965) 1D/2D Texture arrays DONE Per-buffer blend and masks (GL_EXT_draw_buffers2) DONE (i965, r600, swrast) GL_EXT_texture_compression_rgtc DONE (i965, r300, r600, swrast) Red and red/green texture formats DONE (i965, swrast, gallium) Transform feedback (GL_EXT_transform_feedback) DONE (i965) Vertex array objects (GL_APPLE_vertex_array_object) DONE (i965, r300, r600, swrast) sRGB framebuffer format (GL_EXT_framebuffer_sRGB) DONE (i965, r600) glClearBuffer commands DONE glGetStringi command DONE glTexParameterI, glGetTexParameterI commands DONE glVertexAttribI commands ~50% done (converts int values to floats) Depth format cube textures DONE GLX_ARB_create_context (GLX 1.4 is required) DONE GL 3.1: GLSL 1.40 needs UBOs (in progress) Forward compatibile context support/deprecations not started Instanced drawing (GL_ARB_draw_instanced) DONE (i965, gallium, swrast) Buffer copying (GL_ARB_copy_buffer) DONE (i965, r300, r600, swrast) Primitive restart (GL_NV_primitive_restart) DONE (i965, r600) 16 vertex texture image units DONE Texture buffer objs (GL_ARB_texture_buffer_object) needs GL3.1 enabling (i965) Rectangular textures (GL_ARB_texture_rectangle) DONE (i965, r300, r600, swrast) Uniform buffer objs (GL_ARB_uniform_buffer_object) not started Signed normalized textures (GL_EXT_texture_snorm) DONE (i965, r300, r600) GL 3.2: Core/compatibility profiles not started GLSL 1.50 not started Geometry shaders (GL_ARB_geometry_shader4) partially done (Zack) BGRA vertex order (GL_ARB_vertex_array_bgra) DONE (i965, r300, r600, swrast) Base vertex offset(GL_ARB_draw_elements_base_vertex) DONE (i965, r300, r600, swrast) Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (i965, r300, r600, swrast) Provoking vertex (GL_ARB_provoking_vertex) DONE (i965, r300, r600, swrast) Seamless cubemaps (GL_ARB_seamless_cube_map) DONE (i965, r600) Multisample textures (GL_ARB_texture_multisample) not started Frag depth clamp (GL_ARB_depth_clamp) DONE (i965, r600, swrast) Fence objects (GL_ARB_sync) DONE (i965, r300, r600, swrast) GLX_ARB_create_context_profile DONE GL 3.3: GLSL 3.30 new features in this version pretty much done GL_ARB_blend_func_extended DONE (i965, r600, softpipe) GL_ARB_explicit_attrib_location DONE (i915, i965, r300, r600, swrast) GL_ARB_occlusion_query2 DONE (r300, r600, swrast) GL_ARB_sampler_objects DONE (i965, r300, r600) GL_ARB_shader_bit_encoding DONE GL_ARB_texture_rgb10_a2ui DONE (r600) GL_ARB_texture_swizzle DONE (same as EXT version) (i965, r300, r600, swrast) GL_ARB_timer_query DONE GL_ARB_instanced_arrays DONE (i965, r300, r600) GL_ARB_vertex_type_2_10_10_10_rev DONE (r600) GL 4.0: GLSL 4.0 not started GL_ARB_texture_query_lod not started GL_ARB_draw_buffers_blend DONE (i965, r600, softpipe) GL_ARB_draw_indirect not started GL_ARB_gpu_shader5 not started GL_ARB_gpu_shader_fp64 not started GL_ARB_sample_shading not started GL_ARB_shader_subroutine not started GL_ARB_tessellation_shader not started GL_ARB_texture_buffer_object_rgb32 not started GL_ARB_texture_cube_map_array not started GL_ARB_texture_gather not started GL_ARB_transform_feedback2 DONE GL_ARB_transform_feedback3 DONE GL 4.1: GLSL 4.1 not started GL_ARB_ES2_compatibility DONE (i965, r300, r600) GL_ARB_get_program_binary not started GL_ARB_separate_shader_objects some infrastructure done GL_ARB_shader_precision not started GL_ARB_vertex_attrib_64bit not started GL_ARB_viewport_array not started GL 4.2: GLSL 4.2 not started GL_ARB_texture_compression_bptc not started GL_ARB_compressed_texture_pixel_storage not started GL_ARB_shader_atomic_counters not started GL_ARB_texture_storage DONE (r300, r600, swrast) GL_ARB_transform_feedback_instanced DONE GL_ARB_base_instance DONE (nv50, nvc0, r600, radeonsi) GL_ARB_shader_image_load_store not started GL_ARB_conservative_depth DONE (softpipe) GL_ARB_shading_language_420pack not started GL_ARB_internalformat_query not started GL_ARB_map_buffer_alignment not started GL 4.3: GLSL 4.3 not started ARB_arrays_of_arrays not started ARB_ES3_compatibility not started ARB_clear_buffer_object not started ARB_compute_shader started (gallium) ARB_copy_image not started ARB_debug_group not started ARB_debug_label not started ARB_debug_output DONE ARB_debug_output2 not started ARB_explicit_uniform_location not started ARB_fragment_layer_viewport not started ARB_framebuffer_no_attachments not started ARB_internalformat_query2 not started ARB_invalidate_subdata not started ARB_multi_draw_indirect not started ARB_program_interface_query not started ARB_robust_buffer_access_behavior not started ARB_shader_image_size not started ARB_shader_storage_buffer_object not started ARB_stencil_texturing not started ARB_texture_buffer_range not started ARB_texture_query_levels not started ARB_texture_storage_multisample not started ARB_texture_view not started ARB_vertex_attrib_binding not started
Latest Linux News
Latest Articles & Reviews
Most Viewed News This Week