Last time I tried my hands on the SavageFB (DirectFB 0.9.14) I found that the SavageFB driver is WAAAY slower than VESA FB. Especially if you're using any alpha/transparency. The system I tried it on was a 1.2Ghz Celeron with VIA Twister (which is a Savage4 or something) running the latest 2.4.x at the time.
�
I don't care much for the feature of changing resolutions on the fly, so VESA FB works fine, but I still find it odd that it would be faster than the "native" driver.
�
Any clues/ideas? Anyone with similar experience?
if you use savagefb, directfb uses its accelerated savage driver.
window contents are normally stored in video memory, if the driver supports blitting.
if you make a window transparent, it cant be blitted by the savage driver because blending is not supported by the driver. so a software fallback will occur.
this software fallback is extremely slow because reading from the video memory is MUCH slower than from system memory.
if you write a program, you can check the drivers's capabilities and adjust the behavior of directfb to optimize the speed with the current driver.
see df_window.c in DirectFB-examples.
DirectFB has also some switches like
-- Window surface swapping policy:
window-surface-policy=(auto|videohigh|videolow|systemonly|videoonly)
which can be helpful.
I bet if you use savagefb and --dfb:no-hardware, your programs will run as fast as with vesafb.
you can compare speed with df_andi, this will be much faster with hardware support, because it uses (almost) no blending.
the best solution would be blending support in directfb's savage driver.
since this is a frequently asked question we should move it to some FAQ.
andi
