与afreez一起学习DirectFB之:framebuffer相关基础

原创 2006年06月06日 20:39:00
在学习DirectFB的过程中,其中很重要的一部分就是framebuffer的学习,下面把我收集到的一些自己认为比较有价值的文字列出,希望也对大家有帮助!
---------------------------------------------------------------------------------------------------------------------
声明:
       此文为原创,欢迎转载,转载请保留如下信息
       作者:聂飞(afreez)
       联系方式:afreez@sina.com (欢迎与作者交流)
       初次发布时间:2006-06-06
      不经本人同意,不得用语商业或赢利性质目的,否则,作者有权追究相关责任!
-----------------------------------------------------------------------------

framebuffer相关知识总结

Vesafb介绍

VESAVideo Electronic Standards Association影像电子工程标准协会的缩,由多家计算机芯片制造商于1989年联合创立,1994年底,VESA发表了64位架构的VESA Local Bus标准,80486以后的PC机大多采用这一标准的显卡。

Vesafb is a framebuffer driver for Intel architecture that works with VESA 2.0 compliant graphic cards

Linear frame buffering simply means that the system's CPU is able to access every bit of the display.

 

显卡简介

显示适配卡Video cardGraphics card),又称为显示适配器video adapter),中国大陆简称为显卡显示卡香港台湾简称为显示卡,是个人电脑最基本组成部分之一。-{A|zh-cn:显卡;zh-tw:显示卡}-的用途是将计算机系统所需要的显示信息进行转换驱动显示器,并向显示器提供行扫描信号,控制显示器的正确显示,是联接显示器和个人电脑主板的重要组件,是人机对话的重要设备之一。

显卡是插在主板上的扩展槽里的(现在一般是PCI-EAGP插槽)。它主要负责把主机向显示器发出的显示信号转化为一般电信号,使得显示器能明白个人电脑在让它干什么。显卡的主要芯片叫显示芯片Video chipset,也叫GPUVPU,图形处理器或视觉处理器),是显卡的主要处理单元。显卡上也有和电脑内存相似的存储器,称为显示内存,简称显存

早期的显卡只是单纯意义的显卡,只起到信号转换的作用;目前我们一般使用的显卡都带有3D画面运算和图形加速功能,所以也叫做图形加速卡

显卡通常由总线接口、PCB板、显示芯片、显存、RAMDACVGA BIOSVGA功能插针、VGA插座及其它外围组件构成,现在的显卡大多还具有DVI显示器插头及S-video端子插头。

ISA显卡

ISA显卡是现在最普遍使用的VGA显示器所能支持的最为古老的显卡。

VESA显卡

VESAVideo Electronic Standards Association影像电子工程标准协会的缩写,由多家计算机芯片制造商于1989联合创立,1994底,VESA发表了64位架构的VESA Local Bus标准,80486以后的PC机大多采用这一标准的显卡。

PCI显卡

AGP显卡

AGP(Accelerated Graphics Port)Intel公司在1996开发的32位总线接口,用来增进计算机系统中的显示效能。分有AGP 1X , AGP 2X ,AGP 4X 及最后的AGP 8X , 频宽分别为 266MB/s ,533MB/s ,1066MB/2133 MB/s。其中 AGP 4X 以后已跟之前电压不兼容。性能最好的AGP显示卡是nVIDIA公司的GeForce 6800 Ultra ATi公司的Radeon X850 XT PE

PCI Express显卡

PCI Express是显示卡最新的图形接口,用来取代AGP显示卡的,因为面对日后3D显示技术的不断进步,AGP的宽带已经不能再满足庞大的数据运算。目前性能最高的PCI-Express显示卡是Nvidia公司的GeForce 7800GTX 512MBATi公司的X1900XTX。此外, 现时部分显示卡可-{zh-tw:支援;zh-cn:支持}-双显示卡(nVidiaSLiATiCrossfire). 当中, Crossfire大部分都需要一张子卡和一张主卡去运行, X1300就无此限制,而此限制也即将解封。

 

MTRR含义

MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?]

选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。

Intel p6家族的处理器中(Ppro PII和更新的)有一个内存类型范围寄存器,可用来控制处理器访问的内存范围。打开它一般可以提升显卡的显示性能

It speeds up memory copies between the processor and the graphic card

linux framebuffer相关


又学习到结构体初始化定义的一个绝招,具体如下:
结构体定义(见
/include/linux/fb.h

struct fb_fix_screeninfo {

       char id[16];                  /* identification string eg "TT Builtin" */

       unsigned 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   */

                                   /* (physical address) */

       __u32 mmio_len;                  /* Length of Memory Mapped I/O  */

       __u32 accel;                 /* Type of acceleration available */

       __u16 reserved[3];        /* Reserved for future compatibility */

};

/drivers/video/Anakinfb.c

结构体初始化,注意并不是初始化全部成员变量,而是一部分,这是一种简捷的定义方式,注意每个成员变量前有一个“.”号,你有更好的定义方式吗?欢迎指教:)

static struct fb_fix_screeninfo anakinfb_fix = {

       .id          = "AnakinFB",

       .smem_start   = VGA_START,

       .smem_len     = VGA_SIZE,

       .type             = FB_TYPE_PACKED_PIXELS,

       .visual    = FB_VISUAL_TRUECOLOR,

       .line_length    = 400*2,

       .accel            = FB_ACCEL_NONE,

};

 下面是一个操作符优先级问题

anakinfb_setcolreg()

{

// green & 0xfc00 >> 5green & 0xfc00 >> 5)相同,注意操作符的优先级

((u16 *)(info->pseudo_palette))[regno] = (red & 0xf800) | (green & 0xfc00 >> 5) | (blue & 0xf800 >> 11);

}

与afreez一起学习DirectFB之:编译最小的DirectFB

摘要作者:聂飞 afreez@sina.com转载请注名出处,文中不妥之处欢迎赐教本文介绍了怎样生成一个最小(或接近最小)的DirectFB,以及相关的测试用例的安装和测试,对编译中的参数MMX,SS...
  • ganxingming
  • ganxingming
  • 2006年05月25日 20:40
  • 4098

DirectFB学习之修改FrameBuffer驱动支持双缓冲

DirectFB学习之修改FrameBuffer驱动支持双缓冲 折腾了一段时间基于nuc972平台的2D硬件加速驱动终于在DirectFB上跑起来了,但是我发现只要我想在独占模式下创建Primary...
  • jxgz_leo
  • jxgz_leo
  • 2017年04月17日 22:24
  • 730

有关于directFB和freebuffer的学习

待添加。
  • Juery_Lee
  • Juery_Lee
  • 2016年04月07日 13:52
  • 429

与afreez一起学习DirectFB之:一个linux下的framebuffer例子的学问

摘要:通过一个一个framebuffer例子,复习了内存分配的应用。其中的framebuffer例子为网上流行的(确实有bug的),在编译运行的过程中又重新温习了好多差不多已经被遗忘的知识点,写出来和...
  • ganxingming
  • ganxingming
  • 2006年06月08日 20:59
  • 1632

与afreez一起学习DirectFB之:如何高效的运行DirectFB程序,即Directfbrc文件介绍

摘要:本文主要介绍了directfbrc文件的使用及参数的详细说明,在directfb应用程序启动做初始化阶段,都会去试图读取该文件。---------------------------------...
  • ganxingming
  • ganxingming
  • 2006年06月06日 20:20
  • 5463

[DFB] 移动鼠标绘制线条

/*1。surface的绘图函数 2。如何在surface中获取类似framebuffer的绘制内存地址(去掉代码中的注释) 3。eventbuffer的使用,按escape退出,按c 键清屏 ,...
  • situzhuge
  • situzhuge
  • 2011年04月18日 12:19
  • 1192

与afreez一起学习DirectFB之:编译运行第一个DirectFB程序

摘要:本文介绍了如果把一个DirectFB源程序文件编译一个可执行的文件,附带性的介绍了gcc的常见编译选项的应用。------------------------------------------...
  • ganxingming
  • ganxingming
  • 2006年05月29日 20:20
  • 4087

Framebuffer,Xorg,directFB,openGL,QT,GTK关系

Framebuffer,Xorg,directFB,openGL,QT,GTK关系 该文章收集于互联网,如有侵犯您的权益,请及时联系我,我将立即删除点击打开链接...
  • h934070878
  • h934070878
  • 2015年05月14日 10:06
  • 879

TLD(Tracking-Learning-Detection)学习与源码理解之(六) .

转自:http://blog.csdn.net/zouxy09/article/details/7893081 下面是自己在看论文和这些大牛的分析过程中,对代码进行了一些理解,但是由于自己接触图像处...
  • weixiaomm
  • weixiaomm
  • 2013年01月09日 21:54
  • 731

网络黑客攻防学习平台之基础关第三题

网络黑客攻防学习平台之基础关第三题
  • baigoocn
  • baigoocn
  • 2016年05月20日 22:49
  • 665
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:与afreez一起学习DirectFB之:framebuffer相关基础
举报原因:
原因补充:

(最多只允许输入30个字)