General (roughly sorted by priority)
-------------------------------------

Modularize pixel formats (eventually with dynamic extension support).

Implement CoreFont sharing between applications
to save glyph rendering and surface allocations.

Finish VT switching (already working well after 0.9.18 release)
 - Save/redirect video only buffers.
 - Handle auto video buffers being permanently locked in video memory.
 - Support switching during exclusive access to a layer.

Finish implementation of cooperative levels.

Finish display layer core and driver API.

Finish multi application core.
 - Some messages may need to be dispatched synchronized.
 - Add fork handling.
 - Run time single/multi app core selection (both enabled during build).

Finish surface manager.
 - Add kicking out a few smaller surfaces for a bigger one.
 - Defragment free space.

Finish module unloading (done for most cases).

Convert all D_DEBUG usage to D_DEBUG_AT using some D_DEBUG_DOMAINs.

Move config system to libdirect with more features.

Write well documented driver skeletons.

Add core cursor component with animated shape support and better integrated
changes caused by entering different windows.

Add cooperative levels to input devices, implement sharing/distinction for
applications (e.g. PS/2 Keyboard + PS/2 Mouse driver XDirectFB on Monitor out,
USB-Keyboard + USB-Mouse drive XDirectFB and/or other applications on TV Out,
USB-Wacom Tablet with mouse and pen can be assigned or switched to either,
preferrably during runtime)

Virtual window/layer resolution with scrolling/panning.

Rework cursor and palette handling in the window stack.

Implementation rating.


Drivers
--------

- CLUT support in Matrox driver (tried that without success)


Refactoring/cleanups
---------------------

- Split up IDirectFB::CreateSurface code
- Cleanup flipping/back_to_front_copy stuff
- Surface locking (internal, rw lock?)
- Reduce sched_yield() usage
- Rewrite VT code
