Gallium3D: a short explanation where it fits in

cube-with-matrix
In a comment I was recently asked where Gallium3D does fit in in regards to Mesa and OpenGL. Given that I’m not an expert the answer was short and simple but might interest others as well.

There is quite some information flowing around regarding Gallium3D. Tungsten Graphics has for example a project wiki page and there are of course talks and presentations available.

However I was recently asked by Max what Gallium3D is and tried to fit it into a short and handy answer:
Currently Mesa3D implements the specifications of the OpenGL API on Linux. Mesa3D has backends for each hardware driver type, so implementing parts of the API again and again for each driver.
Gallium3D will now hop in by being the only backend Mesa3D needs to focus on. At the same time Gallium3D will also provide a single API to the driver developers: they only need to produce one driver, no matter if DirectX, OpenGL or OpenVG is used (yes, Gallium3D could even help on Windows). This makes developing drivers for new device classes (OpenVZ is interesting for example for mobile phones) much easier.

So developing driver as well as implementing graphic specifications will become much easier with Gallium3D. That necessarily means that Gallium3D isn’t an easy piece of software. However, quite some time and effort is saved by not duplicating stuff in Mesa3D for each driver and by also not duplicating again stuff in the drivers for different graphic API’s.

Currently Gallium3D is not production ready yet. Early 2008 the state was that the first real world driver, an older Intel one, was working quite well. It might take a while until Gallium3D really enters the stage.

A last note: the information given above only tries to give a simpe overview. In fact it is so simple it doesn’t really cover what Gallium3D is (the tracker, the pipe drivers, winsys, the modules) and is probably even not entirely correct. Still, it gives interested people a first glance from they can start off searching for information.