Heylo,
I made some updates to the new fbdev-directfb which may have corrected
some problems with accels not being loaded quite properly. Now all
the DirectFB global symbols are in their own sublib. (Thayne, for
some reason this new sublib is not building in .libs, but out in the
open, though it seems to install/work just fine.)
In addition, it is no longer necessary to have the directfb source
in order to build. Recent DirectFB versions seem to install the necessary
headers to compile the target. So the --with-directfb configure directive
has been coopted to set the directory in which DirectFB driver .so files
are looked for. Unfortunately, the Debian -dev package does not yet include
these header files, but as the packagers catch up I expect it will
be possible to build with a .rpm or .deb of DirectFB. If you have
a directfb-internal directory in your include path after installing DFB,
odds are you can compile this just fine.
Still no luck with my Riva 128, but if anyone wants to try it, preset
your fbdev to a 16bpp mode and try stars. The screen should not clear,
but the stars should be there. If you see a black rectangle painted
at 100,100, then you have made it farther than me (currently fillscreen
is hacked to only draw a small rectangle.) GGI_DEBUG=255 output should
contain something like the following:
LibGGI: display-fbdev: accel: 27, supported: 33
LibGGI: display-fbdev: Have accel: "directfb"
LibGGI: display-fbdev: Parsing modedb: /etc/fb.modes
LibGGI: display-fbdev: begin: "640x480-60"
LibGGI: display-fbdev: got 640x480 mode
[...]
LibGGI: Success in loading generic-linear-16 ()
^^
You must be in 16-bit mode, DFB doesn't support pseudocolor, and only
on a few cards is 32-bit supported.
LibGGI: _ggiAddDL(0x8072290, "tgt-fbdev-directfb", "(null)", 0x1) called
LibGGI: _ggiLoadDL("/usr/local/lib/ggi/default/fbdev/directfb/directfb.so", 0x1)
called
LibGGI: hand.handle=0x8078260
LibGGI: &(GGIdl_directfb) = 0x4119f9dc
LibGGI: hand.open = 0x4119f0f8
LibGGI: hand.exit = (nil)
LibGGI: hand.close = 0x4119f9a0
LibGGI: _ggiLoadDL returned 0 (0x8078508)
LibGGI: GGIopen for DirectFB started!
LibGGI: _ggiAddDL(0x8072290, "helper-fbdev-directfb-global", "(null)", 0x4) called
LibGGI: _ggiLoadDL("/usr/local/lib/ggi/default/fbdev/directfb/directfbglobal.so", 0x4)
called
LibGGI: hand.handle=0x80787e8
LibGGI: &(GGIdl_directfbglobal) = 0x411a2a50
LibGGI: hand.open = 0x411a29c0
LibGGI: hand.exit = (nil)
LibGGI: hand.close = (nil)
LibGGI: _ggiLoadDL returned 0 (0x8078ac0)
Globals 0x411a3cc8 0x411a3ba8 0x411a2b1c 0x411a2b20 0x411a2b24 0x411a2b2c 0x411a2b28
LibGGI: 0 = dlh->open(0x8072290, 0x8078ac0, "(null)", 0x8078530, 0) -
/usr/local/lib/ggi/default/fbdev/directfb/directfbglobal.so
Opened the helper
globals 0x411a3cc8 0x411a3ba8 0x411a2b1c 0x411a2b20 0x411a2b24 0x411a2b2c 0x411a2b28
card = 0x80785fc, config = 0x807854c
LibGGI: Opening '/usr/local/lib/directfb/gfxdrivers/libdirectfb_neomagic.so'.
LibGGI: Probing driver at 0x411a4e58...
LibGGI: Opening '/usr/local/lib/directfb/gfxdrivers/libdirectfb_matrox.so'.
LibGGI: Probing driver at 0x411a6584...
LibGGI: Opening '/usr/local/lib/directfb/gfxdrivers/libdirectfb_ati128.so'.
LibGGI: Probing driver at 0x411a6478...
LibGGI: Opening '/usr/local/lib/directfb/gfxdrivers/libdirectfb_tdfx.so'.
LibGGI: Probing driver at 0x411a63c8...
LibGGI: Opening '/usr/local/lib/directfb/gfxdrivers/libdirectfb_nvidia.so'.
LibGGI: Probing driver at 0x411a5a08...
LibGGI: DirectFB driver, Init:0x411a517c InitLayers:0x411a5a4c DeInit:0x411a5474
LibGGI: DirectFB/GfxCard: nVidia RIVA TNT/TNT2/GeForce 0.0 (convergence integrated
media GmbH)
LibGGI: Setting DSPF_RGB16
LibGGI: 0 = dlh->open(0x8072290, 0x8078508, "(null)", (nil), 4) -
/usr/local/lib/ggi/default/fbdev/directfb/directfb.so
[...]
LibGGI: fillrectangle = 0x411a5758, called
A line like this means that the DirectFB fillscreen accel has been called.
LibGGI: GGI_fbdev_idleaccel(0x8072290) called
LibGGI: directfb_idleaccel(0x8072290) called
[...]
After closing the app:
LibGGI: Disposing "helper-fbdev-directfb-global"
LibGGI: Closing handle: 0x80787e8
LibGGI: Disposing "helper-linux-vtswitch"
LibGGI: L/vtswitch: close OK.
LibGGI: Closing handle: 0x80732e0
LibGGI: _ggiZapDL(0x8072290, 0x8072634) called
LibGGI: Disposing "tgt-fbdev-directfb"
(-) DirectFB/nvidia: FIFO Performance Monitoring:
(-) DirectFB/nvidia: 0 nv_waitfifo calls
(-) DirectFB/nvidia: 0 register writes (nv_waitfifo sum)
(-) DirectFB/nvidia: 0 FIFO wait cycles (depends on CPU)
(-) DirectFB/nvidia: 0 IDLE wait cycles (depends on CPU)
(-) DirectFB/nvidia: 0 FIFO space cache hits(depends on CPU)
(-) DirectFB/nvidia: Conclusion:
(-) DirectFB/nvidia: Average register writes/nvidia_waitfifocall:nan
(-) DirectFB/nvidia: Average wait cycles/nvidia_waitfifo call: nan
(-) DirectFB/nvidia: Average fifo space cache hits: -2147483648%
LibGGI: fbdev-directfb: Starting cleanup
(-) DirectFB/nvidia: FIFO Performance Monitoring:
(-) DirectFB/nvidia: 0 nv_waitfifo calls
(-) DirectFB/nvidia: 0 register writes (nv_waitfifo sum)
(-) DirectFB/nvidia: 0 FIFO wait cycles (depends on CPU)
(-) DirectFB/nvidia: 0 IDLE wait cycles (depends on CPU)
(-) DirectFB/nvidia: 0 FIFO space cache hits(depends on CPU)
(-) DirectFB/nvidia: Conclusion:
(-) DirectFB/nvidia: Average register writes/nvidia_waitfifocall:nan
(-) DirectFB/nvidia: Average wait cycles/nvidia_waitfifo call: nan
(-) DirectFB/nvidia: Average fifo space cache hits: -2147483648%
(Stats are obviously broken in the Riva driver.)
This driver should only be considered about 50% complete, but give it a try
if for no other reason than to ruin your uptime record :-) (actually, although
I have had to ALT-SysRq-k the app a couple of times, it hasn't hung me up yet.)
Enjoy.
--
Brian