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 reallocate_surface() in src/core/layers.c
 - Add reference counter to each display layer and
   implement an auto-disable if reference count gets zero.

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).

Add cooperative levels to input devices.

Virtual window/layer resolution with scrolling/panning.

Rework cursor and palette handling in the window stack.


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
