Happy New Year!!!
Well, time goes by faster and faster and it seems 2005 is already over again...
I wish everyone a happy, healthy, successful and exciting new year and that all
your wishes, resolutions and dreams come true!
One of my new year's resolutions is to make a 1.0.0 release :)
...and to write more documentation :-/
Something with that number... 0.9.24 is out!
Some fixes made it worthwhile to release 0.9.24 just now.
2005-10-25: Tarball updated! One file for static builds was still missing.
- 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 <firstname.lastname@example.org>" for this and other patches.
- IDirectFBVideoProvider::GetPos() returns DFB_EOF to notify end-of-playback.
After stream has reached the end, the next call to PlayTo() restarts playback from the beginning.
(only documentation updated, feature had been there already)
- No need for <linux/wm97xx.h> and <linux/sisfb.h> anymore.
- Build all graphics drivers without checking for FB_ACCEL_* in <linux/fb.h>,
because we have a fallback for each of those ids.
- Don't build cle266 by default as it's obsolete because of the unichrome driver.
0.9.23 is out! /o\
Finally, 0.9.23 has been released. It has a lot of improvements and fixes. Click on the news title for more information.
- Added "Claudio Ciccani <email@example.com>" to main authors,
welcome number five and thanks for your appreciated work :-)
- 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.
- Fixed pixelformat=NV21 option.
- Added option 'busid' to specify the graphics card bus id (unused if sysfs support is enabled).
- 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.
- Added support for system to video memory blits in (semi-)hardware.
- Some 24bit big endian fixes, thanks to Mark Salter <firstname.lastname@example.org>!
- 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 <email@example.com>!
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.
- 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.
- 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.
- 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.
- If the font format is ARGB, use premultiplied font surfaces.
- Use "signed char" explicitly to fix kerning in FT2 loader on PPC, thanks to Uli <Uli.H@triple-dragon.org>!
- Support fractional font sizes in FT2 loader.
- Fixed segmentation fault when loading OpenType fonts with FT2 loader.
- A lot of code is using D_DEBUG_AT, D_ASSERT, D_MAGIC_ASSERT etc. now.
- Added D_MAGIC_ASSUME.
- Added D_FLAGS_ASSERT(flags,f) being D_ASSERT( D_FLAGS_ARE_IN(flags,f) ).
- Protect against bogus siginfo_t pointer by checking if it's smaller than 0x100.
- Some changes to support KallistiOS.
- Enable X86 memcpy()s on AMD64.
- Added a generic memcpy() for 64bit Architectures.
- MMX and SSE support on AMD64.
- Fixed a bug in direct_list_remove()! If the last item is removed while other items exist,
the first item's "prev" pointer was not updated (pointing to the last element).
- Added low level logging abstraction. Added runtime options "log-file = <name>"
and "log-udp = <host>:<port>" for configuring the default log.
- Added direct_thread_set_name() for setting the name of threads that haven't been created by direct_thread_create().
- Added DirectStream, a wrapper for accessing files locally and through network (http, ftp and generic tcp).
- 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 <firstname.lastname@example.org>!
- 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 <email@example.com>!
- Implemented destination color keying for overlay.
- Merged back multi app fixed from i830 driver.
- 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.
- 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.
- 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().
- New driver for ATI Radeon R200 based cards by Claudio Ciccani <firstname.lastname@example.org>!
- 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.
- Compatibility stuff for newer fb driver versions.
- Added missing flag DLCAPS_LEVEL, thanks to Stefan Lucke <email@example.com>!
- Fixed AltGr.
- Added translation of KEY_FASTFORWARD, KEY_SOUND, KEY_QUESTION, KEY_EMAIL and KEY_CANCEL.
- Better touchscreen/smartpad detection, thanks to Stefan Lucke <firstname.lastname@example.org>!
- Don't abort if checking for LEDs fails.
- Improved packet reading loop, thanks to Ivan Daniluk <email@example.com>!
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).
- 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.
- Hide the SDL cursor so DirectFB one shows.
VNC Server System
- Preliminary system module using libvncserver.
- Preliminary native X11 support, thanks to Martin Luetken <firstname.lastname@example.org>!
- Started work on the decoration framework, still not usable.
- Show 'premultiplied' surface capability.
- Added options "--system=" and "--wm=" for static linking.
- Option "-s" additionally shows the shared memory file size.
The ultimate purpose and most beautiful fact about life...
...is to bring new life into being. Nothing in the world can substitute
this gorgeous gift of nature. It's the unceasing obligation, to give what
one got... In the morning of September 5th, 6:31 CEST, our sweet little son
'Alan' saw the light of day.
CELF Technical Conference Slides
The DirectFB slides from the CELF Technical Conference 2005 are
New versions of the video available
Three freshly encoded versions of the FOSDEM 2004 video are available:
||Quality is still okay
||Only useful to users without an H264 decoder
||Looks better than the old version
FlyWithMe 3D Demo using DirectFB only
showing DirectFB's builtin 3D texture mapping method
that can use
any surface as a texture to render triangles built from an array of
X, Y, Z, W, S, T vertices and an optional array of indices.
We are happy to announce the release of DirectFB 0.9.22 just two months after the last release :-)
- 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
- 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:
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().
- Added option "--with-inputdrivers=..." for selecting drivers to build,
thanks to Marcel Siegert <email@example.com>!
- 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.
- Added DSPF_ARGB2554.
- Added DSPF_ARGB4444.
- Added DSPF_NV21 (like NV12, but with swapped CbCr).
- 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.
- 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.
- Take the largest one, if multiple tmpfs are found.
Proxy Interface Implementations (Voodoo)
- Implemented BatchBlit() in IDirectFBSurface_Requester and _Dispatcher.
- 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.
- Show the layer level if supported.
- Added i830 driver (overlay support only) for Servision Ltd.
- Note, due to unsolved conflicts regarding ring buffer usage
you have to load the "intelfb" module with the parameter "accel=0".
- 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().
- Perform additional check (returned phys. fb base) before considering the
fb driver to be the one that it's expected to be.
- 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).
- Do not dispatch events if unknown or JS_EVENT_INIT are received.
Fixes crash upon initialization under some conditions.
- Added dreamboxremote driver mainly based on dbox2remote,
thanks to Marcel Siegert <firstname.lastname@example.org>!
Unique WM Module
- Lots of changes that have been lying around for more than two months,
but this module is still not fully usable, yet.
FOSDEM 2004 Video Update
Hmm, I just booted Windows XP myself and tried both versions of
the video using Media Player, Creative Labs fooo, The Playa and VLC.
The only player that worked with both versions was VLC.
No other player could play back any of these files.
GSpot said that the remuxed file is ok, but starting the rendering
process resulted in a DirectShow error about partial rendering blah...
So my only advice is to use VLC
or MPlayer for Windows ;-)
FOSDEM 2004 Video
Now that traffic limitations are gone, I've put the
FOSDEM 2004 Presentation Video (remuxed!) online!
Be aware of bad audio quality, but don't miss all the great demos between the slides,
especially the OpenGL demo at the end!!!
The greatest girl and me...
...are proud to enrich the world with a lovely, tiny being some time around August 21st!
CELF conference demo session review
LinuxDevices.com has an
about the demo session that was part of the CELF Technical Conference.
Happy New Year!
We wish everyone a happy new year and want to let you know about Fedora Core 3
made by Thomas Vander Stichele, thanks!