Electronic Joint Business

Solution for E-Business

Linux 图形系统和AMD R600显卡编程(2)——Framebuffer、DRM、EXA和Mesa简介

原文 Framebuffer 在 Linux 中是作为设备来实现的,它是对图形硬件的一种抽象,代表着显卡中的帧缓冲区(Framebuffer)。通过Framebuffer 设备,上层软件可以通过一个良好定义的软件接口访问图形硬件,而不需要关心底层图形硬件是如何工作的,比如,上层软件不用关心应该如何读写显卡寄存器,也不需要知道显卡中的帧缓冲区从什么地址开始,所有这些工作都由 Framebuffer去 处理,上层软件只需要集中精力在自己要做的事情上就是了。 Framebuffer 的优点在于它是一种低级的通用设备,而且能够跨平台工作,比如 Framebuffer 既可以工作在 x86 平台上,也能工作在 PPC 平台上,甚至也能工作在 m68k 和 SPARC 等平台上,在很多嵌入式设备上 Framebuffer 也能正常工作。诸如 Minigui 之类的 GUI 软件包也倾向于采用 Framebuffer 作为硬件抽象层(HAL)。 从用户的角度来看,Framebuffer 设备与其它设备并没有什么不同。Framebuffer 设备位于/dev下,通常设备名为fb*,这里*的取值从0到31。最常用到的 Framebuffer 设备是 /dev/fb0。通常,使用 Framebuffer 的程序通过环境变量 FRAMEBUFFER 来取得要使用的Framebuffer 设备,环境变量 FRAMEBUFFER 通常被设置为”/dev/fb0”。 从程序员的角度来看,Framebuffer 设备其实就是一个文件而已,可以像对待普通文件那样读写 Framebuffer 设备文件,可以通过 mmap() 将其映射到内存中,也可以通过 ioctl() 读取或者设置其参数,等等。最常见的用法是将 Framebuffer 设备通过 mmap() 映射到内存中,这样可以大大提高IO效率。 下面,来了解一下如何编程使用 Framebuffer […]

,

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.