The 1.3.x series will have development releases with a new stable DirectFB 1.4.x series within a few weeks. Some of the
changes for DirectFB 2.0 are already in there, but most of them are being developed in a side branch and will first be
released with the 1.5.x series before the final 2.0 release is made early next year.
Major improvements include:
- OpenGL based acceleration with a new graphics driver and GLX surface pool in X11 system
- Rotated layers and windows with 90°, 180° or 270° as seen on the screenshot to the right
- Sub window support with each having its own buffer (one level only for DirectFB 1.4)...
- Surface Pool Bridge[tm] technology to speed up transfer between pools
Click on news title...
~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.3.0 |~~~~~~~~~~~~~~~~~~~~~~~~~~
(c) 2001-2008 The world wide DirectFB Open Source Community
(c) 2000-2004 Convergence (integrated media) GmbH
----------------------------------------------------------------
(*) DirectFB/Core: Single Application Core. (2008-09-29 11:52)
(*) Direct/Memcpy: Using Generic 64bit memcpy()
(*) GLX/Surfaces: Using visual 0x2e (24bit) and 0x64 (32bit)
(*) Direct/Modules: suppress module 'linux_input'
(*) Direct/Thread: Started 'X11 Input' (19571) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: X11 Input 0.1 (directfb.org)
(*) DirectFB/Genefx: MMX detected and enabled
(*) DirectFB/Graphics: OpenGL Acceleration - GeForce 8800 GTX/PCI/SSE2 0.5 (Denis Oliver Kropp)
(*) DirectFB/Core/WM: Default 0.3 (directfb.org)
(*) X11/Window: Creating 700x 600 RGB32 window...
(*) X11/Display: Using XShm.
(*) Direct/Interface: Loaded 'PNG' implementation of 'IDirectFBImageProvider'.
(*) Direct/Interface: Loaded 'FT2' implementation of 'IDirectFBFont'.
(*) Direct/Interface: Using 'GIF' implementation of 'IDirectFBImageProvider'.
Benchmarking 256x256 on 700x580 RGB32 (32bit)...
CPU Load
Anti-aliased Text 3.000 secs (* 4737.600 KChars/sec) [ 99.6%]
Anti-aliased Text (blend) 3.000 secs (* 4738.800 KChars/sec) [ 99.6%]
Fill Rectangle 4.291 secs (*13293.529 MPixel/sec) [100.0%]
Fill Rectangle (blend) 5.496 secs (* 6880.326 MPixel/sec) [100.1%]
Fill Rectangles [10] 4.616 secs (*13303.126 MPixel/sec) [100.0%]
Fill Rectangles [10] (blend) 6.130 secs (* 6874.330 MPixel/sec) [ 99.8%]
Fill Triangles 4.845 secs (*13365.556 MPixel/sec) [ 99.7%]
Fill Triangles (blend) 6.566 secs (* 6920.405 MPixel/sec) [100.0%]
Draw Rectangle 3.000 secs (* 1094.433 KRects/sec) [ 99.6%]
Draw Rectangle (blend) 3.000 secs (* 1090.866 KRects/sec) [100.0%]
Draw Lines [10] 3.000 secs (* 4453.000 KLines/sec) [ 99.6%]
Draw Lines [10] (blend) 3.000 secs (* 4479.666 KLines/sec) [100.0%]
Fill Spans 3.001 secs (* 1941.402 MPixel/sec) [ 99.6%]
Fill Spans (blend) 3.000 secs (* 2035.985 MPixel/sec) [100.0%]
Blit 4.866 secs (* 9146.218 MPixel/sec) [ 99.3%]
Blit 180 4.867 secs (* 9191.467 MPixel/sec) [100.2%]
Blit with colorizing 4.873 secs (* 9165.356 MPixel/sec) [100.2%]
Blit from 32bit (blend) 5.905 secs (* 5883.257 MPixel/sec) [ 99.8%]
Blit from 32bit (blend) with colorizing 5.918 secs (* 5883.622 MPixel/sec) [ 99.8%]
Stretch Blit 4.680 secs (*11857.995 MPixel/sec) [100.0%]
Post your results, e.g. to dok@directfb.org or the users mailing list!
Summary of changes since 1.2.6:
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.
dok