Linux 帧缓冲区文档

Linux 帧缓冲区文档,linux,framebuffer,Linux,Framebuffer,是否有关于如何在Linux中编写使用帧缓冲区设备的软件的文档?我见过几个简单的例子,基本上是这样说的:“打开它,mmap它,将像素写入映射区域。”但没有关于如何使用不同ioctl的全面文档。我见过“平移”和其他功能,但“谷歌搜索”给了太多无用信息的点击 编辑: 从编程的角度来看,这是唯一的文档,而不是“用户如何配置您的系统以使用fb”,记录代码?任何启动屏幕(即引导期间)的源代码应该给您一个良好的开端 你可以看看fbi的源代码,一个使用linux帧缓冲区的图像查看器。你可以在这里找到它:看看以下

是否有关于如何在Linux中编写使用帧缓冲区设备的软件的文档?我见过几个简单的例子,基本上是这样说的:“打开它,mmap它,将像素写入映射区域。”但没有关于如何使用不同ioctl的全面文档。我见过“平移”和其他功能,但“谷歌搜索”给了太多无用信息的点击

编辑:
从编程的角度来看,这是唯一的文档,而不是“用户如何配置您的系统以使用fb”,记录代码?

任何启动屏幕(即引导期间)的源代码应该给您一个良好的开端

你可以看看fbi的源代码,一个使用linux帧缓冲区的图像查看器。你可以在这里找到它:

看看以下任何一个的源代码:fbxat、fbida、fbterm、fbtv、directFB库、libxineliboutput fbe、ppmtofb、xserver fbdev都是debian软件包应用程序。只需从debian库获取源代码。还有很多其他的

提示:使用您喜爱的包管理器在包描述中搜索帧缓冲区

好的,即使阅读代码有时被称为“大师文档”,但实际阅读可能有点太多。

--除了您提到的之外,似乎没有太多的选项可以从桌面上的用户空间使用fb编程。这可能是某些文档如此陈旧的原因之一。看看这个设备驱动程序编写者指南,它来自一些正式的linux文档:www.linux-fbdev.org[slash]howto[slash]index.html。它没有引用太多的接口。。尽管查看linux源代码树确实提供了更大的代码示例

--opentom.org[斜杠]硬件\u帧缓冲区不适用于桌面环境。它强化了主要的方法,但似乎避免了解释它提到的“快速”双缓冲区切换所需的所有要素。另一个用于不同设备且保留了一些关键缓冲细节的方法是wiki.gp2x.org[slash]wiki[slash]将\u写入\u帧缓冲区\u设备,尽管它至少表明您可以使用fb1和fb0进行双缓冲(在该设备上..尽管对于桌面,fb1可能不可能,或者它可能访问不同的硬件),使用volatile关键字可能是合适的,我们应该注意vsync

--asm.sourceforge.net[slash]articles[slash]fb.html汇编语言例程,它们看起来(?)只是执行查询、打开、设置一些基本操作、mmap、将像素值绘制到存储器以及复制到fb内存的基本操作(我想一定要使用短的stosb循环,而不是一些较长的方法)

--谷歌搜索Linux帧缓冲区时要注意16个bpp的注释:我在X会话期间使用了fbgrab和fb2png,但没有任何效果。每一张照片都呈现了一张我桌面屏幕的快照,就好像桌面的照片是在水下用一台非常糟糕的相机拍摄的,然后在黑暗的房间里曝光过度。图像在颜色、大小上完全被破坏,缺少了很多细节(到处都是不属于它的像素颜色)。似乎我使用的计算机上的/proc/sys(新内核,最多只做了一些小的修改..来自一个PCLOS衍生产品)声称fb0使用16 bpp,我在谷歌上搜索到的大多数东西都是这样说的,但实验让我得出了一个非常不同的结论。除了标准帧缓冲区抓取实用程序(对于本发行版持有的版本)可能假设为16位的这两个失败的结果之外,我还有一个不同的成功测试结果,将帧缓冲区像素数据处理为32位。我通过cat/dev/fb0从拉入的数据创建了一个文件。该文件的大小最终为1920000。然后,我编写了一个小C程序来尝试和处理这些数据(假设在某种编码方式下是像素数据)。我最终确定了它,像素格式与我查询时从X获得的完全匹配(TrueColor RGB 8位,没有alpha,但填充到32位)。请注意另一个线索:我的屏幕分辨率为800x600乘以4字节,正好是1920000。我最初尝试的16位方法都产生了与fbgrap类似的破碎图像,因此我可能没有看到正确的数据。[如果您需要我用来测试数据的代码,请告诉我。基本上,我只是读取整个fb0转储,然后在添加标题“P6\n800 600\n255\n”后将其吐回文件中。”这就创建了一个合适的ppm文件,并在所有像素上循环操作它们的顺序或扩展它们,……最终的成功结果是,我每4字节删除一个像素,并在每4字节单位中切换第一个和第三个像素。简言之,我将明显的BGRA fb0转储转换为ppm RGB文件。ppm可以通过许多pic查看器查看n Linux。]

--您可能需要重新考虑希望使用fb0编程的原因(这也可以解释为什么很少有示例存在)。在放弃使用X的好处的同时,您可能无法获得任何有价值的性能提升(这是我的经验,如果有限的话),这也可能解释为什么代码示例很少存在

--请注意,DirectFB不是fb。DirectFB最近得到了比老款fb更多的喜爱,因为它更关注性感的3d硬件加速。如果您希望在不使用3d硬件加速(甚至2d硬件加速)的情况下尽可能快地渲染到桌面屏幕,那么fb可能很好,但不会提供X没有提供的任何东西。X显然使用了fb,与您的程序可能拥有的其他成本相比,开销可能可以忽略不计(不要在任何紧循环中调用X,而是在设置完帧的所有像素后调用X)。另一方面,如本评论所述,与fb打交道也很不错:

查看来源

在/libvo目录下,有许多视频输出插件用于b