Home | Back
1.0.1
-----

API
- Extend list of custom key definitions: DIKS_CUSTOM<0-99>

API | IDirectFB
- Fix code that controls single/double buffer window creation for primary surfaces in windowed mode. If
  DSCAPS_FLIPPING is set, it uses one buffer which already requires a Flip due to the window. Only if
  DOUBLE is set explicitly, create two buffers.

API | IDirectFBFont
- Added DFFA_FIXEDCLIP that can be used in addition to fixed advance
  and cuts off glyphs if they are wider than that.

API | IDirectFBImageProvider
- Added DFB_INCOMPLETE and return it from image providers
  if rendering has been aborted by the render callback.

Pixel formats
- Added DSPF_RGB444 and DSPF_RGB555, thanks to Daniel J Laird!

Core
- Use a Skirmish to synchronize slaves with the master's post core initialization.
  The new function dfb_core_activate() will allow other processes to join.
- Explicit shutdown order of core parts and pools.

Graphics Core
- Validate clip in dfb_state_update() also if destination
  was just set manually, not via dfb_state_set_destination().

Layer Core
- Fix potential dead lock in layer context initialization.
- Fix potential dead lock in dfb_layer_context_get_primary_region().

Surface Core
- dfb_surface_reformat() no longer fails immediatly if the surface is locked,
  instead it waits for 3 loops before doing it.

libdirect
- Added direct_thread_detach() and direct_thread_is_detached().
- Use pthread cleanup to free the DirectThread structure etc.
- Added direct_thread_get_tid().
- Avoid "unused warning" if debug domains are declared, but not used.
- Fix 64 bit symbol address parsing in trace code.
- Fix missing target directory for nm-n files.
- Readded "%.nm" as an alternative to "nm-n.%".
- Added direct_sched_yield().
- Open log file with mode 0664. Automatically flush stderr.
- Added direct_list_foreach_reverse().
- Added direct_serial_check() returning true if the target serial is not higher.
- Flush stdout and stderr before showing the signal handler message.

libfusion
- Close file descriptor of shared memory files and be happy with just the
  static mmap() and the filename for using truncate() instead of ftruncate().
- Reinitialize entries in static pool array properly.
- Added fusion_hash_set_autofree() to enable/disable automatic freeing of values and/or keys.
- Use FusionHash for arena fields.
- Fix general dead lock problem with reactors by using read/write locks.
- Fix zero FusionID in forked process by entering the world after reopening it.
- Added fusion_dispatcher_tid().
- Fix lock order in fusion_shm_pool_destroy().
- Added fusion_reactor_set_lock_only() which does not lock and use it in fusion_object_set_lock()
  as this is called during object initialization.
- Added FUSION_SKIRMISH_ASSERT macro for debug mode
  failing if the skirmish is not locked by the current thread.

Software Rendering
- Fixed RGB24 to RGB16 conversion.
- Fix ARGB on RGB16 blending. Use Duff's Device and optimize for 0% and 100% opaque.
- Fix hi/lo mixup for big/little endian in 32 bit wise 16 bit color keying code.

PNG Image provider
- Avoid abort() caused by libpng and return an error instead.
- Plug a memory leak in the PNG image provider. Thanks to Eugene Everson.
- Fixes for grayscale PNGs.

Mach64 driver
- Added RGB444 and RGB555 support.

Matrox driver
- Added RGB444 and RGB555 support.
- Eliminate libsysfs dependency from i2c detection.

nVidia driver
- Added support for RGB555.
- Fixed support for premultiplied surfaces.
- Dropped down blits from system memory on the NV20 (crashes on Xbox).
- Optimizations and cleanup.

Radeon driver
- Support RGB555 and RGB444.
- RGB555 support on Overlay and CRTC2.
- Removed limit of 8x8 surfaces:
  apparently it comes from the Rage128 driver but it doesn't apply to Radeon(s).

Unichrome driver
- Fix blitting of planar surfaces (YV12/I420) when a source rectangle is used
  or the source and destination surfaces are different sizes.

Linux Input driver
- Fix evdev ioctl() parameters.
- Only use FBDev system module data in linux input driver if system is built.
- Don't bail out with other system modules if LINUX_INPUT_USE_FBDEV is not set.

FBDev System module
- Add source rectangle support to fbdev layer.
- Check fbdev pan/wrap capabilities for double/triple buffering.

DevMem System module
- Added generic /dev/mem based system module.
- There's no screen or layer registered, a graphics driver is required.
- Added some new runtime options for the new system module.
- video-phys=<hexaddress> sets the physical start of video memory.
- video-length=<bytes> sets the length of video memory.
- mmio-phys=<hexaddress> sets the physical start of MMIO area.
- mmio-length=<bytes> sets the length of MMIO area.
- accelerator=<id> sets the accelerator ID for selecting the graphics driver.

SDL System module
- Support different DirectFB formats on 32 and 16 bit displays.

X11 System module
- Support different DirectFB formats on 32 and 16 bit displays.
- Use an ShmImage with twice the height of the output. Alternate between bottom and top image and
  do XSync() BEFORE doing the next XShmPutImage(). Only call XShmPutImage() for the updated region.
- Takes advantage of SMP now.
- Added true keymap support to X11 input driver. Read the X11 keymap entries properly and translate to
  identifier and symbols. Only send key code in events. X KeySym to DFBInputDeviceKeySymbol translation
  might not be complete for everyone.
- Provide the original timestamps from the X events.
- Use DIEF_FOLLOW for x/y motion.
- Added call to XFlush() after XShmPutImage() boosting df_andi from 100 to 130 FPS
  and making window stack updates really smooth and no longer distorted.
- Use preallocated shared memory for calls, the layer context lock allows this.
- Support non-SHM connections.
- Fall back to non-shm if XShmAttach() or XShmPutImage() fail after XShmQuesryExtension() returned success.
- Handle expose events.
- Enable X11 System Module by default.

Default WM module
- Pan the layer to follow the mouse cursor (aka. virtual resolution).

dfbdump tool
- List buffers in video memory if "-s" is passed.

directfb-csource tool
-  Add --raw option to directfb-csource to allow encoding data files in headers


1.0.0
-----

libfusion
- Use local memory for FusionVector (D_MALLOC instead of SHMALLOC) if pool is NULL in fusion_vector_init().

SDL Input
- Thanks to Ben Combee for adding DIEF_FOLLOW support!

dfbdump tool
- Align output of summarized surface memory again.


1.0.0-rc5
---------

API | IDirectFBVideoProvider
- Another (binary compatible) API change: added DVSTATE_BUFFERING.

Build Options
- This patch adds '--with-message-size=SIZE' to allow fusion messages up to SIZE bytes (default is 1024).

Runtime Options
- New option "shmfile-group=<groupname>" to set the group that owns shared memory files.
- Added option "[no-]thrifty-surface-buffers" to free sysmem instance on xfer to video memory.
- Don't abort if an unsupported option is found, but give a fat warning.
- New option "vt-num=<num>" to use given VT instead of current/new one.

Graphics Core
- Added dfb_gfxcard_get_device_data().
- This fixes unconditional access to conditionally allocated font row data, thanks to Ben Combee!
- Surface manager always deallocates all auto video instances when suspending.
  This has the nice side effect of free space being defragmented after resume :)

Window Core
- Don't notify WM if cursor opacity didn't actually change.

Software Rendering
- Added fast RGB24 to RGB16 conversion (little endian only).

libdirect (optional part)
- Finally found the way to embed MPEG streams within the RMF container.
- Dropped down RTSP seekability (never worked fine).

PNG Image Provider
- Implemented 1 and 2 bit indexed PNG support.

Keyboard (TTY)
- Added keypad equal support.

Linux Input
- Added keypad equal support.

H3600 Touchscreen
- Thanks to Philip Jägenstedt :philipj 0pera c0m: for fixing the H3600 check!

FBDev System
- Improved robustness of VT switching, e.g. for rapidly switching back and forth.
- Set FD_CLOEXEC on the frame buffer device file descriptor.

dfbdump tool
- Show creator of references (of windows, surfaces, contexts etc).


1.0.0-rc4
---------

FBDev System Module
- Many thanks to Vaclav Slavik for fixing up VT initialization.
  Check the ChangeLog for a detailed description.

Unichrome Driver
- Allow for improved timing of video layer flips when the FIELD_PARITY option
  is in use.  The improvement is only possible if the kernel framebuffer
  supports it.  If not, we do the best we can but occasional glitches may
  occur under high processor load.

Misc/minor (usually not in a summary, but due to the few changes...)
- Distribute autogen.sh
- Add new lines to work around nested structs being taken by the doc generator.
- Avoid cutting away the last pixel of a planar yuv row.


1.0.0-rc3
---------

API
- Added IDirectFBWindow::SetBounds() to do a move and resize in one step.
- New window option DWOP_SCALE prevents the surface from being resized when the window
  size on screen changes, i.e. via IDirectFBWindow::Resize() or SetBounds().
- The surface can be resized separately using IDirectFBWindow::ResizeSurface() if needed.
- Enable DWOP_SCALE by default for windowed primary surface (IDirectFB::CreateSurface).
- Fixed DIKT_UNICODE detection in DFB_KEY_TYPE(symbol) for values > 255.

Runtime Options
- New runtime option "scaled=<width>x<height>" scales the window to the specified size
  for 'force-windowed' apps. The surface size will not be affected, still set via "mode=".
- Added options "debugmem" and "debugshm" to turn on local/shared memory allocation
  debugging separately from "debug" option.
- Let "debugmem" option only influence output of allocations, but always track
  them in debug enabled builds.
- Added option "no-software" to disable software fallbacks. This is mainly for
  debugging/profiling purpose. It will print out a warning with the operation
  and flags each time a fallback would occur.
- Read DIRECTFB_SESSION variable after reading all files and DFBARGS,
  so only the command line can override the current session.
- Added runtime option "force-slave" to always enter as a slave, waiting for
  the master, if not already there. This feature only works with recent kernel module.

Graphics Core
- Added InvalidateState() at driver level API to notify the driver that
  the current rendering state is no longer valid.

Surface Core
- Added ability to let only one Fusionee write to a surface,
  set via owner field of CoreSurface.
- Don't try to immediately allocate the new video instance when reallocating
  a buffer (unless the policy is CSP_VIDEOONLY). Fixes corruption problems
  in XDirectFB caused by window resize failing.
- Dispatch surface's notifications directly (if local).
  This change fixes an assertion failure that happens in the following case:
  Resize (Downsize) Surface ... and immediatly after ... Blit to Surface.

Layer Core
- Support DLBM_BACKSYSTEM as a (driver) default.

Window Core
- Give the WM a chance to provide its own surface.
  The WM may link a surface to the window in the PreConfigureWindow() call.
- Dispatch window's notifications directly (if local).

Software Rendering
- Added Bop_argb_blend_alphachannel_src_invsrc_Aop_PFI[] as a fast path for blending
  from ARGB with SRCALPHA / INVSRCALPHA. Implemented for RGB16 and RGB32 so far.
- Use cpp templates for 16bpp and 32bpp code.
- Removes duplicated code.
- Implements some missing gfx funcs.
- Fixes missing EXPAND() calls in some acc funcs.
- Fixes blit direction handling in some 16bpp blit funcs.

Utils
- Added some basic update region management (DFBUpdates) with functions for adding
  updates, keeping a maximum number of regions, merging if possible or required.
  First version, IQ 10.

libdirect
- Autodetect clock skew.
- Added direct_list_move_to_front( **list, *link ).
- Added direct_snputs(s,d,n) to set a string with a maximum size including the
  zero termination. This acts like a strncpy(d,s,n), but always terminates the
  string like snprintf(d,n,"%s",s) which is more or less slower.
- If trace support and shared libraries are enabled, for each library to install,
  also generate a file containing the output of "nm -n <that library>".
  That's the command that is used at runtime via popen().
- Now the code first checks if it can fopen() a file with the same name as the one passed
  to "nm -n", but with an "nm-n." prefix. This is both a performance improvement and a nice
  solution for (embedded) targets without 'nm' being available or fast enough.

libdirect (optional part)
- Implemented seekability over RTSP.

libfusion
- Use MADV_REMOVE if possible to give memory back to the system after freeing a block
  in the middle of the heap.
- No more signal handler used, because no more mremap() is done, only ftruncate()
  is called to resize the shared memory heap. The initial mmap() now covers the whole
  address range.
- Initialize the heap info table to serve for the maximum pool size specified
  at creation of the pool. Previously, the initial table served for 4 MB heap.
  If there were more allocations, the heap info table was reallocated at the
  end of the heap, i.e. at 4 MB making it impossible to ever go back below
  the 4 MB heap size. Next barrier was 8 MB, 16 MB ...these are gone.
- The maximum size specified during creation of a pool is now taken as an
  additional size after the heap info table. Previously, it could happen that
  the size was too small to host the fixed sized heap info table.
- Include Fusion ID of allocator and offset within heap in shm allocation debug info.
- Print shared memory leaks on pool shutdown (debug mode and 'debugshm' option).
- Added fusion_reactor_direct(bool) to specify whether local message handlers (reactions)
  should be called directly, which has been the previous behaviour for years...
- Fall back to /dev/shm if no mount point could be determined.
- Added FCEF_NODIRECT which forces execution of the call in the Fusion
  Dispatch thread even if it's the calling process' own call.
- Only call fusion_sync() if the pool that is to be destroyed has objects.
- Fixed fusion_sync() timeout during XDirectFB shutdown.
- Fixed concurrent startup of master and slaves.

Voodoo
- Missing methods added and more implemented.

PNG Image Provider
- Support loading of indexed PNG files directly to LUT8 surface.
- Provide palette of image via GetSurfaceDescription().

FT2 Font
- Added support for LUT2 fonts for using fast antialiased text rendering with indexed to indexed translation.
- Thanks to Vaclav Slavik for fixing loading of mono-only fonts.

Default WM
- Added support for scaled windows.
- Make cursor area backing store surface same format as layer.
- Use DFBUpdates to manage an update queue and do optimizations like taking
  the bounding box instead of multiple smaller regions if the number of pixels
  in the bounding box is not much higher than the total of the smaller ones.
- Even this takes the number of smaller regions into account, because of the
  increasing overhead per region.
- Next to performance, the visual experience is enhanced by coalesced updates.
- Another advantage is that when multiple regions are updated, first it renders
  all regions and then it flips all regions. Previously, each time the flip was
  done immediately for each rendered region.

Radeon Driver
- Implemented StretchBlit, TextureTriangles, Alphablend, Deinterlacing
  for the R300 chipset family, thanks to Timon +timon37 * interia-pl+!!!
- Support color keying for TMU based functions on R300.

Unichrome Driver
- Implemented acceleration for blits involving the AiRGB pixel format.
- DSPF_AiRGB is now supported as a source format for most blits and stretch blits.
- Blits _to_ AiRGB surfaces are also accelerated provided they don't require blending.

Linux Input
- Added Touchpad support!

tslib Input
- New driver, thanks to Shane Volpe!

dfbdump tool
- Added the option "-p" to pause() dfbdump after initialization, e.g.
  to run it as a master and look at the foot print or other things that
  are there before any application specific stuff happens.
- Show allocations in both DirectFB shared memory pools with option "-s".


1.0.0-rc2
---------

API
- 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 <gxkahn-et-gmail.com>!

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

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

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

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

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

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

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

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

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


1.0.0-rc1
---------

API
- 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 <sridewa@gmail.com>.
- 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 <danieljlaird@hotmail.com>.
- Populating screen API a bit more, thanks to Daniel Laird <danieljlaird@hotmail.com>.
- 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 <stefan@lucke.in-berlin.de>.
- 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.

Fonts
- 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().
- Added SBF_SUSPENDED.
- 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.

Misc
- Added dfb_rectangle_subtract() to subtract insets from rectangle.
- Added DFB_RECTANGLE_CONTAINS_POINT and DFB_REGION_CONTAINS_POINT macros.
- 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.

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

libfusion
- 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 <stefan@lucke.in-berlin.de>.

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 <christer.palm@pulsen.se>: fixes word swapping on PPC.

Unichrome driver
- Disable hardware cursor in VIA_REG_CURSOR_MODE. Thanks to Michel van
  Noorloos <michel.van.noorloos@sioux.nl>.
- Added PCI ID for CN700.

DynaPro input driver
- New 3M DynaPro Touchscreen driver, thanks to Pär Degerman <parde@ikp.liu.se>!

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.


0.9.25
------

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

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

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

libvoodoo
- 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
- Support for DSDRAW_SRC_PREMULTIPLY.
- 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
- Added support for DSDRAW_SRC_PREMULTIPLY and DSBLIT_SRC_PREMULTCOLOR.
- 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 <nathanael@gnat.ca>!

PenMount Input driver
- Added input driver for PenMount 9509 serial touchscreen.

PS/2 Input driver
- Applied patch from Christian Krause <krause.chr@gmail.com> 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.


0.9.24
------

- Added missing source (header) files to their appropriate Makefile.am, mostly from voodoo.
- Don't use fusion_reactor_free() too early in case of an error in init_devices().
  Thanks to "Jakub Bogusz <qboosh@pld-linux.org>" for this and other patches.
- IDirectFBVideoProvider::GetPos() returns DFB_EOF to notify end-of-playback.
  After stream has reached the end, the next call to PlayTo()
  restarts playback from the beginning.
- No need for <linux/wm97xx.h> and <linux/sisfb.h> anymore.
- Build all graphics drivers without checking for FB_ACCEL_* in <linux/fb.h>,
  because we have a fallback for each of those ids.
- Don't build cle266 by default as it's obsolete because of the unichrome driver.


0.9.23
------

Authors
- Added "Claudio Ciccani <klan82@cheapnet.it>" to main authors,
  welcome number five and thanks for your appreciated work :-)

API
- Added IDirectFBSurface::DisableAcceleration( DFBAccelerationMask mask ).
- Added DSBLIT_SRC_PREMULTCOLOR which modulates the source color with the
  color alpha value only.
- Replaced IDirectFB::GetCardCapabilities() by GetDeviceDescription()
  and DFBCardCapabilities by DFBGraphicsDeviceDescription which contains
  additional information like device and driver name, version etc.
- Added more enums to the autogenerated directfb_strings.h.
- Added errorcode DFB_EOF.
- Added DSBLIT_XOR.
- Added universal event class for custom usage with variable size. New structure DFBUniversalEvent
  has a 'clazz' and a 'size' member. The clazz is always DFEC_UNIVERSAL and the size is at least
  sizeof(DFBUniversalEvent). There are no other members, but any amount of additional data may
  follow according to the specified size. Best usage would be to derive from the struct.
- Added new input event flag DIEF_REPEAT indicating a repeated key or button press.
- Support fractional font sizes in DFBFontDescription.
- Added IDirectFBDataBuffer::CreateVideoProvider().
- Added IDirectFBDataBuffer::Finish(): used to notify a streaming databuffer that the end-of-file has been reached.

Runtime Options
- Fixed pixelformat=NV21 option.
- Added option 'busid' to specify the graphics card bus id (unused if sysfs support is enabled).

Build Options
- Allow predefinition of FREETYPE_CFLAGS and FREETYPE_LIBS outside of configure.
- New configure option "--with-sysroot=DIR" lets you prepend a path to the runtime library/module paths.

Graphics Core
- Added support for system to video memory blits in (semi-)hardware.
- Some 24bit big endian fixes, thanks to Mark Salter <msalter@redhat.com>!
- Added dfb_gfxcard_invalidate_state() which sets the state pointer to NULL
  and therefore forces a full SetState() before the next operation is executed.
- If the destination has premultiplied alpha do real Porter/Duff SRC_OVER
  composition for glyphs.
- Fixed build_clipped_rectangle_outlines() to handle special cases
  where width and/or height is/are one or two.
- Take into consideration DSDRAW_DST_COLORKEY and DSDRAW_XOR when drawing strings.
- Added RGB332 and LUT8 support to dfb_surface_dump().
- Fixed artifacts produced by clipped triangles, thanks to Damian Kowalewski <damian.kowalewski@mail.mcgill.ca>!

Layer & Screen Core
- Fixed missing updates to the hardware state under some circumstances.
- It's allowed to create and use windows in exclusive mode, showing the own windows only, of course.
- Changed EnableCursor() to be allowed in exclusive mode, too.
- Added dfb_screens_hook_primary() using it in some drivers instead of dfb_screen_register_primary().
- During flip using blitting, wait for pending writes to the back buffer before issuing
  the blit command from back to front buffer to avoid lags caused by too much queued commands.

Windowing Core
- Support windows with premultiplied alpha by checking if their surface has DSCAPS_PREMULTIPLIED.
- Support premultiplied cursor shapes.
- If during window creation the pixel format for windows with an alpha channel is
  unspecified, don't always take DSPF_ARGB, but the layer's format if it has alpha.

Software Rasterizer
- Fixed inverted YV12 colors.
- Changed Bop_a8_set_alphapixel_Aop_argb() to be a fast path for real SRC_OVER
  DrawString() that uses DSBLIT_SRC_PREMULTIPLY and DSBLIT_BLEND_ALPHACHANNEL
  with SrcBlend = ONE and DstBlend = INVSRCALPHA. Other formats will follow.
- Fixed DSDRAW_SRC_PREMULTIPLY if used without blending.
- Implemented DSBLIT_SRC_PREMULTCOLOR.
- Added optimization for drawing blended with Src = ONE, Dst = ZERO.
- Improved Dacc_YCbCr_to_RGB_MMX.
- Fixed A8 to A8 font rendering.
- Added some functions optimized for 64bit architectures.
- Added duff's device for 8 bit color keying.

Image Loading
- Premultiply image data when loading into premultiplied alpha surfaces.
- Limit number of weights to 64 in x and y direction for down scaling. Without this
  limitation down scaling to 1x1 or similar could take minutes on embedded platforms.
- If JFIF or Exif header detection failed, try detecting by filename extension.
- For PNGs with alpha don't always suggest DSPF_ARGB, but the primary layer format if it has alpha.

Font Loading
- If the font format is ARGB, use premultiplied font surfaces.
- Use "signed char" explicitly to fix kerning in FT2 loader on PPC, thanks to Uli <Uli.H@triple-dragon.org>!
- Support fractional font sizes in FT2 loader.
- Fixed segmentation fault when loading OpenType fonts with FT2 loader.

libdirect
- A lot of code is using D_DEBUG_AT, D_ASSERT, D_MAGIC_ASSERT etc. now.
- Added D_MAGIC_ASSUME.
- Added D_FLAGS_ASSERT(flags,f) being D_ASSERT( D_FLAGS_ARE_IN(flags,f) ).
- Protect against bogus siginfo_t pointer by checking if it's smaller than 0x100.
- Some changes to support KallistiOS.
- Enable X86 memcpy()s on AMD64.
- Added a generic memcpy() for 64bit Architectures.
- MMX and SSE support on AMD64.
- Fixed a bug in direct_list_remove()! If the last item is removed while other items exist,
  the first item's "prev" pointer was not updated (pointing to the last element).
- Added low level logging abstraction. Added runtime options "log-file = <name>"
  and "log-udp = <host>:<port>" for configuring the default log.
- Added direct_thread_set_name() for setting the name of threads that haven't been created by direct_thread_create().
- Added DirectStream, a wrapper for accessing files locally and through network (http, ftp and generic tcp).

libfusion
- Added fusion_object_get() that gets a pool and an object id and returns
  the appropriate object with a local reference added to it. If the object
  is not found DFB_IDNOTFOUND is returned, or any abnormal other error from
  locking or referencing.
- Added FusionObjectID to replace plain int usage.
- Fixed an evil dead lock that only occured by moving a window with one of my new mice,
  having superior precision generating lots of events, thanks for spotting this bug, Logitech :)
- Fixed a rare crash in single application mode, thanks to Mark Adams <mark147m@gmail.com>!

i830
- Fixed multi application support, but it only works with root privileges so far.
- Fixes for coexistence with intelfb and for color adjustments,
  thanks to Sylvain Meyer <sylvain.meyer@worldonline.fr>!

i810
- Implemented destination color keying for overlay.
- Merged back multi app fixed from i830 driver.

Mach64
- Cleaned up register definitions and added all known register names.
- Improved chip type detection.
- Made LCD register access work on 3D Rage LT.
- Big overlay code update including support for DLOP_DEINTERLACING.
- Scaler/3D acceleration now works on older GT chips. Tested on Rage II+ and IIC.
- ARGB4444 support for GT chips.
- Other minor fixes.

Matrox
- Always use alphamode = ALPHACHANNEL.
- Implemented DSBLIT_SRC_PREMULTCOLOR using the Color ALU. If it's already
  used for colorizing, simply modulate the color values with the alpha,
  otherwise overwrite them.

nVidia
- Rewrite of the driver, following the structure of other drivers, e.g. Matrox.
- Overlay and blitting supports Deinterlacing.
- WaitForSync no longer burns the CPU (but actually requires a 2.6 kernel).
- Decide texture buffer size according to available video memory.
- StretchBlit() on A8,LUT8,RGB332 (>= NV20).
- FillRectangle(),DrawRectangle(),FillTriangle(),DrawLine(),Blit() on LUT8,RGB332 and A8.
- StretchBlit(),TextureTriangles(),[DrawString()],Alphablend and Colorize from A8 (>= NV10).
- Alphachannel blend for ARGB1555.
- Added support for system to video memory blits.
- Improved TextureTriangles() performance.
- NV30 supports StretchBlit(), blit with format conversion, alphablend and colorize.
- Fixed NV30 initialization.
- Made the driver work with the new nvidiafb framebuffer driver.
- Made deinterlacing work properly with TextureTriangles().

R200
- New driver for ATI Radeon R200 based cards by Claudio Ciccani <klan82@cheapnet.it>!
- Accelerates FillRectangle,FillTriangle,DrawRectangle,DrawLine, Blit,StretchBlit,TextureTriangles.
- Supported Drawing Flags: Blend, Xor.
- Supported Blitting Flags: Alphablend, Coloralpha, Colorize, SrcPremultColor, SrcColorKey, Deinterlace.
- Supported Formats: A8, RGB332, RGB16, RGB32, ARGB, ARGB1555, ARGB2554, ARGB4444, AiRGB, LUT8, ALUT44, YUY2, UYVY, YV12, I420.
- Overlay supports YUY2, UYVY, YV12, I420, ARGB1555, RGB16, RGB32 and ARGB,
  color adjustments, DLOP_DEINTERLACE, DLOP_DST_COLORKEY and DLOP_OPACITY.

SiS 315
- Compatibility stuff for newer fb driver versions.

Unichrome
- Added missing flag DLCAPS_LEVEL, thanks to Stefan Lucke <stefan@lucke.in-berlin.de>!

Linux Input
- Fixed AltGr.
- Added translation of KEY_FASTFORWARD, KEY_SOUND, KEY_QUESTION, KEY_EMAIL and KEY_CANCEL.
- Better touchscreen/smartpad detection, thanks to Stefan Lucke <stefan@lucke.in-berlin.de>!
- Don't abort if checking for LEDs fails.

MuTouch Input
- Improved packet reading loop, thanks to Ivan Daniluk <ivan@shvydko.ua>!

PS/2 Mouse Input
- Added GPM support. The mouse-protocol option specifies the protocol for
  the mice or the repeater (supported values: PS/2 and IMPS/2).

FBDev System
- When restoring the video mode during shutdown, set xoffset and yoffset to 0.
- Keep the original display offset if no mode has been set, e.g. just running "dfbinfo".
- Added ARGB4444 support.

SDL System
- Hide the SDL cursor so DirectFB one shows.

VNC Server System
- Preliminary system module using libvncserver.

X11 System
- Preliminary native X11 support, thanks to Martin Luetken <nitram@lutken.dk>!

Unique WM
- Started work on the decoration framework, still not usable.

dfbdump
- Show 'premultiplied' surface capability.

directfb-config
- Added options "--system=" and "--wm=" for static linking.
- Option "-s" additionally shows the shared memory file size.


0.9.22
------

API
- Added DLCAPS_ALPHA_RAMP: Alpha values for formats with one or two alpha
  bits can be chosen, i.e. using ARGB1555 or ARGB2554 the user can define
  the meaning of the two or four possibilities. In short, this feature
  provides a lookup table for the alpha of these formats.
- Added DLCAPS_PREMULTIPLIED indicating that a display layer
  can display surfaces with premultiplied alpha.
- Added DSCAPS_PREMULTIPLIED indicating that the surface has
  premultiplied alpha data.
- Added DLCONF_SURFACE_CAPS and field 'surface_caps' to DFBDisplayLayerConfig
  to specify any combination of the flags: DSCAPS_INTERLACED, DSCAPS_SEPARATED
  or DSCAPS_PREMULTIPLIED.
- Added DLCAPS_SCREEN_POSITION and DLCAPS_SCREEN_SIZE.
  These are set if DLCAPS_SCREEN_LOCATION is set and vice versa.
  Unscalable layers just have DLCAPS_SCREEN_POSITION.
- Added DSECAPS_BRIGHTNESS, DSECAPS_CONTRAST, DSECAPS_HUE, DSECAPS_SATURATION.
- Added DSECONF_ADJUSTMENT to DFBScreenEncoderConfigFlags.
- Added 'DFBColorAdjustment adjustment' to DFBScreenEncoderConfig.

API | IDirectFB
- Cleaned up the way CreateSurface() determines the primary surface
  pixelformat and size. Previously the behavior varied depending on
  cooperative level and the force-desktop option. New behavior:
  1. DSDESC_{WIDTH,HEIGTH,PIXELFORMAT}
  2. SetVideoMode()
  3. mode= and pixelformat= options
  4. current layer config

API | IDirectFBDisplayLayer
- Added IDirectFBDisplayLayer::SetScreenPosition() which
  sets the position of the layer on the screen specified in pixels.
- Added IDirectFBDisplayLayer::SetScreenRectangle() which
  sets the position and size of the layer on the screen specified in pixels.

API | IDirectFBSurface
- Added IDirectFBSurface::SetAlphaRamp(a0,a1,a2,a3): Either all four values
  or the first and the last one are used, depending on the format.
  Default values are: 0x00, 0x55, 0xaa, 0xff.
- Added IDirectFBSurface::FillRectangles().

Build Options
- Added option "--with-inputdrivers=..." for selecting drivers to build,
  thanks to Marcel Siegert <mws@twisted-brains.org>!

Runtime Options
- Replaced "argb-font" and "a1-font" with a more flexible "font-format" option.
- Make "graphics-vt" the default.
- Added "h3600-device", keeping the default of "/dev/ts".
- Added "mut-device" which must be used to enable the driver.

Pixel Formats
- Added DSPF_ARGB2554.
- Added DSPF_ARGB4444.
- Added DSPF_NV21 (like NV12, but with swapped CbCr).

Software Driver
- Added support for YUY2/UYVY->RGB conversion (with src colorkeying).
- Force alignment to even coordinates if blitting YUY2 or UYVY.
- Added NV12/NV21/NV16 blitting and rectangle filling.
- Made YV12<->I420 blitting possible.
- Fixed YUV422 handling on big-endian architectures.
- Optimized Bop_yuy2_Sto_Aop() and Bop_uyvy_Sto_Aop(),
  these are used for StretchBlit() using YUY2 or UYVY.

Display Layer Core
- Keep a list of all realized (added) regions to remove them during
  emergency shutdown, e.g. signal received or missing deinit of master app.
- Added CLRCF_SURFACE_CAPS and field 'surface_caps' to CoreLayerRegionConfig
  in the display layer driver API.
- HW Windows created with DWDESC_SURFACE_CAPS and DSCAPS_PREMULTIPLIED
  in 'desc.surface_caps' are created as premultiplied layer regions.
- Store normalized and pixel based destination area in a layer context.
- Added CoreLayerLayoutMode which defines incorporation of
  configuration based size changes and destination area values.
- Activate the most recent context instead of the primary (shared) context
  when the current context is removed.
- Restore color adjustment when (re)activating a context.

Windowing Core
- Create layer regions for hw windows in single buffered mode, unless
  explicitly configured using DSCAPS_DOUBLE/TRIPLE or DWCAPS_DOUBLEBUFFER.
  This is a preliminary solution, because by default a window surface should
  require a Flip() to make changes visible.
- Activate DWOP_ALPHACHANNEL for other non indexed alpha formats, too.
- Implemented hw window resizing.

libfusion
- Take the largest one, if multiple tmpfs are found.

Proxy Interface Implementations (Voodoo)
- Implemented BatchBlit() in IDirectFBSurface_Requester and _Dispatcher.

Fixes (excerpt)
- Fixed a video memory leak in dfb_surface_reconfig() that happened if a  
  surface with multiple buffers is configured to have less, e.g. switching
  a layer from DLBM_TRIPLE/BACKVIDEO to DLBM_FRONTONLY.

dfblayer
- Show the layer level if supported.

Intel
- Added i830 driver (overlay support only) for Servision Ltd.
  (http://www.servision.net/)
- Note, due to unsolved conflicts regarding ring buffer usage
  you have to load the "intelfb" module with the parameter "accel=0".

Matrox
- Added DSPF_ARGB4444 support.
- Added DSPF_NV21 support.
- Added support for G400 dual head add-on (disabled by default).
- Alpha ramp support for CRTC2.
- Added support for progressive chroma on CRTC2.
- Added support for progressive half-height sub-picture.
- Dropped I420/YV12 support for old chips.
- NV12/NV21 Blit() for >= G200.
- NV12/NV21 StretchBlit() for >= G400.
- Accelerated I420/YV12/NV12/NV21 FillRectangle().
- YUY2/UYVY FillRectangle(), Blit() and StretchBlit().

NSC
- Perform additional check (returned phys. fb base) before considering the
  fb driver to be the one that it's expected to be.

nVidia
- Experimental alpha blending support for Riva TNT.
- Fixed NV20 and GeForce3 Xbox support, Blit() should work on the latter now.
- Added experimental support for NV30 chipsets.
- Found the way to make NVScaledImageFromMemory (used for StretchBlit,
  Alphablend, Color Conversion) work on NV20 chipset: it was another rivafb
  bug, therefore the rivafb-nv20fix-* patch is absolutely required.
- Added basic support for drawing with alphablend on NV20.
- Great performance improvements: it's possible to move a translucent window
  at 32bpp while the cpu stays idle.
- No longer return a surface stored in system memory for YUY2 and UYVY;
  return directly the video surface instead.
- Added FillRectangle() and Blit() (without effects) for YUY2 and UYVY.
- Added an hack to do StretchBlit() on YUV422 (result is almost acceptable).

Joystick Input
- Do not dispatch events if unknown or JS_EVENT_INIT are received.
  Fixes crash upon initialization under some conditions.

DreamBox Remote
- Added dreamboxremote driver mainly based on dbox2remote,
  thanks to Marcel Siegert <mws@twisted-brains.org>!

Unique WM Module
- Lots of changes that have been lying around for more than two months,
  but this module is still not fully usable, yet.


0.9.21
------

API
- Added DFBLocation which is like DFBRectangle but has normalized coordinates.
- Added macros to compare rectangles, regions, locations, colors etc.
- Added diagonal cursor keys.
- Added more types to the auto generated "directfb_strings.h".
- Added DFBVertex containing transformed x, y, z, w, s and t coordinates.
- Added DSCAPS_DOUBLE and changed DSCAPS_FLIPPING to be a
  combination of DSCAPS_DOUBLE and DSCAPS_TRIPLE.
- Added "const" to some parameters.
- Added DFXL_DRAWSTRING for IDirectFBSurface::GetAccelerationMask().
- Added prefix "ret_" to all output parameters.
- Added DFBSpan containing x and width of a span.
- When specified use the pixelformat of the surface description
  to create a windowed primary surface.
- Added DFB_VERSIONMISMATCH and DFB_NOSHAREDMEMORY error codes.
- Added DFBInsets specifying a distance from each
  edge of a rectangle: left, top, right, bottom.
- Added DLCAPS_SOURCES which indicates that the layer supports multiple
  sources that can be selected, e.g. from frame buffer (surface) or from
  hardware decoders (using buffers outside of the frame buffer).
- Added DFBDisplayLayerSourceID with pre-defined DLSID_SURFACE.
- Added number of supported sources to DFBDisplayLayerDescription.
- Added DFBDisplayLayerSourceDescription containing the ID and a name.
- Added DLCONF_SOURCE along with a field in DFBDisplayLayerConfig to
  select the source to be used.

API | IDirectFB
- Added IDirectFB::EnumScreens() and IDirectFB::GetScreen().

API | IDirectFBEventBuffer
- Added IDirectFBEventBuffer::CreateFileDescriptor() returning a file
  descriptor that can be read from, including support for select().

API | IDirectFBDisplayLayer
- Added IDirectFBDisplayLayer::GetScreen().
- Moved IDirectFBDisplayLayer::SetScreenPowerMode()
  to IDirectFBScreen, called SetPowerMode().
- Added IDirectFBDisplayLayer::SetSourceRectangle() for source cropping etc.
- Added IDirectFBDisplayLayer::GetSourceDescriptions().

API | IDirectFBScreen
- New interface IDirectFBScreen for mixer, encoder and output settings.
- An output is connected to an encoder which is connected to a mixer which
  combines selected display layers.
- Added a lot of types for description and configuration of these components.
  (see the API Reference Manual for more details)

API | IDirectFBSurface
- Added IDirectFBSurface::TextureTriangles() using a surface as the texture,
  a pointer to a DFBVertex array, an optional index array, the array size and
  the DFBTriangleFormation which can be DTTF_LIST, DTTF_STRIP or DTTF_FAN.
- Added IDirectFBSurface::BatchBlit() which increases pixel throughput  
  of many small blits with same source and destination, e.g. custom font
  rendering like GTK+-DirectFB does.
- Preliminary depth buffer support using DSCAPS_DEPTH to allocate and use it,
  currently hard coded to 16 bit, only useful for TextureTriangles().
- Added DSFLIP_PIPELINE for advanced synchronization with the accelerator,
  currently implemented for Flip() on window surfaces. This feature is for
  accelerators with a command buffer that can store more graphics operations
  than required to render one frame.
- Added IDirectFBSurface::FillSpans() which is passed a DFBSpan array.

Runtime Options
- Added "force-desktop" to run fullscreen applications in the background.
- Added "a1-font" to force usage of monochrome fonts (FreeType2).
- Added "linux-input-ir-only" which tells the linux input driver
  to ignore all non-IR Linux Input devices.
- Added "wm=<wm>" to select the window manager module to use.
- Added "[no-]trace".
- Users can enable/disable debug output separately,
  e.g. using "no-debug,debug=direct,no-debug=direct/memcpy".
- Added "vt-switching" which is enabled by default.
- Added "no-vt" which disables usage of VT code completely.
- Added "no-decorations" to disable automatic window decorations
  of the "UniQuE" window manager implementation.

Build Options
- Allow "--enable-static" and "--enable-trace" at the same time.
- Added "--enable-zlib" that activates gzipped screen shots etc.
- Added "--enable-voodoo", default is no.
- V4L2 has to be enabled explicitly via "--enable-video4linux2".
- Detect cygwin, default to static builds and don't require libdl.
- In static build mode, add an ".o" version of the ".a" module file.
  Applications can link statically against the ".o" files without having
  to specify an extra linker option for each module, e.g. "-Wl,-udirectfb_sdl".
- Applied patch from "Oskar Liljeblad <oskar@osk.mine.nu>"   
  which adds the configure option "--disable-sonypi-jogdial".
- Added "--disable-wm97xx" to disable WM97xx driver.
- With "--disable-gettid" one can enforce usage of getpid(),
  e.g. on broken systems where gettid() simply segfaults,
  though the system call is present in <linux/unistd.h>.
- Added "--enable-unique", disabled by default.

Pixel Formats
- Added DSPF_AiRGB, i.e. DSPF_ARGB with inverted alpha channel.
- Added DSPF_A1, e.g. for monochrome fonts.
- Removed DSPF_RGB15 in the flavor of DSPF_ARGB1555.
- Added DFB_COLOR_BITS_PER_PIXEL(format), DFB_ALPHA_BITS_PER_PIXEL(format)
  and DFB_PIXELFORMAT_INV_ALPHA(format).
- Added DFB_PIXELFORMAT_ALIGNMENT(format) which is non-zero if alignment
  is required to do byte aligned access, e.g. 7 for DSPF_A1.
- Added DSPF_NV12 (planar YUV).
  (8 bit Y plane followed by one 16 bit quarter size CbCr [15:0] plane)
- Added DSPF_NV16 (planar YUV).
  (8 bit Y plane followed by one 16 bit half width CbCr [15:0] plane)

System
- Use gettid() instead of getpid() if available.

Graphics Core
- Minimize state changes during text drawing.
- Drivers can choose between byte/pixel pitch alignment, or even use both.
- Added convenience macros and inline functions for setting state members.
- Added CoreGraphicsSerial storing the "serial" of a certain graphics operation.
- Added GetSerial() and WaitSerial() to the graphics driver API:
  GetSerial() returns the serial of the last queued graphics operation.
  WaitSerial() waits until the operation with the specified serial is finished.
- Store the serial of the most recent accelerated graphics operation that has
  been queued for writing to a surface buffer.
- dfb_layer_region_flip_update() is no longer waiting for an idle accelerator,
  if the buffer that is becoming the front has or had a write operation queued.
  Instead it waits exactly for the last operation that is or was about to write
  to this buffer. If WaitSerial() is not supported by the driver and/or hardware,
  the fallback, of course, is to wait for each and every operation to finish.
- Wait for only the last write operation queued for a buffer,
  if the software needs to access it.
- Speed up tiled blitting by clipping in advance.
- Implemented software clipping for hardware accelerated DrawRectangle().
- Use hardware accelerated FillRectangle() if DrawRectangle() is not accelerated.
- Removed the surface listeners attached by dfb_state_set_destination() and  
  dfb_state_set_source().
- Added dfb_state_update() which does the work of the removed listeners
  if direct_serial_update() returns true. Updating the source is optional.
  Only surfaces set via dfb_state_set_*() are handled.
- Use dfb_state_update() in dfb_gfxcard_state_acquire() and gAcquire().
- Added parameter "write_front" to dfb_surface_flip_buffers() which is useful  
  for triple buffering. If true, the new back buffer will be the front buffer.
  Drivers should detect if the current front buffer is not being shown already,
  in which case the idle buffer might be still shown and should not be written.
- Added "__u32 dfb_color_to_aycbcr( const DFBColor *color )".

Display Layer Core
- Refactored display layer core.
- Added contexts along with regions allocated within them.
- Drivers are only aware of regions. Usually a driver supports one region
  per layer. Hardware windows are implemented via hardware regions.

Input Core
- Added dfb_input_add_global() and dfb_input_set_global() to register global
  reactions at run time, e.g. from another library or module in which case the   
  static reaction table can't be initialized with the address of those functions.
- Cleaned up input core code, e.g. by replacing the "inlined" singly linked list
  code by using a "DirectLink" and the "direct_list_*()" functions, or by adding
  usage of D_MAGIC_ASSERT() etc.

Windowing Core
- Pressing <Meta>-<Ctrl> + Left/Right Click generates 3rd/4th button event.
- Switch to color keyed cursor if shape doesn't have alpha or if translucent
  windows are disabled.
- Changed <Meta>-'S' to raise the lowest window, e.g. to revert a <Meta>-'A'.
- Added <Meta>-<Escape> to switch from fullscreen mode to the desktop.
  (currently not advisable if a flipping fullscreen app is still rendering)
- Modularized window management for different implementations on desktop
  and embedded systems.
- Added new experimental window manager "UniQuE" with window decorations.
- Added a CoreWindowConfig containing position, size, opacity, stacking,
  options, events, color key and opaque region.

Software Driver
- Added DSBLIT_DEINTERLACE support to gBlit.
- Implemented missing blending modes.
- Implemented lots of missing format specific code.
- Implemented stretchblitting for YUV.
- Fix a8 font rendering for argb1555, i.e. remove alpha pits around glyphs.
- Replaced gDrawLine() by gFillRectangle() in rectangle outline drawing code.
- Allocate accumulators dynamically.
- Lots of optimizations and fixes.

Debugging Support
- Major speed up by using thread specific data instead of gettid().
- Use popen("nm -n ...") to load symbols of any module on demand.
- Show static symbols in stack traces.
- Produce gdb like stack dumps (output formatting).
- Added thread names to debug output, stack traces etc.
- Added interface instance tracking in debug mode, showing remaining
  instances at exit time (like it's done for allocated memory).
- Added debug domains which can be enabled/disabled separately.
- Added "<Meta>-<BackSpace>" debugging shortcut for
  dumping the stack of each thread of the master process.
- Align debug output of domains.
- Indent debug output if trace support is enabled
  by using direct_trace_debug_indent() which sets the flag TF_DEBUG for the
  current frame and returns the current debug message indention level by
  examining the stack, counting any upper frames that produced debug output.
- Added tons of assertions and assumption, mostly to new code.
- Added support for A8,YUY2 and UYVY surfaces in dfb_surface_dump().

Fixes (excerpt)
- No need to call SetOpacity() before RequestFocus() for input only windows.
- Don't allow GetWindow() on the cursor window.
- Don't wait for Fusion Dispatch Thread during emergency shutdown.
- Fixed missing MMX initialization in slaves, only the master used MMX before.
- Use RTLD_NOW to detect undefined symbols before the module is used at all.

libdirect
- Migrated base functionality (threads, signals, interfaces, debugging,
  lists, modules etc.) into a separate library that can even be used by apps.
- Added direct_clock_set_start() that is called by Fusion's initialization
  to synchronize time stamps of debug messages.
- Added a minimalistic hash table implementation for usage with IDs as keys.
- Added DirectResult which is the DFBResult outside of DirectFB.
- Added message macro D_UNIMPLEMENTED which prints a warning once.
- Added a name argument to direct_thread_create(),
  printed during creation and termination of threads.
- Added direct_thread_self(), direct_thread_get_name(thread)
  and direct_thread_self_name().
- Added DIRECT_UTIL_RECURSIVE_PTHREAD_MUTEX_INITIALIZER.
- Added direct_list_append() and changed the list structure to have
  the first element's 'prev' pointing to the last element of the list.
- Added DirectThreadInitHandler which can be installed/uninstalled using   
  direct_thread_add_init_handler() and direct_thread_remove_init_handler().
  The registered init handler function is called at the beginning of new threads.
- Allow per file debug mode forcing via definition of DIRECT_FORCE_DEBUG.
- Added D_DERROR(ret,message) which acts like D_PERROR(message), but takes
  a DirectResult (DFBResult) instead of using errno.
- Added D_ARRAY_SIZE(array) to calculate the size of an array.
- Added D_FORMAT_PRINTF(n) to check the format of (debug) messages.
- Added flag manipulation macros D_FLAGS_*.
- Added D_CONST_FUNC to declare const functions.
- Added DirectSerial providing a 64 bit serial number with functions
  for initialization, increasing, copying and updating.
- Added D_DEBUG_ENABLED which is defined depending on three other macros.
  It's defined to be 1, if the D_DEBUG* macros produce code. Useful for
  embracing code that is just required for the debugging output.
- Added D_OOM() which prints the warning "out of memory" and gives
  DFB_NOSYSTEMMEMORY if used as a (return) value.
- Added D_OOSHM() which is the same as D_OOM() in single app build.
  Only in multi app build it prints the warning "out of shared memory"
  and gives DFB_NOSHAREDMEMORY if used as a (return) value.
- Renamed direct_list_contains() to direct_list_contains_element_EXPENSIVE()
  to ensure that developers know that they shouldn't use it in non-debug code.
- Added direct_list_count_elements_EXPENSIVE().
- Added direct_util_count_bits(), slow version,
  but at least optimized for bit sets with lower bits set only.

libfusion
- Migrated Fusion into a separate library to be used without DirectFB,
  e.g. using FusionSound without initializing DirectFB.
- Added fusion_object_globalize() doing the often used combination of
  fusion_object_link() and fusion_object_unref(), i.e. increasing the global
  reference counter and decreasing the local reference counter.
- Removed FusionResult using DirectResult instead.
- Use new Fusion API for entering the world (including version checking).
- Added fusion_ref_inherit() using the new ioctl FUSION_REF_INHERIT.
- Added fusion_object_inherit() to inherit the local reference count
  from another object of any type.
- Added "docs/ReferenceMaps.txt" which explains references
  and visualizes different cases of inter object referencing.
- Heavily cleaned up code of FusionReactor and added lots of debug messages and
  comments. You should add "no-debug = fusion/reactor" to disable these loads
  of debug messages, while still showing other messages if "debug" is used.
- Cleaned up FusionObject code and debug messages.
- Added some assertions and assumptions to the shared memory code.
- Added a parameter to fusion_skirmish_init() and fusion_reactor_init() to  
  set the name of the skirmish or reactor using the ioctl FUSION_ENTRY_SET_INFO.
- Don't create a skirmish for each reactor's global reactions, but use a single
  skirmish for all reactors which is created during Fusion's initialization.
- Added fusion_reactor_set_lock() to use another skirmish for the global
  reactions of the reactor.
- Added fusion_object_set_lock() to set the skirmish for the global reactions
  of the object's reactor, while default is the skirmish used to lock the pool.

libvoodoo
- Added network transparency to DirectFB, called Voodoo.
  (see the related news entry on the web page for more details)

Reference Manual
- Parse preceding comments within enums.
- Fixed hyper link generation for "const" parameters.
- Improved layout of types page.
- Added macro definitions to types page.
- Added callback definitions to types page.
- Automatically generate links if comments include function names,
  e.g.: "... IDirectFB::GetDisplayLayer() ...".
- Show index of types and definitions on the index page.

directfb-config
- Added "--fusionsound" and "--voodoo" to generate static linking
  parameters for FusionSound and Voodoo respectively.
- Use new ".o" versions for all modules (static linking).

directfb-csource
- Support for combining multiple images into one surface.

dfbdump
- Dump layer contexts.
- Option "-s" shows a list of all shared memory allocations (debug mode only).

dfbinfo
- Show all mixers, encoders and outputs.
- Show display layer sources.

dfblayer
- Added option "-L, --level <level>" to change the level of a layer.

dfbscreen
- Added configuration tool for mixers, encoders and outputs.

fusion_bench
- Replaced getpid() reference benchmark by an flock(2) benchmark.
- Use recursive mutexes in threaded mutex benchmark.
- Each benchmark runs for one second now.
- Added shmalloc/shfree benchmark.

FreeType2 Font Loader
- Added DSPF_A1 (monochrome font) support.
- Speed up kerning cache.

Video4Linux Video Provider
- Added deinterlacing support for grabbing mode,
  i.e. added dfb_surface_set_field() calls to grabbing thread and added   
  second frame callback to the loop (to make 50Hz out of the 25Hz of v4l).
- Use CSLF_FORCE, fixes failing PlayTo() on a fresh surface.
- Some other fixes.

FBDev System
- Print error message if the given mode (via "mode=" option) is not supported.

OSX System
- Added native OSX support without using SDL.

Matrox
- Backend Scaler (BES) fixes and improvements.
- SGRAM auto-detection via /proc/bus/pci.
- Added sysfs support to i2c detection code. Now it works on 2.6 kernels.
- Use better constants for black/white level calculation on G450/G550 CRTC2.
- Implemented TextureTriangles().
- Added texture LUT support (G200) and some other 8bpp improvements.
- Added support for DSPF_NV12 (BES).
- Cleanups and optimizations.

VIA CLE266
- Added video underlay mode.
- Added DLOP_DEINTERLACING support to video layer.
- Use fbdev to map registers, obsoletes cle266vgaio.
  Code still works with cle266vgaio for vesafb users...
- Implemented DSBLIT_DEINTERLACE.
- Implemented TextureTriangles().
- Fixed the broken fonts problem.
- Thanks to Bryce Nichols <bryce@bnichols.org> for reducing the hardware
  rounding errors in 16 bit mode by rendering the upper left and lower right
  triangle pair instead of the upper right and lower left.
- Other major improvements and fixes.

VIA Unichrome
- New driver based on the CLE266 driver.
- Support for multiple north bridges.
- DVD Sub Picture Layer support.
- Destination Color Keying for the Video Layer.

nVidia
- Impressive improvements by Claudio Ciccani <klan82@cheapnet.it>.
- Added support for ARGB1555, RGB32 and ARGB.
- Added support for blit with conversion (ARGB1555,RGB32,ARGB to all).
- Added support for YUY2 and UYVY on Primary Layer.
- Added support for adjusting Brightness, Contrast, Saturation and Hue.
- Destination Color Keying for Video Layer.
- Implemented TextureTriangles().
- Implemented StretchBlit().
- Implemented alpha blended blitting and drawing.
- Added experimental support for Colorizing.
- Added sysfs support.
- Added a fast Flip() function (not using ioctl).
- Experimental WaitForSync() support.
- Fixed ram amount detection on Xbox (thanks to Oliver Schwartz).
- Giant cleanup and rewrite of the objects configuration routines:
  we use runtime configuration instead of fixed tables now.
- Cleanups and fixes.

SiS 315
- Added by Andreas Oberritter <obi@tuxbox.org>.
- Rectangle Filling/Drawing, Line Drawing in 8, 16 and 32 bit.
- Blitting (with Source Color Keying) in 8 and 16 bit.
- Destination Color Keying, Clipping.

ATI Mach64
- Added by Ville Syrjala <syrjala@sci.fi>.
- Drawing and (Stretch)Blitting with keying, blending, conversion etc.
- Video Overlay with source and destination color keying.
- SGRAM block write support.
- Added texture engine blitting code using power of two textures.

ATI Radeon
- Video Overlay support by Vadim Catana <vcatana@registru.md>.
- State handling fixes.

NSC Geode
- Improvements by Ed Millard <emillard@direcway.com>.
- Blitting on GX1, though it is constrained by hardware to only blit
  surfaces whose width matches the stride of the frame buffer.

LibMpeg3 Video Provider
- Added FusionSound support for audio playback.
- Moved to DirectFB-extra package.

Linux Input
- Take Linux Input key code as hardware keycode.
- Use EVIOCGRAB ioctl to grab the device.
- Primary mouse is also identified as a mouse now.
- Added keyboard LED support.
- Copied keymap support from the keyboard driver.
- Support more axes.

LIRC Input
- Emulate keyboard like key repeat behaviour using select() with timeout
  and a counter to drop the first few repeats.

PS/2 Mouse Input
- Added /dev/misc/psaux.
- Just use one of "/dev/psaux" and "/dev/misc/psaux" if both are available.
- Don't try them at all if uname() yields release "2.5.*" or "2.6.*".

Serial Mouse Input
- GPM repeater support by Micha Nelissen <micha@neli.hopto.org>.

ELO Touchscreen Input
- Added by Brandon M. Reynolds <breynolds@comtime.com>.

SDL Input
- Wheel event support by Tom Bridgwater <genuss@gmail.com>.


0.9.20
------

- Added CLE266 driver by Andreas Robinson <andro134 at student.liu.se>, thanks!
  The driver supports alpha blending, color keying, video overlay etc.
- Added WM97XX Touchscreen driver,
  thanks to Liam Girdwood <liam.girdwood@wolfsonmicro.com>!
- Added DWOP_SHAPED which enables shaped input handling, windows with an alpha
  channel or a color key are ignored if the pixel under the cursor is completely
  transparent. Thanks to Monge Maurizio <monge@sns.it>!
- Added IDirectFBEventBuffer::WakeUp() causing any WaitForEvent() or
  WaitForEventWithTimeout() to return with DFB_INTERRUPTED.
- Added new display layer buffer mode DLBM_WINDOWS where the layer itself
  has no surface, but the hardware is aware of each window and displays
  the window stack. Added DLCAPS_WINDOWS, too.
- Added <Meta>-<Print> hot key to make a screenshot of the focused window
  including its alpha channel if present. Creates a ppm (RGB) and a pgm (alpha).
  Use "pnmtopng -alpha foo.pgm foo.ppm > foo.png" to combine them.
- Added IDirectFBSurface::Dump() similar to <Meta>-<Print>, see above.
- Added "memcpy = <method>" option to save a lot of startup time.
  "time dfbinfo" went from 0.080 secs to < 0.010 secs on my machine.
- New environment variable "DFBARGS" is now parsed like the "--dfb:" parameter.
- Added Fusion Kernel Device patch for Linux 2.6.
- Added a patch to set proper clocks on a G400 (great performance boost).
- Updated vmwarefb for VMware Workstation 4.0 with resolution and depth switch
  at run time, can disable acceleration at run time. Also fixed palette mode.
- Video4Linux 2 support by Michael Hunold <hunold@convergence.de>, thanks!
- Send valid button events in MuTouch driver,
  thanks to Tim Wright <tim.wright@iosystems.co.uk>.
- Added support for color keyed PNGs (palette converted to RGB with color key).
- Enable key repeat in SDL input driver.
- Fixed segfault in slave processes when no graphics driver is loaded.
- Signal handler now displays the faulting address in case of SIGSEGV.
- Added configure option "--enable-trace" activating stack trace dumps in the
  signal handler. Uses "-finstrument-functions" and therefor only includes
  functions of DirectFB unless you compile your code with that option, too.
- Optimized window stack updates by Maurizio Monge <monge@sns.it>.
- Optimized auto-video surface handling, speeding up Create/Clear a lot.
- Software driver optimizations for LUT8 (e.g. colorkeyed blitting).
- Switching single/multi between builds doesn't require "make clean" anymore.
- Improved output of dfbdump (multi app resource monitor).
- Important bug fix in state handling (multi app only).
- Enhanced stability and bug fixes.


0.9.19
------

- Initial version of a Radeon DirectFB driver featuring solid drawing/filling
  and simple blitting with or without key by Michel Dänzer <michel@daenzer.net>.
- Added VT switching support which has to be enabled via option "vt-switching".
  It's pretty well working already, though there are some minor issues left.
- Added support for multiple multi application worlds with new option
  "session=<num>" selecting the multi application world being joined or created.
  VT switching between multiple DirectFB sessions rocks!
- Added option "primary-layer=<id>" to swap the primary with the specified one,
  this way all applications can be started on the second head (Matrox).
- Added "dfblayer", a display layer configuration tool (for multi app).
- Added IDirectFB::GetInterface() to load interface modules like "IFusionSound".
- Added time stamp to DFBWindowEvent.
- Quitting the master (first multi app process) sends SIGTERM to all slaves
  and waits for them to quit (with a timeout).
- Core systems (currently FBDev and SDL) are dynamically loaded as modules,
  which prevents DirectFB from being linked against SDL if support is enabled.
- Added window manager key 'E' to focus the window under the mouse cursor.
- Moved all global variables of the software driver to a new struct resulting
  in a major increase of primitive throughput, e.g. FillRectangle(1x1) by 16%.
- Enhanced tmpfs detection and added option "tmpfs=<dir>" to set it explicitly.
- Enhanced locking and safety in v4l video provider.
- Improved graphics primitive throughput up to 100% by saving locks.
- Added shared memory allocation tracking like for local memory.
- Modules and drivers are now binary compatible with single/multi app library.
- No more bone collector threads (3/master), almost instant object destruction.
- Other bug fixes and cleanups.


0.9.18
------

- National Semiconductors Geode driver by Sarma Kolluru <Sarma.Kolluru@nsc.com>.
  Great thanks to NSC for their support!!!
- nVidia Overlay support by Oliver Schwartz <Oliver.Schwartz@gmx.de>, currently
  hard coded to XBox. For plain nVidia graphics adapter you need to change line
  618ff of nvidia_overlay.c (uncomment line 618, comment out line 620).
- Added multi application support to SDL backend.
- Added triple buffering for display layers.
- Added DPMS support via IDirectFBDisplayLayer::SetScreenPowerMode().
- Added IDirectFB::GetClipboardTimeStamp().
- Added optional time stamp return value to IDirectFB::SetClipboardData().
- Added DFB_KEY_IS_ASCII for your convenience.
- Split DSFLIP_WAITFORSYNC into DSFLIP_WAIT and DSFLIP_ONSYNC.
- Added DSPF_ALUT44, a new pixel format having 4 bits of alpha and 4 bits
  being an index to a color lookup table.
- Added DIEF_GLOBAL indicating that the event was received without focus.
- Added IDirectFBWindow::SetOpaqueRegion() which excludes one rectangle of
  the window from alpha blending, e.g. for blended borders around fast opaque
  content. This is especially useful if the content has no valid alpha values.
- Added DWOP_OPAQUE_REGION which enables the opaque region.
- Made all unsigned width, height in the API signed.
- Made text drawing honor DSDRAW_BLEND flag to render translucent text.
- Added Intel i810 driver from Tony Daplas < adaplas at users.sourceforge.net >.
- New Fusion synchronous RPC mechanism speeds up fbdev layer flipping by slaves.
  Benchmark shows that RPC flips take as long as three non-RPC flips.
- Non global input event buffers now also get events if any window of the
  application is focused.
- The cursor is no longer enabled in DirectFBCreate(), but automatically when
  the first window is created unless the cursor was enabled/disabled before.
  Option "no-cursor" now forces the cursor to be disabled forever.
- Implemented more software driver routines for DSPF_LUT8.
- Always blit from top to bottom if source and destination buffers differ
  in the software driver.
- Fixed state handling and other bugs in the ATI driver.
- Significantly improved speed of DrawString() with matrox driver,
  other fixes and improvements to the matrox driver.
- Multi application core fixes and improvements.
- Improved graphics card locking for coexistence with DRI drivers.
- Improved video memory management.
- Improved matroxfb-vsync-irq and matroxfb-32mb patch.
- Added Matrox TV output cable type selection.
- Added README describing Matrox TV-out functionality.
- Fixed DSCAPS_SEPARATED with planar formats in software driver.
- Fixed tiled layer background mode.
- Fixed bug which resulted in black screens with some framebuffer drivers.
- Fixed segfault in MPEG2 I-Frame image provider by avoiding alloca.
- Nicer debug output (show time in seconds with three digits after the comma).
- Many bug fixes, gcc-3.3 fixes, build cleanups, optimizations, updated patches.


0.9.17
------

- Added input driver for Microtouch serial touchscreens.
- Added input device name and vendor to DFBInputDeviceDescription.
- Added clipboard functionality via IDirectFB::Set/GetClipboardData()
  including mime type. This is an intermediate solution that will be replaced.
- Added new tool "dfbinfo" which currently enumerates input devices and layers.
- Added IDirectFBDisplayLayer::SetFieldParity(), thanks to Ville.
- Added cooperative level restrictions to many display layer functions.
- Readded DSPF_RGB15 (= DSPF_ARGB1555).
- Graphics drivers are now able to return false in graphics functions to
  trigger a 'late' software fallback. Useful if blitting direction can't be set.
- It is finally possible to specify which gfxdrivers should be built.
        ./configure --with-gfxdrivers=<list>
- Fix "could not adjust heap offset message" if the primary layer surface
  consumes the whole video memory (thanks to Ville Syrjala).
- Fix for planar formats and other fixes by Ville Syrjala <syrjala@sci.fi>.
- Fixed "directfb-config" for static linking.
- Fixed destination color keying for blended drawing in software driver.
- Fixed blitting within one buffer with NeoMagic (scrolling errors).
- Reject YUV for fbdev layer, thanks to Jiri Svoboda <Jiri.Svoboda@seznam.cz>.
- Many bug fixes, code cleanups, comments and assertions added etc.


0.9.16
------

- Added IDirectFBWindow::GrabKey() and UngrabKey().
- Added IDirectFBWindow::SetColorKeyIndex().
- Added IDirectFBWindow::SetCursorShape().
- Added IDirectFBDisplayLayer::WaitForSync(), thanks to Ville Syrjala.
- Made IDirectFBWindow::SetColorKey() lookup the index if the format is indexed.
- Removed DSPF_RGB15 in favor of DSPF_ARGB1555, not completely tested yet.
- Added DFB_COLOR_EQUAL macro to compare two DFBColor.
- Added <Meta>-P shortcut to enable the cursor manually.
- Added new multi app core shortcut Ctrl-Alt-Break which sends a SIGKILL to
  fullscreen applications, useful if a fullscreen app hangs.
- Added optimized memcpy routines for PPC (disabled in default build).
- New automatic grabbing mechanism for fullscreen applications running windowed.
- Added options for statically linking applications with selected modules
  to directfb-config.
- DirectColor visual support by Antonino Daplas <adaplas@pol.net>.
- Color adjustment support on primary layer (via gamma ramp in direct color
  mode) by Antonino Daplas <adaplas@pol.net>.
- Fixed implementation of window stacking classes.
- Fixed segfault with default font provider (non-FT2).
- Some essiential fixes of outstanding multi app bugs related to layers.
- Only detach slave processes from their terminal if it's really necessary.
  Framebuffer ioctls are executed by the master only via fast RPC mechanism.
- Avoid short single frame flicker when starting fullscreen apps by
  temporarily switching to KD_GRAPHICS mode.
- New configure option "--disable-text" which disables all init, debug and
  error messages and saves about ~20k binary size (tested on i386).
- Other minor bug fixes and improvements.


0.9.15
------

- IDirectFB::CreateEventBuffer() no longer attaches input devices and doesn't
  take input capabilities. It just creates an empty event buffer.
- Added IDirectFB::CreateInputEventBuffer() which implements both the 0.9.14
  and pre 0.9.14 behaviour of CreateEventBuffer().
- Added DFBBoolean (with DFB_TRUE and DFB_FALSE).
- DFBWindowEvent fields cx, cy, buttons, locks and modifiers are always valid.
- Added implicit key grabbing while a key is held down in a window.
  Fixes interoparability ugliness between XDirectFB and DFBTerm (e.g. Ctrl-D).
- Great improvement of performance and stability of the multi application core
  via new Fusion Kernel Device. SysV IPC usage completely dropped.
- Added Fusion benchmark application (no graphics, just for testing).
- Added desktop background configuration tool for multi app sessions.
- Implemented additional config file loading for each application.
  E.g. running ".../foo" loads "/etc/directfbrc.foo" and "~/.directfbrc.foo".
- Option 'no-hardware' now only disables acceleration, but driver is loaded
  and additional layers can still be used.
- Options 'mode=' and 'pixelformat=' are now always fully supported.
  Fullscreen applications forced to run windowed (with 'force-windowed' option)
  will have a window with the size and format specified.
- Fixed fatal bug in FreeType2 font loader that made many apps look wrong.
- Fixed off-by-one bug in image loading code. Fixes color keyed blits in df_dok.
- Some other bug fixes and optimizations.


0.9.14
------

- Added IDirectFB::CreatePalette().
- Added IDirectFBSurface::SetPalette().
- Added IDirectFBPalette::GetCapabilities().
- Added IDirectFBPalette::CreateCopy().
- Added IDirectFBSurface::SetSrcColorKeyIndex() and SetDstColorKeyIndex().
- Added experimental blitting flag DSBLIT_DEINTERLACE which is implemented
  only in the Matrox driver for now.
- Added DFDESC_FIXEDADVANCE forcing proportional fonts to be fixed width.
- Added LUT8 and RGB332 acceleration to NeoMagic driver.
- Added Meta (or Windows) key to wm hack (moving window etc.).
- Added MPEG2 I-Frame image provider derived from mpeg2decode (mpeg.org).
- Added driver for ucb1x00 based touchscreens.
- Added dfbdump, a DirectFB debugging tool.
- Renamed DSCAPS_SEPERATED to DSCAPS_SEPARATED.
- Started abstraction of the "core system" featuring the "fbdev" system like
  before and a new experimental "sdl" system. Yepp, DirectFB running on SDL.
  Use "--dfb:system=sdl" to run applications under X.
- Made the code compile on a variety of BSD flavours.
- Enabled support for RGB332 by default.
- Implemented YUV rectangle filling support for planar and non-planar
  formats in software driver (Ville Syrjala <syrjala@sci.fi>).
- Added gfxdriver for CyberPro 5xxx, a card found mainly in settop-boxes.
- Matrox second head support via additional layers.
  New option "matrox-crtc2" to activate this (Ville Syrjala <syrjala@sci.fi>).
- Updated matrox vsync irq patch to support the second head.
- Planar YUV blitting support in Matrox driver (Ville Syrjala <syrjala@sci.fi>)
- Fixed nVidia driver for big endian hosts.
- The window stack and video mode are now restored even if a fullscreen
  application simply exits or gets killed by any signal (multi app core).
- Improved multi application core stability via optional kernel device.
- Some bug fixes, especially (de/re)initialization, multi app.
- Added a directfb.spec file (Till Adam <till@adam-lilienthal.de>).


0.9.13
------

- Added new interface IDirectFBDataBuffer with three implementations
  (File, Memory and Stream).
- Made image providers use the new IDirectFBDataBuffer.
- Added DFBDisplayLayerTypeFlags for a basic layer classification.
- Added DFBDisplayLayerDescription (changes DFBDisplayLayerCallback).
- Added (yet unimplemented) IDirectFBImageProvider::SetRenderCallback().
- Added input_only windows (windows w/o a surface).
- Added support for interlaced surfaces with seperate field buffers to
  all drawing and blitting functions.
- Added new drawing flag DSDRAW_XOR.
- Added support for color lookup tables. Added new surface type DSPF_LUT8
  and IDirectFBSurface::GetPalette() and IDirectFBSurface::SetPalette().
- Added DSDESC_PALETTE to IDirectFBSurfaceDescription.
- Added DSCAPS_STATIC_ALLOC to DFBSurfaceCapabilities.
- Added DWDESC_SURFACE_CAPS to DFBWindowDescriptionFlags.
- Added DWOP_ALPHACHANNEL to DFBWindowOptions.
- Added IDirectFBSurface::SetColorIndex() for indexed pixel formats.
- Added pre/demultiplication to drawing functions.
- Added IDirectFBDisplayLayer::GetWindow().
- Added input driver for linux input driver (/dev/input/eventX).
- Improved resource management with automatic cleanup (multi app core).
- Cleaned up vertical retrace handling.
- Added DFFA_NOCHARMAP to DFBFontAttributes to allow to access glyphs by
  their raw indices.
- Improved V4L video provider, added support for grabbing and planar YUV. Thanks
  to Ville Syrjala <syrjala@sci.fi> and Mike Pieper <mike@pieper-family.de>.
- Fixed color key handling in GIF provider.
- Improvements to the layer driver API.
- Renamed DLCAPS_INTERLACED_VIDEO to DLCAPS_DEINTERLACING.
- Renamed DLOP_INTERLACED_VIDEO to DLOP_DEINTERLACING.
- Enabled acceleration for the second head of a dual head Matrox card.
- Updated Matrox vsync IRQ patch.
- Improved S3 Savage drivers, thanks to Alex Song <alexsong@comports.com>.
- Added directfb-csource, a C code generator for inline images.
- Lots of bug-fixes, multi app core improvements.


0.9.12
------

- Added IDirectFBSurface::DrawGlyph().
- Added IDirectFBFont::GetKerning().
- Added IDirectFBFont::GetGlyphExtents().
- Added experimental blitting flags DSBLIT_SRC_PREMULTIPLY,
  DSBLIT_DST_PREMULTIPLY and DSBLIT_DEMULTIPLY.
- Added dfb_utf8_prev_char() and fixed dfb_utf8_next_char().
- Added a mask of currently pressed buttons to input and window events.
- Added structs DFBPoint and DFBDimension.
- Added DIDTF_VIRTUAL for virtual input devices.
- Added DSFT_BOTTOM to DFBSurfaceTextFlags.
- Added DFB_NUM_PIXELFORMATS macro.
- Give font providers control over pixel format and blending function.
- Define DFBKeyIdentifierNames in directfb_keynames.h.
- Some smaller fixes to the keyboard mapping.
- Support all keysymbols in the lirc input driver.
- Implemented planar YUV blitting in software driver.
- Optimizations in the software driver.
- Fixed blitting and drawing to ARGB in matrox driver.
- Implemented missing BES flipping in matrox driver.
- Lots of bug-fixes.


0.9.11
------

- Added IDirectFBSurface::Clear().
- Added IDirectFBWindow::EnableEvents() and DisableEvents().
- Added IDirectFBWindow::SetStackingClass().
- Added IDirectFBDisplayLayer::GetLevel() and SetLevel()
- Added IDirectFBInputDevice::GetKeymapEntry() (see below).
- Redone keyboard handling. Each key now has a unique key_id which is mapped
  to a Unicode-compatible key_symbol using the keymap provided by the driver.
- Use kernel keymapping table in keyboard driver.
- Added kernel patch for VMware SVGA frame buffer.
- Added kernel patch for S3 Savage frame buffer (experimental).
- Added S3 Savage driver (experimental).
- The Print key can now be used to dump screenshots in PPM format.
- Left and right modifiers have seperate key identifiers now.
- Introduced kerning cache in FT2 font provider.
- Added module probing to FT2 font provider.
- Speed up text rendering by using a special state.
- Allow to change the buffermode of layers.
- Support buffermode changes for additional layers.
- Fixed A8 font blitting bug in Matrox driver.
- Install directfb headers in a directfb subdirectory.
- Install and look for modules in versioned subdirectory.
- Fixed vsync polling when MDA emulation is active.
- Cleaned up config options (directfbrc and command-line options).
- New option "videoram-limit=<amount-in-kb>".
- New option "dont-catch" to disable signal handlers.
- Added directfbrc(5) man-page.
- Made shared memory handling thread-safe (multi-application core).
- Optimizations in software driver.
- Lots of bug-fixes.


0.9.10
------

- Added options "mode=<width>x<height>" and "depth=<bpp>".
- Added SonyPI Jogdial input driver acting as a third axis and button.
- Added a destination rectangle to IDirectFBImageProvider::RenderTo().
- Added IDirectFBEventBuffer::HasEvent().
- Added IDirectFBDisplayLayer::SetCursorAcceleration().
- Added IDirectFBWindow::PutAtop and PutBelow for restacking windows relatively.
- Added destination colorkeying for display layers (like Xv does).
- Added IDirectFBWindow::SetOptions() and GetOptions().
- Added color keying option for windows (e.g. for shaped windows).
- Added window options to disable moving, resizing, stacking and destruction by
  wm hack. Added an option to turn a window into a passive output only window.
- Added brightness control to neomagic video overlay (by Martin Mueller).
- Added tmpfs mount point detection by Sebastian Klemke <packet@convergence.de>.
- The shared memory area is now reinitialized during startup if it already
  existed, but with no DirectFB apps running. Other multi app core fixes.
- Added more cleanup code, less IPC resource leakage after shutdown.
- Bit depths of fb.modes entries are ignored now when looking for a requested
  mode. However, the default bit depth is the one of the first entry.
- Improved RGB332 rendering using precalculated lookup tables with 4/8 entries.
- Greatly optimized 16Bit StretchBlit in generic driver doubling performance
  on PowerPC systems (others than Intel/PowerPC not tested).
- Windows can now be resized and destroyed via wm hack (CapsLock shortcuts).
- Window stack compositing optimizations.
- Simplified and cleaned up internal layer driver API.
- Major code cleanups in windowing and layer core.
- Fixed NeoMagic driver, that was broken in 0.9.9.
- Fixed doubled and interlaced video modes.
- Enhanced reference manual including an introduction to IDirectFB.
- Many, many bug/stability fixes. More code commented. Bigger TODO file ;)


0.9.9
-----

- Added DSPF_I420 and DSPF_YV12, two planar YUV formats.
- Added ATI Overlay support for all four YUV formats.
- Added NeoMagic YUV Overlay support.
- Added static linking support. Minor changes to driver and interface modules.
- There's a general IDirectFBEventBuffer now that can be connected to
  input devices and windows. Added DFBEvent union that can contain
  any specific event class.
- Added DFBUserEvent that can be used by developers (user of the library).
- Added IDirectFBEventBuffer::PostEvent that can be used for any event class.
- Each window has a unique window id now. DFBWindowEvent contains the id.
- Added GetID functions to IDirectFB- DisplayLayer, Window and InputDevice.
- Added IDirectFBSurface::TileBlit.
- IPAQ buttons support by Ara Hacopian <ahacop@anthrotronix.com>.
- Windows can now be created with a specific pixel format, e.g. YUV.
- RGB332 acceleration on Matrox cards (including alpha blending).
- Added fast memcpy routine that uses MMX, MMXEXT or SSE.
- Changed DirectFB command-line parsing: The only recognized options are
  --dfb-help and --dfb: follow by a comma-separated list of DirectFB options.
  The format of the options is the same as used in the directfbrc file.
- Surfaces can now be created using existing surface data.
- New option "[no-]cursor" to enable/disable the default cursor on startup.
- New option "disable-window-opacity" for testing/tweaking purposes.
- New option "lefty" that enables swapping of left and right button.
- Applied patch from Till Adam <till@adam-lilienthal.de> that adds
  DFBInputDeviceLockState, IDirectFBInputDevice::GetLockState() and
  LED handling in keyboard driver.
- Rewritten Libmpeg3 provider based on OpenQuicktime provider (YUV/Sound).
- Make usage of CON2FBMAP (by Jiri Svoboda <Jiri.Svoboda@seznam.cz>).
- '/dev/input/js*' support by W. Michael Petullo <mike@flyn.org>.
- Detailed documentation of dbox2 remote driver code (example driver).
- More code documentation, especially state handling.
- Additional frame buffer device can be used to debug the surface manager.
- All global DirectFB symbols have the prefix "dfb_" now.
- Enno Brehm <enno@convergence.de> added dlopen on libdirectfb with RTLD_GLOBAL.
- Completely rewritten shmalloc stuff (used by Multi Application Core)
  based on libc5's GNU malloc. It now uses tmpfs (former shmfs).
- Some optimizations, Matrox colorkeying fixes.
- ATI state fix by Topi Kanerva <topi.kanerva@eke.fi>.
- USB and PS/2 mice fixes, endian fixes on parisc, many other bugfixes.


0.9.8
-----

- Merged multi application core, which is currently under development. Must be
  enabled at compile time (--enable-multi). It is *NOT* stable yet.
- Input/Gfx driver API changes to be ready for multihead and multi application
  core.
- Added OpenGL support via the new interface "IDirectFBGL".
- Added support for IMPS/2 mice including wheel support.
- Added remote control driver for dbox2.
- Added DWET_WHEEL window event. Focused windows now receive events if the
  mouse wheel is use.
- Added simple blitting support for nVidia cards <dfoesch@cs.nmsu.edu>.
- Added "wm_hack" feature: press shift lock over a window and spin the mouse
  wheel to change the window opacity.
- Completed support for RGB332 (8bit mode), not fully optimized yet.
- New triange fillig code from Holger Waechtler. Adds clipping support and
  utilizes accelerated rectangles as a fallback if possible.
- Removed rounding factor when blitting non-scaled with tmu,         
  very big fonts looked incorrect (matrox driver).
- Fixed triangle filling in tdfx driver <DWood@daedalcorp.com>
- Fixed segfault when rendering pipeline is empty, e.g. using DSDRAW_BLEND
  with SrcFunc DSBF_ZERO and DstFunc DSBF_ONE.
- In RGB332 mode initialize alpha values in palette. Corrected color
  values in palette.
- Fixed segfault in jpeg provider with large images.
- Fixed some small memory leaks.
- Include SMF_SOURCE in SMF_ALL, could have caused blitting from the wrong
  source recently (longer for a very few drivers) when switching to another
  state.
- Fixed "--fbdev=" option.
- ABI version handling for all drivers.
- Moved examples to extra package (DirectFB-examples).
- The mouse cursor is now activated by default.
- DirectFB can be build with dietlibc.
- Some namespace cleanups.
- Updated aty128fb patch for linux 2.4.16.

0.9.7
-----

- Added deinterlacing for interlaced video sources to Matrox Backend Scaler.
- Added DSPF_UYVY and clarified description of both YUV formats.
- Added acceleration for Matrox Mystique, Millennium I&II, G100.
- Added support for YUV in V4L video provider.
- Added support for deinterlacing in df_layer example.
- Added option "--fbdev=<device>" to specify another device than "/dev/fb0".
- Added support for 'gsync true', 'csync high' and 'extsync true' in fb.modes.
- Added 8bit RGB332 pixelformat, implementation is not complete yet.
  If you want RGB332, you have to enable it using ./configure --enable-rgb332.
- Optimized RGB15/RGB16 color keyed blit (doubled performance on some CPUs).
- Allow RGB15 mode on fbdev drivers that report to use one bit for alpha.
- Fixed blocking of CreateImageProvider when called on /dev/video with BTTV.
- DirectFB now restores the palette during deinitialization, turns cursor and
  blanking back on and restores the terminal attributes like local echo.
  These fixes help a lot when using DirectFB with the option "--no-vt-switch".
- Updated NeoMagic frame buffer driver patch for 2.4.10 and above.
- Updated aty128fb frame buffer driver patch. The patch was tested with kernel
  versions from 2.4.7 - 2.4.12. It may work with older versions too.
- IDirectFBSurface::SetSrcColorKey has to be called on the source now,
  when blitting to a surface which has source color keying enabled.
- SetSrcColorKey and SetDstColorKey take three values now: r, g and b.
  They will be converted to the pixelformat of the surface automatically.
- Some minor fixes.

0.9.6
-----

- Added H3600 (ipaq) Touchscreen input driver.
- We now accept compatible pixelformats,
  e.g. IPAQ's RGB 444 format is compatible with RGB 565.
- Matrox Backend Scaler support as additional display layer.
- YUY2 format added for video playback.
- Added 'IDirectFBDisplayLayer::Set/GetColorAdjustment()'.
- Added simple layer example which plays a video onto the second layer.
- Added new window capability DWCAPS_DOUBLEBUFFER to create windows with
  two back buffers. This is useful for overlapping windows which both
  cause frequent updates of the window stack.
- Added 'IDirectFBWindow::Close()' that puts a 'DWET_CLOSE' event into the
  window's event queue. The event dispatcher thread can then decide to close it.
- Added 'IDirectFBWindow::Destroy()' which actually destroys the window after
  sending a 'DWET_DESTROYED' event, so the event dispatcher thread can notice
  and release any interfaces belonging to it.
- Added result 'DFB_DESTROYED' which is currently returned by 'IDirectFBWindow'
  and 'IDirectFBSurface' if the window or surface has been destroyed.
- Fixed surface manager bug causing inconsistency between video/system memory.
- More changes to surface manager fixing problems when using many many threads.
- Fixed segfault when loading big PNGs, seemed to be a problem with alloca.
- Minor fixes to window stack code.
- Some fixes to deinitialization code.

0.9.5
-----

- Added 'IDirectFB->CreateInputBuffer()' that allows to easily
  create input buffers for specific events.
- Added 'IDirectFBInputDevice->AttachInputBuffer()' to
  attach an existing input buffer to another input device.
- Added 'IDirectFBImageProvider->GetImageDescription()' to obtain information
  about alpha channel availability and possible color keys.
- New LIRC input driver, name your keys (lirc config file) like the DirectFB
  keycode enum does without the "DIKC_" prefix, e.g. "OK", "MENU" or "VOLUMEUP".
- First version of nVidia RIVA TNT/TNT2/GeForce driver (very limited right now).
- Updated kernel patches, improved synchronization for FBIO_WAITFORVSYNC.
- New pkg-config file "directfb-internal.pc" for better support
  for third party modules built outside the DirectFB source tree.
- You can move windows with the mouse when holding down CapsLock.
- Font width can now be set independent from height, e.g. for non-square pixels.
- Set gamma ramp, fixes "strange-colors-effect" with some frame buffer drivers.
- Accept interlaced or double scan modes, 320x200 looks really cool in some way.
- Deinitialization code cleaned up and reactivated.
- V4L capturing is now stopped by exit and signal handlers.
- Matrox driver cleanup and blending state fixes.
- More detailed generated API Reference (more comments in directfb.h).
- Many bug fixes, some compile fixes.

0.9.4
------

- Software driver pipeline optimization giving me 70% speed up for solid lines.
- Several bugfixes for image loading, Matrox driver, mode handling and more.
- Removed 'realloc()s' that caused callback functions to write into the
  old memory location if 'realloc()' returns a new one.
- API rewrite for IDirectFBDisplayLayer with new capabilities, e.g. flicker
  filtering, better configuration handling by 'Get/Set/TestConfiguration()'.
- Sub surface handling improved, especially for surface resizing.
- More safety and sanity checks and new error codes
  (DFB_MISSINGIMAGE, DFB_INVAREA, DFB_THIZNULL and DFB_IDNOTFOUND).
- Additions to IDirectFBVideoProvider: 'GetCapabilities()' retrieves info about
  the provider, 'Set/GetColorAdjustment()' set/get values like contrast etc.
- Cursor can be enabled/disabled and opacity can be set independently.
  Also cursor appears centered now.
- Experimental support for VT switching during runtime ;-)
- New command line option "--force-windowed" which already works with most of
  the examples, levels other than DFSCL_NORMAL give DFB_ACCESSDENIED.
- GIF loading to ARGB fixed, transparent GIFs are now supported as ARGB.
- Several fixes to video mode list and pixelformat handling in
  'read_modes()', 'fbdev_set_mode()' and 'fbdev_get_pixelformat()'.
- Added IDirectFBSurface->DrawLines(), used by df_dok now.
- Some optimizations in DrawString and core font handling.
- Fixed font problems with Matrox cards, their texture cache is flushed
  now after writing the glyph into the frame buffer (i.e. into the texture).
- Mouse cursor movements are now clipped by the screen ;-)
- Fixed 'directfb.h', identifier "id" was also a keyword in Objective C.
- Added IDirectFBInputBuffer->WaitForEventWithTimeout,
  was missing in last release.

0.9.3
------

- All modules (drivers/providers) are built conditionally, can be
  disabled. configure spits out a summary of all modules.
- Some license headers were forgotten to change to LGPL.
- New remote control keycodes and remote control input type.
- df_window can play video files and behaves like a window manager.
- New "thanks to" section in README.
- Window stack repaints optimized through recursive function.
- Added DirectFBSetOption from Till Adam <till@adam-lilienthal.de>.
- Added IDirectFBInputBuffer->WaitForEventWithTimeout.
- Changed to pthread conditions in waiting code.
- Matrox driver fixed when blitting from 32bit without blending.
- Added DFBInputDeviceTypeFlags, removed DIDID_TYPE.
- Several cleanups in core, common code moved into helper functions.
- Fonts can be loaded monochrome and/or without kerning.
- Console blanking now disabled.
- Software alpha blending performance boost for non MMX machines.
- Added inputdriver for serial mice with config option "mouse-protocol".
- Modularized inputdrivers.
- Even faster DrawString() software implementations.
- New function Font->GetStringExtents.
- Use of antialiasing, kerning and hinting for fonts is now configurable.
- Some fixes in the software rendering functions.
- Support for interlaced PNGs (thanks to Johannes Zellner).
- Two new example applications in very early stage.
- New function IDirectFB->WaitForSync.

0.9.2
------

- Fix for loading jpegs unscaled into 24bpp surfaces
- 15bpp support for jpeg provider
- v4l provider support for devfs (/dev/v4l/video*)
- API change for DFBSurfaceDescription (pixelformat field instead of bpp
  field, removed DSCAPS_ALPHA.)
- DrawString() and GetStringWidth() support UTF-8 encoded strings now. They
  take an additional parameter that specifies the number of bytes to use from
  the passed string or -1 for the complete string.
- Fonts are no longer loaded completely, instead glyphs are loaded on demand
  and are cached for later use.
- Font kerning tables are no longer loaded by the core.
- Removed default font from the core and made it a IDirectFBFont interface.
  Pass NULL as filename to CreateFont() to get the default font.
- Added MPEG video provider written by Kim JeongHoe based on libmpeg3.
- Performance improvements in the software functions for DrawLine(), 16 bit
  drawing functions and DrawString() in all depth.
- Added GetPos() and GetLength() functions to the video provider API.
- Use /dev/tty0 or /dev/vc/0 (for devfs) instead of /dev/console so DirectFB
  works on machines with serial consoles.
- Removed dependency on libm.

0.9.1
------

- pkg-config files are available for optionally installed interfaces
  like IDirectFBVideoProvider_AviFile, so apps can test for their existence.
- Added IDirectFBInputDevice->GetButtonState() which returns the
  state of the specified button. GetButtons() is also still available.
- New demo called "df_knuckles" draws a three dimensional lighted skull
  that can be rotated by the mouse. (Port from Mark Vojkovich's DGA demo)
- Fixed accelerator ids in neomagic driver to match the ids in the
  current neofb kernel patch that is now included in "patches".
- Moved command-line parsing out of DirectFBCreate() into DirectFBInit().
  This means to inititalize DirectFB() there are now two calls necessary:
  DirectFBInit( &argc, &argv ); DirectFBCreate( &dfb );
- Added IDirectFBSurface->FillTriangle() for solid and blended triangles.
  Implemented in generic driver and Voodoo, Matrox acceleration.
- Interfaces with a reference counter of zero are automatically freed
  unless you enabled debugging during configure. In debug mode a released
  interface returns DFB_DEAD if a function has been called.
- Added Shockwave Flash Video Provider written by Joachim 'Roh' Steiger.
  You will need the libflash, that can be downloaded as a shared library
  from our download section. No modifications of libflash code.
- Added an option to directfb-config that makes "--libs" output
  the suitable LDFLAGS that are needed to have AviFile symbols resolved.
- Mouse cursor is no longer enabled by default.
- AviFile Provider now probing for ".asf" files, too.
- Fixed Stop in AviFile Provider, work around crashing AviFile call
  Player->Stop by using Pause and Continue. PlayTo can now be called
  several times without stopping to change the destination on the fly.
- V4L Video Provider no longer gets a NULL pointer as the filename,
  but "/dev/video0" and so on. Removed v4l code from core.
- AviFile Provider updated to compile with newest AviFile version.
- Implemented flipping of surfaces that are no window or layer surfaces,
  when the surface is a subsurface, a flipping region has been specified
  or the flipping flag DSFLIP_BLIT has been used.
- Improved documentation generator, a few parsing fixes.
- Added missing "void *callbackdata" to
  DFBInputDeviceCallback and DFBVideoModeCallback.
- Some minor fixes and cleanups.


0.9.0
------

Initial release.