Gallium3D is the Linux/Unix(tm) 3D infrastructure. It can be described as a set of interfaces and a collection of supporting libraries[1].
It has module called state tracker that translate the graphics api states, shaders and primitives in something that the pipe driver can understand.[1]So when you want to create a new Graphics API you need to write a new state tracker.
The pipe driver basically translate the shader, primitives and all others state in something that the hardware can understand. [1]
And finally the Winsys communicates with the OS. This archicture does gallium3d work in every Operating System.
So what i am doing?
Now i am hacking a State Tracker to cairo graphics[2]. With cairo i just care with the Canvas trying to make it fast and fast.
I hope writing the Gallium3d backend improve cairo perfomance in some advanced operations like some kind of Blend or creating a GPU like AA(Anti Aliasing).
So what is the advantage of it?
Well, We are removing a layer. Normally the Graphics ToolKits have the backends implemented over OpenGL, OpenVG or X11. And OpenGL and OpenVG are done over Gallium3D. Creating Cairo State Tracker we can access gallium directly.
But there are problems too. Removing a layer we are adding complexity. With OpenVG we can draw and fill complex paths. Creating the state tracker we need to implement algorithms to draw paths and fill them for example.
What we have right now?
Now we have some basic operations like draw paths, clipping and filling.
It is in the early stages but it is a start.
By the way, In the next post i can explain a little bit about the code.
[1] http://jrfonseca.blogspot.com/2008/04/gallium3d-introduction.html
[2] http://cgit.freedesktop.org/~igor.oliveira/cairo-drm-gallium/

June 19, 2010 at 1:06 pm
Awesome. Be sure to post screenshots when possible =)
June 19, 2010 at 1:33 pm
Nice to hear about this advances,
Screenshots/Videos/benchmarks are welcome !