显卡的vbe标准

原创 2006年05月24日 21:44:00
现在的显卡几乎全部支持VESA(电子视频标准协会)制定的标准,该标准的英文全称为VESA BIOS EXTENSION,简写VBE。这个标准经过1.0、1.1、1.2、2.0、2.0 Pro、3.0的升级,目前的最高版本是3.0。
制订这个标准的成员来自Intel、Matrox、Microsoft、Nvidia、Phillips、SciTech、Trident、ULSI等诸多公司或组织,也就是说它是被全面支持的,比如市面上几乎所有的PC机显卡都遵从这一标准;还有在当你安装LINUX或WINDOWS时或别的什么具备图形界面的操作系统时,如果系统无法识别你的显卡或找不到相应的驱动时,它们都会使用基于VBE标准的驱动以实现最基本的显示能力及硬件特性。所以不论你是底层编程的爱好者还是自动控制程序界面的实现者,甚至想在自己写的操作系统中加入对图形的支持,你都应该对VBE有所认识,并尽量地去掌握它,而关于VBE的文档都是英文的,虽然有人想汉化,但我目前还未找到一份完整的汉化版,因此在这个系列的文章中,我会用相当的篇幅来介绍VBE,并会结合NEO SDK的源代码以让你有更深的认识。
先让我们来预览一下VBE的特性:
l         SVGA图形控制设备的标准应用程序接口
l         可选的操作系统保护模式图形接口(譬如可被用Windows,OS/2和UNIX等)
l         用以设置所支持显示模式刷新率的标准方案
l         支持液晶眼镜显示设备
l         识别视频产品和厂商的标准方法
l         OEM厂商可通过第14H号子功能追加扩展功能
l         通过补充说明可扩展现有接口
 
好了,上面的特性能让你对VBE有一个大概的了解,现在切入正题,我们从设置显卡的显示模式开始。
在VBE标准中,设置显示模式是通过第02H号子功能实现的,为实现设置过程,我们要做如下步骤:
1.         将寄存器AH设置为0x4F(VBE的功能入口),AL设置为0x02(子功能号),当然你也可以直接将0x4F02赋值给AX
2.         然后将你要设置的显示模式的信息赋给寄存器BX。其中BX的第0位到第8位(以后简称为D0~D8)是模式号(关于模式号见附表);D9~D10保留置0;D11是刷新率标志位,为0时表示使用当前的默认刷新率,为1表示使用用户自定义的刷新率;D12~13也保留,置0即可;D14是显存寻址模式标志,为0表示使用窗口模式(也有译作换页模式但会与NEO中的概念冲突),否则使用线性模式,线性模式需要保护模式的支持(譬如通过DMPI支持);D15是清空显存标志,为0表示显示模式切换时清空显存原有内容,为1则保留;以上介绍的各个字节位初级应用只需要使用到D0~D8即模式号,其它的可以暂放一边
3.         如果需要自定义显示的刷新率,就将指向CRTC结构的指针赋给ES:DI,否则跳过这一步(有关于CRTC结构的介绍由于篇幅问题请直接参阅VBE标准文档)
4.         调用第10H号中断,你可以用库函数譬如int86(),也可以用内嵌汇编
如果不出意外,你会发现显示模式已经被你设置了为你想要的了,当然也许会出错,错误的返回值你可以从寄存器AX中获得,AX中的值在VBE中被称为返回状态,除了32位保护模式接口的专有子功能,每个子功能在调用后都会往AX中返回一个状态值,它有以下的可能:
AL == 4Fh:子功能被支持
AL != 4Fh:子功能不被支持
AH ==00h:功能调用成功
AH ==01h:功能调用失败
AH ==02h:子功能在当前的硬件设置中不被支持
 
下面给出一段NEO SDK中的代码用作示例:
      /*切换到指定图形模式*/
      r.x.ax = 0x4f02;
      r.x.bx = mode;
      int86(0x10, &r, &r);
      if (r.x.ax != 0x4F) return FALSE; /*切换失败*/
 
你可能会问,说了这么多,那VBE到底支持哪些显示模式哪?不急,我来给出两张表:
附表A

图形模式
15位模式号
7位模式号
分辨率
颜色数目
100h
――
640x400
256
101h
――
640x480
256
102h
6Ah
800x600
16
103h
――
800x600
256
104h
――
1024x768
16
105h
――
1024x768
256
106h
――
1280x1024
16
107h
――
1280x1024
256
10Dh
――
320x200
32K (1:5:5:5)
10Eh
――
320x200
64K (5:6:5)
10Fh
――
320x200
16.8M (8:8:8)
110h
――
640x480
32K (1:5:5:5)
111h
――
640x480
64K (5:6:5)
112h
――
640x480
16.8M (8:8:8)
113h
――
800x600
32K (1:5:5:5)
114h
――
800x600
64K (5:6:5)
115h
――
800x600
16.8M (8:8:8)
116h
――
1024x768
32K (1:5:5:5)
117h
――
1024x768
64K (5:6:5)
118h
――
1024x768
16.8M (8:8:8)
119h
――
1280x1024
32K (1:5:5:5)
11Ah
――
1280x1024
64K (5:6:5)
11Bh
――
1280x1024
16.8M (8:8:8)
81FFh
特殊模式(具体参阅VBE标准文档细节)

 
附表B

文本模式
15位模式号
7位模式号
108h
――
80
60
109h
――
132
25
10Ah
――
132
43
10Bh
――
132
50
10Ch
――
132
60

 
注:
A.        颜色数目一栏中的32K指32768;64K指65536;16.8M指16777216
B.        约定:在本系列之后的文档中,32K和64K被称为高彩色,16.8M被称为真彩色
C.        15位模式号为VBE标准模式号;7位模式号是OEM自定义的模式号,VBE只定义了一个模式的7位模式号,即102h模式,其对应的7位模式号为6Ah
如果显卡支持vbe,我们就应该切换到vga13显示模式下工作

相关文章推荐

显卡的vbe标准

显卡的vbe标准 转自:http://blog.csdn.net/jcicheng/archive/2006/05/24/753649.aspx现在的显卡几乎全部支持VESA(电子视频标准协会)制定的...
  • soulxu
  • soulxu
  • 2011年02月24日 11:52
  • 3037

VESA VBE 3.0 核心函数标准

  • 2008年05月12日 22:29
  • 212KB
  • 下载

显卡排行榜

  • 2017年04月08日 15:46
  • 139KB
  • 下载

Ubuntu-安装-cuda7.0-单显卡-超详细教程

说明 本教程是在台式机上安装的,只有一个NVIDIA显卡。操作系统是Ubuntu 14.04。 双显卡的笔记本请移步Ubuntu-安装-cuda7.0-双显卡 准备更新sudo apt-get upd...

650显卡测试软件

  • 2014年12月11日 11:41
  • 23.53MB
  • 下载

软件显卡用

  • 2015年01月28日 20:26
  • 4.66MB
  • 下载

历代显卡精彩演示DEMO赏析点评之NV篇

1     无论ATI还是NVIDIA,每次有新显卡发布都会同时公布一个或者多个美轮美奂的演示DEMO。这些演示DEMO的设计初衷就是通过完美的3D效果征服每一位观众,让大家对...

自动修复GT显卡NAC

  • 2014年10月28日 23:38
  • 33KB
  • 下载

显卡检测的软件Gpu-z

  • 2015年07月21日 12:20
  • 1.65MB
  • 下载

keras系列︱keras是如何指定显卡且限制显存用量

keras在使用GPU的时候有个特点,就是默认全部占满显存。 若单核GPU也无所谓,若是服务器GPU较多,性能较好,全部占满就太浪费了。 于是乎有以下三种情况: - 1、指定GPU - 2、使...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:显卡的vbe标准
举报原因:
原因补充:

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