Framebuffer Driver

合集下载

关于linux的fb_framebuffer 设备驱动

关于linux的fb_framebuffer 设备驱动

草稿V2.4.01framebuffer设备即帧缓冲设备(简写fb)提供了显示接口的抽象描述。

他同时代表着显示接口的存储区,应用程序通过定义好的函数访问,不需要知道底层的任何操作。

Framebuffer驱动使用的设备节点,通常位于/dev目录,如/dev/fb*.从用户角度看,fb设备和其他/dev下面的设备类似:普通的字符设备,主设备号29,次设备号定义fb的索引。

通常,使用如下方式(前面的数字表示次设备号)0=/dev/fb0第一个fb设备1=/dev/fb1第二个fb设备考虑到向下兼容,可以创建符号链接:/dev/fb0current->fb0/dev/fb1current->fb1fb也是一种普通的内存设备,可以读写其内容。

例如,屏幕抓屏:cp/dev/fb0myfilefb虽然可以像内存设备(/dev/mem)一样,对其read,write,seek以及mmap。

但区别在于fb使用的不是整个内存区,而是显存部分。

通过ioctl可以读取或设定fb设备参数,很重要的一点,颜色表(cmap)也要通过Ioctl设定。

查看<linux/fb.h>就知道有多少ioctl应用以及相关数据结构。

这里给出摘要:-你可以获取设备一些不变的信息,如设备名,屏幕的组织(平面,象素,...)对应内存区的长度和起始地址。

-也可以获取能够改变的信息,例如位深,颜色格式,时序等。

如果你改变这些值,驱动程序将对值进行优化,以满足设备特性(如果你的设定,设备不支持,返回EINVAL)。

-你也可以获取或设定部分颜色表。

所有这些特性让应用程序十分容易的使用framebuffer设备。

Xserver可以使用/dev/fb*而不需知道硬件的寄存器是如何组织的。

XF68_FBDev是一个用于位映射(单色)Xserver,唯一要做的就是在应用程序在相应的位置设定是否显示。

在新内核中,帧缓冲设备可以工作于模块中,允许动态加载。

Linux2.6内核中的Framebuffer驱动程序设计

Linux2.6内核中的Framebuffer驱动程序设计

Linux2.6内核中的Framebuffer驱动程序设计虽然Framebuffer驱动技术在PC上已经逐渐被淘汰,但是在嵌入式等考虑成本的平台下,由于其使用简单,成本低廉的优势,使用相当的广泛。

在Linux2.4和Linux2.6内核之间,Framebuffer的框架结构发生了很大的变化,网络上很多介绍Framebuffer的文档都是基于2.4内核下的,这就使得在2.6内核开发Framebuffer驱动增加了难度,本文介绍2.6内核下如何编写Framebuffer驱动,以适应最新版本的Linux。

Framebuffer是出现在Linux 2.2.xx及以后版本内核当中的一种驱动程序接口,这种接口将显示设备抽象为帧缓冲区设备。

帧缓冲区为图像硬件设备提供了一种抽象化处理,它代表了一些视频硬件设备,允许应用软件通过定义明确的界面来访问图像硬件设备。

这样软件无须了解任何涉及硬件底层驱动的东西(如硬件寄存器)。

它允许上层应用程序在图形模式下直接对显示缓冲区进行读写和I/O控制等操作。

通过专门的设备节点可对该设备进行访问,如/dev/fb*。

用户可以将它看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以进行读写操作,而读写操作可以反映到LCD。

二、 Framebuffer驱动的主要数据结构fb_fix_screeninfo记录了帧缓冲设备和指定显示模式的固件信息。

它包含了屏幕缓冲区的物理地址和长度等信息。

fb_var_screeninfo记录了帧缓冲设备和指定显示模式的可修改信息。

它包括显示屏幕的分辨率、每个像素的比特数和一些时序变量。

其中变量 xres定义了屏幕一行所占的像素数,yres定义了屏幕一列所占的像素数。

fb_info info是Linux为帧缓冲设备定义的驱动层接口。

它不仅包含了底层函数,而且还有记录设备状态的数据。

每个帧缓冲设备都与一个fb_info结构相对应。

其中成员变量包含fb_fix_screeninfo、fb_var_screeninfo这两个数据结构,另外还有Framebuffer的回调函数。

Linux下framebuffer驱动简介

Linux下framebuffer驱动简介

【双显示器例子】
一个例子,可能就是双显示,最近刚刚看到实际某开发者的系统,就是两个显示器,鼠标移动超过单个显示器,到最右边的时候,就跑到另一个显示器了。对于常常用多系统或者需要打开很多东西的开发人员,这个功能很实用。
帧缓冲可以用于 页面交换page flipping(也常叫做 双缓冲double buffering),许多游戏都是采用此技术,以实现更流畅的视频输出,以便用户获得更好的游戏体验。此技术也被用于3D图形加速。
__u16 reserved[3]; /* Reserved for future compatibility */
};

/* more kernel header files copied shamelessly */
struct fb_bitfield {
__u16 ywrapstep; /* zero if no hardware ywrap */
__u32 line_length; /* length of a line in bytes */
unsigned long mmio_start; /* Start of Memory Mapped I/O */
【什么是FrameBuffer】
FrameBuffer直译就是,帧缓冲。
Frame帧:你所看到的屏幕的图像,或者在一个窗口中的图像,就叫一帧。
Buffer缓冲:一段RAM,用来暂存图像数据,这些数据会被直接写入到显示设备。
帧缓冲就相当于介于 图形操作 和 图像输出中间的一个中间人。将程序对图形数据的处理操作,反馈到显示输出上。
struct fb_bitfield green; /* else only length is significant */

基于framebuffer技术的DVI显示驱动程序的开发

基于framebuffer技术的DVI显示驱动程序的开发

基于framebuffer技术的DVI显示驱动程序的开发引言DVI是Digital VisualInterface(数字视频接口)的缩写。

在嵌入式电子领域,像DVI这样的高清接口应用越来越多,很多嵌入式产品采用H.264视频编码技术,支持播放H.264格式的720P分辨率的视频文件,这就需要至少1024×768分辨率的显示输出设备。

MX51是飞思卡尔半导体的基于ARM Cortex-A8内核的高端ARM嵌入式多媒体处理器,支持720P视频多种格式的硬解码,可以用来开发高清机顶盒、上网本等产品,很多情况下需要集成DVI这样的高清视频端子。

在嵌入式电子产品中,Linux操作系统占有越来越多的市场份额。

本文采用Linux2.6.28内核和MX51作为系统的软、硬件平台,详细论述了基于framebtffer技术开发DVI显示驱动程序的方法。

1 DVI概述DVI接口只在一些高端显示器上可以看到,一般常见的液晶显示器只有VGA接口。

VGA接口显示的是模拟信号,而DVI接口显示的是数字信号,它传输没有经过压缩的数字信号,最高速率可达4.9 Gbps,对高清视频显示可以达到较好的保真度,减少模拟信号传输时的信号损失。

DVI基于TMDS(Transition Minimized Differential Signaling,转换最小差分信号)技术来传输数字信号,TMDS运用先进的编码算法把8位数据(R、G、B 中的每路基色信号)通过最小转换编码为10位数据(包含行场同步信息、时钟信息、数据DE、纠错等),经过DC平衡后,采用差分信号传输数据。

DVI和LVDS、TTL相比有较好的电磁兼容性能,可以用低成本的专用电缆实现长距离、高质量的数字信号传输。

2 硬件接口本设计采用的硬件平台是基于飞思卡尔半导体的MX51多媒体应用处理器开发板。

该处理器集成了多种外设接口,其中包括两个液晶显示控制器(LCDC)及其接口,可以连接各类LCD,分辨率最大支持1280×800像素。

framebuffer 编程

framebuffer 编程

framebuffer 编程(原创实用版)目录1.framebuffer 概述2.framebuffer 编程的基本原理3.framebuffer 编程的步骤4.framebuffer 编程的实例5.framebuffer 编程的优缺点正文【1.framebuffer 概述】Framebuffer(帧缓冲区),也被称为显存,是计算机图形学中的一种存储设备,主要用于暂时存储显卡生成的图像。

Framebuffer 是一个高分辨率的缓冲区,可以存储屏幕上的所有像素。

它主要用于将计算机生成的二维图像转换为显示器可以识别的信号,以便在屏幕上显示。

【2.framebuffer 编程的基本原理】Framebuffer 编程的基本原理是通过编程控制显卡的帧缓冲区,从而实现对图像的控制。

它主要包括以下几个步骤:1.配置 framebuffer:设置 framebuffer 的属性,如宽度、高度、颜色深度等。

2.将图像数据写入 framebuffer:通过显卡的命令将图像数据写入framebuffer。

3.提交 framebuffer:将 framebuffer 中的数据提交给显卡,开始渲染。

【3.framebuffer 编程的步骤】Framebuffer 编程的基本步骤如下:1.初始化 framebuffer:首先,需要初始化 framebuffer,包括分配内存、设置属性等。

2.绑定 framebuffer:将 framebuffer 绑定到特定的渲染管线。

3.写入图像数据:通过显卡的命令将图像数据写入 framebuffer。

4.提交 framebuffer:将 framebuffer 中的数据提交给显卡,开始渲染。

5.释放 framebuffer:渲染完成后,需要释放 framebuffer。

【4.framebuffer 编程的实例】以下是一个简单的 framebuffer 编程实例:```c#include <GL/glut.h>void display() {glClear(GL_COLOR_BUFFER_BIT); // 清除颜色缓冲区glLoadIdentity(); // 重置变换矩阵glOrtho(0, glutGet(GL_WIDTH), glutGet(GL_HEIGHT), 0, -1, 1); // 设置透视投影矩阵glBegin(GL_QUADS); // 开始绘制四边形glColor3f(1.0, 0.0, 0.0); // 设置颜色为红色glVertex2f(-0.5, -0.5); // 绘制左下角glVertex2f(0.5, -0.5); // 绘制右上角glVertex2f(0.5, 0.5); // 绘制右上角glVertex2f(-0.5, 0.5); // 绘制左上角glEnd(); // 结束绘制glFlush(); // 提交绘制结果}int main(int argc, char** argv) {glutInit(&argc, argv);glutCreateWindow("Framebuffer Programming");glutDisplayFunc(display);glutMainLoop();return 0;}```【5.framebuffer 编程的优缺点】Framebuffer 编程的优点:1.灵活性:framebuffer 编程可以实现对图像的精确控制,包括颜色、亮度、对比度等。

LCD与FrameBuffer驱动程序的研究与实现

LCD与FrameBuffer驱动程序的研究与实现

LCD与FrameBuffer驱动程序的研究与实现作者:沈学银来源:《数字技术与应用》2017年第03期摘要:Framebuffer驱动程序在Linux显示器上面具有抽象的特点。

当前科学技术的持续性发展,使得很多MCU-LCD嵌入式的设备在支持上要应用更好的UI界面来实现其良好的视觉效果呈现。

但由于MCU-LCD常使用在早期的单片机内,若仍旧使用Framebuffer架构将会对内核产生较差的影响。

通过分析Framebuffer自身的结构能更好的比对出RGB以及MCU的不足之处,然后设计对应的linux帧缓冲设备驱动程序,满足内核中Framebuffer对MCU-LCD的支持。

关键词:LCD;FrameBuffer驱动;研究与实现中图分类号:TP311.11 文献标识码:A 文章编号:1007-9416(2017)03-0063-02嵌入式的LCD屏幕中能支持的两大硬件接口,其中一种接口是较为常见的RGB接口,另外一种是MCU接口。

MCU-LCD早期是针对单片机领域使用而得名的,所以在使用的时候就多在低端的手机中获得较大的应用,特点是整体价格低廉。

MCU——LCSD接口标准的术语是interfac80,所以在文档中就要使用I80代替MCU-LCD屏。

1 linux下FramBuffer1.1 FrameBuffer机制研究FrameBuffer可以被翻译为帧缓冲,这是一种基础类的图形设备,经常出现在linux2.2的版本内核中,它作为一种驱动型的程序接口而存在的,主要是其他程序的函数数据模式。

这类接口多显示为抽象或者帧缓冲区,作为用户使用该应用程序不需要对底层的驱动程序有着细致的了解,可以将其看成是内存的一种映像反映,无需做深入了解,更无需关注其物理显存的位置或者换页的机制等细节内容,只有将所有的映射引入到空间内,然后再开展读和写的操作,并且所有的操作细则都能在屏幕上直观的呈现出来。

1.2 FramBuffer设备驱动研究FramBuffer主要是实现不同的功能平台控制图,且在控制的时候要让两者能更好的绑定在一起。

framebuffer的配置方法

framebuffer的配置方法

framebuffer的配置方法在console模式(也就上文本显示,也是text模式),说直接一点,就是全屏是黑色的,象DOS那样的界面的,在桌面环境下,按CTRL+ALT+F2 或者F3 等,就进入console模式了。

就是完全文本命令操作的那种非图形桌面环境。

用 framebuffer 驱动及配置,主要是能让text模式下找到更适合的观感。

一、让console 模式下分辨率起作用的主要配置文件是 lilo.conf 或者 grub.conf , lilo.conf 是lilo系统引导管理器的配置文件,如果您用这个来引导系统,就要配置 lilo.conf文件;grub.conf 是另一个系统引导管理器grub的配置文件。

这两个系统引导管理器,其作用是一样的,只是实现的方法不太一样。

这两个管理器不能同时使用。

二、framebuffer console的参数如下,主要是分辨率;# Colours 640x480 800x600 1024x768 1280x1024 16 00x1200# --------+---------------------------------------------# 256 | 769 771 773 775 796# 32,768 | 784 787 790 793 797# 65,536 | 785 788 791 794 798# 16.8M | 786 789 792 795 799如果看不懂上面的这个,就看下面的这个,对照着看吧# Normal VGA console# vga = normal# VESA framebuffer console @ 1024x768x64k# vga=791# VESA framebuffer console @ 1024x768x32k# vga=790# VESA framebuffer console @ 1024x768x256# vga=773# VESA framebuffer console @ 800x600x64k# vga=788# VESA framebuffer console @ 800x600x32k# vga=787# VESA framebuffer console @ 800x600x256# vga=771# VESA framebuffer console @ 640x480x64k# vga=785# VESA framebuffer console @ 640x480x32k# vga=784# VESA framebuffer console @ 640x480x256# vga=769三、配置[对于大多数Linux发行版,如果您是用系统自带的内核,内核是支持framebuffer 驱动的。

Framebuffer使用测试

Framebuffer使用测试

Framebuffer使用测试这两天拾起以前做过的Framebuffer,不相同的是以前在嵌入式上做的,现在在自己电脑上Debian上进行测试,不过都类似罢了,嵌入式里要初始化很多东西。

下面具体列一下步骤。

至于Framebuffer的原理,就我的理解是比较简单的,无非往mmap好的fb上填写显示数据罢了,不对这些数据进行处理,FrameBuffer 只是一个提供显示内存和显示芯片寄存器从物理内存映射到进程地址空间中的设备,它需要真正的显卡驱动的支持。

在这次测试中,我用了默认就安装的vesafb,好像又被称为万能Fb驱动。

1、首先在系统Grub启动时按e进入命令启动行的编辑模式,改为:kernel/boot/vmlinuz-2.6.18-5-686 root=/dev/sda6 ro vga=791(vga=791表示fb用1024 * 768 * 16bpp,其他模式的参数可以上网查查);2、进入系统的命令行模式,编译fb测试例子:gcc fb_test.c;3、允许测试例子:sudo ./a.out >> fb.txt(必须要用超级用户权限,>>将屏幕打印写到fb.txt中),效果如下:打印如下:Fixed screen info:id: VESA VGAsmem_start: 0xf0000000smem_len: 3145728type: 0type_aux: 0visual: 2xpanstep: 0ypanstep: 0ywrapstep: 0line_length: 2048mmio_start: 0x0mmio_len: 0accel: 0Variable screen info:xres: 1024yres: 768xres_virtual: 1024yres_virtual: 768yoffset: 0xoffset: 0bits_per_pixel: 16grayscale: 0red: offset: 11,length: 5, msb_right: 0 green: offset: 5,length: 6, msb_right: 0 blue: offset: 0,length: 5, msb_right: 0 transp: offset: 0,length: 0, msb_right: 0nonstd: 0activate: 0height:-1width:-1accel_flags: 0x0pixclock: 12714left_margin: 128right_margin: 32upper_margin: 16lower_margin: 4hsync_len: 128vsync_len: 4sync: 0vmode: 0Frame Buffer Performance test...Average: 2508 usecsBandwidth: 1196.172 MByte/SecMax. FPS: 398.724 fps4、还可以通过fb在命令行模式下看视频,如:sudo mplayer –vo fbdev ./air_nessesity.mpg。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Framebuffer Driver中文名为:帧缓冲驱动一、FrameBuffer的原理FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。

Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。

Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。

用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。

这种操作是抽象的,统一的。

用户不必关心物理显存的位置、换页机制等等具体细节,这些都是由Framebuffer设备驱动来完成的。

但Framebuffer本身不具备任何运算数据的能力,就只好比是一个暂时存放水的水池.CPU将运算后的结果放到这个水池,水池再将结果流到显示器.中间不会对数据做处理. 应用程序也可以直接读写这个水池的内容.在这种机制下,尽管Framebuffer需要真正的显卡驱动的支持,但所有显示任务都有CPU完成,因此CPU负担很重framebuffer的设备文件一般是 /dev/fb0、/dev/fb1 等等。

可以用命令: #dd if=/dev/zero of=/dev/fb 清空屏幕.如果显示模式是 1024x768-8 位色,用命令:$ dd if=/dev/zeroof=/dev/fb0 bs=1024 count=768 清空屏幕;用命令: #dd if=/dev/fb of=fbfile 可以将fb中的内容保存下来;可以重新写回屏幕: #dd if=fbfile of=/dev/fb;在使用Framebuffer时,Linux是将显卡置于图形模式下的.在应用程序中,一般通过将 FrameBuffer 设备映射到进程地址空间的方式使用,比如下面的程序就打开 /dev/fb0 设备,并通过 mmap 系统调用进行地址映射,随后用 memset 将屏幕清空(这里假设显示模式是1024x768-8 位色模式,线性内存模式):int fb;unsigned char* fb_mem;fb = open ("/dev/fb0", O_RDWR);fb_mem = mmap (NULL, 1024*768,PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);memset (fb_mem, 0, 1024*768); //这个命令应该只有在root可以执行FrameBuffer 设备还提供了若干 ioctl 命令,通过这些命令,可以获得显示设备的一些固定信息(比如显示内存大小)、与显示模式相关的可变信息(比如分辨率、象素结构、每扫描线的字节宽度),以及伪彩色模式下的调色板信息等等。

通过 FrameBuffer 设备,还可以获得当前内核所支持的加速显示卡的类型(通过固定信息得到),这种类型通常是和特定显示芯片相关的。

比如目前最新的内核(2.4.9)中,就包含有对 S3、Matrox、nVidia、3Dfx 等等流行显示芯片的加速支持。

在获得了加速芯片类型之后,应用程序就可以将 PCI 设备的内存I/O(memio)映射到进程的地址空间。

这些 memio 一般是用来控制显示卡的寄存器,通过对这些寄存器的操作,应用程序就可以控制特定显卡的加速功能。

PCI 设备可以将自己的控制寄存器映射到物理内存空间,而后,对这些控制寄存器的访问,给变成了对物理内存的访问。

因此,这些寄存器又被称为"memio"。

一旦被映射到物理内存,Linux 的普通进程就可以通过 mmap 将这些内存 I/O 映射到进程地址空间,这样就可以直接访问这些寄存器了。

当然,因为不同的显示芯片具有不同的加速能力,对memio 的使用和定义也各自不同,这时,就需要针对加速芯片的不同类型来编写实现不同的加速功能。

比如大多数芯片都提供了对矩形填充的硬件加速支持,但不同的芯片实现方式不同,这时,就需要针对不同的芯片类型编写不同的用来完成填充矩形的函数。

FrameBuffer 只是一个提供显示内存和显示芯片寄存器从物理内存映射到进程地址空间中的设备。

所以,对于应用程序而言,如果希望在FrameBuffer 之上进行图形编程,还需要自己动手完成其他许多工作。

二、FrameBuffer在Linux中的实现和机制Framebuffer对应的源文件在linux/drivers/video/目录下。

总的抽象设备文件为fbcon.c,在这个目录下还有与各种显卡驱动相关的源文件。

//这个文件要好好看看(一)、分析Framebuffer设备驱动需要特别提出的是在INTEL平台上,老式的VESA 1.2 卡,如CGA/EGA 卡,是不能支持Framebuffer的,因为Framebuffer要求显卡支持线性帧缓冲,即CPU可以访问显缓冲中的每一位,但是VESA 1.2 卡只能允许CPU一次访问64K的地址空间。

FrameBuffer设备驱动基于如下两个文件:1) linux/include/linux/fb.h2) linux/drivers/video/fbmem.c下面分析这两个文件。

1、fb.h几乎主要的结构都是在这个中文件定义的。

这些结构包括:1)fb_var_screeninfo这个结构描述了显示卡的特性:NOTE:::: __u32 是表示 unsigned 不带符号的 32 bits 的数据类型,其余类推。

这是 Linux 内核中所用到的数据类型,如果是开发用户空间(user-space)的程序,可以根据具体计算机平台的情况,用 unsigned long 等等来代替struct fb_var_screeninfo{__u32 xres; /* visible resolution */ //可视区域__u32 yres;__u32 xres_virtual; /* virtual resolution */ //可视区域__u32 yres_virtual;__u32 xoffset; /* offset from virtual to visible resolution */ //可视区域的偏移__u32 yoffset;__u32 bits_per_pixel; /* guess what */ //每一象素的bit数__u32 grayscale; /* != 0 Gray levels instead of colors *///等于零就成黑白struct fb_bitfield red; /* bitfield in fb mem if true color, */真彩的bit机构struct fb_bitfield green; /* else only length is significant */ struct fb_bitfield blue;struct fb_bitfield transp; /* transparency */ 透明__u32 nonstd; /* != 0 Non standard pixel format */ 不是标准格式__u32 activate; /* see FB_ACTIVATE_* */__u32 height; /* height of picture in mm */ 内存中的图像高度__u32 width; /* width of picture in mm */ 内存中的图像宽度__u32 accel_flags; /* acceleration flags (hints) */ 加速标志/* Timing: All values in pixclocks, except pixclock (of course) */时序-_-这些部分就是显示器的显示方法了,可以找相关的资料看看__u32 pixclock; /* pixel clock in ps (pico seconds) */__u32 left_margin; /* time from sync to picture */__u32 right_margin; /* time from picture to sync */__u32 upper_margin; /* time from sync to picture */__u32 lower_margin;__u32 hsync_len; /* length of horizontal sync */ 水平可视区域__u32 vsync_len; /* length of vertical sync */ 垂直可视区域__u32 sync; /* see FB_SYNC_* */__u32 vmode; /* see FB_VMODE_* */__u32 reserved[6]; /* Reserved for future compatibility */ 备用-以后开发};2) fb_fix_screeninfon这个结构在显卡被设定模式后创建,它描述显示卡的属性,并且系统运行时不能被修改;比如FrameBuffer内存的起始地址。

它依赖于被设定的模式,当一个模式被设定后,内存信息由显示卡硬件给出,内存的位置等信息就不可以修改。

struct fb_fix_screeninfo {char id[16]; /* identification string eg "TT Builtin" */IDunsigned long smem_start; /* Start of frame buffer mem */ 内存起始/* (physical address) */ 物理地址__u32 smem_len; /* Length of frame buffer mem */ 内存大小__u32 type; /* see FB_TYPE_* */__u32 type_aux; /* Interleave for interleaved Planes */插入区域?__u32 visual; /* see FB_VISUAL_* */__u16 xpanstep; /* zero if no hardware panning */没有硬件设备就为零__u16 ypanstep; /* zero if no hardware panning */__u16 ywrapstep; /* zero if no hardware ywrap */__u32 line_length; /* length of a line in bytes */ 一行的字节表示unsigned long mmio_start; /* Start of Memory Mapped I/O */内存映射的I/O起始/* (physical address) */__u32 mmio_len; /* Length of Memory Mapped I/O */ I/O的大小__u32 accel; /* Type of acceleration available */ 可用的加速类型__u16 reserved[3]; /* Reserved for future compatibility */};3) fb_cmap描述设备无关的颜色映射信息。

相关文档
最新文档