Mesa's OpenGL 3.0 TODO List Is Becoming Smaller

Posted by Michael Larabel on June 30, 2011

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.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Intel Haswell HD Graphics 4600 vs. AMD Radeon Graphics On Linux
  2. Intel Haswell HD Graphics 4600 Performance On Ubuntu Linux
  3. Intel Core i7 4770K "Haswell" Benchmarks On Ubuntu Linux
  4. The First Experience Of Intel Haswell On Linux
Latest Software Articles
  1. Optimized Binaries Provide Great Benefits For Intel Haswell
  2. 11-Way Linux, BSD Platform Comparison
  3. SNA Acceleration Works Great For Intel Core i7 Haswell
  4. The Linux Evolution For Intel Haswell's Performance
Latest Linux News
  1. KDE's KWin Made Lots Of Progress In 4.11
  2. Ubuntu Announces Carrier Advisory Group
  3. Qt 5.1 Release Candidate 1 Has Arrived
  4. In-Fighting Continues Over Mir On Non-Unity Ubuntu
  5. Subversion 1.8 Presents New Features
  6. LLVM 3.3 Officially Released
  7. LLVM/Clang Now Uses Loop Vectorizer At New Levels
  8. Intel GPU Driver Tries To Rip Out FBDEV Support
  9. Coreboot Doing AMD USB 3.0, Q35 QEMU Emulation
  10. VP9 Codec Now Enabled By Default In Chrome
  11. openSUSE 13.1 M2 Plays On PulseAudio 4.0
Latest Forum Talk
  1. In-Fighting Continues Over Mir On Non-Unity Ubuntu
  2. Ubuntu Announces Carrier Advisory Group
  3. VP9 Codec Now Enabled By Default In Chrome
  4. Intel GPU Driver Tries To Rip Out FBDEV Support
  5. Handbrake 0.9.9 Supports OpenCL Offloading
  6. Planetary Annihilation Plans To Come To Linux
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite