DirectFB - Home of the pragmatist


2011-12-26   Raspberry Pi

This sweet little berry is a tiny computer with a Broadcom SoC that has OpenGL ES 2.0 support.
We'll be porting DirectFB to this device as soon as we got our hands on :-)
Join us!


2011-11-20   ilixi developer joins team

DirectFB proudly presents the new Core Developer Tarik Sekmen.
This talented guy is one of our first employees!

He will also continue working on ilixi, his new UI engine for DirectFB.

See the new Videos section in the menu featuring a video of ilixi showing off tweens in the picture gallery!


2011-11-08   Fenestra - DirectFB SDK for Windows (MSVC)

Fenestra is the new build environment for the native Win32 based DirectFB and related libraries and applications such as PluggIt that allows your desktop to be forwarded (input and output) to a TV set or other Voodoo Player.

This contains a Visual Studio Solution for building several DLLs and executables from the DirectFB and related projects, including DiVine, FusionDale, ++DFB and others.

Try and download the Fenestra snapshot, just press 'Play' after open with Visual Studio 2010 Express :)

It will show the FormsTest as on the screenshot to the right, waiting for players to become visible, connecting to one when selected, with the colored buttons for filling its screen with colors.

You can also download the binaries for a quick test.


2011-09-26   DirectFB 1.4.15, linux-fusion 8.7.0, SaWMan 1.4.15, flux 1.1.0 release

These releases superseed the 1.4.14 releases which introduced a lot of new features (most notably secure-fusion), and also unfortunately many regressions. We tried to fix all known regressions with this 1.4.15 release and also backported secure-fusion fixes and feature completion from the master branch.

If you are building a project with 1.4.14 you really should update. If you are on 1.4.13 or earlier, you should know that updating to 1.4.15 changes a lot.

As we noted in our post about the new release model, 1.4.15 will be the last 1.4 release that introduces a lot of internal changes. There will be only bugfixes from now on and no API/ABI changes. Note that there could be an exception regarding the new optional resource-manager interface.

Please find in the download section the following releases:

  • DirectFB 1.4.15
  • SaWMan 1.4.15
  • linux-fusion 8.7.0
  • flux 1.1.0

For detailed info click on the news title

Changes for DirectFB 1.4.15


  • Fix missing CoreGraphicsStateClient_Deinit() that has led to a memory leak.

ICoreResourceManager and ICoreResourceClient

  • Add new interfaces for resource management, optionally being loaded as modules.
  • The manager has one method to create a new client instance (called within master, per slave).
  • The client has a few methods for checking surface creation/reconfig, adding/removing/updating surfaces.

Runtime Options

  • Add "resource-manager" option to load a resource manager implementation, default is none.


  • Secure Fusion final major update adding CoreScreen and CoreInputDevice interface
  • move from C++ to C using fluxcomp's C mode and slightly modified real implementations
  • Add ICore::Register() method for slaves joining to create a resource client instance in the master.
  • Make ICore_Real::CreateSurface() use the new Core_Resource_CheckSurface() function for asking the resource manager (if any) for creation of the resource.
  • Add Core_Push/PopIdentity() to store the caller ID of an incoming request in TLS.
  • Add Core_GetIdentity() to query the current identity, i.e. ID of the Fusionee that made the IPC call.
  • Add Core_Resource methods wrapping and managing instances of ICoreResourceClient.
  • do not always call dfb_gfxcard_batchblit()
  • shutdown fixes
  • remove Dispatch class, use functions instead (even in C++ mode)
  • add prelock to manage interlocks at master
  • set permissions for FUSION_REF_UP/DOWN for secure-fusion
  • remove obsolete code
  • added missing files, got lost during merge
  • Add copy of surface type flags and resource id to surface buffer.
  • remove precheck for locked buffers in dfb_surface_reconfig()
  • Fix typo in last commit of Surface Buffer object changes
  • Make Surface Buffer a FusionObject and implement locked surface resizing
  • Use old shm surface pool for non-secure fusion, get rid of indices in secure surface pool.
  • Fix crash when dfb_wm_update_cursor() is called with 'no-cursor' option.
  • Export layer surface allocation functions.


  • Run fluxcomp with argument "-i" to generate calls to Core_Push/PopIdentity().
  • Flux has its own package now, please checkout git://
  • remove workaround for c-mode (dummy data for fusion_call_execute3)
  • added option --include-prefix= to fix build of external projects(e.g sawman)
  • added semicolon to fix warning in generated C code
  • added C mode for generation C instead of C++


  • Add fusion_get_fusionee_path() to retrieve the executable file name of a Fusionee (as in /proc/*/exe). This can be used when the resource client is created to apply special limitations, privileges...
  • Add fusion_world_set_leave_callback() to register a callback for processing the new FMT_LEAVE message when a slave leaves the world. This is used by the master to cleanup the resource client instance.
  • Add FusionID parameter to fusion_object_create() to give objects an identity, i.e. the identity of the Fusionee calling the master to create an object.
  • Fix crash by commenting out debug print after unref (in fusion_ref_down itself)
  • Fix fusion_vector_foreach_reverse for empty vectors


  • make use of clip_blit_rotated() in dfb_gfxcard_batchblit()
  • always initialize shared surface pool priority with CSPP_DEFAULT


  • Fix Bop_argb_blend_alphachannel_src_invsrc_Aop_argb for special case alpha = 0.
  • Fix top clipping of flat top triangles.
  • use 24bpp colorkey template for RGB18 and ARGBx666
  • use 24bpp colorkey template for RGB24, ARGB8565, VYU
  • add a colorkey template for 24bpp pixelformats
  • use 24bpp acc template for RGB18 and ARGBx666
  • use 24bpp acc template for RGB24 and ARGB8565
  • add an acc template for 24bpp pixelformats


  • Add test implementation for ICoreResourceManager and ICoreResourceClient that keeps track of and prints the amount of surface memory being used per slave process.


  • correctly setup iDCT scale factors for libjpeg version 7 or higher


  • various fixes for colorkey handling and grayscale images
  • fixes for adam7 deinterlacing in 16->8bit per color component conversion case


  • Initialise buffer mode in display layer config.


  • wrong number for buttons and axes read


  • Input driver is part of system module now, special attach code no longer needed
  • Fixed several bugs in input event processing
  • Initialize rfbScreen once for the session, 32bit
  • Default screen size is 1280x720 if not set via mode option
  • Use preallocated shared memory surface for screen
  • Render layer onto preallocated ABGR screen surface
  • Layer positioning and scaling is supported
  • Only stream modified rects from clients to master (calling rfbMarkRectAsModified there) using FusionCall2
  • Use automatic port allocation
  • Detect failure in setting up listen socket
  • Use rfbNewFramebuffer call


  • fix out-of-tree builds
  • set version to 1.4.15
  • remove dummy.cpp to prevent linkage of libstdc++
  • set CXX=g++ for fluxcomp, to avoid the cross compiler from being used
  • add more explicit rules for new generated headers
  • fix build of generated core files by specifying explicit rules


  • Only use the shjpeg library if available, thanks to Michael Szafranek
  • Move dfb_surface_lock/unlock to CoreSurface fns
  • Fix sh7722_jpeg destructor releasing a buffer it doesn't own
  • comsmetic changes only (tabs to spaces)
  • Correct device name in debug messages
  • Fix warnings in sh7722_jpeg.c
  • Fix build error, new arg to dfb_surface_create_simple


  • Fix crash in non-secure mode.

Changes for SawMan 1.4.15


  • Implement Start/Stop via SaWMan flux.
  • Reset lock pointer to NULL and check for pointer in unregister_process().
  • shutdown fixes
  • remove C++ dependency
  • Options

  • Add "[no-]static-layer" option, default is dynamic configuration.
  • testman

  • fix layer_reconfig (the layer was used as window id)
  • build

  • fix for out-of-tree builds
  • You can find the release in the "Core" and "Extras" tabs on the "Downloads" page.


    2011-09-25   New Qt backend using DirectFBGL

    Qt applications on DirectFB can utilise OpenGL now.

    The merge request 1399 adds a new backend to Qt. It has all features of the old DirectFB backend, but also uses IDirectFBGL that allows the GLWidget to be used.

    One interesting application of this is QML.

    Thanks to Cedric Chedaleux from Orange for this contribution!


    2011-08-12   An important note from regarding release cycles

    We got a lot of negative feedback regarding our current release policy. Too many changes in minor releases, non-forseeable changes in both 1.4.x and 1.5.x branches.

    We thought about that and came to the following conclusion: You are right.

    So how can we solve the problem?

    We decided that it is best to adopt a time-based release schedule, like many projects already did. (GNOME, Ubuntu, etc). The last three major releases will receive critical fixes, but we will try to keep the changes minimal. That way, users of DirectFB building a product can update to minor releases without the fear of breaking things or making custom changes hard to port to a new minor release.

    We will also start to release -pre releases for testing, which will be open for major core and API changes.

    We also plan to integrate more packages (e.g. SaWMan) into the main DirectFB tree, to make sure that each major release comes with a SaWMan that is feature-frozen and fits best.

    All these measures are meant to make DirectFB releases feel more finished and easier to adopt.

    So what will happen next?

    • The 1.4.x branch will get frozen after the 1.4.15 release but will still receive bug fixes
    • The next release of the 1.5.x branch will be 1.6-pre1
    • The release of 1.6.0 is planned for end of November 2011
    • 1.7.0-pre will be opened with the 1.6.0 release
    • During the freezing phase of 1.6.0 any development would need to take place in a branch and merged into trunk when 1.7.0-pre is opened

    We hope you agree to our new policy and apologise for the inconvenience caused by some volatile releases in the past.


    2011-08-09   SaWMan 1.5.3 including stereoscopic display support, and DirectFB 1.5.3 with stereo on X11

    The new SaWMan release has stereoscopic display support now!

    This includes windows with stereo depth (disperity), but also allows windows to have two buffers (left and right) by themselves.

    Special thanks to Broadcom for development of that extension!

    There's also another DirectFB release allowing stereo output via X11, e.g. on second head to 3DTV using side-by-side output!

    This works via a new runtime option, e.g. "x11-borderless=1920.0,mode=1920x1080" removing the window borders and moving the X11 window onto second head at 1920,0 and size 1920x1080.

    For detailed info click on the news title

    The following are the changes in the new DirectFB release:


    • Implement primary surface creation with DSCAPS_STEREO in fullscreen and windowed mode.


    • Add DFFA_STYLE_BOLD for loading bold face from a file.


    • Add DSECAPS_FRAMING to indicate support for different stereo output modes.


    • Add full resolution side-by-side to DFBScreenEncoderPictureFraming and rework naming.


    • Move _Layer/_Window implementation of Get/SetStereoEye() to generic IDirectFBSurface, add missing generic FlipStereo().

    Runtime Options

    • Add 'x11-borderless=[x.y]' to disable X11 window borders and optionally position window


    • Add BatchFill driver function to reduce overhead.
    • Add BatchBlit driver function to reduce overhead.


    • Fix crash when dfb_wm_update_cursor() is called with 'no-cursor' option.
    • In region_buffer_lock() fix surface accessor argument for right buffer lock.
    • In dfb_layer_region_flip_update() redirect to dfb_layer_region_flip_update_stereo() automatically.
    • In dfb_window_create() add DSCAPS_STEREO when DWCAPS_STEREO is used.


    • Add stereo display support via side-by-side output, implement 'x11-borderless' option.




    • Add simple test for stereo depth of windows.

    You can find the release in the "Core" tab on the "Downloads" page.


    2011-07-31   Secure Fusion release festival

    The final major step has been made to make the new secure fusion mode stable and usable. The secure fusion mode improves safety and stability, e.g. by allowing slave applications to map shared memory readable only, requiring an IPC call to the master application for each operation that needs write access. Furthermore, object ownership is taken care of, so it is not possible for an application to run methods on another application's window, surface etc. The linux-fusion kernel module enforces permissions on a lower level, per IPC call id for example. The shared memory permissions are enforced on file system level, giving group write access to surface buffers only.

    The secure fusion work has also been back ported to the 1.4.x series!

    Please find in the download section the following releases:

    • DirectFB 1.5.2
    • DirectFB 1.4.14
    • DirectFB-examples 1.5.2
    • SaWMan 1.4.14 (for DirectFB 1.4.14 and 1.5.2)

    Another SaWMan release (1.5.2) will follow with stereoscopic display support including windows with stereo buffers and/or disperity.

    Special thanks to youview for funding the secure fusion work!

    For detailed info click on the news title

    The following are the final changes made for secure fusion:


    • Add _GetID() functions for all core objects.
    • Add permissions for catcher in throw function, e.g. to ref_up/catch, call, attach to reactor...
    • Set object owner to catcher in throw function of surface, window and palette objects for now, but only if the owner has not been set yet. This is enough for the time being.
    • Check object owner in lookup functions and fail if owner is set, but does not match.
    • Turn CoreGraphicsState into a FusionObject to handle reference counting and to get rid of the custom creation/throw/catch code etc.
    • Add CoreGraphicsStateClient_Deinit().
    • Add CoreLayer::GetPrimaryContext().
    • Add CoreLayerRegion::GetSurface() to add surface permissions to region owner.
    • Add CoreSurface::GetPalette() to add palette permissions to surface owner.
    • Add CoreWindow::GetSurface() to add surface permissions to window owner.
    • Add special code for parent and top level window in DFBWindowDescription passing of CoreLayerContext::CreateWindow(). The windows are passed as object arguments to go through the object ownership checks on dispatcher side when looked up by id.
    • Remove LockBuffer and UnlockBuffer from CoreSurface interface and use dfb_surface_lock_buffer() at all locations again.
    • Add CoreSurface::PreLockBuffer(), PreReadBuffer() and PreWriteBuffer() doing all work that needs to write to shared memory, e.g. allocating a buffer, syncing allocations, syncing with accelerator, and then returning the index of the allocation to be used. Call these new functions from dfb_surface_buffer_lock/read/write() and then call into surface pool implementation locally.
    • Add special code for parent window and keys in CoreWindowConfig passing of CoreWindow::SetConfig(). The window is passed as object argument to go through the object ownership checks on dispatcher side when looked up by id. Separately pass the keys as another argument to have it copied and set the pointer in a copy of the config on the dispatcher side.
    • Add attach/detach permission for everyone to input devices.
    • Fix ref up/down for input devices changing from global to local counting.
    • Add ref up/down permission for everyone to input devices.
    • Add execute permission for everyone to layer call.
    • Remove preallocated surface pool for now, instead create a normal surface and copy the data from preallocated area to new surface buffers. This also reenables acceleration for preallocated surfaces which had been broken since DirectFB 1.2. In future versions there will be proper support for preallocated surfaces again.
    • Refactor local and shared surface pools and only use local pool in single app and only shared pool in multi app build.
    • The local surface pool has been heavily simplified to just do the malloc/free instead of the FusionCall code etc.
    • The shared surface pool has been reimplemented to create a file in tmpfs per surface buffer allocation that is writable by slaves, since all Fusion SHM Pools are read only now! This avoids security holes as no heap information is writable and allows for more fine grained permission management per surface buffer. The tmpfs files are currently mapped/unmapped on Lock/Unlock.
    • Add CSPCAPS_READ and CSPCAPS_WRITE being set automatically when the surface pool provides a Read and Write function.


    • Use new security mechanism in linux-fusion 8.5.0
    • Add generic fusion_entry_add_permissions() with plain bit mask.
    • Add per entity type functions, e.g. fusion_call_add_permissions() with specific bit mask.
    • Map shared shared root page read only in slaves.
    • Remove writable flag in shared memory pools (all read only in secure mode). This change is needed as the heap information was writable and therefore not secure enough. Writable shared memory will only exist outside of shared memory pools, e.g. a separate file per surface buffer allocation.
    • Enforce shared memory permissions on file system level, using 0640 instead of 0660, so the master may be run as a different user, but with the slaves being in the same group, see also the shmfile-group option to control which group is being used.
    • Add a field to FusionObject to store the owner's FusionID. At the moment this stays zero until it is set.
    • For now, all skirmishs have default permission to allow lock/unlock for all other Fusionees.


    • Generate TypeName_GetID( ptr ) instead of ptr->

    You can find the release in the "Core" tab on the "Downloads" page.


    2011-07-29   DirectFB is hiring!

    We are searching for a talented software developer for supporting various DirectFB related projects and DirectFB itself.

    The candidate should have at least the following skills:

    • Everyday experience with Linux, preferably as your main OS
    • Solid C/C++ knowledge with (open-) source references
    • Knowledge of the key aspects of 2D graphics programming
    • Debugging skills (using debuggers and being creative :) )
    • Being a reliable team member

    Experience or knowledge about one or more of the following would be much appreciated:

    • Software development for embedded devices
    • Programming 2D/3D graphics accelerators on register level
    • Linux kernel programming
    • Inter process communication
    • Customer relations
    • DirectFB :-)

    You would work in a small but growing team in Berlin/Germany as a permanent employee.

    If you are interested please write to


    2011-07-29   linux-fusion 8.5.1 released

    This release introduces a new security model adding per entity permissions for the secure-fusion mode and will be required for the upcoming DirectFB 1.5.2 release.

    It also fixes compilation problems with linux 3.x.x kernels.

    Remember, that we also provide a dkms .deb package for debian-based distributions in the download section. Using the dkms package will allow your fusion module to be automagically rebuilt if you upgrade your distribution's kernel.


    2011-07-15   DirectFB 1.5.1 release

    This is a minor feature enhancements release with extended colorkeying, special monochrome glyph rendering, color matrix, convolution filter and a pixel format with flashing bit.

    For detailed info click on the news title

    API | IDirectFBSurface

    • Add extended source/destination color keying, no SW implementation so far.
    • Add DFBColorKeyPolarity with DEFAULT and OTHER.
    • Add DFBColorKeyExtended with polarity and lower/upper color.
    • Add IDirectFBSurface::SetSrcColorKeyExtended() and SetDstColorKeyExtended().

    API | IDirectFBSurface

    • Add special monochrome rendering function for characters: DrawMonoGlyphs(). No SW implementation yet.

    API | IDirectFBSurface

    • Add DSBLIT_SRC_COLORMATRIX and SetSrcColorMatrix(). No SW implementation yet.

    API | IDirectFBSurface

    • Add DSBLIT_SRC_CONVOLUTION, SetSrcConvolution() and DFBConvolutionFilter with a 3x3 kernel, scale and bias. No SW implementation yet.

    API | IDirectFBSurface

    • Add RGBAF88871 pixel format support (F is flashing bit, e.g. for ARIB CC)


    • Fix assertion in single app fusion_call_destroy().

    You can find the release in the "Core" tab on the "Downloads" page.


    2011-07-07   The giant DirectFB 1.5.0 release

    Finally, the first release of the new DirectFB 1.5 series has arrived!

    There are lots of extensions and improvements on the way to DirectFB 2.0...

    At the API level we've got stereoscopic viewing support, color spaces, rendering and font extensions, enhanced OpenGL context management, utilities and a new vector graphics oriented rendering interface with a very preliminary implementation.

    Under the hood there's a new secure fusion mode that is explained in this presentation. Furthermore, lots of improvements have been done to libvoodoo and libdirect, but also the software renderer which supports texture mapping now.

    Still, this is only a glimpse, e.g. we also have added VDPAU, PVR2D and enhanced VNC support, as well as improved GLES 2.0 acceleration and support for building the pure Voodoo version (client libraries) with MSVC (Win32 support).

    For detailed info click on the news title

    The following is a summary and still covers the most important changes only!

    API extensions for stereoscopic viewing

    • Add DSCAPS_STEREO (both left & right buffers are allocated).
    • Add DFBScreenEncoderPictureFraming (MONO, STEREO_PACKED/HORIZ/VERT and STEREO_SEQUENTIAL for HDMI 1.4).
    • Add framing to DFBScreenEncoderConfig.
    • Add IDirectFBDisplayLayer::GetStereoDepth() and SetStereoDepth().
    • Add DFBSurfaceStereoEye (LEFT and RIGHT).
    • Add IDirectFBSurface::GetStereoEye() and SetStereoEye().
    • Add IDirectFBSurface::FlipStereo().
    • Add IDirectFBWindow::GetStereoDepth() and SetStereoDepth().

    Color Space extension

    • Add DFBSurfaceColorSpace (RGB, BT601, BT601_FULLRANGE and BT709).
    • Add colorspace to DFBSurfaceDescription.
    • Add colorspace to DFBWindowDescription.
    • Add colorspace to DFBDisplayLayerConfig.
    • Add dfb_colorspace_name().
    • Add colorspace argument to dfb_surface_create_simple().


    • Add GetUnderline() to get the position and thickness of the underline.
    • Add DFFA_STYLE_ITALIC to load italic style from same file.
    • Add DFFA_VERTICAL_LAYOUT to load vertical layout.


    • Add DSRO_WRITE_MASK_BITS and SetWriteMaskBits().
    • Add SetRop() with DFBSurfaceRopCode, DFBSurfacePatternMode, fg/bg color and pattern bits
    • Add DSPF_ABGR


    • Add new interfaces for better OpenGL integration.


    • Add DFBBox (x1, y1, x2, y2), a rectangle including the top left but not the bottom right endpoint.
    • Add lots of macros for geometry, types, etc.
    • Add lots of utility functions, make some inline.
    • Add DFXL_FILLQUADRANGLE (only internally used so far).
    • Add DFBSurfaceID.
    • Add DFB_MASK_BYTE0-3 macros, e.g. for SetWriteMaskBits()


    • Initial checkin of Water API and simple test implementation.


    • Add extension introducing DFBWindowsWatcher registering, also proxy code. DFBWindowsWatcher is a function pointer table that can be filled by a client application to receive all information about the window stack, windows, configs, states, focus changes etc...


    • Lots of abstractions added for threads, mutexes, wait queues, files and many more...
    • Add fastlz based compression/decompression.


    • Defer calls from kernel (destructors) to a separate thread.
    • Implement fusion_reactor_attach/dispatch_channel() for single app mode.
    • Introduce fusion_call_execute3() with variable return data. A new call handler type gets return pointer and size to return blocks of data to the caller, instead of the single int value.
    • Add reference passing via throw and catch. A Fusionee having a local reference may call fusion_ref_throw() with another Fusionee's ID as catcher argument. That Fusionee may then call fusion_ref_catch() which will remove that local reference of the thrower. The catcher has to get a local reference itself beforehand, otherwise the reference is just being removed.

    Secure Fusion

    • New run time option 'secure-fusion' to select new secure fusion mode
    • Mount shared memory pools read only in slaves.
    • Use FusionCall v3 for IPC calls instead of modifying shared memory directly
    • Flux generates code for replacing all direct core calls by interfaces, more details in Secure Fusion documentation


    • Introduce VoodooLink for abstraction of transport, implemented for Win32 and Unix.
    • Add VoodooPlayAddressType, VoodooPlayAddress, VOODOO_PLAY_INET_ADDR and voodoo_play_from_inet_addr().
    • Add "play-broadcast" option to force a certain address to be used for discovery.
    • Single IO thread instead of two, VoodooLink with SendReceive/WakeUp methods.
    • Rework Voodoo code using C++, with old C API as wrapper.
    • Add a lower level packet layer with transparent compression support.
    • New runtime option 'compression-min', when non-zero compress packets with minimum size (default zero, no compression).
    • New runtime option 'link-raw' to initiate a connection with old base layer.
    • Improved performance using thread local output buffer (async bench 4x speed).
    • Compatibility with old and new base protocol, auto compression etc.
    • Improve raw connection code, big speedup.
    • Major cleanup, optimizations, bug fixes...
    • Introduce VoodooDispatcher with thread based implementation
    • Add 'link-packet' option to force packet mode link.
    • Major improvements, fixes for disconnect, resource cleanup, ref counting... With these changes you can run a single process dfbproxy and connect with multiple clients, spawning multiple threads in the server.
    • Add voodoo_link_init_local() for Unix Domain sockets.


    • Implement asynchronous flipping control, e.g. to avoid input lags
    • Major improvements, fixes for ref counting, cleanup... IDirectFBDisplayLayer::SetBackgroundMode/Image...
    • Add resource-id to be used for surfaces if not specified by application (client config).

    Software Renderer

    • Optimize fast path ARGB SrcOver and add fast path ARGB SrcOver premultiply.
    • Implement TextureTriangles() and split code into a few files.
    • Implement Blit() with matrix via gTextureTriangle() for now.
    • Use Genefx_TextureTrianglesAffine() for BatchBlit() with matrix.
    • DrawString() with matrix is working with ARGB font format now.
    • Add software affine transform for StretchBlit
    • Implement colorkeyed texture mapping, adding Sop_PFI_TEX_Kto_Dacc.
    • Implement clipping in TextureTriangle, add TileBlit with matrix, more accuracy, fixes


    • When Shift is pressed in CapsLock state send small letters.


    • Add Mesa/DRM system module and GLES2 graphics acceleration
    • Add IDirectFBGL2 and IDirectFBGL2Context implementation.


    • Added experimental fragment shader for source colorkeying.
    • Fix color keying by using Andi's shader from gl driver.
    • other shader fixes
    • fix clipping
    • fix off-by-one error in DrawRectangle()
    • Enable GLES 2.0 acceleration with PVR2D/EGL


    • New X11/VDPAU based system module derived from original X11 module.
    • Add VDPAU accelerated rendering module (graphics driver).
    • Multi application core support (using FusionCall2), major cleanup.


    • Preliminary PVR2D system module, using PVR2DMemAlloc.
    • Add graphics driver using PVR2DBlt API


    • Almost reimplement VNC system module


    • Initial PSP support added


    • Lower X11 surface pool priority as it is currently not writable for slaves.
    • Add CSCAPS_PREFER_SHM for testing SecureFusion, otherwise local pool is used, breaking across processes
    • Add missing detach from shm images, only master for now.


    • correctly setup iDCT scale factors for libjpeg version >= 7


    • Add libmng based video provider.


    • Add few more super interfaces


    • Add DSBF_SRCALPHASAT implementation, clamp sum of blending.


    • Print vendor and model of each received info.


    • Introduce new language for interfaces, with parser/code generator.
    • Use Flux to generate all code for hiding FusionCalls behind local/proxy interfaces.
    • The Flux compiler generates .cpp and .h containing abstract interface definition and two implementations, one generated 'requestor' implementation making FusionCalls and one 'real' implementation only being declared, implemented manually in _real.cpp file. Next to these there's code generated to dispatch incoming FusionCalls to the real implementation.
    • A C wrapper is also generated for minimizing code changes outside of new files, but the new C++ API will be used in 1.6 branch, when Secure Fusion has stabilized in 1.5 branch.

    Debian Packaging

    • first try of 1.5 packages


    • Add Win32 support building the pure Voodoo version of DirectFB with MSVC!
    • Added DIRECT/FUSION/VOODOO/DIRECTFB_API macro for imports/exports of public library functions.
    • Changed static initializers and constructors/destructors to init/deinit functions called via DllMain.

    You can find the release in the "Core" tab on the "Downloads" page.


    2011-06-29   Server up and running again

    Please excuse any trouble you may have had while this server was offline due to a broken power supply yesterday.

    A backup server had been in place, but DNS caches have probably given trouble to some people still.

    Anyhow, we're up and running with a new power supply, also there will be a completely new hardware in a few weeks, a quad core system with 4GB of RAM :-D


    2011-06-22   New presentations available

    There are two new presentations available. Even if they're not fully self explaining, this should not keep us from sharing them with you.


    2011-06-21   Secure Fusion taking off

    We're following our road map and have progressed with the first step.
    Slave processes map the shared memory pools (except those for pixel data) read only to increase security and safety. Any function requiring write access to meta data like object creation or manipulation, e.g. moving a window, are going via an IPC call. Those have been improved as well, just sending data back and forth without shared memory.
    The penguin demo df_andi is already running!


    2011-06-03   DirectFB based UI toolkit project

    ilixi is a new C++ UI toolkit project. It is being developed using DirectFB with embedded Linux systems in mind. There are still some widgets and features missing. Therefore, this is an opportunity for anyone who is willing to contribute and practice some DirectFB skills.

    Please follow the link for further information and a demo video.


    2011-05-27   DirectFB 1.4.13

    This release on the API freeze branch has finally got a software texture mapping implementation!

    For detailed info click on the news title


    • Implement TextureTriangles() and blitting with matrix (affine only for now). Next to gTextureTriangles() there are two new operations, one for texture mapping a scanline into accumulator (Sop_PFI_TEX_to_Dacc) and one for direct mapping into output buffer with same format and no flags (Bop_PFI_TEX_to_Aop_PFI). These operations simply interpolate s and t along the scanline. For perspective correct TextureTriangles() we need to add Sop_PFI_TEXz_to_Dacc or similar.
    • Optimize fast path ARGB SrcOver and add fast path ARGB SrcOver premultiply.
    • Split code into a few files.


    • Fix preclipping of fonts in some cases (broken since 1.4.4)


    • Add IDirectFBSurface::FillTrapezoids() implementations
    • Add IDirectFBDisplayLayer::GetRotation() implementations
    • Add dispatcher code for IDirectFBSurface::Read() which seemed lost
    • Discard unsupported DSDESC_PALETTE and DSDESC_PREALLOCATED flags


    • Fix small memory leak in DirectGetInterface()


    • Add a few options regarding scaling, transform...


    • Fix out of tree builds...
    • libidirectfbfont_ft2 must be linked against libm as it uses sin() and cos() now

    You can find the release in the "Core" tab on the "Downloads" page.


    2011-05-11   Announcing Project "Kleistpark" - OpenWRT based DirectFB distribution

    This project is still in very early stages, but we would like to give everyone the oppurtunity to test right from the start.

    Right now we created an installer which checks out OpenWRT backfire from svn, applies some patches which adds a new x86 target called "Kleistpark" and a new package feed which includes WebKitDFB and its dependencies.
    We also had to include a patch to bring up DirectFB in OpenWRT to 1.4.12.

    Here are the instructions to build your own Kleistpark VirtualBox image:

    git clone git://
    cd kleistpark/installer
    cd backfire
    (this will take a long time)

    Now your resulting image will be in bin/x86/openwrt-x86-kleistpark-combined-ext2.vdi

    You have to create a VM with an emulated serial port, and with an IDE controller, or else it wont boot

    After booting you have to use udhcpc if you want an IP from your DHCP server. After that try starting WebKitDFB which should bring you to in an instant :)


    2011-04-09   linux-fusion 8.3.1 released

    This release has various bugfixes for process shutdown issues which led to kernel memory corruption.

    We recommend everyone using the multi application core to upgrade.

    Remember, that we also provide a dkms .deb package for debian-based distributions, which was tested with Ubuntu 10.10 and 11.04 alpha, but should work with other distributions too. Using the dkms package will allow your fusion module to be automagically rebuilt if you upgrade your distribution's kernel.


    2011-04-05   DirectFB 1.4.12 and roadmap

    Small update, more to come in 1.4.13 shortly :)

    Check the detailed roadmap (page top) including the new multi app support without shared memory or global locks in 1.6 unstable branch, while the 1.5 series will get all API extensions based on the old architecture.

    For detailed info click on the news title

    API | IDirectFBFont

    • Add DFFA_AUTOHINTING forcing use of the auto-hinter over the font's native hinter.
    • Add DFFA_SOFTHINTING selecting a lighter hinting algorithm. It generates glyphs which are more fuzzy, but better resemble their original shape. It implies use of the auto-hinter.

    Runtime Options

    • Add "no-core-sighandler" option to disable core signal handler for emergency shutdowns.

    Graphics Core

    • Support software clipping for vertical and horizontal flips. This does not work in combination with DSBLIT_ROTATE_ flags yet. The software driver cannot combine DSBLIT_FLIP_ and DSBLIT_ROTATE_ anyway, correct clipping here would cause a segfault in software rendering code.
    • When falling back to triangles in dfb_gfxcard_filltrapezoids() the return value of card->funcs.FillTriangle() was misinterpreted.


    • No longer try to call the constructor function directly as the name does not match the module name anyhow anymore.


    • Fix builds outside of the source directory.


    • Use 32bit message serials. Sorry for breaking compatibility, but most known applications use 32bit serials already anyhow...


    • Update calls to libshbeu for new API. Tested on MS7724 board (SH7724) using df_andi.
    • Use pkg-config to detect and use SH772x dependencies.
    • Register phys memory with UIOMux. This significantly improves the performance on sh772x devices. The sh772x gfx code uses an external library (libshbeu) to access the BEU hardware. In order for this library to understand that the virtual addresses passed to it are for contiguous memory, the memory must be registered with another external library (UIOMux).
    • Update calls to libshjpeg for current API.
    • Fix DSPF_RGB24 handling.
    • Remove restriction for only one NV12 layer. The BEU driver can handle any mixture of color formats on each of inputs.

    You can find the release in the "Core" tab on the "Downloads" page.


    2011-03-30   linux-fusion 8.3.0 released

    This release fixes a kernel oops followed by a complete system freeze that could occur on some systems, when DirectFB applications unexpectedly quit. We strongly recommend to update if you are using DirectFB with multi-application core.

    This new release is also required for the new x11vdpau and vnc systems in the unstable 1.5 branch and has a compile-fix for the upcoming 2.6.39 kernel.

    We also provide a dkms .deb package for debian-based distributions, which was tested with Ubuntu 10.10 and 11.04 alpha, but should work with other distributions too. Using the dkms package will allow your fusion module to be automagically rebuilt if you upgrade your distribution's kernel.


    2011-02-07   linux-fusion 8.2.1 released

    This release fixes compilation with newer kernels. Download


    2011-01-29   Opera SDK 2.9 on DirectFB

    "... He said that in addition to the common set-top box API, the SDK uses Broadcom's DirectFB graphics porting layers to run smooth page animations and effects using 2D and 3D graphics engines."

    Here's the full article.

    dok / Main / News