VMware hosted a Gallium3D workshop today at its headquarters in California (and via teleconference too) where the former Tungsten Graphics developers talked about all that they have been working on with Gallium3D, the current state of this graphics driver architecture, and what's to come. The biggest news coming out of this workshop is word that a virtual Gallium3D driver is coming, which will allow Gallium3D to run within a virtualized environment. It's looking like there will be this Gallium3D driver that can run within a VMware guest virtual machine and then take advantage of the state trackers on the host machine whether it be providing hardware-acceleration for OpenGL, OpenGL ES, OpenVG, OpenCL, etc. We're also thinking now that it's even more likely a Direct3D 9/10 state tracker will be made available too.
We like hearing about performance improvements for Linux and also Linux graphics in general, but when there's something about performance improvements for Linux graphics, it certainly gets us excited and garners our interest. This time we get to report on work being done to Mesa's GLSL compiler, which is now running drastically faster in a branch of Mesa that will be published in about a week.
If you pay attention to the Mesa3D development mailing list at all you will have noticed quite a number of messages lately from Chia-I Wu, who has been pushing a good number of patches lately. Largely his work has pertained to OpenGL ES support for mobile devices, but his intentions are now known. Chia-I Wu is bringing Mesa (Gallium3D inclusive) to Android. In particular, Chia-I is focusing on running Mesa under Android on Intel-powered netbooks.
A month ago we shared that the Gallium3D driver for the ATI R300/400/500 graphics cards (up through the Radeon X1000 series) was mostly done. Now today, the key author of the R300 Gallium3D driver, Corbin Simpson, has updated the status wiki to reflect the latest changes. The key change? The DRI state tracker report is no longer "mostly" implemented, but now it's "done" according to Corbin.
With all of the talk earlier this week regarding the Poulsbo Gallium3D driver and its performance improvements along with the restarted efforts on the Intel 965 Gallium3D driver and then word that Mesa 7.7 may be out by Christmas, it's likely that many are wondering about the current state of the various Gallium3D state trackers that we have been talking about for the past months. Well, here's a few observations on the different state trackers at least where they are at in Git.
The Mesa 3D graphics library on Linux has been moving along at a brisk pace lately with a frequent stream of new releases as many features arrive like new Gallium3D state trackers, maturing of new hardware support (particularly with the ATI Radeon graphics), and new OpenGL extension support. Mesa 7.6 was released in September, but now Intel's lead OpenGL contributor, Ian Romanick, has proposed a release schedule for Mesa 7.7.
One of the common complaints that arise from hopeful X.Org / Mesa developers or those aspiring to contribute to this critical free software area is that there's not enough documentation that is up-to-date and covers the internals of the X Server, Mesa, DDX drivers, etc. Well, for those looking to get into any Direct Rendering Manager (DRM) work, a heap of new documentation is available. Intel's Jesse Barnes has invested a great deal of time in updating (well, creating) the DRM developer documentation.
Back during the X Developers' Conference last month, one of the sessions was on GL shaders for Shader Model 3/4. This talk led by Ian Romanick called for advanced assembly shader extensions for Mesa, which would greatly benefit some middle-ware projects like Wine and Cedega with Mesa's current state and not having a bolstered GLSL implementation. None of the current OpenGL extensions are suitable for this due to some of the extensions being designed for use on specific hardware, rather than being ideal for use across all Mesa drivers/hardware, and other extensions not satisfying the needs Ian and other developers want. Long story short, Ian has written a new OpenGL extension as a result: GL_MESA_gpu_program3.
It has been a while since talking specifically about ATI's Gallium3D driver, but there is some good news coming out now for the driver that supports the ATI R300 through R500 (Radeon X1000) series hardware. Corbin Simpson, the developer that has largely been working on porting the 3D work from the classic Mesa driver to Gallium3D, has updated the Radeon Feature Matrix page on the X.Org Wiki last night.
This week at the X Developers' Conference there was a talk surrounding OpenGL 3.x and its lack of complete support within the latest Mesa code. While development manpower can end up be limiting, there are also some patent / legal issues surrounding this with regard to some parts of core OpenGL being covered by such inhibitive patents. This was explained here along with some of the possible ways to circumvent the issue.
While work on OpenGL 3.x support in Mesa has been very slow, many have been looking forward to the day when Gallium3D hardware drivers provide fast acceleration and a OpenGL 3 state tracker to provide this support to all Gallium3D users. Intel though has also been wanting to bring some OpenGL 3 support to the classic Mesa stack. However, at XDC2009, Intel's Ian Romanick has expressed some issues with patents that could inhibit the support.
Just as planned, Mesa 7.6.0 has been released and Mesa 7.5.2 has also been released as a bug-fix in the 7.5 series. The mailing list announcements for Mesa 7.5.2 and 7.6.0 can be read here and here, respectively.
At the beginning of this month we shared news about X-Video and EXA coming to Gallium3D through a new X.Org State Tracker being written by Zack Rusin. While Gallium3D was designed for providing 3D acceleration of sorts (OpenGL, OpenVG, OpenGL ES, etc), with the latest graphics processors using the 3D engine for even providing 2D EXA acceleration, Zack spanned this support to include EXA and then X-Video. Just a few days ago the real X-Video work began in this state tracker. Now though, the support to bring XvMC to the Gallium3D has moved to this X.Org state tracker too.
Earlier this month we shared that X-Video and EXA support were coming to Gallium3D in the form of a state tracker to accelerate these X.Org APIs across any Gallium3D driver. At the time of that earlier article, the EXA 2D support was being partially implemented but the X-Video support was still left to be accomplished. Well, as of this afternoon, Zack Rusin has started pushing out code to the X.Org state tracker in Mesa that is adding the X-Video support.
Intel's Ian Romanick has publicly outlined his plans to have the release of Mesa 7.6 next week. A release on Monday is being planned, which would be timed with the start of the X Developers' Conference taking place in Portland and would also get this updated Linux graphics stack out the door for those distribution vendors wanting to ship a released version of this code in their new distributions.
Keith Whitwell has gone ahead today and merged the softpipe-opt branch of Mesa into the master Mesa branch, which will eventually work its way into Mesa 7.7. The softpipe-opt branch brings performance optimizations to the "softpipe" driver of Gallium3D. The softpipe driver is a pure software implementation of Gallium3D for use in testing and for where a hardware driver has not implemented full support. With the merging of this optimized driver, the performance should be comparable to that of the Mesa Software Rasterizer with the traditional OpenGL stack.
Zack Rusin has been working on a lot of Linux graphics code lately from an OpenCL state tracker to other Gallium3D state trackers like X-Video / EXA. On top of this, he has just formally announced his work on bringing Geometry Shaders to Mesa.
Mesa 7.6 was branched last week, which is the version of Mesa that brings an Assembly shader rewrite, Radeon driver VBO/OQ support, Gallium3D networking support, new state trackers for Gallium3D (such as OpenGL ES and OpenVG), along with many bug fixes and other features.
Gallium3D, the graphics driver architecture created by Tungsten Graphics designed to overhaul graphics drivers on Linux and other operating systems, has caused quite a stir lately. Gallium3D this year alone has picked up support for features like OpenGL ES, OpenCL, network debugging support, and many other prominent changes, albeit the GPU hardware drivers are still lacking. Anyhow, a developer for the HaikuOS (the project designed to resurrect the BeOS operating system), has submitted a patch that adds Haiku support to Gallium3D.
As a follow up to the Mesa 7.5 release that occurred back in mid-July, Brian Paul has now announced the release of Mesa 7.5.1. This point release brings a number of bug fixes and minor improvements, while a plethora of new work over the past few months has been going into what shall become Mesa 7.6.
The Gallium3D driver infrastructure has been about writing a graphics processor driver that is more manageable and efficient by allowing state trackers (that provide features like OpenGL ES and OpenVG support) to be run on any driver that implements this unified API, complete with hardware acceleration. As implied by its name, Gallium3D was started with 3D graphics in mind, but this infrastructure is also working out for non-3D-specific state trackers, like supporting OpenCL. Now though, Gallium3D is picking up support for 2D acceleration (using the EXA API) and for X-Video support.
Intel's Ian Romanick has announced on the Mesa3D development list that he has made available an arb_sync branch of Mesa. As implied by its name, this branch implements support for the GL_ARB_sync extension, which just officially debuted with OpenGL 3.2. Initially this GL_ARB_sync support in Mesa is just implemented within the software rasterizer, but it's expected within days that it will receive hardware-accelerated support within Intel's Mesa3D driver. The GL_ARB_sync extension brings the concept of "sync objects", which is described at length within its specification.
OpenCL is present in NVIDIA's Linux driver as well as the just-released Mac OS X 10.6, but there is support for the Open Computing Language coming forward in the open-source world through the Gallium3D driver infrastructure.
Intel's Ian Romanick began last year working on a new GLSL compiler for Mesa, but those plans were abandoned due to a lack of time and the overwhelming challenge. Instead, Ian began focusing on optimizing the IR (Intermediate Representation) used by Mesa in its OpenGL support and then generating the final machine code.
There are quite a number of changes in store for Mesa 7.6, such as new state trackers for Gallium3D, other Gallium3D-specific improvements, optimized IR, and many changes to the different Mesa 3D drivers. Adding to that list, the open-source ATI R300+ driver has just picked up support for Vertex Buffer Objects and Occlusion Queries.
With the official documentation for the Gallium3D driver architecture being a bit dated, Corbin Simpson (a student X.Org developer that has largely been working on the Gallium3D driver for ATI R300 class hardware) set out to improve the situation. On the X.Org Wiki is now a Gallium3D status page that shows the current status of Gallium3D state trackers and pipes. There is also a feature matrix showing the current status for most of the available hardware drivers.
Just about three weeks ago the AMD developers working on the open-source ATI drivers had reached the milestone in their open-source 3D support for the R600/700 GPUs of having glxgears running on these two latest generations of ATI graphics processors. glxgears running itself isn't much, but it's an important step. Last night, AMD's Alex Deucher is now reporting a new milestone and one that is certainly interesting for a large number of users, that is Compiz is running!
Beyond the news of a new Radeon shader compiler for Mesa and Gallium3D, there is some other Mesa news this morning too, which is both good and bad. Intel's Ian Romanick has announced on his blog that his new GLSL (GL Shading Language) compiler for Mesa was doomed for failure and as a result it's pretty much off of the table right now. Rather than continuing in this path, he has come up with a new plan for optimizing the open-source support.
While Gallium3D is gaining a lot of momentum and has picked up a number of new state trackers (OpenVG, OpenGL ES, and OpenCL and OpenGL 3.1 is coming soon) and features (i.e. network debugging support) in recent months, there is still a lot of work left before this architecture will enter the limelight. Gallium3D can be found in Mesa 7.5 but it's not ready for end-users since the hardware drivers are still lacking. It's not an easy, straight port of the existing Mesa "classic" drivers over to bringing them into a Gallium3D driver.
After being in development for a number of months and being challenged by a few delays, Mesa 7.5 was officially released last night. What's most significant about this milestone is that it's the first release to include the Gallium3D architecture. The Gallium3D drivers are still incomplete and there are many state trackers to be added, but this code for the next-generation Linux graphics card drivers is now living in mainline Mesa.
919 Mesa news articles published on Phoronix.