
Originally Posted by
Remco
A state tracker is a software library that uses Gallium3D to accelerate certain computations. For these computations, it sends G3D commands to the graphics driver. These G3D commands are then executed by the graphics driver (if it understands G3D commands). So, in the case of OpenGL, the state tracker will send vertices, textures, shaders to the graphics card as Gallium3D commands.
The reason for this separation, is that any graphics driver only has to implement Gallium3D. The state trackers will then work on any such graphics driver. So you only have to write OpenGL once. And once you have a driver that understands Gallium3D, you automatically support any state tracker that's out there.
A state tracker can expose OpenGL, OpenCL, OpenGL ES, WebGL, OpenVG, Render, Direct3D, CUDA, Cairo, YourMomma... any API you would like. Currently, I know of state trackers for OpenGL 1.5, OpenGL ES, and OpenVG.
In the case of virtualization, Gallium3D can be used to reduce the amount of work that's needed. You create a simple passthrough driver which passes Gallium3D commands to the host. Then, magically, your Linux guests will have acceleration for any state tracker. If your guest is Windows, you'll need to create a Direct3D state tracker and a passthrough driver. This is pretty much the same amount of work that you had to do anyway, so for Windows support Gallium3D doesn't help much.
This is all outsider's knowledge, so correct me if I'm wrong.