Patches for supporting OpenGL Geometry Shaders
within Mesa/Gallium3D are said to be published soon, which is a big step that will make Mesa closer to supporting the OpenGL 3.2 specification.
Geometry shaders became a requirement to OpenGL 3.2 and via GLSL allow for generating new graphics primitives (points, lines, triangles) after the vertex shader stage. Back in July there was a GitHub repository with early geometry shader support
, but at that time it was limited to running on the Softpipe driver and not any of the hardware drivers. Geometry shader support for Mesa has been a work-in-progress going back to 2009
and has dealt with over 30,000 lines of code
When the geometry shader support is merged to Mesa Git master, it will put the code-base much closer to hitting OpenGL 3.2 compliance. Only with Mesa 9.0
, which will be released in the coming weeks, will there be official OpenGL 3.1 support (and that's on Intel hardware).
Intel shared last month there will likely never be an OpenGL 3.2 Mesa release
since OpenGL 3.3 compliance should hopefully land soon after GL 3.2 is in place. Much of the OpenGL 3.3 work is materializing in tandem to the GL 3.2 enablement. However, it will still be a while before supporting OpenGL 4.x
Aside from geometry shader support, the other major missing pieces to Mesa's support of OpenGL 3.2 come down to supporting GLSL 1.50 (the GL Shading Language version for GL 3.2) and support for multi-sample textures.
Here's from the #dri-devel
IRC channel earlier today:
17:54 [plombo] I think I'll finish writing piglit tests for geometry shaders and then send the GS patch set with everything completed except for layered FBO attachments
17:55 [plombo] then I can finish that after the rest is merged or being reviewed, since it's been slowing down the process considerably
17:55 [mareko] I think Dandel is writing some GS piglit tests too
17:55 [mareko] the more tests, the better
17:59 [Terman] plombo: so it is mostly geometry shaders missing to get ogl 3.2 support on hardware that supports them?
17:59 [plombo] Terman: yes, mostly
17:59 [plombo] that and GLSL 1.50
17:59 [mareko] plombo: and multisample textures
18:00 [plombo] yeah, also multisample textures
18:00 [plombo] I don't know much about multisampling so I didn't know whether that would be a huge task
18:01 [mareko] there only new sampler types and texfetch functions, that's it
18:02 [mareko] so you only pass them through to drivers (r600g support is done except for cayman)
If the rest of the OpenGL 3.2/3.3 items are finished by early next year when it's time for another Mesa release, it will put Mesa's next release version as Mesa 10.0 rather than Mesa 9.1 -- they bump the major version number every time there is support for a new version of the GL specification.