What is DirectFB?
The graphics device on your computer is really just a big virtual drawing space in hardware with a defined set of calls to create picture changes. It has some functions to accelerate 2/3D drawing operations.
Generally these operations are implemented by the Xserver Driver which binds to the Abstracted VESAfb or actual device driver i.e. atidrv. However it is better to define an abstraction layer between the Xserver and the hardware driver; and this is what DirectFB does - in fact this is the same approach as DirectDraw2D in Windows.
Note: DirectDraw3D is the equivalent of OpenGL.
Why is this a good thing
- It separates all graphics functions for the Kernel code - as the alternative is to implement a virtual layer at kernel level.
- The Xserver interface can be optimised and removes the need to cater for different hardware options, knowing that all drawing operations will be supported.
- The DirectFB Layer manages hardware vs software method implementation.
- Software transforms can be optimised and refined more easily than if they were in different Xservers.
- Additional acceleration can be achieved - for example toolkit widgets can be optimised.
- It allows GUI development without the need to use X. (Although X has great features, it is slow on a local device due to io. This is not ideal for handhelds and other devices which do not require X like functionality but still require rich GUI environments.
see www.directfb.org for more details