Intel 810/815 帧缓冲驱动程序

Tony Daplas <adaplas@pol.net>

http://i810fb.sourceforge.net

2002年3月17日

首次发布:2001年7月 最新更新:2005年9月12日

A. 简介

这是一个适用于各种兼容Intel 810/815图形设备的帧缓冲驱动程序。包括以下型号:

  • Intel 810

  • Intel 810E

  • Intel 810-DC100

  • Intel 815 仅限内置显卡,100Mhz 前端总线

  • Intel 815 仅限内置显卡

  • Intel 815 内置显卡和AGP

B. 功能

  • 可选择使用离散视频时序、VESA通用时序公式或帧缓冲专用数据库来设置视频模式

  • 如果启用了VESA通用时序公式,支持可变范围的水平和垂直分辨率以及垂直刷新率。

  • 支持8、16、24和32位每像素的颜色深度

  • 支持伪彩色、直接彩色或真彩色显示模式

  • 在8、16和24位每像素下提供完整且优化的硬件加速

  • 稳定的视频状态保存和恢复

  • MTRR支持

  • 利用用户输入的显示器规格自动计算所需的视频模式参数。

  • 可与运行原生i810驱动程序的xfree86并发运行

  • 硬件光标支持

  • 支持通过DDC/I2C或BIOS进行EDID探测

C. 可用选项列表

  1. “video=i810fb”

    启用i810驱动程序

    建议:必需

  2. “xres:<value>”

    选择水平分辨率(像素)。 (如果指定了“mode_option”参数,此参数将被忽略。请参阅下面的“o”)。

    建议:用户偏好(默认 = 640)

  3. “yres:<value>”

    选择垂直分辨率(扫描线)。如果启用了离散视频时序,此参数将被忽略并计算为3*xres/4。(如果指定了“mode_option”参数,此参数将被忽略。请参阅下面的“o”)

    建议:用户偏好(默认 = 480)

  4. “vyres:<value>”

    选择虚拟垂直分辨率(扫描线)。如果指定(0)或不指定,将根据最大可用内存进行计算。

    建议:不要设置(默认 = 480)

  5. “vram:<value>”

    选择分配给显存的系统RAM大小(MB)

    建议:1 - 4 MB。(默认 = 4)

  6. “bpp:<value>”

    选择所需的像素深度

    建议:8(默认 = 8)

  7. “hsync1/hsync2:<value>”

    选择显示器的最小和最大水平同步频率(kHz)。如果使用固定频率显示器,hsync1必须等于hsync2。如果EDID探测成功,这些值将被忽略,并从EDID块中获取。

    建议:查阅显示器手册获取正确值(默认 = 29/30)

  8. “vsync1/vsync2:<value>”

    选择显示器的最小和最大垂直同步频率(Hz)。您也可以使用此选项锁定显示器的刷新率。如果EDID探测成功,这些值将被忽略,并从EDID块中获取。

    建议:查阅显示器手册获取正确值(默认 = 60/60)

    重要提示:如果您需要限制时序,请尝试为计算误差(溢出/下溢)留出一些余量。例如:如果使用vsync1/vsync2 = 60/60,请确保hsync1/hsync2至少有1个单位的差异,反之亦然。

  9. “voffset:<value>”

    选择在逻辑内存中分配帧缓冲内存的偏移量(MB)。目的是避免标准图形应用程序(XFree86)使用的内存块。默认偏移量(64 MB光圈为16 MB,32 MB光圈为8 MB)将避免XFree86的使用,并允许最多7 MB/15 MB的帧缓冲内存。根据您的使用情况,向上或向下调整值(0表示最大使用,31/63 MB表示最少使用)。请注意,任意设置可能会与XFree86冲突。

    建议:不要设置(默认 = 8 或 16 MB)

  10. “accel”

    启用文本加速。可以通过“fbset -accel true/false”随时启用/重新启用此功能。

    建议:启用(默认 = 未设置)

  11. “mtrr”

    启用MTRR。这允许数据以突发方式传输到帧缓冲内存,从而显著提高性能。由于“共享内存”,这对于i810/i815帮助不大。

    建议:不要设置(默认 = 未设置)

  12. “extvga”

    如果指定,辅助/外部VGA输出将始终启用。当没有连接显示器时,如果BIOS关闭VGA端口,此功能会很有用。之后无需重启即可连接外部VGA显示器。

    建议:不要设置(默认 = 未设置)

  13. “sync”

    强制硬件引擎执行“同步”操作,即等待硬件完成当前指令后再开始下一条指令。这将产生更稳定的设置,但会降低速度。

    建议:不要设置(默认 = 未设置)

  14. “dcolor”

    对于像素深度大于8bpp的情况,使用directcolor视觉模式而非truecolor。对于色彩调整(如伽马控制)很有用。

    建议:不要设置(默认 = 未设置)

  15. <xres>x<yres>[-<bpp>][@<refresh>]

    驱动程序现在接受引导模式选项的指定。如果指定此选项,则“xres”和“yres”选项将被忽略。有关用法,请参阅modedb默认视频模式支持

D. 内核启动

每个选项/选项对之间用逗号(,)分隔,选项及其值之间用冒号(:)分隔,如下所示

video=i810fb:option1,option2:value2

示例用法

在 /etc/lilo.conf 中,添加以下行

append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
        vsync1:50,vsync2:85,accel,mtrr"

这将把帧缓冲初始化为1024x768,8bpp。帧缓冲将使用2 MB的系统RAM。MTRR支持将启用。刷新率将根据hsync1/hsync2和vsync1/vsync2的值计算。

重要

您必须包含hsync1、hsync2、vsync1和vsync2才能启用优于640x480@60Hz的视频模式。然而,如果您的芯片组/显示器组合支持I2C并具有EDID块,您可以安全地排除hsync1、hsync2、vsync1和vsync2参数。这些参数将从EDID块中获取。

E. 模块选项

模块参数与内核参数基本相似。主要区别在于,对于那些不需要值的选项,您需要包含一个布尔值(1表示真,0表示假)。

例如,要启用MTRR,请包含“mtrr=1”。

示例用法

使用上述相同的设置,按如下方式加载模块

modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \
         vsync2=85 accel=1 mtrr=1

或者只需将以下内容添加到 /etc/modprobe.d/ 中的配置文件中

options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \
vsync2=85 accel=1 mtrr=1

然后执行

modprobe i810fb

F. 设置

  1. 按照您通常的方法配置内核

    make menuconfig/xconfig/config

  2. 在“Code maturity level options”(代码成熟度级别选项)下,启用“Prompt for development and/or incomplete code/drivers”(提示开发和/或不完整代码/驱动程序)。

  3. 启用Intel 810/815板载图形的agpgart支持。这是必需的。该选项位于“Character Devices”(字符设备)下。

  4. 在“Graphics Support”(图形支持)下,选择“Intel 810/815”,可以选择静态编译或作为模块。如果您需要最大化显示器的功能,请选择“use VESA Generalized Timing Formula”(使用VESA通用时序公式)。为了安全起见,您可以不选择此项。

  5. 如果您想支持DDC/I2C探测(即插即用显示器),请将“Enable DDC Support”(启用DDC支持)设置为“y”。要使此选项显示,请将“use VESA Generalized Timing Formula”(使用VESA通用时序公式)设置为“y”。

  6. 如果您想要帧缓冲控制台,请在“Console Drivers”(控制台驱动程序)下启用它。

  7. 编译您的内核。

  8. 按照D和E节所述加载驱动程序。

  9. 尝试DirectFB (http://www.directfb.org) + i810图形驱动程序补丁,以查看芯片组的实际工作(或不工作 :-))。

G. 致谢:

  1. Geert Uytterhoeven - 他出色的操作指南和虚拟帧缓冲驱动代码使这成为可能。

  2. 感谢Jeff Hartmann的agpgart代码。

  3. 感谢X开发人员。只需阅读XFree86源代码即可获得宝贵的见解。

  4. 感谢Intel©。感谢他们提供了这个注重价值的芯片组驱动程序和文档。

  5. Matt Sottek。他的输入和想法帮助实现了一些优化。

H. 主页:

更完整且可能已更新的信息可在 http://i810fb.sourceforge.net 获取。

Tony