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 FSB

  • Intel 815 仅限内部图形

  • Intel 815 内部图形和 AGP

B. 功能

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

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

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

  • 支持伪彩色、直接彩色或真彩色视觉效果

  • 在 8、16 和 24 bpp 下的完整和优化的硬件加速

  • 强大的视频状态保存和恢复

  • MTRR 支持

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

  • 可以与使用原生 i810 驱动程序的 xfree86 并行运行

  • 硬件光标支持

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

C. 可用选项列表

  1. “video=i810fb”

    启用 i810 驱动程序

    建议:必需

  2. “xres:<值>”

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

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

  3. “yres:<值>”

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

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

  4. “vyres:<值>”

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

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

  5. “vram:<值>”

    选择要为视频内存分配的系统 RAM 量(以 MB 为单位)

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

  6. “bpp:<值>”

    选择所需的像素深度

    建议:8(默认值 = 8)

  7. “hsync1/hsync2:<值>”

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

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

  8. “vsync1/vsync2:<值>”

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

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

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

  9. “voffset:<值>”

    选择在逻辑内存的哪个偏移量(以 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”

    对于像素深度大于 8 bpp 的情况,使用直接彩色视觉效果而不是真彩色视觉效果。对于颜色调整(例如伽马控制)很有用。

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

  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"

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

重要提示

您必须包含 hsync1、hsync2、vsync1 和 vsync2 才能启用比 640x480 @ 60Hz 更好的视频模式。但是,如果您的芯片组/显示器组合支持 I2C 并且具有 EDID 块,则可以安全地排除 hsync1、hsync2、vsync1 和 vsync2 参数。这些参数将取自 EDID 块。

E. 模块选项

模块参数本质上类似于内核参数。主要区别在于,对于那些不需要值的选项,您需要包含一个布尔值(1 表示 TRUE,0 表示 FALSE)。

例如,要启用 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. 在“代码成熟度级别选项”下,启用“提示开发和/或不完整的代码/驱动程序”。

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

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

  5. 如果需要支持 DDC/I2C 探测(即插即用显示器),请将 “启用 DDC 支持” 设置为 “y”。要使此选项出现,请将 “使用 VESA 通用时序公式” 设置为 “y”。

  6. 如果需要帧缓冲控制台,请在“控制台驱动程序”下启用它。

  7. 编译您的内核。

  8. 如 D 和 E 节中所述加载驱动程序。

  9. 尝试 DirectFB (http://www.directfb.org) + i810 gfxdriver 补丁来查看芯片组的运行情况(或不运行情况 :-)。

G. 鸣谢:

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

  2. Jeff Hartmann 的 agpgart 代码。

  3. X 开发人员。通过阅读 XFree86 源代码获得了见解。

  4. Intel(c)。感谢这个注重价值的芯片组驱动程序和提供的文档。

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

H. 主页:

更完整且可能更新的信息在 http://i810fb.sourceforge.net 上提供。

Tony