DirectFB - Home of the pragmatist


2006-12-31   Welcome 2007

A year with a cool number, I think. Fits together with 1.0 (in 07/01) more nicely than 2006 :)
Happy New Year to everyone!


2006-12-20   New CELF AVG 2.0 compliant DirecFB+UHAPI4Linux version

...integrates DirectFB and UHAPI4Linux. Check out news at CE Linux Forum.


2006-10-30   Second release candidate

New release candidate version 1.0.0-rc2 is out! Click on the news title for an overview of changes.


  • Breaking API Freeze but keeping source and binary compatibility!
  • All __u8, __s16 etc. types have been changed to u8, s16 etc.
  • Compatibility is in place unless DIRECTFB_NO_CRUFT is defined.
  • Added DSPF_LUT2 being indexed 2 bit per pixel packed, i.e. four pixel in one byte.

API | IDirectFBSurface

  • Added SetIndexTranslation() that sets a translation table used for fast indexed to indexed pixel format conversion. Negative or undefined values in the table will result in no pixel being written.
  • Added DSBLIT_INDEX_TRANSLATION to do fast indexed to indexed translation, this flag is mutual exclusive with all others.
  • So far only LUT2 to LUT8 is supported, used for fast anti-aliased text rendering to indexed format. The translation table contains "-1, 36, 37, 38" for example. First entry makes the background transparent and the other three are shaded versions of the text color.

Build Options

  • Use libpng-config if present. Thanks to Gery <>!

Runtime Options

  • Added "primary-only" to tell applications only about the primary layer, pretending there are no others.
  • Fixed "tmpfs" option.
  • Fixed "pixelformat" option.
  • Don't depend on "debug" option when printing interface leakage at exit time (only debug builds).


  • No longer create a new process group in dfb_core_create().
  • Don't take certain locks in core shutdown functions if emergency is true.

Layer Core

  • In dfb_layer_context_get_primary_region() if increasing the ref count of the existing primary region fails, due it being destroyed, wait for a short time and try again, probably recreating the region.

Surface Core

  • Fixed bug in auto-video surface locking that could return a NULL pointer.


  • Safely cycle through hash nodes while freeing them.
  • Don't print an error if an object revived after it's ref count reached zero but got increased again before the destructor is called. That applies to the multi application core only. In the single application core the destructor is called synchronously.


  • Use readdir_r() instead of readdir().
  • Don't include config.h in direct/types.h. Fix stdbool.h warnings.
  • No longer use pthread_kill(KILL) which doesn't only kill the specified thread, use pthread_cancel().
  • Let direct_assert() and others try raise(TRAP) first, then killpg(0,TRAP) and pthread_exit().
  • At the end of the global signal handler no longer use killpg(0,KILL) but remove all handlers, raise(num), abort() and then exit( -num ). But the exit shouldn't be reached.
  • Register signal handler with empty instead of full blocking mask and use SA_NODEFER except for SIGSEGV. Also no longer use SA_RESTART.
  • Use recursive mutexes in trace support if available.

libdirect (optional network stuff)

  • Replaced the usage of setitimer()+recv() in net_peek() with a single call to select().
  • Fixed username/password parsing.


  • DirectFB Glyph Image File Format
  • Purpose of DGIFF is to offload as much as possible from runtime, especially during application startup when loading the default or system fonts.
  • Added a new font module and a tool called mkdgiff to generate .dgiff from .ttf or other.
  • mkdgiff uses FreeType2 to load the glyphs of the font and stores them in one or more ready to use font cache rows, up to 2047 pixels wide right now.
  • The loader creates preallocated surfaces from the mmapped font file. The only copy ever made would be when the surface is transfered to video memory for acceleration.
  • DGIFF supports different sizes of one face in a single file.


  • Build mkdfiff only if PNG support is enabled.

FT2 Font

  • Made DFFA_NOCHARMAP work again.
  • If Unicode/Latin1 failed, try Symbol Encoding and do some 0xf000 magic.


  • Disable dithering when doing alpha blended blits. Dithering it is applied even when the source pixels are completely transparent. This change makes the mouse cursor look sane.


  • Include <linux/i2c.h> and <linux/i2c-dev.h> now.


  • Include <linux/sisfb.h> now.
  • Build only if this header is found by configure.

Linux Input

  • Ignore repeat events for mouse buttons.

FBDev System

  • Use other signals than SIGUSR1/SIGUSR2 for vt-switching.

Other fixes

  • Plugged mem leak of AttachedWindow struct when DetachEventBuffer() happens after the window has been destroyed.
  • Fix Bop_a8_set_alphapixel_Aop_yuy2() for big endian.
  • Remove/relicense GPL code.


2006-10-01   First release candidate of 1.0

This is the first release candidate of DirectFB 1.0! The API has been frozen and the final release is expected this year. Other packages will be updated within a few days. Click on the news title for an overview of changes.


  • Added DIEF_FOLLOW to DFBInputEventFlags which indicates that another event will follow immediately. In the mouse driver this is used to "link" the x/y axis motion events. The window manager no longer sends two motion events (x/0, 0/y) for one x/y mouse movement (x and y axis at once). Zig-zag cursor/window movement and double event/update rate are gone.
  • Moved DirectFBGL header to the proper location. We need the header here since the DirectFBGL interface is strongly integrated within DirectFB and we want to support external implementations.
  • More Porter/Duff rules (SRC_ATOP,DST_ATOP,ADD,XOR).
  • Added DFB_SUSPENDED error meaning "The requested object is suspended!".
  • Added 4 bit packed alpha pixel format DSPF_A4, e.g. for fonts.
  • Added support for the 18bpp format family.

API | IDirectFBDisplayLayer

  • Added SwitchContext() that switches between the shared and the exclusive context if present.
  • Added SetClipRegions() that, if supported by hardware, sets the clipping regions that are used to to enable or disable visibility of parts of the layer. The number of regions is stated in the display layer description. The layer will be shown only in these regions or except in these regions.

API | IDirectFBFont

  • Added GetStringBreak() to break a text line by line. Thanks to sridewa <>.
  • Added EnumEncodings() enumerating all provided encodings, also see Fonts section below.
  • Added FindEncoding() to look up an encoding directly by its name.
  • Added SetEncoding() for choosing the encoding for local interface methods and as a default for the surfaces.

API | IDirectFBImageProvider

  • Added DIRenderCallbackResult to DIRenderCallback to be able to abort rendering.

API | IDirectFBInputDevice

  • Added DetachEventBuffer() to detach an event buffer explicitly.

API | IDirectFBScreen

  • Allow connectors to be selected at the encoders without the need to define outputs, add slow blanking, thanks to Daniel J Laird <>.
  • Populating screen API a bit more, thanks to Daniel Laird <>.
  • Added GetSize().

API | IDirectFBSurface

  • Added ReleaseSource() to release a possibly attached source, e.g. after blitting from it only once and from nothing else afterwards.
  • Added GetFramebufferOffset() returning the offset within the graphics memory, thanks to Stefan Lucke <>.
  • Added GetPosition() returning the offset of a sub surface.
  • Finally decided to catch horizontal/vertical lines in DrawLine() and optimize them using rectangle filling.
  • Added SetEncoding() to choose an encoding for the text routines, will be overwritten by SetFont() which takes the default encoding of the new font, also see Fonts section below.

API | IDirectFBVideoProvider

  • Removed return value from DVFrameCallback.
  • Added SetPlaybackFlags(), SetSpeed() and GetSpeed().
  • Added SetVolume() and GetVolume().

API | IDirectFBWindow

  • Added DetachEventBuffer() to detach an event buffer explicitly.

Build Options

  • Added option --enable-netork to enable/disable building network protocols handlers.


  • Added support for other encodings than UTF8. Encodings are (or can be) provided with each font implementation. This model reduces code sharing slightly, but allows higher efficiency via optimized combination of decoding and translation.
  • Every encoding just has a name and an ID, where the name can be chosen freely, except for DTEID_UTF8 which is always available and has the name "UTF8".
  • Implemented UTF8 and "Latin1" encoding in FT2 font loader. Nice demonstration how different encodings can be used, while still having a single glyph cache, which is no longer based on character codes, but on their raw indices.
  • See ChangeLog from 2006-05-06 for more details.

Graphics Core

  • Added DFBResult return value to graphics driver's EngineSync() and WaitSerial() to be able to return DFB_TIMEDOUT or other errors. In these cases the core resets the accelerator via EngineReset() and takes care of state invalidation etc.
  • dfb_gfxcard_sync() and dfb_gfxcard_waitserial() also lease the graphics property, i.e. there are no more concurrent calls to the driver, e.g. FillRectangle() along with EngineSync().
  • Moved clipping from dfb_clip_stretchblit() to gStretchBlit() doing all clipping, phase and offset calculations in place, otherwise clipping suffered from rounding and off-by-one errors due to going back to integer in between.
  • In case of no hardware clipping but rectangle filling, if in DrawRectangle() the whole rectangle outline was outside the clipping area, the clipping area was drawn in the software fallback code.
  • In dfb_surfacemanager_deallocate() make sure no hardware read or write access on the buffer is pending before freeing the chunk.
  • Added global function pointer __DFB_CoreRegisterHook with __DFB_CoreRegisterHookCtx to allow application level layer (and screen) implementations building on top of existing layers.
  • New capabilities for setting destination size limit. If the rectangle is too big, first try clip, then try again and eventually fall back to software.
  • Implemented font cache limit, currently hardcoded to five rows, each row stores a number of glyphs. When the maximum number is reached it will reuse the least recently used row, kicking out all glyphs that have been on it.
  • Before every graphics operation, i.e. in dfb_gfxcard_state_check(), clip the state's clipping region to the destination surface dimension.

Input Core

  • First and fully working implementation of dead key handling using static tables for mapping of dead keys and following symbols to the combined symbol.

Surface Core

  • Some changes that decrease system memory usage for surface buffers, especially where graphics memory is available.
  • Allocate system instance of auto-video buffers on first access, not immediately during creation of the surface.
  • Deallocate system memory when buffer is written to in video memory. Reallocate it if the buffer is kicked out of video memory.
  • Implemented "suspended" surface buffers, temporarily deallocated. No valid instance at all until it's resumed.
  • Added dfb_surface_buffer_suspend/resume().
  • Align pitch of system memory buffers to be a multiple of 8 instead 4.
  • Add extra 16 bytes at the end of a buffer as a dummy area for optimized routines, e.g. to avoid segfaults due to prefetching.

Window Core

  • Rewritten cursor handling (software cursor) to use a surface instead of a window. The window manager module gets notified about all kinds of updates regarding the cursor. All window manager modules use the same code for now, using backing store for the region under the cursor. This avoids revealing window content that hasn't been commited via Flip(), yet. It should also be faster as it no longer depends on the windows that are covered by the cursor.
  • Check if window is destroyed and return DFB_DESTROYED in all functions which would have called the WM, because a destroyed window is no longer known to the WM and the WM's window data structure is deallocated.

Software Renderer

  • Fix unaligned 32 bit accesses in color keying code.
  • Allocate the accumulator only if it will be used.
  • Check if palettes are equal when blitting indexed formats.


  • Added dfb_rectangle_subtract() to subtract insets from rectangle.
  • Added dfb_gfx_copy_to() as an extension of dfb_gfx_copy(). The advantages are different x/y offset for source/destination and blitting from back buffer. The latter was a must for the backing store based software cursor.


  • Reworked Direct/Stream to gain more efficiency, added several optional network protocols.
  • Added direct_stream_mime() that returns mime description of the stream.
  • In addition to DIRECT_FORCE_DEBUG one can use DIRECT_ENABLE_DEBUG now.
  • Only duplicate used portion of array in direct_trace_copy_buffer(), set limit from 256 to 200.
  • Added BSWAP16 and BSWAP32 macros, direct_base64_encode, direct_base64_decode and direct_md5_sum.
  • Due to increasing amount of debug messages the default is "no-debug" now. It makes more sense to only enable wanted debug domains by hand, e.g. "debug=core/font". Otherwise, "debug" option still works, too.
  • Replaced direct_stream_fopen() by direct_stream_fileno().
  • Added direct_stream_dup() to increase the stream's reference counter.
  • In the stack trace show base address of each file to allow offset calculation 'by hand' within dynamically loaded modules, i.e. where ldd doesn't help.


  • Local 'local reactions' are no longer processed before dispatching further via the kernel device. This causes all local reactions within each Fusionee to be called by the Fusion Dispatcher only, in chronological order. It's a fundamental change in runtime behaviour which might break some code that relies on the synchronous execution of the dispatcher's own local reactions.
  • Implemented experimental fork() handling in Fusion. Added FusionForkAction being FFA_CLOSE by default, which can be changed to FFA_FORK with a call to fusion_world_set_fork_action() for each Fusionee/World.
  • Added "name" parameter to fusion_ref_init() like others already have.
  • Return DFB_LOCKED in fusion_ref_up() if EAGAIN is received (ref is zero locked).
  • New shared hash table implementation and property support for object.
  • Added fusion_skirmish_lock_count() returning the lock counter if held by the caller.
  • Added fusion_reactor_destroy() like fusion_reactor_free() but without freeing the shared structure etc.
  • No longer (need to) access the shared structure during local message processing in the Fusion dispatcher.

i830 driver

  • Fixed overlay destination color keying for 8/15/16 bit primary layer formats, add "i8xx_overlay_pipe_b" option, thanks to Stefan Lucke <>.

Matrox driver

  • Added field based blitting support.
  • Added DSCAPS_SEPARATED support to BES, CRTC2 and SPIC.
  • Fixed pixelpitch alignment for YUY2/UYVY.
  • PAL-60 support (or at least close enough for Ville's TV).

nVidia driver

  • Avoid to set the overlay memory limit, it's already done by the kernel.
  • Basic acceleration for ALUT44.
  • Disable host-to-video hardware blit for simple blits without format conversion.
  • Added nvEngineReset().

Radeon driver

  • R300: Support FillTriangle() and DSDRAW_BLEND.
  • RV250: Dropped YUV->RGB support.
  • Enable VC_32BIT_SWAP on big-endian machines.
  • Removed (erroneously set) flag VF_RADEON_MODE in r200DoDrawRectangle3D().
  • Added patch to radeonfb fixing support for R300 chipsets (it also adds new devices).
  • Use different settings for R300 and non-R300 when setting MC_FB_LOCATION.
  • Added the possibility to use the graphics layer as an OSD. It works exactly the same way as in the unichrome driver: Set the video layer level to -1 and enable DLOP_ALPHACHANNEL on the graphics layer.
  • Applied patch by Christer Palm <>: fixes word swapping on PPC.

Unichrome driver

  • Disable hardware cursor in VIA_REG_CURSOR_MODE. Thanks to Michel van Noorloos <>.
  • Added PCI ID for CN700.

DynaPro input driver

  • New 3M DynaPro Touchscreen driver, thanks to Pär Degerman <>!

Keyboard input driver

  • Added support for dead keys.

Linux Input input driver

  • Added support for dead keys.

DFIFF image provider

  • New DirectFB Fast Image File Format with a fast image provider module and a tool to convert images from PNG to DFIFF.

GIF image provider

  • Dropped support for GIF87 (can't be animated).

GIF video provider

  • New animated GIF video provider.

V4L video provider

  • Fixed planar data copy.
  • Added more pixelformats for v4l2.

FBDev System

  • Clean up error handling in system_initialize() and fix bug with shared memory (de)allocation.
  • Treat fbdev format 8/16,8/8,8/0,0/0 as ARGB when ARGB was requested (that because framebuffer drivers tend to ignore the alpha channel).
  • Don't touch console blanking when using graphics-vt.

SDL System

  • Better keymap emulation.
  • Fake video modes by reading fb.modes, just like the fbdev backend.

directfb-csource tool

  • Added option --rgbformat which in contrast to the --format option only is effective if the image doesn't require an alpha channel. That's useful e.g. with RGB16 for opaque and ARGB for blended images, when the primary format will be RGB16. So far directfb-csource either used ARGB/RGB32 automatically, or it always used RGB16 or whatever you specified via --format.
  • Make structs and pixel data const, helps with use in shared libs.

fx tool

  • Very basic program to emulate/illustrate the pixel pipeline, blitting flags etc. No 100% guarantee that itself is correct, but in the end it will serve as a verification for software/hardware driver.


2006-09-05   Look! I've made 1.0 before DirectFB...

...but I've been assured there's a release candidate this month :-)


2006-07-07   CELF Audio Video Graphics Specification V2.0 with DirectFB / UHAPI / OpenGL ES

News on say that version 2.0 of the Audio Video Graphics specification has been ratified by the CELF Board of Directors. The approved specification can be found here.


2006-05-03   0.9.25 is out!

Finally, 0.9.25 has been released. It has a lot of improvements and fixes. Click on the news title for more information.


  • Added DSPF_AYUV, a 32bit packed AYUV format for graphics, being the counterpart of ARGB in the YUV color space.

API | IDirectFBSurface

  • Added GetClip().

API | IDirectFBDisplayLayer

  • Allow empty flags in SetColorAdjustment().
  • Allow to control background and cursor in exclusive cooperative level.

API | IDirectFBEventBuffer

  • Added DFBEventBufferStats containing various counters for the event queue, e.g. total number of events, number of window events, motion events etc. These reflect the current content of the queue, i.e. dequeueing decrements.
  • Added EnableStatistics() to enable/disable collection.
  • Added GetStatistics() to query current statistics.

API | IDirectFBVideoProvider

  • Added SendEvent() to send a window or input event to video providers that supports interactivity (DVCAPS_INTERACTIVE). For cursor events, coordinates must be in the destination rectangle space.
  • Added GetStreamDescription() to query informations about the stream.
  • Added IDirectFBVideoProvider::GetStatus() to get the status of the playback; this method replaces the previous end-of-playback detection method using GetPos().

Runtime Options

  • Added config option unichrome-revision=<rev> to manually set the hardware revision number for the unichrome driver. This cannot be determined automatically unless the process runs as root.
  • Added option [no-]dma (disabled by default).
  • Added option fatal-level=<level>: Abort on NONE, ASSERT (default) or ASSUME (incl. assert)

Graphics Core

  • Added FlushReadCache() to the graphics driver API. Used in the matrox driver to flush the direct access read cache.
  • Pass CoreDFB to graphics drivers as a new argument to driver_init_driver().
  • Added dfb_gfxcard_surface_{enter/leave}(), called when a software access to video memory begins/finishes.
  • Fix negative line width handling in fill_tri().

Surface Core

  • Added support for surfaces stored in auxiliray memory (PCI/AGP/PCIE).
  • Added support for Surface Managers with a variable number of heaps.
  • In dfb_surfacemanager_allocate() do dfb_gfxcard_sync() only if hardware has read from the buffer about to be kicked out. The call to dfb_surfacemanager_assure_system() should already take care of the hardware write case.
  • Change dfb_surfacemanager_assure_system() to call dfb_gfxcard_wait_serial() instead of dfb_gfxcard_sync() since we're only interested whether the hardware has written to the buffer.
  • Use a separate shared memory pool for surface buffer data.

Input Core

  • Don't toggle lock states repeatedly when holding a lock key.
  • Added FusionCall to each input device for maintenance via master, driver calls etc. using new CoreInputDeviceCommand enum.
  • Added dfb_input_device_reload_keymap() implemented via the new call passing the CIDC_RELOAD_KEYMAP command. The master will reload the whole keymap via driver API.
  • Added a new tool called "dfbinput" which features keymap dump/reload so far.
  • DIKI_ALTGR is gone. The key right to the space bar is the right alt key. No matter which map is loaded, the identifiers are just named hardware keys, where you really specify the physical entity on your keyboard. In this case it's always DIKI_ALT_R, no matter if it's mapped to DIKS_ALTGR or DIKS_ALT. On standard keyboards it's also always the same hardware key code, no matter if you by a German keyboard with AltGr or a U.$. one with Alt.
  • Changed the input core logic for keeping track of modifiers. If DIKI_ALT_R is pressed, also look at the symbol to decide if DIMM_ALT or DIMM_ALTGR is to be added/removed.
  • Now application developers don't need to check for both DIKI_ALTGR and DIKI_ALT_R if they want to check for the key right next to the space bar :)

Software Rasterizer

  • Almost completed support for Planar YUV formats (lacks colorkeying).
  • Fixed Cb/Cr offset computation (height*pitch/4 is different from height/2*pitch/2 if height is odd).


  • Made debug/release versions binary compatible, being able to link dynamically against both or even run in the same session.
  • Added D_OOM() message if thread structure can't be allocated.
  • Added D_MAGIC_SET_ONLY which is D_MAGIC_SET without assuming that the magic hasn't been set already. Useful to avoid compiler warnings when acting on uninitialized structures on the stack.
  • Removed dependency on -D_GNU_SOURCE when including <direct/util.h>:
  • Made direct_util_recursive_pthread_mutex_init() non-static-inline.
  • Removed DIRECT_UTIL_RECURSIVE_PTHREAD_MUTEX_INITIALIZER and replaced all of its occurences by PTHREAD_MUTEX_INITIALIZER. These didn't need to be recursive. If there's a recursive mutex required, you can still use the utility function direct_util_recursive_pthread_mutex_init().
  • Removed -D_GNU_SOURCE from direct.pc and directfb-config.
  • Added DIRECT_SIGNAL_ANY as a replacement for the magic -1.
  • If the debug domain being registered contains a slash, but didn't exactly match an entry in directfbrc, check to see if the domain is descended from an entry in directfbrc, e.g. 'ui/field/messages' matches 'ui' or 'ui/field'.
  • New D_DEBUG_ENTER and D_DEBUG_EXIT to ease debug messages for tracing function calls.
  • Added UDP support to DirectStream.
  • Added symbol resolving support for static binaries.
  • Replaced the enum based bool definition by a typedef to __u8.
  • Defined false and true via macros like stdbool.h does.
  • Allow NULL argument in direct_free().
  • Thanks to Andy Stewart for fixing the hash table reallocation which didn't check for collisions during reinsertion.


  • Using the new Fusion Kernel API 2.0
  • Parallel Fusion Worlds in one process via extended API
  • Multiple Shared Memory Pools in one world via new API
  • No race condition between (potential master) processes starting in parallel
  • Fusion APIs have been extended to support different worlds and pools.
  • Added fusion_reactor_sized_dispatch() to dispatch a message to any attached reaction with a given size. Instead of using the size defined by the reactor, the caller can specify the size of the data.
  • Added a parameter to fusion_enter() - FusionEnterRole - to specify either FER_ANY, FER_MASTER or FER_SLAVE. If the world can't be entered playing the specified role, an error message is printed and DFB_UNSUPPORTED is returned.
  • Added FusionCallExecFlags parameter to fusion_call_execute().
  • Allow pending reactions (in local dispatcher queue) to be executed after the shared reactor part has been destroyed. This fixes for example occasionally missing DWET_DESTROYED events.


  • Avoid tons of warnings by using D_MAGIC_SET_ONLY instead of D_MAGIC_SET.
  • More Requester/Dispatcher method implementations.

Radeon driver

  • New unified Radeon driver for R100/R200/R300+.
  • Supports smooth page flipping.
  • Supports seconday head output.
  • Supports overlay on secondary head.
  • Improved overlay RGB rendering.
  • Improved R100/R200 3d functions performance.
  • Fixed 2d/3d engines synchronization.
  • Added support for surfaces stored in AGP memory.
  • Use the POINT primitive to fill rectangles with size=1 (i.e. to draw points) [~60% faster].
  • Speed up FillRectangle, Blit and StretchBlit by using the RECTANGLE_LIST primitive instead of QUAD_LIST [~15% faster]. :)
  • Reset MC_FB_LOCATION to avoid problems with X (thanks to Michel Danzer).
  • Check for integrated GPUs.
  • When AGP support is enabled, turn off pci gart and turn on bus mastering.
  • Added acceleration for AYUV, but color conversion is not supported because radeon supports AVYU instead of AYUV.

Matrox Driver

  • Limited support for DSBLIT_SRC_PREMULTIPLY.
  • PCI device ID cleanup.
  • Fixed Mystique vs. Mystique 220 detection.
  • Allow DSPF_ARGB surface for BES.
  • Finally remove DLOP_FLICKER_FILTERING on CRTC2.
  • Don't reinitialize the whole TV encoder when changing field parity.
  • Disable BES if the destination region is completely off-screen.
  • Allow surface height up to 2048 with DLOP_DEINTERLACING (BES).
  • Limit surface width with DLOP_DEINTERLACING to guarantee BESPITCH < 4096.
  • Disable vertical filtering when surface width > 1024 (BES).
  • G200 BES doesn't support color adjustments.
  • Don't touch hardware in SetRegion() if nothing changed (SPIC).
  • Separated spic_calc_buffer() out of spic_set_buffer().
  • Fixes for G100 with SDRAM.
  • Fixed YUY2/UYVY and texture LUT state handling.
  • Fixed color keying mask, G100 doesn't have TEXCTL2 so TEXTRANS must be used to disable color keying.
  • Completely untested PPC support.
  • Misc. cleanups.

Mach64 driver

  • Don't advertise DFXL_STRETCHBLIT when it hasn't been checked.
  • Fixed scaler/texture color key for chips < 3D Rage Pro.
  • Avoid chip lockups with destination color keying.
  • Fixed surface size limits (Overlay).
  • Fixed color keying on 264VT2 (Overlay).
  • Check the chip type in ovSetColorAdjustment().
  • Enabled SCALE_Y2R_TEMP.
  • Minor cleanup.

nVidia driver

  • Added support for AGP
  • Added support for DMA using AGP or Framebuffer memory.
  • Finally fixed the "random-crashes-when-blitting-from-system-memory" problem.

Unichrome driver

  • Fix hardware revision number detection and allow override via new config option unichrome-revision=<rev>. The revision number can only be auto-detected if the process runs as root.
  • Added simple script to determine revision number for addition to directfbrc.
  • Added support for DLOP_FIELD_PARITY. For this to work, the kernel framebuffer must support an extension of the WAITFORVSYNC ioctl that allows waiting for the top or bottom field.
  • YV12, I420, YUY2 and AiRGB simple blits, AiRGB 2D drawing
  • Disable broken SetColorAdjustment for the overlay and remove color keying diagnostic.
  • Round to nearest when positioning up-scaled YV12/I420 video to reduce error.
  • Fix YV12/I420 video layer corruption on revision 0x11 hardware. Also fix bug setting SUBP_CONTROL_STRIDE register in uc_spic_set_buffer. Sadly subpicture layer still doesn't work.
  • ARGB4444 as source and destination pixel format for all supported operations.
  • Overhaul of LEVELS, OPACITY and primary ALPHACHANNEL features which were previously only partially implemented and did not work together.
  • The video overlay and the primary layer now both support the OPACITY option and either can be on top. The order is determined by the 'level' assigned to the video layer. The primary also supports an alpha channel which is useful when the video layer is positioned behind.
  • The old DFB_CLE266_UNDERLAY environment variable switch has been removed.

FBDev System module

  • Added AGP support.

SDL System module

  • Decoupled screen updates from Fusion Dispatcher. Updates are handled in a separate thread; they're accumulated rather than queued in case an update is already pending.
  • Use the flag FCEF_ONEWAY to not wait for the call being executed, otherwise a deadlock could occur. The return value is meaningless anyways. Queued updates will be merged on the receiving side (master) to avoid a lag and improve performance.

Gunze Input driver

  • Added Gunze Touchscreen driver, thanks to Nathanael D. Noblet <>!

PenMount Input driver

  • Added input driver for PenMount 9509 serial touchscreen.

PS/2 Input driver

  • Applied patch from Christian Krause <> that allows usage of the option "mouse-source" without "mouse-gpm-source".

dfbdump tool

  • Show "1k" again for '0 < bytes < 1024'.

dfbsummon tool

  • Avoid division by zero if no video memory is available.

fusion_bench tool

  • Do the shmalloc benchmark once with debug and once without.


2006-04-18   Conference Videos

Michael Opdenacker from Free Electrons was so kind to make recordings of presentations at the Embedded Linux Conference.


2006-04-12   Embedded Linux Conference Presentation

The presentation went very well and the slides are now available!


2006-02-21   CELF Embedded Linux Conference

The Worldwide Embedded Linux Conference of the CE Linux Forum will be held April 11 and 12 in San Jose, California!

Denis Oliver Kropp will be there to give a presentation on DirectFB again. This time the integration into existing software stacks will be the key aspect. Writing non-framebuffer device based system modules (backends), while still having hardware accelerated drivers, as well as some cool demos, will convince engineers and project managers of the power, versatility and feasibility of DirectFB, the universal graphics sub system for the embedded world.

dok / Main / News