目標
- 最小的內存佔用
- 最大可能的硬件加速
- 支持高級圖形操作,如 multiple alpha blending mode
- 無內核修改
- 無依賴庫 (除了 libc)
- 滿足 MHP 的需要
圖形操作
DirectFB 支持以下圖形功能,可硬件實現(若chipset driver 支持),也可軟件實現
- 矩形填充/繪製
- 三角形填充繪製
- 畫線
- 內存拷貝 (blitting)
- 基於 alpha 通道的混合
- 基於某個 alpha 元素的混合
- 支持 Porter/Duff 定義的所有混合
- colorizing
- source color keying
- Destination color keying
窗口系統
- 支持透明/半透明窗口
- ARGB surface
資源管理
- 顯示層和輸入設備可以被鎖定 (用於遊戲)
- 對顯示層、窗口和其它 surface 進行了抽象,便於全屏和窗口之間的切換
圖形驅動
使用可動態加載的驅動模塊,實現硬件加速,目前支持的芯片有:
- Matrox Mystique/Millenium, G100, G200, G400/G450, G550
- Via CLE266
- ATI mach64/Rage Pro series
- ATI Rage 128
- ATI Radeon
- 3dfx Voodoo3/4/5/Banshee
- igs CyberPro 5xxx
- S3 Savage 3/4 series
- NeoMagic 220/2230/2360/2380
- nVidia TNT/GeForce series
- SiS 315
- Intel i810
- NSC Geode
其它芯片也可以工作,但不支持硬件加速。
輸入驅動
支持下面的輸入設備:
- standard keyboards
- serial and PS/2 mice
- joysticks
- devices using the linux input layer
- infrared remote controls (using lirc)
- iPAQ touchscreen
- ucb 1x00 touchscreen
- Microtouch touchscreen
- Sony PI Jogdial
圖象裝載
支持如下圖象格式:
- JPEG (通過 libjpeg 實現)
- PNG (libpng2)
- GIF (內部實現)
- 其它各種格式 (通過Imlib2實現)
視頻播放
支持如下格式:
- video4linux (/dev/video)
- mpeg1/2 (using libmpeg3)
- AVI (using avifile)
- MOV (using OpenQuicktime)
- macromedia (using libflash)
字體渲染
提供反鋸齒文本繪製,支持如下字體:
- DirectFB bitmap font
- TrueType (using FreeType2)
體系結構
directfb architecture |
訪問圖形硬件
- 通過 framebuffer 來訪問圖形硬件,一些特殊的芯片也可以在 VESA framebuffer 下工作
- 可在用戶空間實現硬件加速
訪問輸入設備
使用 linux kernel 提供的標準設備接口