2 DirectFB 图形系统
2.1 DirectFB 简介
DirectFB 项目是由德国Convergence 公司推动的Opensource 计划的一部分,是面向嵌入式设备专注于Linux Frame-Buffer 开发的小巧、强大、灵活和易于使用的图形系统,提供一些基本的图形加速、输入设备处理提取、透明窗口和多重显示层的功能,以最低限度的资源使用和开销,提供最大的硬件加速度性能。
Linux 下有多种图形子系统函数库可供选择,如Xlib、SDL、Allegro、Mesa3D 和DirectFB 等。其中DirectFB 定位于中高阶层的绘图、游戏应用、STB(Set-Top-Box)、MHP(multi-mediahome platform),支持dev/fb、osx、sdl、x11、/dev/men 等系统,它在嵌入式开发中具有很多优势:
①小巧且移植性好;
②支持硬件图形加速、输入设备的处理和抽象、无缝整合窗体系统;
③独立的资源管理;
④遵循开源许可证。
2.2 DirectFB 图形系统实现图形加速
DirectFB 图形系统构建在FrameBuffer 图形引擎之上,是一个完整的硬件抽象层,提供了对每个图形操作的软件回馈,由于这一功能还没有被底层硬件支持,因此需要一种能够提取图形的硬件设备的支持。DirectFB 体系结构如图1 所示,DirectFB 图形芯片驱动程序访问显存映射的图形处理器I/O端口向图形处理器提交命令,即实际的硬件加速的启动是在用户空间完成的。
FrameBuffer是内核中的一种驱动程序接口,它将显示设备抽象为帧缓冲区,用户可以将它看成是显示内存的一个映像,将其映射到进程地址空间直接进行读写操作,而读写操作可以立即反映到屏幕上。DirectFB 作为抽象层可以直接访问FrameBuffer,对它进行显卡工作模式(分辨率,颜色深度,时序),映射显存等设置,并在其上直接输出图形。这种在内核级实现图形的方案加快了显示速度,节省了系统资源,从而提高效率。