DirectFB - caramelli/higfxback GitHub Wiki
Welcome to HiGFXback with the DirectFB graphics backend!
Contents
- Getting started
- Vulkan rendering
- OpenGL rendering
- Drawing libraries
- Multimedia frameworks
- Tools
- Graphics abstraction layers
- User interface toolkits
- Applications
Getting started
Components running on DirectFB graphics backend are based on libdirectfb.so library. Compositing windowing system is performed by the default libdirectfb.so window manager module with libdirectfbwm_default.so plugin. Cooperation between various process is achieved through the fusion.ko kernel module.
If the current graphics backend used on HiGFXback is not DirectFB, switch on it with startdfb
command. Select one of the following graphics driver interface available on HiGFXback and used by libdirectfb.so library for the display:
- Linux Framebuffer interface (
/dev/fb0
) handled with libdirectfb_fbdev.so plugin - KMS/DRM interface (
/dev/dri/card0
) handled with libdirectfb_drmkms.so plugin
But depending on the platform, it's possible to use specific graphics driver interfaces based on the libdirectfb.so system module architecture. If available on the platform, hardware accelerated graphic rendering can also be achieved based on the libdirectfb.so gfxdriver module architecture.
When starting on DirectFB graphics backend with startdfb
command, select one of the following input driver interface available on HiGFXback and used by libdirectfb.so library for managing the keyboard:
- console interface (
/dev/tty0
) handled with libdirectfb_keyboard.so plugin - event device interface (
/dev/input/event0
) handled with libdirectfb_linux_input.so plugin
and for managing the mouse:
- PS/2 mouse interface (
/dev/psaux
) handled with libdirectfb_ps2mouse.so plugin - event device interface (
/dev/input/event1
) handled with libdirectfb_linux_input.so plugin
But depending on the input peripheral, it's possible to use specific input driver interfaces based on the libdirectfb.so inputdriver module architecture.
DFBTerm
When starting on DirectFB graphics backend, dfbterm terminal emulator is displayed. System informations about DirectFB settings can be get with dfbinfo.
DirectFB-examples
Programs running on DirectFB graphics backend are available as examples, tests or benchmarks.
DirectFB toolkits
On HiGFXback, LiTE interfaces are provided by liblite.so library and ilixi interfaces are provided by libilixi.so library.
LiTE-examples programs are available as examples.
ilixi-apps programs are available as examples.
Vulkan rendering
For display rendering with DirectFB graphics backend, Vulkan implementation in libvulkan.so library (loading library from Vulkan-Loader) and its ICD (Installable Client Driver) relies on DirectFB WSI interface.
On HiGFXback, DirectFB WSI interfaces (Window System Integration for DirectFB) are used with one of the following ICD selected with VK_ICD_FILENAMES
environment variable:
- Mesa associated to lvp_icd.json manifest file
- SwiftShader associated to swiftshader_icd.json manifest file
But depending on the platform, specific ICD can be used.
Vulkan-Tools, Vulkan-Examples, vkcube2 and yagears2 programs are available as examples, tests or benchmarks.
OpenGL rendering
For display rendering with DirectFB graphics backend, OpenGL implementation in libGL.so library, but also OpenGL ES 1.1 CM implementation in libGLESv1_CM.so library and OpenGL ES 2.0 implementation in libGLESv2.so library, rely on DirectFBGL or EGL for DirectFB interfaces.
Loading libraries can be used:
- libGLEW.so library from GLEW (OpenGL Extension Wrangler)
- libepoxy.so library from Epoxy
DirectFBGL
On HiGFXback, DirectFBGL interfaces (OpenGL extension for DirectFB) are used with one of the following implementation selected with alternatives-GL
command:
- Mesa with libidirectfbgl.so
->
libidirectfbgl_mesa.so plugin and libGL.so->
libmesaGL.so, libGLESv1_CM.so->
libmesaGLESv1_CM.so, libGLESv2.so->
libmesaGLESv2.so libraries - TinyGL with libidirectfbgl.so
->
libidirectfbgl_tinygl.so plugin and libGL.so->
libtinyGL.so library
But depending on the platform, specific implementation can be used.
mesa-demos and yagears programs are available as examples, tests or benchmarks.
EGL for DirectFB
On HiGFXback, EGL for DirectFB interfaces are used with one of the following implementation selected with alternatives-GL
:
- Mesa with libEGL.so
->
libmesaEGL.so, libGL.so->
libmesaGL.so, libGLESv1_CM.so->
libmesaGLESv1_CM.so, libGLESv2.so->
libmesaGLESv2.so libraries - SwiftShader with libEGL.so
->
libswiftshaderEGL.so, libGLESv1_CM.so->
libswiftshaderGLESv1_CM.so, libGLESv2.so->
libswiftshaderGLESv2.so libraries
But depending on the platform, specific implementation can be used.
mesa-demos and yagears programs are available as examples, tests or benchmarks.
Drawing libraries
Cairo
On HiGFXback, Cairo interfaces for DirectFB graphics backend are provided by libcairo.so library.
cairo-demos programs are available as examples, tests or benchmarks.
Evas
On HiGFXback, Evas interfaces for DirectFB graphics backend are provided by libevas.so library.
expedite program is available as examples, tests or benchmarks.
Multimedia frameworks
FFmpeg
On HiGFXback, FFmpeg interfaces for DirectFB graphics backend are provided by libavformat.so, libavcodec.so, libswscale.so libraries and rely on libavdevice.so library for output.
ffmpeg program is available as example.
GStreamer
On HiGFXback, GStreamer interfaces for DirectFB graphics backend are provided by:
- libgstreamer-0.10.so library on GStreamer 0.10
- libgstreamer-1.0.so library on GStreamer 1
and rely on libgstdfbvideosink.so plugin for output.
gst-launch-0.10 program is available as example on GStreamer 0.10.
gst-launch-1.0 program is available as example on GStreamer 1.
Xine
On HiGFXback, Xine interfaces for DirectFB graphics backend are provided by libxine.so library and rely on xineplug_vo_out_directfb.so plugin for output.
xine-ui program is available as example.
DirectFB-media
On HiGFXback, DirectFBImageProvider and DirectFBVideoProvider interfaces are provided.
df_image_sample program is available as example.
df_video_sample program is available as example.
Tools
DFBView
Projektor
NetSurf, Links
DFBSee, ilixi_player, MPlayer
Graphics abstraction layers
GLUT
On HiGFXback, GLUT (openGL Utility Toolkit) interfaces running on DirectFB graphics backend are provided by one of the following implementation selected with alternatives-glut
command:
- MesaGLUT with libglut.so
->
libmesaglut.so library - TinyGLUT with libglut.so
->
libtinyglut.so library
For OpenGL rendering, note that EGL for DirectFB interfaces can also be used internally by GLUT implementations instead of DirectFBGL interfaces.
mesa-demos and yagears programs are available as examples, tests or benchmarks.
SDL
On HiGFXback, SDL (Simple Directmedia Layer) interfaces running on DirectFB graphics backend are provided by:
- libSDL.so library on SDL 1
- libSDL2.so library on SDL 2
For OpenGL rendering, note that EGL for DirectFB interfaces can also be used internally by SDL instead of DirectFBGL interfaces.
SDL-test and yagears programs are available as examples, tests or benchmarks on SDL 1.
SDL2-test and yagears2 programs are available as examples, tests or benchmarks on SDL 2.
User interface toolkits
GTK+
Graphical user interfaces can rely on GTK+ (Gimp ToolKit) using the port for DirectFB graphics backend. Web rendering can then rely on WebKitGTK+, a port of the WebKit browser engine for GTK+.
On HiGFXback, GTK+ interfaces running on DirectFB graphics backend are provided by:
- libgtk-2.0.so, libgtkgl-2.0.so libraries on GTK+ 2
- libgtk-3.0.so, libgtkgl-3.0.so libraries on GTK+ 3
For OpenGL rendering, note that EGL for DirectFB interfaces can also be used internally by GTK+ instead of DirectFBGL interfaces.
gtk-demo, gtk-tests, gtkperf and yagears programs are available as examples, tests or benchmarks.
On HiGFXback, WebKitGTK+ interfaces for GTK+ with DirectFB graphics backend are provided by:
- libwebkitgtk-2.0.so library on GTK+ 2
- libwebkitgtk-3.0.so library on GTK+ 3
For WebGL rendering, note that EGL for DirectFB interfaces can also be used instead of DirectFBGL interfaces.
GtkLauncher program is available as example.
Qt
Graphical user interfaces can rely on Qt (Q toolKit) using the port for DirectFB graphics backend. Web rendering can then rely on QtWebKit, a port of the WebKit browser engine for Qt.
On HiGFXback, Qt interfaces running on DirectFB graphics backend are provided by:
- libQtGui.so and libQtOpenGL.so libraries on Qt 4
- libQt5Gui.so and libQt5OpenGL.so libraries on Qt 5
For OpenGL rendering, note that EGL for DirectFB interfaces can also be used internally by Qt instead of DirectFBGL interfaces.
qtdemo, qt-examples, qtperf and yagears programs are available as examples, tests or benchmarks.
On HiGFXback, QtWebKit interfaces for Qt with DirectFB graphics backend are provided by:
- libQtWebKit.so library on Qt 4
- libQt5WebKit.so library on Qt 5
For WebGL rendering, note that EGL for DirectFB interfaces can also be used instead of DirectFBGL interfaces.
QtTestBrowser program is available as example.
EFL
Graphical user interfaces can rely on EFL (Enlightenment Foundation Libraries) with Elementary using the port for DirectFB graphics backend.
On HiGFXback, EFL with Elementary interfaces running on DirectFB graphics backend are provided by libelementary.so library.
For OpenGL rendering, note that EGL for DirectFB interfaces can also be used internally by EFL with Elementary instead of DirectFBGL interfaces.
elementary-test, elementary-examples and yagears programs are available as examples, tests or benchmarks.
FLTK
Graphical user interfaces can rely on FLTK (Fast Light Tool Kit) using the port for DirectFB graphics backend.
On HiGFXback, FLTK interfaces running on DirectFB graphics backend are provided by libfltk.so and libfltk_gl.so libraries.
For OpenGL rendering, note that EGL for DirectFB interfaces can also be used internally by FLTK instead of DirectFBGL interfaces.
fltk-test and yagears programs are available as examples, tests or benchmarks.
Applications
![]() |
ffplay multimedia player |
![]() |
qemu machine emulator |
![]() |
midori web browser |
![]() |
qupzilla web browser |
![]() |
BillardGL, gtktetris, pinball games |
![]() |
chocolate-doom game engine |