Thats a brilliant description (i've been very stuck with this too).Now that most of the rearchitecture work has finished the stack is getting pretty simple :
- kernel driver (aka drm) initializes the GPU, manages memory, and sets up the display. Having the kernel driver handle display setup is relatively new, and is referred to as Kernel ModeSetting (KMS)
- X driver (aka xf86-video-ati) hooks into the X server, passes display changes from the X server down to the kernel driver, and turns acceleration commands from the X server into GPU commands which are passed to the chip via the kernel driver
- Mesa driver turns OpenGL commands into HW driver calls; HW driver turns those calls into GPU commands which are passed to the chip via the kernel driver.
There are two types of Mesa HW drivers -- "classic" and Gallium3D -- and the transition from one to t'other is maybe half completed. Gallium3D drivers have the advantage of being able to support more than just 3D operations - things like OpenVG, OpenCL, 2D and video acceleration. Mesa is used for OpenGL in both cases, ie it's not "Mesa vs Gallium" it's "Mesa with classic HW drivers vs Mesa with Gallium3D HW drivers".
Older GPUs (r1xx, r2xx) will probably only ever use the classic drivers. More recent GPUs (r3xx-r5xx) are currently using a classic driver but a new Gallium3D driver is getting close to being able to replace the classic driver. The newest GPUs (6xx and higher) use a classic driver and work is just beginning on a Gallium3D driver.
Programming documentation for the chips is available at http://www.x.org/docs/AMD
Design documentation for the graphics drivers is available at http://www.x.org/wiki but be careful because most of it refers to the driver stack before the recent rearchitecture work completed.
OK so far ?
Its because of replies like this that i will only ever buy ATI from now on.