New internal structure for the Linux Framebuffer drivers

Note: this is only a draft. Please send your comment to fabrice.bellard at


(Apr 10 1999) James Simmons is now maintaining the patch and it is likely to be included in the 2.3.x Linux kernels. The acceleration scheme proposed here is no longer supported.

Why ?

Currently, here is the structure of the linux console and frame buffer drivers :

Although it allows to have a console on any frame buffer device, it has some drawbacks :

Here is the structure I propose in my patch for fbcon :

The following points have been modified :


From user space, nothing is changed, which means that even binary compatibility is preserved. This is only an internal kernel modification. However, each frame buffer driver must be slightly patched in order to work with this system. Since there are about twenty frame buffer drivers, it is still a big work (most of the work would consist in testing the driver of every supported architecture)... so that's why we need to know whether it is worth doing it.

The patches proposed here would make each driver a lot simpler and would accelerate the developpement of new frame buffers drivers. Since theses changes do not modify too much the current fbcon internal structures, the risks of bugs are diminished compared to a 'completely new good idea (tm)'.

How to use the kernel space acceleration in user mode ?


The current implementation (version 0.2 - Jan 27 1999):

It is a patch against the lastest kernel (2.2.0-final). It is maintained by Fabrice Bellard and James Simmons.

The vesafb and vfb drivers are implemented. cfb8,cfb16,cfb24 and cfb32 are implemented. mfb, cfb2 and cfb4 support compiles but is untested.

Get the kernel patch: linux-2.2.0-final-fb-0.2.patch.gz

Get the example program (for benchmarking and testing) : fbcon-test-0.1.tgz


Fabrice Bellard fabrice.bellard at , Apr 10, 1999.