July 23rd, 2006

face

GPU device layer for Linux

I've just posted a first set of patches for review to lkml implementing a GPU device layer for Linux.

Linux has an historical problem with two separate device drivers trying to bind to the GPU, the fb and drm drivers. Normally the fb drivers were actually bound to the device and the drm drivers were installed in stealth mode. Previous attempts at fixing this were mostly horrible merging of the two layers with no idea of the consequences afterwards, so I've been recommending that we just do a lowlevel device driver and make the fbdev and drm devices subdevices of it. Then we can push some code into the lowlevel driver over time in a careful manner that doesn't break any systems.

My initial patchset only applies to radeon, snd really there is no need to port all the drivers to this layer at once, which is another major advantage, I'll port i915 and i810 next as I have hardware and most probably SiS and VIA might be trivial enough to do without hardware. That would leave r128, i810 and mga and savage. it would also be possible for standard fbdev drivers to be ported to this layer also. It might be an idea even if the devices don't have drm and fbdev drivers to make all drivers use the gpu layer for registration so they show up in one place in /sys.