Mesa's OpenGL 3.0 TODO List Is Becoming Smaller

Written by Michael Larabel in Mesa on 30 June 2011 at 04:35 PM EDT. 15 Comments
MESA
Via a commit to the TODO list concerning Mesa's support for the OpenGL 3.0 specification, Marek Olšák has confirmed that vertex texture image units for OGL3 are "DONE" and working on the R600 Gallium3D driver.

The OpenGL 3.0 target is actually getting shockingly close to completion. According to their TODO list, all that's left is completing the GLSL 1.30 (GL Shading Language) work, float-depth buffers, non-normalized Integer texture/frame-buffer formats, 1D/2D texture arrays, transform feedback, sRGB frame-buffer format, and depth-format cube textures. Of those outstanding action items, some items like 1D/2D texture arrays is setup within core Mesa and the software rasterizer, but isn't yet implemented by the hardware drivers.

The only items for attaining OpenGL 3.0 support that haven't been worked on at all are the float-depth buffers and depth format cube textures. Likely the biggest work item to achieve though is the proper GL Shading Language 1.30 support. Working a bit towards the GLSL 1.30 milestone is the GLSL IR to TGSI direct translator, which adds native integer support, but the Gallium3D drivers need to support the proper TGSI opcode.

Here's what the official OpenGL 3.0 TODO list looks like as of this afternoon:
GLSL 1.30 (GL_EXT_gpu_shader4, etc.) started
Conditional rendering (GL_NV_conditional_render) DONE (swrast, softpipe, i965)
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 (gallium r300)
GL_EXT_packed_float DONE (gallium r600)
GL_EXT_texture_shared_exponent DONE (gallium, swrast)
Float depth buffers (GL_ARB_depth_buffer_float) not started
Framebuffer objects (GL_EXT_framebuffer_object) DONE
Half-float DONE
Multisample blit DONE
Non-normalized Integer texture/framebuffer formats ~50% done
1D/2D Texture arrays core Mesa, swrast done
Packed depth/stencil formats DONE
Per-buffer blend and masks (GL_EXT_draw_buffers2) DONE
GL_EXT_texture_compression_rgtc DONE (swrast, gallium r600)
Red and red/green texture formats DONE (swrast, i965, gallium)
Transform feedback (GL_EXT_transform_feedback) ~50% done
glBindFragDataLocation, glGetFragDataLocation,
glBindBufferRange, glBindBufferBase commands
Vertex array objects (GL_APPLE_vertex_array_object) DONE
sRGB framebuffer format (GL_EXT_framebuffer_sRGB) core GL done (i965, gallium), GLX todo
glClearBuffer commands DONE
glGetStringi command DONE
glTexParameterI, glGetTexParameterI commands DONE
glVertexAttribI commands DONE (but converts int
values to floats)
Depth format cube textures 0% done

When all of those items are marked as being done, it will be released as Mesa 8.0. This could end up being the next release rather than Mesa 7.12 if the developers and community are able to nail in the final bits of OpenGL 3.0 / GLSL 1.30 support over the next six months.

While it will be good to finally see open-source driver support for the OpenGL 3.0 specification, by the time it's here, the Khronos Group specification will have been nearly five years old. The proprietary ATI/AMD and NVIDIA graphics drivers on Linux have meanwhile supported GL3 from nearly the start.

Beyond OpenGL 3.0, there's already 3.1/3.2/3.3 and even OpenGL 4.0/4.1 to additionally address. Several of the work items for OpenGL 3.1/3.2 compliance have been addressed, with the main 3.1 items left being texture buffer objects, uniform buffer objects, and GLSL 1.40 support. Six of the nine OpenGL 3.1 items are already marked as done.

With OpenGL 3.2, seven of the 11 items are "DONE", but the items that are untouched include the core/compatibility profiles, GLSL 1.50, and multi-sample textures. For OpenGL 3.3, 4.0, and 4.1 the burden is much greater and it's unlikely we'll see such support within the next year or two, unless some vendor(s) dramatically step-up their efforts.

The GL3/GL4 TODO list is available from the Mesa Git tree.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week