From 7fe60435bce6595a9c58a9bfd8244d74b5320e96 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 15 Jan 2013 08:46:13 +0100 Subject: Import DirectFB141_2k11R3_beta5 --- Source/DirectFB/NEWS | 3626 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3626 insertions(+) create mode 100755 Source/DirectFB/NEWS (limited to 'Source/DirectFB/NEWS') diff --git a/Source/DirectFB/NEWS b/Source/DirectFB/NEWS new file mode 100755 index 0000000..d73ee78 --- /dev/null +++ b/Source/DirectFB/NEWS @@ -0,0 +1,3626 @@ +1.4.0 +----- + +General bugfixes, code cleanups and memory leak plugging. + +Core +- fix for possible segfault when unloading non-used input/gfx modules. +- fbdev: Allow accelerator ID to be overridden by (existing) runtime option. +- IDirectFBScreen::GetEncoderDescriptions: add enums for NTSC443 and 30Hz + 24Hz +- font: DFFA_NOBITMAP will inhibit loading bitmaps if we have vector fonts too. + +Input +- input: Implement driver_get_axis_info() in the linux-input driver +- vt/keyboard: Flush console input when not used; avoids kernel waking up + +Gfx +- add optional dithering when loading images into RGB16 surfaces +- surface rotation: more complete support for 16-bit formats +- sis315: support for XGI Z series chip, STRETCHBLIT, and big endian handling +- matrox: use of BES guarantees atomic, tear-free triple buffering + +Tools +- directfb-csource: add option to dither RGB16 images + +Build Environment +- add missing include path for builddir != srcdir +- libtool for modules: use -module instead of -export-dynamic, since we only dlopen. + +1.3.1 +----- + +Fusion +- update to use new 'unified' fusion kernel module. + When using multi-app, please use fusion 8.1.1 or newer. +- fixed skirmish wait argument not taken as msec but usec + +Config +- added 'include' option, to include config files. +- added config option to override module search dir. +- read /proc/self/cmdline if DirectFBInit() does not receive argv/argc. +- added option to override initial screen size. +- Fix build when srcdir != builddir. + +Core +- Added IDirectFBSurface::Read and ::Write +- better out-of-memory error handling +- fixed alpha handling for palette SetEntriesYUV +- rectified changes to surface policy in case a surface is allocated again, of reallocated +- fixed memory leak in local "System Memory" pool when deallocating due to IDirectFB::Release +- fix software blending bug when modifying both source and destination +- IDirectFBDisplayLayer::SetSourceRectangle for non-scalable surfaces: change dst size too. +- surfaces: Fixed missing initialization of bridge pointer, crashing when no bridge is available. +- surfaces: clean-up local pool on 'leave' and 'destroy' +- gfx: added RGBA4444 support +- default font: Support premultiplied font formats. + +Direct +- include ARM memcpy routines (big endian only) + +Documentation +- added documentation for blend functions and some desktop-buffer-mode options +- directfbrc.5: Document triple and windows desktop-buffer-mode options. + +Gfxsystems +- matrox: Wrong chroma plane offset was being used with deinterlace blits. +- omap: Added omapfb.h to release zipfile. +- SH772x: LCD parameters not obtained via fbdev ioctl +- SH772x: improved JPEG Encode/decode performance, JPEG fixes, JPU by default disabled due to conflicts +- SH772x: detection broadened to SH772x revisions +- unichrome: support for accel stretchblit YUV->RGB for CX700/M/2. + +Input +- Fix possible array overruns +- added direct_modules_unregister() when unloading the module +- linuxinput: Fix LED handling, Count KEY_M +- font loading: Support premultiplied font formats. +- Video4Linux: add sources to release zipfile. Conform v4l and v4l2 to new core architecture. +- zytronic: added zytronic touch screen driver. +- vt: Move the keyboard XLATE/MEDIUMRAW handling to the vt code, to allow concurrent input. +- input: correctly read modifiers for load_keymap +- keyboard: added setting/loading of keyboard keymaps via IDirectFBInputDevice + +Systems +- fbdev: Fixes for pan & zoom functionality +- fbdev: corrected ioctl error handling: now stops on error. +- fbdev: Test non-primary layer allocations +- fbdev: use directfbrc for initial screen size, if specified. +- x11: fixes for glx handling, additional logging +- x11: Remember each GLXContext's drawable and set update flag only if it changed. +- x11: Manage second GLX context per thread via another surface accessor ID. + +Tools +- dfbdump: fixed to show correct buffer allocation sizes for certain formats. +- dfbinfo: now shows multiple encoder types correctly + +Window Manager +- default: Fix DLBM_TILE clipping +- default: Fixed advanced blending with only DSBLIT_BLEND_COLORALPHA being used. +- default: Added Meta-R for window rotation. + + +1.3.0 +----- + +API | IDirectFBDisplayLayer +- Added GetRotation() to query the layer rotation. + +API | IDirectFBSurface +- Added DSBLIT_ROTATE90 and DSBLIT_ROTATE270. Thanks to Young Hoon for original patch! +- Added DFBSurfaceHintFlags for optimized allocation, format selection etc. +- Added DSDESC_HINTS to DFBSurfaceDescriptionFlags and 'hints' to DFBSurfaceDescription. +- Implemented DSHF_FONT by selecting the configured font format and premultiplication. +- Added DSCAPS_ROTATED to allocate back buffers with width/height swapped (unimplemented). + +API | IDirectFBWindow +- Added SetRotation() for 90, 180 and 270 degree rotation per window. + Thanks to Young Hoon for the original patch! +- Added sub window support with each sub window having its own surface (one level only for DirectFB 1.4)... +- Added DWCAPS_SUBWINDOW, DWDESC_TOPLEVEL_ID and "toplevel_id" to DFBWindowDescription. + Manage ref to top level window and vector of sub windows in window core, but leave scaling, + translation and clipping of sub window bounds based on top level bounds to the WM module. +- Added DWOP_FOLLOW_BOUNDS to make bounds follow the parent window (only for window association, sub windows always follow). + +Runtime Options +- Allow '90' and '270' for "layer-rotate" option. + +Graphics Core +- Implement proper clipping for rotated blits of 90, 180 or 270 degree. + +Layer Core +- Implement layer rotation using DSCAPS_ROTATED if available, otherwise using rotated window stack. + With just a single buffer (frontonly), it always uses rotation of the window stack. + Thanks to Young Hoon for the original patch! +- Added magic value to CoreLayerContext structure, improved debug messages. +- Fixed missing lock on surface structure around dfb_surface_allocation_update() call. + +Surface Core +- Added Surface Pool Bridge[tm] technology to speed up transfer between pools. + New API can be implemented to do optimized transfer from one surface pool to another. + CheckTransfer() is called to probe each registered CoreSurfacePoolBridge. + CoreSurfacePoolTransfer is allocated with one or more rectangles to be transfered. + StartTransfer() and FinishTransfer() are used to actually execute the transfer + which could be queued, but is synchronous at the moment (Start+Finish). +- Implemented dfb_surface_buffer_write() using Write() on allocation. +- New algorithm for finding the allocation which to Write() to, using last read + allocation or other up to date allocation. +- Remember last read allocation for better negotiation in case of multiple up to + date allocations. +- Implemented dfb_surface_buffer_read() using Read() on allocation +- Added dfb_surface_buffer_lock_deinit(), moved out format conversion. + +Window Core +- Added magic value to CoreWindow. +- Set magic value in CoreWindow before calling WM functions. +- Added lock and ref around dfb_wm_close_stack() in dfb_wm_close_all_stacks(), added context magic and lock assertions everywhere! + +Pixel Formats +- Added dfb_convert_to_rgb24() and dfb_convert_to_a8(), used for surface dumps to .ppm files. + +Software Rendering +- Started implementation of DSBLIT_ROTATE90, DSBLIT_ROTATE180 and DSBLIT_ROTATE270 for all blitting flags... +- Disable MMX functions not supporting rotation (Ostep/Dstep) properly. + +Utilities +- Added D_UTIL_SWAP(a,b) to exchange values. +- Added dfb_region_from_rotated(), dfb_rectangle_from_rotated() and dfb_point_from_rotated_region(). +- Replaced dfb_back_to_front_copy_180() by dfb_back_to_front_copy_rotation() with extra argument. + Thanks to Young Hoon for the original patch! + +OpenGL Driver +- New accelerated driver using OpenGL! + +PNG Image Provider +- Use dfb_surface_write_buffer() if possible. + +Default WM +- Implement stack rotation and window rotation, thanks to Young Hoon for the original patch! +- In window_at_pointer() use dfb_surface_read_buffer() with 1x1 rectangle instead of lock/unlock. + +UniQuE WM +- Added experimental border event handling in test_foo program to move/raise any window :) +- Use dfb_surface_write_buffer() instead of lock/memcpy/unlock for border images (foo). +- Unload foo surface (border tiles) during master shutdown. + +X11 System +- Full featured OpenGL based acceleration via GLX! +- Implemented Surface Pool Bridge for fast transfer between XShmImage and GLX pool. +- Use XShmCreatePixmap() and XCopyArea() instead of XShmGet/PutImage() allowing partial transfers in both directions! +- Also tried to make multi application working, but it seems that for an X11 Pixmap there can + only be one process doing a glXCreatePixmap() which also does not allow the GLXPixmap to be shared :( + +dfbdump tool +- Show layer and window rotation. + +dfbtest_window tool +- Added new program for testing window and sub window features :) +- Added more options, window destroy test and proper cleanup. +- Added test that hides the top level window and shows it again. +- New option to pass window caps for top or sub window. +- Enhanced testing and logging code. Run most tests on sub window, too. +- Added advanced window geometry tests. +- Added options for setting window options and for window association. +- Implemented selection of individual tests for top/sub window and added option to wait at the end. + + +1.2.6 +----- + +Core +- Call fusion_stop_dispatcher() before destroying pools to fix lots of shutdown issues. + +WM Core +- Lots of useful debug messages. + +libfusion +- Added fusion_stop_dispatcher() to be called before destroying pools etc... fixing lots of shutdown issues! + +libdirect +- Added direct_thread_wait() / _notify(), _lock(), _unlock() and _terminate(). +- Added some debug messages to DirectInterface code. + +Utilities +- Added dfb_updates_get_rectangles() for convenience, doing bounding box trade off etc... + +X11 System +- Fixed remaining crash with expose events that ran into a NULL window. + + +1.2.5 +----- + +Fonts +- Fixed alignment on eight byte boundary, thanks to Nikita Egorov! + +Software Rendering +- Don't switch to fill rectangle in DrawLine() if matrix is used. + +SH772x +- More fixes for JPEG encoding with up/down scaling and offset. + + +1.2.4 +----- + +API | IDirectFBInputDevice +- Added DFBInputDeviceAxisInfo(Flags) with DIAIF_ABS_MIN/MAX flags and abs_min/max fields. +- Added DIEF_MIN/MAX and min/max to DFBInputEvent, e.g. for axis boundaries. + +API | IDirectFBWindow +- Added DWCAPS_NOFOCUS: window will never get focus or receive key events, unless it grabs them. + +Runtime Options +- New option "[no-]software-trace" to show every stage of the software rendering pipeline. + +Build Options +- Switch to pkg-config for SDL and FreeType2, thanks to Keith Mok! + +Graphics Core +- Only have DSRO_MATRIX be mandatory for now. Other flags no longer prohibit acceleration. + Worst case was when DSRO_SMOOTH_UP/DOWNSCALE was turned on globally via "smooth-upscale" or "smooth-downscale" + runtime option which caused all operations to use software fallbacks, not only StretchBlit()! + +Input Core +- Added GetAxisInfo() to InputDriverFuncs to query information about one axis. + Make use of it in input_driver.h only if driver has defined DFB_INPUTDRIVER_HAS_AXIS_INFO + to avoid having to change all input drivers. +- Query axis information from driver and put it into events. + +Layer Core +- Set background mode of new contexts to DLBM_DONTCARE. + +Pixel Formats +- Rewrote YCbCr<->RGB conversion routines without lookups which are much more expensive on embedded devices. +- Fixed many NV12, NV16 and NV21 code areas, mostly for big endian. + +Software Rendering +- Rewrote Dacc_RGB_to_YCbCr_C and Dacc_YCbCr_to_RGB_C using Duff's device with macros. + Conversion also supports 4:4:4 by this change, not optimizing for 4:2:x cases. +- Get rid of YUV tables saving 5k binary size! +- Added optimized Bop_argb_blend_alphachannel_one_invsrc_Aop_argb() -> 6x speed + +Utilities +- Added exported dfb_pixelformat_names[] and replaced relevant code. + +libdirect +- Important fix for having multiple interface implementations in one module. +- Added file and symbol lookup functions to trace code for external usage. + New functions are direct_trace_lookup_file(), direct_trace_lookup_symbol() and + a convenience function combining the above called direct_trace_lookup_symbol_at(). +- Fixed missing magic value in thread structure created for non-direct threads. + +Davinci Driver +- In ARGB OSD dithering use task buffer and add missing locks. +- Raise OSD surface pool priority to allocate in frame buffer rather than /dev/mem. +- Workaround broken DSP cache invalidation function. + +SH7722 Driver +- Build only for SH4. +- Fixed missing update of rendering destination buffer. +- Fixes for JPEG encoding with conversion, cleanups... +- Fixed software fallback for JPEG decoding to unsupported formats. + +SH7723 Driver +- Added support for SH7723 to SH7722 driver and kernel module. + +Default WM +- Use min/max values from absolute axis motion events if present. +- Implemented DWCAPS_NOFOCUS. + +X11 System +- Update X11 system module with cleaned up code from 1.3.x. +- Fixes in input driver and layer output. + +JPEG Image Provider +- Fix direct decoding to NV16 (no to+from RGB) for little endian. + +dfbtest_blit +- Added test program for (Stretch)Blit with an image from file. + + +1.2.3 +----- + +X11 System +- Fixed new bug with reopening X11 window when layer resizes. + + +1.2.2 +----- + +API | IDirectFBSurface +- Added missing layer context locking around dfb_wm_get_insets() in IDirectFBSurface_Window_Construct(). + +API | IDirectFBWindow +- Added missing locks around direct dfb_wm_... calls... + +API | Utilities +- Generate name/value pairs for DFBWindowCapabilities and DFBWindowOptions. + +Layer Core +- Fixed failing context lock assertion in dfb_wm_close_stack() by locking in context destructor. +- Added debug message to print context being returned by dfb_layer_get_active_context(). + +Window Core +- Avoid recursive dfb_wm_close_stack() caused by SaWMan's CloseStack() unref on the layer region. + This issue happens only in single app build, where the layer region constructor gets called synchronously + and destroys the window stack structure before the dfb_wm_close_stack() has finished. + Fixed by calling CloseStack() at the end dfb_wm_close_stack(), moving the list removal and flag clearing + before the call and freeing the stack data in dfb_windowstack_destroy() or recurring dfb_wm_init_stack(). +- Fixed crash in window destructor caused by (un)locking the stack. +- In dfb_wm_close_all_stacks() lock each context and temporarily ref it for following unlock. + +libdirect +- Added DirectUnregisterInterface() and destructor to call it. +- Added magic value to interface implementation structure and use D_CALLOC/D_FREE. + +libfusion +- Fixed single app skirmish lock counting (copy'n'paste bug). + +Default WM +- Avoid most of the recursive calls of wind_of_change(). +- Make sure window has a surface before restoring its size when disabling scaling. + +X11 System +- Fixed race condition and X error when switching resolution quickly. +- Implemented primaryRemoveRegion() with a new call to destroy the X11 window. +- Improve shutdown behaviour of X11 module. + Certain race conditions at shutdown prevented, leading to lock or crash. + x11input and x11 modules combined into one. + +dfbmaster tool +- Added very simple dedicated master for safety, stability or enhanced testing pleasure. + + +1.2.1 +----- + +API | IDirectFBSurface +- Added MakeSubSurface() to make this surface a sub surface or adjust the rectangle of this sub surface. +- Fix Lock() on layer surfaces with system memory back buffer. + This reverts commit 4cc82baddbc3a9849c2ff6c4979a65bcfb6ba96b and fixes + GetFramebufferOffset() properly by not adding CSAF_GPU_READ in Lock(), but + checking if there's a physical address provided by the surface pool via the + buffer lock in GetFramebufferOffset(). + +API | IDirectFBImageProvider +- Added simple WriteBack() method for encoding surface data. + +Runtime Options +- New option "warn=" to print warnings on surface/window creation or surface buffer allocations. + Example: 'warn = allocate-buffer:300x300' - Prints a warning for every surface buffer allocation made with + both width and height of 300 or above. +- Added "keep-accumulators = " to allow freeing of accumulators above the limit. + Setting -1 never frees accumulators until the state is destroyed (previous behaviour). + The default is 1024 which already means up to 16kB are kept! +- Allocate palette on demand saving 16kB of the 60kB allocated until after DirectFBCreate(). + +Layer Core +- Fix failing assertion due to recent code cleanup. + +Surface Core +- Cleanup complex assertions, no CORE_SURFACE_ALLOCATION_ASSERT within CORE_SURFACE_BUFFER_LOCK_ASSERT, only D_ASSERTs. +- A bit more debug when locking buffers. +- Use convenience functions where possible, e.g. dfb_surface_lock_buffer() instead of dfb_surface_get_buffer() + and dfb_surface_buffer_lock() etc. +- Implemented strategy for surface allocations when pools are out of memory. +- Extended dfb_surface_pools_negotiate() to return a list of capable pools order by priority + including pools out of memory at the end of the list. +- Added MuckOut() to the surface pool API to tag all allocations for removal to free up memory + for a new allocation. If not provided by the pool, a fallback implementation will do the job, + but that's not implemented yet. +- Added dfb_surface_pool_displace() to muck out and backup allocations and do the new allocation. +- Moved allocate_buffer() from surface buffer to surface pool code as dfb_surface_pools_allocate() + with extended negotiation using a list of possible pools and with ability to muck out allocations. +- Changed static update_allocation() to exported dfb_surface_allocation_update(). +- Added dfb_surface_trylock() for a fusion_skirmish_swoop() on the surface lock. +- Call dfb_surface_lock() and dfb_surface_unlock() in surface_destructor(). +- Moved surface core initialization before system module to have generic pools always at + the same position (with the same pool IDs). +- Keep an ordered list of surface pool IDs based on priority. +- Have a pointer to a backup pool in every pool which is set to the shared memory surface pool by default. +- Enhanced backup strategy when mucking out allocations. +- First check if any of the existing allocations is up to date, + otherwise try to update one of the existing allocations. +- Enforce same order of joining pools as of initializing them. +- Fixed invalid 'buffer->written' allocation pointer when using "thrifty-surface-buffers" option. +- Fixed wrong order of joining surface pools in slaves. +- Fixes for mucking out multiple allocations. +- Use fusion_ref_set_name() to show the same info as with the skirmish. +- Cleanup buffer initialization and reset with two new convenience functions. +- Other fixes and enhanced debugging output. + +Surface Manager (FBDev, DevMem, X11 Virtual Physical testing pool) +- Enhancements to surface manager code and fixes for old behaviour (without virtual physical surface pool). +- Extend dfb_surfacemanager_displace() to check policies, reimplement toleration code + and take free space before and after an occupied chunk into account. +- Cleanup dfb_surfacemanager_allocate() to only check for free chunks. +- Always initialize x11(Shm)Image surface pool, regardless of virtual physical surface pool being enabled. +- Never fail in x11TestConfig() if virtual physical surface pool is not enabled, + but use Fusion shared memory allocations as a fallback (previous behaviour). +- Update allocation size from chunk length which is usually bigger (at least 16 bytes of safety area). +- Enhance surface manager to find the best matching group of allocations to muck out. +- This is the first time multiple smaller allocations can be mucked out for a bigger one. + The code that determines these allocations is still O(1) and finds the best matching + group within all possible combinations. + +Window Core +- Shutdown fixes in the window management and new flags for the state of the stack. +- Added CoreWindowStackFlags with CWSF_INITIALIZED and CWSF_ACTIVATED to CoreWindowStack. +- In dfb_wm_close_all_stacks() simply call dfb_wm_close_stack() for any stack with CWSF_INITIALIZED set. + The previous code did only half of it, just clearing context->stack pointer and clearing the magic value + resulting in the notification handler for the background image accessing a stack structure without magic. +- In dfb_wm_close_stack() first deactivate the stack if CWSF_ACTIVATED is set. +- Safe state handling in dfb_wm_set_active(). +- Moved magic value set/clear from wm.c to windowstack.c where the structure is allocated and freed. +- Check return value of dfb_wm_init_stack(). + +libfusion +- Fixed dead lock with references in single app mode. fusion_ref_zero_lock() no longer leaves the mutex locked. + Turned 'waiting' into 'locked' to keep size for binary compatibility. +- Print warning for FUSION_CALL_RETURN if caller could not receive result due to a signal. +- Clear object list (pointer to NULL) after cleanup for safety. +- Added fusion_ref_set_name(), e.g. for better debug information on object references. + +Conversion +- Added conversion to RGB555 and from AYUV (added to all conversion functions). + +SH7722 Driver +- Added hardware JPEG encoding support, code moved into library, JPEG lock and buffer allocation in kernel + +VMWare Driver +- Fixed copy'n'paste bug in virtual driver. + +Keyboard Input Driver +- Only become active if FBDev or DevMem is used to avoid grabbing keyboard from X11 for example. + +DevMem System +- Partially reverted cleanup of surface manager code. The workaround for the surface manager creation happening before + graphics driver initialization with possible dfb_gfxcard_reserve_memory() calls is still required. +- Update surface manager code from X11 virtual physical testing pool. + +FBDev System +- Update surface manager code from X11 virtual physical testing pool. + +X11 System +- Take first matching visual for each format instead of last and handle RGB32 and ARGB separately (depth 24 and 32). +- Fixed bytes per pixel and pitch calculation for fallback XCreateImage() when no XShm is available. +- Output ARGB when depth is 32, support AYUV input (layer format). +- XShm fixes and new virtual physical surface pool for development and testing. +- Specifying 'video-length = ' option will create a shared memory block of that + size and initialize a surface pool with a surface manager supporting the new MuckOut() call. +- Changed x11(Shm)Image pool to only allow allocations for supported visuals (no fallback + shared memory allocations) when the new option is used. +- Return accelerator ID 51 for testing with the virtual acceleration (currently called vmware). +- Make usage of XShmQueryVersion() to check for XShm support. +- Return accelerator as set in config. +- Set buffer lock offset in fallback mode to satisfy assumption in surface core. +- Other cleanups and fixes. + +dfbdump tool +- Show capacity in pool info (with "-p") and only dump shared or explicitly specified surfaces to avoid crashes. + +dfblayer tool +- Add testing Lock() with read/write, read only or write only. + + +1.2.0 +----- + +Overall +- Minor fixes and cleanups, fixed compiler warnings etc. +- Debugging messages and utility macros have been added. + +API | IDirectFB +- Added sanity limit of 20480x20480 to CreateSurface(). +- Fixed input device enumeration and event collection for devices without caps. + +API | IDirectFBFont +- Bug fixes in GetStringBreak(), thanks to Keith Mok! + +API | IDirectFBSurface +- Don't build hierarchy of sub surfaces internally, if start-stop is not used (speeds up sub surface construct/destruct). +- Optimized DrawLines() to use rectangle filling if all lines are horizontal/vertical. + This allows hardware acceleration to be used, e.g. in GTK+ using gdk_directfb_draw_segments() a lot with + only horizontal and vertical lines for widgets. + +API | IDirectFBVideoProvider +- Fixed copy'n'paste(?) bug in SetStreamAttributes() argument. + The argument was DFBStreamDescription, but obviously should be DFBStreamAttributes. + +Pixel Formats +- Added BGR555 as a new pixel format, thanks to GARDET Guillaume! + +Runtime Options +- Added "[no-]cursor-updates" to never show a cursor, but still handle it. +- New runtime option "thread-priority-scale=<100th>" to apply a scaling factor on thread type based priorities. + +Graphics Core +- Removed dfb_gfxcard_sync() call from slave leaving procedure. +- Added CCF_RENDEROPTS that needs to be set by the driver to allow acceleration when != DSRO_NONE. + +Input Core +- Only suspend the input core during shutdown if it has been initialized already. +- If a device has no caps at all, let it match with any caps being requested. + +Layer Core +- Added CLRCF_FREEZE for dfb_layer_region_set_configuration() to set CLRSF_FROZEN. + Changes are not applied until dfb_layer_region_flip_update() is called. +- Check if region surface is system only and avoid using CSAF_GPU_READ which would fail. +- Keep a list of window stacks, added dfb_wm_close_all_stacks() called early during core shutdown. + +Software fallbacks +- Dacc_premultiply_color_alpha() also needs Cacc.a to be set, thanks to Mandy Wu for spotting! + +libdirect +- Important Fix: Actual realloc() was missing in runtime-disabled debug mode (default). +- Remove check on element in direct_list_contains_element_EXPENSIVE() used for debugging. + When checking for existence in a list, avoid crashes due to already freed elements being passed + in as a pointer and checked for existence in a list. + +TI Davinci driver +- Added scaling support to video layer using the Davinci Resizer. +- Added local task buffer for preparing a list of commands and send at once (CPU load reduced). +- Fixed timeout detection in DAVINCI_IOCTL_WAIT_LOW. +- Fix kernel module Makefile for newer kernels. +- Use FBIO_GET_TIMING to query screen size. +- Build and install a library and header files. +- Update allocations during Lock(). +- Allow external definition of DAVINCI_C64X_IDLE_MAX for c64xdump tool. +- Added lots of debug messages to 2D acceleration. +- Set StretchBlit() hook statically. +- Replaced all hard coded addressing of 32MB DSP working area by DAVINCI_C64X_MEM. + DAVINCI_C64X_MEM is defined in to be 0x8e000000 if not defined from outside. +- Moved call to set buffer start address to videoUpdateRegion(). + Also made videoSetRegion() very lightweight, e.g. when only the surface is changed. +- Commented out davinci_c64x_write_back_all() in EngineSync() which is still not working properly anyhow. + +CirrusLogic EP9xx +- New driver, thanks to Brian Austin! + +DGIFF Font +- Revival of the DGIFF (DirectFB Glyph Image File Format). Thanks to Vaclav Slavik! + +FBDev System +- Ignore panning errors as before. + +X11 System +- Fixed double wheel events by discarding ButtonUps. +- Added missing check of layer pixel format based on conversion routines available. +- Don't use XShm for offscreen surfaces, but always use Fusion SHM. + +Keyboard Input driver +- Make driver usable without fbdev/vt just for the sake of a keymap. + +Linux Input driver +- Thanks to Phil Endecott for adding F13 to F24 support! + +directfb-config +- Teach directfb-config about SYSROOT and removes -L/usr/X11R6/lib, thanks to Marc Kleine-Budde! + + +1.2.0-rc1 +--------- + +API | IDirectFBSurface +- Added IDirectFBSurface::SetSourceMask() - yes, a third blitting operand :) +- Added DSBLIT_SRC_MASK_ALPHA to modulate source alpha channel with alpha channel from source mask. +- Added DSBLIT_SRC_MASK_COLOR to modulate source color channels with color channels from source mask. +- Added SetSourceMask() with a surface argument plus x/y offset and flags. +- Added DFBSurfaceMaskFlags with DSMF_STENCIL to make x/y offset absolute and always start at a + fixed position in the mask, otherwise x/y from the Blit() are added. +- Allow second string (prefix) in Dump() to be NULL to dump without numbering. +- Added FillTriangles(). +- Changed SetMatrix() to take a 3x3 matrix. + +API | IDirectFBEventBuffer +- Don't allow posting of universal events bigger than DFBEvent. + +API | IDirectFBImageProvider +- Don't fail if PeekData() is not supported, same behaviour as video providers... + +API | IDirectFBVideoProvider +- New events and SetAudioDelay(). Thanks to Daniel J Laird! +- Applied patch from Daniel Laird adding buffer threshold control/notifications. Thanks! + +Runtime Options +- Added option "[no-]software-warn" to show warnings when doing/dropping software operations. + No longer print a warning when software fallbacks are disabled. Use the new option! +- Added "[no-]fatal-break", d_debug_at() and direct_debug_at_always(). +- Added option "surface-shmpool-size=" to set the size of the shared memory pool + used for shared system memory surfaces. +- Added options to set default priority, policy and stack size for threads. +- Don't enable mouse motion compression at input drivers by default. +- New runtime option "quiet=" to disable only certain message types. + Thanks to Niels Roest! + +Build Options +- Added "--without-software" to save 100k+ binary size if really not needed. +- Fixed typo in X11 detection. + +libdirect +- Added extensible result codes and made other fixes to ban from libdirect and others. +- Made DirectResult the primary type for result codes. +- Added D_RESULT_TYPE_BASE, D_RESULT_TYPE_MAX and D_RESULT_TYPE_IS for extended result codes. +- Changed most of DFB_ codes to be assigned the corresponding DR_ code. +- Three DirectFB specific codes remain, after DFB__RESULT_OFFSET defined as D_RESULT_TYPE_BASE('D','F','B'). +- Added DirectEnumerationResult. +- Further cleanup of debugging code. New minimal debug mode + to support D_DEBUG_AT, D_ASSERT and D_ASSUME when debug support is + disabled, but DIRECT_ENABLE_DEBUG or DIRECT_FORCE_DEBUG have been + defined. No domain filters, just formatted output (all or nothing). +- Fixed 'log-file' and 'log-udp' option. +- Strip off "lt-" at the beginning of a program name (for config file). +- Fixed allocation debugging always being used when available. + +libfusion +- Check whether mount point is writable in find_tmpfs(). +- Implemented lock counter in single app build. +- Added fusion_world_get_fork_action() and fusion_world_set_fork_callback(). + +Graphics Core +- Added mask of clipped functions to internal CardCapabilities (gfx drivers). + Instead of providing clipping for none or for all functions (CCF_CLIPPING) a driver + can set individual functions to be hardware clipped, e.g. DFXL_STRETCHBLIT where + clipping is crucial. +- Added minimum glyph alignment of 8 bytes. +- Fixed state handling bug causing wrong acceleration masks. +- Added special graphics state debug messages in domain "Core/GfxState". +- Added dfb_line_segment_intersect(). + Gets the intersection point between a line and segment within the given segment. +- Implemented (real) triangle clipping. +- Started implementing affine transformations in software. +- Also fixed incorrect clipping when DSRO_MATRIX is set. +- Added support for affine transformations to dfb_gfxcard_draw_string(). + Actually this is done by using gStretchBlit. + Direct glyph transformation (done by the font provider) would be better. + +Input Core +- Added dfb_input_event_type_name() and event debug at Core/Input/Evt. +- Fix crashes during shutdown by suspending the input core before shutting down anything. + +Layer Core +- Only sync with accelerator in dfb_layer_region_flip_update() when DSFLIP_PIPELINE is not set. + +Surface Core +- Support NV16 in dfb_surface_dump() and so IDirectFBSurface::Dump(). +- Added size field to description for pools with a defined maximum. +- Added CORE_SURFACE_BUFFER_LOCK_ASSERT(lock) and CORE_SURFACE_ALLOCATION_ASSERT(lock). + These two macros are consisting of assertions for all they could check. + +Software Renderer +- Print blend funcs in warning caused by 'no-software'. +- Allow DSBLIT_SRC_PREMULTIPLY while scaling from indexed to alpha formats. +- Scaling an image which has alpha values != 255 (non-premultiplied) now produces + premultiplied output (smooth scaling only). Support for non-indexed sources still + needs to be added. + +nVidia driver +- Implemented affine transformations. +- In case of unsupported arch (NV40), skip objects and fifo setup. +- Cleanup overlay code. Enbale using NV12 (requires NV30 or newer). +- Fixed buggy vertices formation in TextureTriangles. + +Radeon driver +- Implemented affine transformation (all cards) and source masking (R100/R200 only). +- Implemented antialiasing (R100 and R200 only). +- Fixed conversion+blend with A8 destination. +- Use LINE primitive for transformed DrawRectangle. +- Use POINT primitive for 1x1 rectangles. +- Implemented DSPF_DSTALPHA/INVDSTALPHA for A8. +- Implemented DSBLIT_SRC_PREMULTIPLY (R100/R200 only). +- Emit transformed rectangle using TRIANGLE_LIST instead of TRIANGLE_FAN. + +SH7722 driver +- JPEG decoding, supports NV12 and NV16 (4:2:0 and 4:2:2 images) +- Use VEU for scaling and format conversion of JPEG decoded data (line buffer mode). + Supports 4:2:0 and 4:2:2 to NV12, NV16, RGB16, RGB24, RGB32. +- Implemented LUT8 support for the third layer. Added lock for BEU code called for different layers. +- Automatic parent input system selection and other fixes, allowing to run df_fire on third and df_dok + with alpha channel on first layer. +- Implemented XOR for drawing and blitting. +- Implemented DSBLIT_SRC_MASK_ALPHA, cleaned up and optimized state handling. +- Fixed byte swapping issues, e.g. no more swapping between BEU and LCDC, correct swapping of BEU input + depending on number of bytes per pixel. + +TI Davinci driver +- More acceleration (StretchBlit for ARGB, ARGB/RGB32->RGB16 conversion and FillRectangle() blending). +- Added colorizing support to blend functions. No additional cycles in DSP :) +- Added properly clipped (phases!) StretchBlit() for ARGB and RGB32 without any blitting flags. +- Added ARGB/RGB32 conversion to RGB16 without any flags (currently writing alpha data to scratch area). +- Real IRQ based synchronization, optimization for opaque filled rectangles. +- Fixed color calculation for filling/drawing to UYVY. +- Allow explicit driver usage without probing by setting accelerator id to 6400. +- Suppress errors of custom ioctls for now. +- Added small tool c64xdump for showing DSP status (queues, load). +- Further DSP interface updates and cleanups. +- Work around missing alpha plane pitch setting (when differing from RGB plane). + The DSP function needs to be extended to fix it properly. +- Patch from Eric Nelson to support HD OSD planes. + +Linux Input driver +- Set DIEF_FOLLOW on all events known not to be the last. + +FBDev system module +- Don't pan at all when it's not supported by the device. +- Important fixes for mode switching, restructuring and cleanup. + Still not working again is support for virtual resolutions with panning, + not double/triple buffering which works. + +SDL system module +- Fix mode switching/surface creation, having working accelerated SDL backend again. + +X11 system module +- Bring in line with 1.0 features, expose handler, format conversion, SHM, SMP 8-) +- Fixed threading issues using XLock/UnlockDisplay(). +- Use XNextEvent() again instead of usleep() based polling after fixes. + Pull up to 100 events per round, i.e. until accumulated motion events + are flushed and thread exit status is checked. +- Send ClientMessage to wake up thread from blocking XNextEvent(). +- Reduced invisible 16x16 cursor to 1x1, minor cleanups. + +Default WM +- Combine multiple x and/or y motion events before sending events or updating the cursor. + This is a better way as opposed to have the driver do the work, + otherwise there was too much cursor acceleration in such a case. + +JPEG Image Provider +- Implemented directly loading to NV16 surfaces staying in YCbCr space. + +dfbdump tool +- Added option "-ds" for dumping surfaces. +- Show buffers' lock status again. + +dfbinfo tool +- Show min/max keycodes. + +dfbinspector tool +- Added dfbinspector as a small C app (graphics driver capability probing). + +gendoc tool +- Lots of improvements to parser and generated documentation. + + +1.1.1 +----- + +API +- Added 3x2 transformation for all drawing and blitting. +- Added render option DSRO_MATRIX and IDirectFBSurface::SetMatrix(). + The matrix consists of 3x2 fixed point 16.16 values. The order in the array is from left to right and from top to bottom. + All drawing and blitting will be transformed: + X' = X * v0 + Y * v1 + v2 + Y' = X * v3 + Y * v4 + v5 +- Added DSRO_ANTIALIAS to enable anti-aliasing for edges, lines... + +API | IDirectFB +- Added DSCAPS_SHARED for creating shared surfaces, not using local (malloced) memory pool. + +API | IDirectFBDisplayLayer +- Added DFBDisplayLayerSourceCaps featuring DDLSCAPS_SURFACE. +- Added resource_id to DFBWindowDescription and DWDESC_RESOURCE_ID to + specify the resource id to use for window surface creation, rather + than using the window id for that. + +API | IDirectFBFont +- Fixed missing translation of characters to indices in GetKerning(). + +API | IDirectFBSurface +- Added DSBLIT_COLORKEY_PROTECT to prohibit writing the color that the destination surface uses as a source color key. +- Fixed GetFramebufferOffset() by adding CSAF_GPU_READ when Lock() is called on a DSCAPS_VIDEOONLY surface. + +API | IDirectFBVideoProvider +- Added DVPET_FINISHED, sent when playback is finished. +- Added DVPET_SURFACECHANGE, sent when size/format change. + +Runtime Options +- Added "[no-]autoflip-window" to automatically flip non-flipping windowed primary surfaces. + Previously, the default was to automatically Flip() in a thread. Now it's not. +- Added "[no-]font-premult" for premultiplication in case of ARGB glyph images. Default is enabled. +- Added "[no-]linux-input-grab" that will control whether linux_input will grab the devices. This is + useful in cases where multiple processes want to receive input events. +- Added "linux-input-devices" and "tslib-devices" options. +- Added "no-init-layer [= ]" option to disable initialization of layers. + Primary layer is initialized by default, use this option to avoid that. +- Added "[no-]thread-block-signals". +- Fix background color index support. +- Fixed missing color key flags when only index is set via config file. +- Reimplemented "thrifty-surface-buffers". + +Build Options +- Added "--with-smooth-scaling", turned off by default to avoid 100k+ binary size increase. + +Display Core +- Implemented defered region realization by adding CLRSF_FROZEN which is set initially on every region that is created. +- As long as CLRSF_FROZEN is set, all SetRegion() calls to the driver (and buffer allocations due to it) are simply discarded. +- Only when dfb_layer_region_flip_update() is called and the region is enabled and active, the flag is removed and the region + is either realized or the config is just set if it was already/still realized. +- Added GetMixerState() to screen driver API and dfb_screen_get_layer_dimension() to be used + instead of the deprecated dfb_screen_get_screen_size(). +- Added capabilities for display layer sources. Check source capabilities if present when determining + whether to allocate a surface for a layer region. This allows to add layer sources in addition to DLSID_SURFACE + that have a surface without using DLCAPS_SURFACE which enables surfaces for all sources. +- Deallocate layer region surface buffers if the region is being unrealized. +- Made DisplayLayerFuncs const when being passed or used. +- When switching to an indexed layer format, use dfb_surface_init_palette() if no palette exists already. + +Graphics Core +- Added dfb_gfxcard_get_driver_data(). +- If alpha is zero, still check for RGB when looking up the best match in a palette. +- When resetting the 'checked' flags also reset the same in 'accel' flags. Fixes accidental hw usage. +- Skip prechecking clip in FillRectangles() if DSRO_MATRIX is used. Other functions are also affected, but not fixed yet. + +Surface Core +- Fixes to CPU/GPU read/write access interlock management. +- Added dfb_surface_buffer_dump() implementation. +- Fixed lock+reconfig bug: fail when trying to reconfig a locked surface. +- Added convenience functions dfb_surface_read/write_buffer() and dfb_surface_dump_buffer(). +- Moved surface palette creation from dfb_surface_create() into new dfb_surface_init_palette(). +- Added CSALF_PREALLOCATED. The "thrifty-surface-buffers" option is implemented by iterating through all allocations + at the end of an update_allocation() and deallocate all other allocations, unless they have the CSALF_PREALLOCATED flag. + In the latter case it would not be a benefit, but the disadvantage of losing an allocation that is still up to date and + would probably be faster (CPU read) than others. The 'preallocated' surface pool sets CSALF_PREALLOCATED upon allocation. +- Another flag CSALF_VOLATILE has been introduced. In case of a write access to one allocation, any other + allocation is deallocated if it has the flag. This is independent of the "thrifty-surface-buffers" option. + The 'local', 'shared' and 'preallocated' surface pools set CSALF_VOLATILE upon allocation. + +Window Core +- Refuse to set non-shared surfaces as a background image for a window stack. + +Software Render +- Added LUT8 -> ARGB4444 smooth scaling. +- Made smooth scaling support source rectangles not starting at 0,0. +- Fast RGB32/ARGB to RGB16 conversion (little endian). + +Utilities +- Added dfb_convert_to_a4() and added RGB32/ARGB support to dfb_convert_to_rgb16(). +- Added dfb_convert_to_uyvy() and dfb_convert_to_yuy2(), only copy supported yet. + +libdirect +- Added direct_cleanup_handler_{add/remove} to install a cleanup handler called upon exit. +- Added direct_page_align(). +- Added mutex and condition for thread initialization to eliminate sched_yield()s. +- Improved debug messages in thread code. Added "Direct/Thread/Init" domain to watch creation, wait, + startup, initialization, notification ... +- Initialize libdirect in DirectFBCreate() already. +- Added new URI fd:/. Used to create a DirectStream from an already opened file descriptor. +- Added direct_log_lock()/unlock() for ensuring multiple prints are not mixed with others. +- Use direct_log_lock()/unlock() to ensure stack traces are one contiguous block. +- Added sanity checks in build header if debug support is disabled. + If DIRECT_ENABLE_DEBUG is defined, silently undefine it. + If DIRECT_FORCE_DEBUG is define, show a warning and undefine it. +- Do not use PAGE_SIZE at all on Linux, thanks to Guillem Jover. +- Do not leak private labraries for dynamic linking, thanks to Guillem Jover. + +libdirect (network support) +- Join multicast group if family is AF_INET and IN_MULTICAST is true. +- Use bind() instead of connect() for receiving UDP data. +- Use SO_REUSEADDR in case of multicast. + +libfusion +- Print an alert message when using builtin implementation of fusion. +- Moved FUSION_ID_MASTER definition to types.h. +- Fix missing fusion_shm_enum_pools() for single app core. +- Added fusion_reactor_set_name() to change the name of a reactor after its creation. +- Implemented fusion_reactor_set_dispatch_callback(). +- (Pre)Parse shmfile group in fusion_config_set(). +- Added "ramfs" to possible types during mount point probing. + +libfusion (builtin multi) +- Provide a REAL implementation of fusion_skirmish_wait/notify(). +- Always free resources allocated in builtin implementation of fusion_skirmish_wait(), either if the skirmish was destroyed. +- Check for dead local references in fusion_ref_zero_lock()/trylock(). +- Return DFB_NOSHAREDMEMORY if requested allocation exceeds the maximum address of the shm pool. +- When fusion_skirmish_wait() gets called with a timeout value, check whether the timeout expired *before* sleeping. +- Use fusion_skirmish_wait() instead of usleep() in fusion_ref_zerolock(). +- In fusion_ref_zerolock(): check local references before entering the loop. +- Check for dead property purchaser. +- Honor FCEF_ONEWAY in fusion_call_execute(). Execute ref watcher with the FCEF_ONEWAY flag. +- Fail in fusion_skirmish_notify() if skirmish was destroyed. Sleep for at least 10ms in fusion_skirmish_prevail(). +- Enable sleeping in fusion_property_lease()/purchase(). +- Moved socket directory from "/tmp/fusion.#" to "/tmp/.fusion-#". +- Change socket ownership according to shmfile group. +- Speed up fusion_call_execute(FCEF_ONEWAY) by not creating a new socket. +- chown() the sockets directory according to "shmfile-group". + +Voodoo +- Implemented some more requestor/dispatcher methods. +- Fixed alignment issues by applying VOODOO_MSG_ALIGN() on each message block. + +Graphics drivers +- Port ati128, cle266, cyber5k, i810, i830, neomagic, nsc, savage, sis315, tdfx, unichrome to the new surface core. Only compile tested. + +Radeon driver +- Instead of emitting vertices instantly, store them in a buffer that is submitted on EmitCommands() (this way DrawString() is about 45% faster with my 9200SE). +- R100/R200: Dropped some blend functions when destination format is A8 ((INV)DEST alpha never worked because A8 isn't really supported as dest format). +- R300: Implemented BLEND_COLORALPHA, COLORIZE, PREMULTCOLOR with some limitations (source must be premultiplied and COLORALPHA+ALPHABLEND isn't supported at all). +- Sleep for 10 usec in WaitVSync loop. + +nVidia driver +- Fixed texture uploading: use the current surface lock instead of locking again. +- Replaced state->modified by state->mod_hw. +- Disabled some features not working with the new surface core. +- Sleep for 10 usec in WaitVSync loop. + +Renesas SH7722 driver +- Added driver for SH7722 SoC from Renesas Solutions Corp. +- Supports DrawString(), FillRectangle(), DrawRectangle(), FillTriangle(), DrawLine(), FillSpans(), Blit() and StretchBlit(). +- Supports DSDRAW_BLEND, DSBLIT_BLEND_ALPHACHANNEL, DSBLIT_BLEND_COLORALPHA, DSBLIT_SRC_COLORKEY, DSBLIT_ROTATE180 and DSBLIT_COLORIZE. +- Use hardware 3x2 matrix to implement DSRO_MATRIX for all blitting and most drawing. +- Transform coordinates in driver for DrawLine() and DrawRectangle(). +- Implemented DSRO_ANTIALIAS for all drawing operations. +- The hardware provides "anti-aliased" lines by drawing a line with doubled pixel width (minor axis). This should be drawn with + a transparency factor. Finally the original line is drawn on top of this. +- For filled rectangles and triangles, only the double width line is drawn and then the shape is filled. + +TI Davinci +- Added TI Davinci driver. +- Supports OSD and Video with positioning, color key, opacity, alpha channel and vsync. +- The driver uses the devmem system and opens all frame buffer devices itself. + This is required for extended ioctls like setting the OSD position, but also to + support alpha channels which are stored in a different frame buffer device. In + case of ARGB for the OSD, the alpha channel (3 bit!) is dithered during conversion. +- Implemented surface pools for OSD and Video layer. This enables direct usage + of the frame buffers in case of RGB16 for OSD and UYVY for Video. +- Added patch for davincifb to support triple buffering on OSD. +- Hardware acceleration using the DSP with a special firmware and kernel module. +- Driver still runs without DSP module, but unaccelerated. +- Supports DrawString(), FillRectangle(), FillSpans() and Blit(). +- Supports DSBLIT_BLEND_ALPHACHANNEL, DSBLIT_BLEND_COLORALPHA, DSBLIT_SRC_COLORKEY, DSBLIT_SRC_PREMULTIPLY and DSBLIT_SRC_PREMULTCOLOR. +- Supports RGB16, RGB32 and UYVY for simple filling and blitting with color keying. +- Supports ARGB for blending and premultiplication. +- No support for different source and destination formats. +- No support for color keying in conjunction with blending. +- DrawString() is not colorized yet, but enabled for testing (all text is white). + +TI OMAP driver +- Added TI OMAP gfxdriver. +- No video layer or other fancy stuff yet. Enough to run XDirectFB on the Nokia N800 though. + +Unichrome driver +- Fix a pointer buglet. The pfetch pointer was compared/set instead of the value to which it pointed. + +Keyboard (TTY) input driver +- Sleep 2ms when read returns 0, to avoid CPU hogging. Thanks to Luis Mondesi lemsx1 gmail. + +Serial input driver +- Fixed illness in processing read data in serial driver and fixed error path. + +Default WM +- Added WM key combo - to redraw the whole window stack. + +Unique WM +- Fixed wheel direction. +- Commented out auto center. + +DFIFF image provider +- Make DFIFF fast for the standard case again (60->483 MPixel/sec). +- Added support for sub surfaces with proper clipping/offset. +- Check for unscaled and unclipped loading without format conversion and just use dfb_surface_write_buffer(). + +FT2 font module +- Optimized pixel premultiplication. + +FBDev system module +- Fixed SetMode / Panning Bug, thanks to Kieran Bingham! +- Fixed allocation size for planar formats in FBDev Surface Pool. +- Add missing libsysfs when statically linking, thanks to Guillem Jover. + +DevMem system module +- Implement surface pool using surface manager. +- Added local/shared system data. +- Added configure.in and Makefile.am parts. + +Linux Input driver +- Ignore input devices matching the TSLIB_TSDEVICE environment variable. + +tslib driver +- Check the device in $TSLIB_TSDEVICE when guessing (no option given). + +dfbdump tool +- Added "-dl" or "--dumplayer" for dumping the front buffer of each active contexts' primary region. + +dfbfx tool +- Based on "fx", with command line options, documented code... +- Simulates blitting flags given a source and destination ARGB pixel. + + +1.1.0 +----- + +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 | IDirectFBDisplayLayer +- Added IDirectFBDisplayLayer::SetRotation(). + +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. + +API | IDirectFBPalette +- Added IDirectFBPalette::SetEntriesYUV(), GetEntriesYUV() and FindBestMatchYUV(). + +API | IDirectFBScreen +- HD extensions, thanks to Daniel J Laird! + +API | IDirectFBSurface +- Added IDirectFBSurface::SetRenderOptions() as a new state element, but not + mandatory for graphics drivers. At the moment it's used by the software + driver to choose smooth or standard scaling. +- Made DisableAcceleration( DFXL_DRAWSTRING ) work. +- Each sub surface interface has a reference to its parent and a list of its children. +- Added DSBLIT_ROTATE180 with a basic software implementation. +- Added universal resource id (unsigned long) that belongs to each surface, + e.g. the layer id or window id. General purpose surfaces can be given an + id by using the new flag DSDESC_RESOURCE_ID and setting the resource_id field. + +API | IDirectFBVideoProvider +- Thanks to Daniel J Laird for Video Provider Events! +- Extended video provider capabilities, thanks to Daniel J Laird! + +API | IDirectFBWindow +- Added IDirectFBWindow::Bind()/Unbind(). +- Added DWDESC_OPTIONS and DWDESC_STACKING to give initial values in the + DFBWindowDescription using the new fields 'options' and 'stacking'. +- Added DWDESC_PARENT to DFBWindowDescriptionFlags and 'parent_id' to + DFBWindowDescription. This can be used to associate a window to another, + but it's up to the WM to implement it. +- Added IDirectFBWindow::SetKeySelection() that selects a mode for filtering + keys while being focused. The selection defines whether all, none or a + specific set (list) of keys is selected. +- Added DFBWindowKeySelection featuring DWKS_ALL, DWKS_NONE and DWKS_LIST. +- Added IDirectFBWindow::GrabUnselectedKeys() and UngrabUnselectedKeys() + to have a key collector window receiving all keys that the focused + window did not select. +- Added DFBWindowEventFlags featuring DWEF_RETURNED so far, which means that + the event has been returned, i.e. has not been consumed by the original + recipient. The DFBWindowEvent field 'flags' has also been added. +- Added advanced window geometry for positioning and scaling of windows + relative to their own bounds, with ability derive from parent geometry. +- DFBWindowGeometryMode: DWGM_DEFAULT, DWGM_FOLLOW, DWGM_RECTANGLE, DWGM_LOCATION. + DFBWindowGeometry: mode, rectangle, location. +- IDirectFBWindow::SetSrcGeometry() and IDirectFBWindow::SetDstGeometry(). +- Added generic dfb_window_set_config() for simplifying core code and moving + config handling into interfaces. +- Added DWOP_KEEP_ABOVE and DWOP_KEEP_UNDER. + +Runtime Options +- Achtung! DirectFB is using sysconfdir now! E.g. use /usr/local/etc/directfbrc. +- New layer configuration system, staying compatible with older options: +- init-layer= chooses layer with ID to configure (following layer- options apply) +- layer-size=x sets the pixel resolution +- layer-format= sets the pixel format +- layer-depth= sets the pixel depth +- layer-buffer-mode=(auto|triple|backvideo|backsystem|frontonly|windows) +- layer-bg-none disables background clear +- layer-bg-color=AARRGGBB sets a background color (hex) +- layer-bg-image= sets a background image +- layer-bg-tile= sets a tiled background image +- layer-src-key=AARRGGBB enables color keying (hex) +- New option "surface-sentinel" to enable surface sentinels at the end of chunks in video memory. +- Added "smooth-upscale" and "smooth-downscale" options to enable smooth scaling by default. +- Added "[no-]madv-remove" to get around the auto detection. +- Added layer palette initialization via "layer-palette- = " option. +- Added option "layer-bg-color-index = n". +- Added option "layer-rotate = " with 0 and 180 supported. +- Added option "layer-src-key-index". + +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 +- API break! Drivers must use "state->mod_hw" instead of "state->modified"! +- Validate clip in dfb_state_update() also if destination + was just set manually, not via dfb_state_set_destination(). +- Added YUV palette support. CorePalette has a second array for YUV entries. + Both arrays are kept synchronized. Drivers can choose. +- Implemented StartDrawing/StopDrawing() for states. When a surface is being rendered to, its graphics + state is set to DRAWING. Upon Flip() the state is flushed. The new mechanism needs to be enabled via + "startstop" option. StartDrawing/StopDrawing() can be implemented by the graphics driver. e.g. to keep + track dirty surfaces and defer flipping if it would reveal other's drawing. +- Added multifunctional color configuration function dfb_state_set_color_or_index(). + Always tries to set both color and index. If color index is -1, color is used and + searched in palette of destination surface if present. If color index is valid the + color is looked up in palette if present. +- Added dfb_gfx_back_to_front_copy_180(). +- Added DFBColorKey which is binary compatible with DFBColor for RGB, but + has an 8 bit color index instead of the alpha value. + +Layer Core +- Use DFBColorKey instead of DFBColor in the CoreLayerRegionConfig. +- Fix potential dead lock in layer context initialization. +- Fix potential dead lock in dfb_layer_context_get_primary_region(). + +Surface Core +- NEW SURFACE CORE WORK IN PROGRESS (really usable, but not everything supported yet). Check TODO! +- dfb_surface_reformat() no longer fails immediatly if the surface is locked, + instead it waits for 3 loops before doing it. +- If no alignment is specified (0), default to 8 bytes offset and pitch alignment. + To disable alignment, simply set to 1. + +Window Core +- API break! Replaced dfb_wm_start_desktop() by dfb_wm_post_init(). Removed StartDesktop which had no + context pointers from WM API and added PostInit with proper context pointers. +- Simplified internal dfb_layer_context_create_window() and dfb_window_create() + and replaced dfb_window_*grab*() by dfb_window_change_grab(). + +libdirect +- API break! Changed DirectHash's u32 key to be unsigned long. This allows to use pointers. +- 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. +- Rearrange locks in debug message code to avoid dead locks in certain circumstances. + +libfusion +- API break! Changed call handler function type. The return value defines the library's behaviour + after exiting from the handler. To return a value immediately, write to *ret_val and return FCHR_RETURN. + If you want to make a call later on to fusion_call_return() yourself, use FCHR_RETAIN. +- The new serial value allows to have more than one call pending while calls can + be returned in any order. The caller is still blocked on its single call, of course. +- API break! Added "ctx" argument to fusion_object_pool_create() and FusionObjectDestructor. +- 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. +- Added fusion_reactor_set_dispatch_callback() with a test. +- Added fusion_reactor_attach/dispatch_channel() with the older calls using channel zero. +- Added fusion_skirmish_wait() and fusion_skirmish_notify(). When you hold the lock you can wait until + you get notified, where others can get the lock while you're waiting. At the moment it requires the + notifier to acquire the lock. +- Added timeout to fusion_skirmish_wait(), 0 means unlimited. +- Added a new Fusion/IPC implementation using standard system calls: +- Skirmish gets implemented by using sched_yield()+usleep, exactly like linuxthreads does with pthread mutexes, + but it's also capable of automatically unlocking whether the owner process died without doing it. +- Property works like Skirmish, but it doesn't sleep and it doesn't check for a dead owner. +- Dispatching and co. make use of raw unix sockets: there is a local address specific to each fusionee + (/tmp/fusion.@WORLD_INDEX@/@HEX_FUSION_ID@) and each call (/tmp/fusion.@WORLD_INDEX@/call.@HEX_CALL_ID@.@HEX_CALL_SERIAL@), + and messages are sent directly from the generator to the socket of the listeners. + From a network point of view, this is similar to UDP Multicast (e.g. conference or meeting). +- The new implementation gets build when --enable-bulti is specified but no usable linux/fusion.h was found + (however you can edit fusion/build.h to force building it). +- Raise max number of shm pools to 16. + +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. +- Added smooth up/down scaling for different formats. +- Fix 64bit implementations of RGB32 source and destination color keying. + +DFIFF Image provider +- Use a preallocated surface to render the image + (this should fix support for destinations that are premultiplied, separated, and co.). + +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 +- Ported to new surface core. +- Added RGB444 and RGB555 support. + +Matrox driver +- Ported to new surface core. +- Added RGB444 and RGB555 support. +- Eliminate libsysfs dependency from i2c detection. +- Reset besvcnt to 0 prior to disabling the backend scaler. +- Sometimes the BES would not turn off with just BESCTL. It seems besvcnt + not being programmed to zero has something to do with it since resetting + BESGLOBCTL before BESCTL seems to help. + +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 +- Ported to new surface core. +- 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). +- Implemented DSBLIT_ROTATE180. + +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. +- Fix fbdev_ioctl_call_handler() return value. +- Fix transfer of errno from master to slaves when doing ioctls. +- Do FBIOPAN_DISPLAY ioctls directly. + +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= sets the physical start of video memory. +- video-length= sets the length of video memory. +- mmio-phys= sets the physical start of MMIO area. +- mmio-length= sets the length of MMIO area. +- accelerator= sets the accelerator ID for selecting the graphics driver. + +SDL System module +- Support different DirectFB formats on 32 and 16 bit displays. +- Disable SDL backend by default. + +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). +- Actually fail if a parent window for the newly created one was specified (not supported). + +dfbdump tool +- List buffers in video memory if "-s" is passed. + +dfblayer tool +- Added option "-R ". + +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=" 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=" 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. +- Fixed segfault in event thread. + +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=x" 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'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 ! + +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 and now. + +SiS315 +- Include 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 . +- Added EnumEncodings() enumerating all provided encodings, also see Fonts section below. +- Added FindEncoding() to look up an encoding directly by its name. +- Added SetEncoding() for choosing the encoding for local interface methods and as a default for the surfaces. + +API | IDirectFBImageProvider +- Added DIRenderCallbackResult to DIRenderCallback to be able to abort rendering. + +API | IDirectFBInputDevice +- Added DetachEventBuffer() to detach an event buffer explicitly. + +API | IDirectFBScreen +- Allow connectors to be selected at the encoders without the need to define + outputs, add slow blanking, thanks to Daniel J Laird . +- Populating screen API a bit more, thanks to Daniel Laird . +- Added GetSize(). + +API | IDirectFBSurface +- Added ReleaseSource() to release a possibly attached source, + e.g. after blitting from it only once and from nothing else afterwards. +- Added GetFramebufferOffset() returning the offset within + the graphics memory, thanks to Stefan Lucke . +- Added GetPosition() returning the offset of a sub surface. +- Finally decided to catch horizontal/vertical lines in DrawLine() and optimize them using rectangle filling. +- Added SetEncoding() to choose an encoding for the text routines, will be overwritten by SetFont() which takes + the default encoding of the new font, also see Fonts section below. + +API | IDirectFBVideoProvider +- Removed return value from DVFrameCallback. +- Added SetPlaybackFlags(), SetSpeed() and GetSpeed(). +- Added SetVolume() and GetVolume(). + +API | IDirectFBWindow +- Added DetachEventBuffer() to detach an event buffer explicitly. + +Build Options +- Added option --enable-netork to enable/disable building network protocols handlers. + +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 . + +Matrox driver +- Added field based blitting support. +- Added DSCAPS_SEPARATED support to BES, CRTC2 and SPIC. +- Fixed pixelpitch alignment for YUY2/UYVY. +- PAL-60 support (or at least close enough for Ville's TV). + +nVidia driver +- Avoid to set the overlay memory limit, it's already done by the kernel. +- Basic acceleration for ALUT44. +- Disable host-to-video hardware blit for simple blits without format conversion. +- Added nvEngineReset(). + +Radeon driver +- R300: Support FillTriangle() and DSDRAW_BLEND. +- RV250: Dropped YUV->RGB support. +- Enable VC_32BIT_SWAP on big-endian machines. +- Removed (erroneously set) flag VF_RADEON_MODE in r200DoDrawRectangle3D(). +- Added patch to radeonfb fixing support for R300 chipsets (it also adds new devices). +- Use different settings for R300 and non-R300 when setting MC_FB_LOCATION. +- Added the possibility to use the graphics layer as an OSD. It works exactly the same way + as in the unichrome driver: Set the video layer level to -1 and enable DLOP_ALPHACHANNEL + on the graphics layer. +- Applied patch by Christer Palm : fixes word swapping on PPC. + +Unichrome driver +- Disable hardware cursor in VIA_REG_CURSOR_MODE. Thanks to Michel van + Noorloos . +- Added PCI ID for CN700. + +DynaPro input driver +- New 3M DynaPro Touchscreen driver, thanks to Pär Degerman ! + +Keyboard input driver +- Added support for dead keys. + +Linux Input input driver +- Added support for dead keys. + +DFIFF image provider +- New DirectFB Fast Image File Format with a fast image provider module and a tool to + convert images from PNG to DFIFF. + +GIF image provider +- Dropped support for GIF87 (can't be animated). + +GIF video provider +- New animated GIF video provider. + +V4L video provider +- Fixed planar data copy. +- Added more pixelformats for v4l2. + +FBDev System +- Clean up error handling in system_initialize() and fix bug with shared memory (de)allocation. +- Treat fbdev format 8/16,8/8,8/0,0/0 as ARGB when ARGB was requested + (that because framebuffer drivers tend to ignore the alpha channel). +- Don't touch console blanking when using graphics-vt. + +SDL System +- Better keymap emulation. +- Fake video modes by reading fb.modes, just like the fbdev backend. + +directfb-csource tool +- Added option --rgbformat which in contrast to the --format option only is effective if the image + doesn't require an alpha channel. That's useful e.g. with RGB16 for opaque and ARGB for blended images, + when the primary format will be RGB16. So far directfb-csource either used ARGB/RGB32 automatically, or + it always used RGB16 or whatever you specified via --format. +- Make structs and pixel data const, helps with use in shared libs. + +fx tool +- Very basic program to emulate/illustrate the pixel pipeline, blitting flags etc. No 100% guarantee that + itself is correct, but in the end it will serve as a verification for software/hardware driver. + + +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= 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=: + 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 : +- 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=. The revision number can only be + auto-detected if the process runs as root. +- Added simple script to determine revision number for addition to + directfbrc. +- Added support for DLOP_FIELD_PARITY. For this to work, the kernel + framebuffer must support an extension of the WAITFORVSYNC ioctl that + allows waiting for the top or bottom field. +- YV12, I420, YUY2 and AiRGB simple blits, AiRGB 2D drawing +- Disable broken SetColorAdjustment for the overlay and remove color keying diagnostic. +- Round to nearest when positioning up-scaled YV12/I420 video to reduce error. +- Fix YV12/I420 video layer corruption on revision 0x11 hardware. Also + fix bug setting SUBP_CONTROL_STRIDE register in uc_spic_set_buffer. Sadly + subpicture layer still doesn't work. +- ARGB4444 as source and destination pixel format for all supported operations. +- Overhaul of LEVELS, OPACITY and primary ALPHACHANNEL features which were + previously only partially implemented and did not work together. +- The video overlay and the primary layer now both support the OPACITY option + and either can be on top. The order is determined by the 'level' assigned + to the video layer. The primary also supports an alpha channel which is + useful when the video layer is positioned behind. +- The old DFB_CLE266_UNDERLAY environment variable switch has been removed. + +FBDev System module +- Added AGP support. + +SDL System module +- Decoupled screen updates from Fusion Dispatcher. + Updates are handled in a separate thread; they're accumulated rather than + queued in case an update is already pending. +- Use the flag FCEF_ONEWAY to not wait for the call being executed, + otherwise a deadlock could occur. The return value is meaningless anyways. + Queued updates will be merged on the receiving side (master) to avoid a + lag and improve performance. + +Gunze Input driver +- Added Gunze Touchscreen driver, thanks to Nathanael D. Noblet ! + +PenMount Input driver +- Added input driver for PenMount 9509 serial touchscreen. + +PS/2 Input driver +- Applied patch from Christian Krause that allows + usage of the option "mouse-source" without "mouse-gpm-source". + +dfbdump tool +- Show "1k" again for '0 < bytes < 1024'. + +dfbsummon tool +- Avoid division by zero if no video memory is available. + +fusion_bench tool +- Do the shmalloc benchmark once with debug and once without. + + +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 " 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 and anymore. +- Build all graphics drivers without checking for FB_ACCEL_* in , + 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 " 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 ! +- 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 ! + +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 ! +- 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 = " + and "log-udp = :" 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 ! + +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 ! + +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 ! +- 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 ! + +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 ! +- Don't abort if checking for LEDs fails. + +MuTouch Input +- Improved packet reading loop, thanks to Ivan Daniluk ! + +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 ! + +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 ! + +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 ! + +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=" 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 " + 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 . +- 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 - + 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 -'S' to raise the lowest window, e.g. to revert a -'A'. +- Added - 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 "-" 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 " 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 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 . +- 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 . +- 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 . +- 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 . +- State handling fixes. + +NSC Geode +- Improvements by Ed Millard . +- 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 . + +ELO Touchscreen Input +- Added by Brandon M. Reynolds . + +SDL Input +- Wheel event support by Tom Bridgwater . + + +0.9.20 +------ + +- Added CLE266 driver by Andreas Robinson , thanks! + The driver supports alpha blending, color keying, video overlay etc. +- Added WM97XX Touchscreen driver, + thanks to Liam Girdwood ! +- 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 ! +- 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 - 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 -, see above. +- Added "memcpy = " 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 , thanks! +- Send valid button events in MuTouch driver, + thanks to Tim Wright . +- 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 . +- 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 . +- 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=" selecting the multi application world being joined or created. + VT switching between multiple DirectFB sessions rocks! +- Added option "primary-layer=" 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=" 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 . + Great thanks to NSC for their support!!! +- nVidia Overlay support by Oliver Schwartz , 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= +- 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 . +- 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 . +- 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 -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 . +- Color adjustment support on primary layer (via gamma ramp in direct color + mode) by Antonino Daplas . +- 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 ). +- 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 ). +- Updated matrox vsync irq patch to support the second head. +- Planar YUV blitting support in Matrox driver (Ville Syrjala ) +- 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 ). + + +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 and Mike Pieper . +- 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 . +- 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=". +- 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=x" and "depth=". +- 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 . +- 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 . +- 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 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 ). +- '/dev/input/js*' support by W. Michael Petullo . +- 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 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 . +- 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 . +- 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 +- 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=" 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 . +- 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. -- cgit