什么是 matroxfb?¶
这是 Alpha、Intel 和 PPC 平台上 Matrox 设备的图形帧缓冲驱动程序。
优点
它提供了一个漂亮的超大控制台(在 1024x768 分辨率下为 128 列 + 48 行),而无需使用微小、难以辨认的字体。
您可以在 /dev/fb0 之上运行 XF{68,86}_FBDev 或 XFree86 fbdev 驱动程序
最重要的是:启动徽标 :-)
缺点
图形模式比文本模式慢... 但是如果您使用与文本模式相同的分辨率,您不应该注意到。
如何使用它?¶
使用 video=matroxfb:vesa:... 启动参数或使用 fbset 程序来切换模式。
例如,如果您想启用 1280x1024x24bpp 的分辨率,您应该将以下命令行传递给内核:“video=matroxfb:vesa:0x1BB”。
您应该同时编译 vgacon(如果在从盒子里移除 Matrox 后启动)和 matroxfb(用于图形模式)。 除非您的主显示器位于非 Matrox VBE2.0 设备上,否则不应编译 vesafb(有关详细信息,请参阅什么是 vesafb?)。
当前支持的视频模式是(通过 vesa:... 接口,PowerMac 具有 [作为插件] 兼容性代码)
图形模式¶
bpp |
640x400 |
640x480 |
768x576 |
800x600 |
960x720 |
---|---|---|---|---|---|
4 |
0x12 |
0x102 |
|||
8 |
0x100 |
0x101 |
0x180 |
0x103 |
0x188 |
15 |
0x110 |
0x181 |
0x113 |
0x189 |
|
16 |
0x111 |
0x182 |
0x114 |
0x18A |
|
24 |
0x1B2 |
0x184 |
0x1B5 |
0x18C |
|
32 |
0x112 |
0x183 |
0x115 |
0x18B |
图形模式(续)¶
bpp |
1024x768 |
1152x864 |
1280x1024 |
1408x1056 |
1600x1200 |
---|---|---|---|---|---|
4 |
0x104 |
0x106 |
|||
8 |
0x105 |
0x190 |
0x107 |
0x198 |
0x11C |
15 |
0x116 |
0x191 |
0x119 |
0x199 |
0x11D |
16 |
0x117 |
0x192 |
0x11A |
0x19A |
0x11E |
24 |
0x1B8 |
0x194 |
0x1BB |
0x19C |
0x1BF |
32 |
0x118 |
0x193 |
0x11B |
0x19B |
文本模式¶
文本 |
640x400 |
640x480 |
1056x344 |
1056x400 |
1056x480 |
---|---|---|---|---|---|
8x8 |
0x1C0 |
0x108 |
0x10A |
0x10B |
0x10C |
8x16 |
2, 3, 7 |
0x109 |
您可以输入这些数字,无论是十六进制(前导 0x)还是十进制(0x100 = 256)。 您也可以使用值 + 512 来实现与传递给 vesafb 的旧数字的兼容性。
可以通过更复杂的命令行实现未列出的数字,例如,可以通过 video=matroxfb:vesa:0x11C,depth:32 指定 1600x1200x32bpp。
X11¶
XF{68,86}_FBDev 应该可以正常工作,但是它没有加速。 在非英特尔架构上,24bpp 视频模式存在一些小故障。 8、16 和 32bpp 工作正常。
运行另一个(加速)X-Server(如 XF86_SVGA)也可以。 但是(至少)XFree 服务器在多头配置中存在很大问题(即使在第一个头中也是如此,更不用说第二个了)。 可以运行 XFree86 4.x 加速 mga 驱动程序,但是您必须禁用 DRI - 如果这样做,X 桌面的分辨率和颜色深度必须与虚拟控制台的分辨率和颜色深度匹配,否则 X 将损坏加速器设置。
SVGALib¶
驱动程序包含 SVGALib 兼容性代码。 通过为控制台选择文本模式来打开它。 您可以在启动时使用视频模式 2、3、7、0x108-0x10C 或 0x1C0 来做到这一点。 在运行时,fbset -depth 0 会执行此操作。 不幸的是,在 SVGALib 应用程序退出后,屏幕内容会损坏。 切换到另一个控制台再切换回来可以解决这个问题。 我希望这是 SVGALib 的问题而不是我的,但我不能确定。
配置¶
您可以使用 video=matroxfb:option1,option2:value2,option3 将内核命令行选项传递给 matroxfb(多个选项应以逗号分隔,值与选项以 : 分隔)。 接受的选项
mem:X |
内存大小(X 可以是兆字节、千字节或字节) 您只能减少驱动程序确定的值,因为它总是探测内存。 默认值是使用整个检测到的可用于屏幕显示的内存(即最大 8 MB)。 |
disabled |
不要加载驱动程序; 您也可以使用 off,但是这里也提供 disabled。 |
enabled |
加载驱动程序,如果您在 LILO 配置中具有 video=matroxfb:disabled,则可以通过此选项覆盖它(您无法覆盖 off)。 这是默认设置。 |
noaccel |
不要使用加速引擎。 它在 Alpha 上不起作用。 |
accel |
使用加速引擎。 这是默认设置。 |
nopan |
使用 vyres = yres 创建初始控制台,从而禁用虚拟滚动。 |
pan |
创建尽可能高的初始控制台(vyres = 内存/vxres)。 这是默认设置。 |
nopciretry |
禁用 PCI 重试。 一些有问题的芯片组需要它,intel 的 82437 会自动检测到它。 在这种情况下,设备不符合 PCI 2.1 规范(它不能保证每个事务都以成功或 32 PCLK 重试结束)。 |
pciretry |
启用 PCI 重试。 除了 intel 的 82437 之外,这是默认设置。 |
novga |
禁用 VGA I/O 端口。 如果 BIOS 没有启用设备,则这是默认设置。 您不应使用此选项,某些板子在不关闭电源的情况下无法重新启动。 |
vga |
保留 VGA I/O 端口的状态。 这是默认设置。 如果 BIOS 没有启用 VGA I/O,则驱动程序不会启用它(在大多数情况下启用它是不安全的)。 |
nobios |
禁用 BIOS ROM。 如果 BIOS 没有启用 BIOS 本身,则这是默认设置。 您不应使用此选项,某些板子在不关闭电源的情况下无法重新启动。 |
bios |
保留 BIOS ROM 的状态。 这是默认设置。 如果之前未启用 BIOS,则驱动程序不会启用 BIOS。 |
noinit |
告诉驱动程序设备已经初始化。 如果您有 G100 和/或驱动程序无法检测到内存,您在屏幕上看到奇怪的图案等等,您应该使用它。 BIOS 未启用的设备仍会初始化。 这是默认设置。 |
init |
驱动程序初始化它知道的每个设备。 |
memtype |
指定内存类型,暗示 “init”。 这仅对 G200 和 G400 有效,并且具有以下含义
除了 memtype 参数之外,您还应该使用 sdram 或 sgram 参数。 |
nomtrr |
禁用帧缓冲区上的写入合并。 这会减慢驱动程序的速度,但是如果启用了写入合并,则在大量负载下 GUS DMA 和 XFree 之间存在报告的轻微不兼容性(声音中断)。 |
mtrr |
在帧缓冲区上启用写入合并。 它大大加快了视频访问速度。 这是默认设置。 您的内核中必须启用 MTRR 支持,并且您的 CPU 必须具有 MTRR(例如,Pentium II 具有它们)。 |
sgram |
告诉驱动程序您有带有 SGRAM 内存的 Gxx0。 没有 init,它不起作用。 |
sdram |
告诉驱动程序您有带有 SDRAM 内存的 Gxx0。 这是一个默认设置。 |
inv24 |
更改 Millennium 和 Millennium II 上 24bpp 模式的时序参数。 如果您在字符周围看到奇怪的颜色阴影,请指定此选项。 |
noinv24 |
使用标准时序。 这是默认设置。 |
inverse |
反转屏幕上的颜色(对于 LCD 显示器) |
noinverse |
在屏幕上显示真彩色。 这是默认设置。 |
dev:X |
将驱动程序绑定到设备 X。驱动程序从 0 到 N 对设备进行编号,其中设备 0 是找到的第一个已知设备,1 是第二个,依此类推。 lspci 以此顺序列出设备。 默认值为每个已知设备。 |
nohwcursor |
禁用硬件光标(改用软件光标)。 |
hwcursor |
启用硬件光标。 这是默认设置。 如果您使用非加速模式(noaccel 或 fbset -accel false),则使用软件光标(文本模式除外)。 |
noblink |
禁用光标闪烁。 文本模式下的光标始终闪烁(硬件限制)。 |
blink |
启用光标闪烁。 这是默认设置。 |
nofastfont |
禁用 fastfont 功能。 这是默认设置。 |
fastfont:X |
启用 fastfont 功能。 X 指定为字体数据保留的内存大小,它必须 >= (fontwidth*fontheight*chars_in_font)/8。 在 Gx00 系列上速度更快,但在较旧的卡上速度较慢。 |
grayscale |
启用灰度求和。 它在 PSEUDOCOLOR 模式(文本、4bpp、8bpp)下工作。 在 DIRECTCOLOR 模式下,它仅限于通过 putc/putcs 显示的字符。 直接访问帧缓冲区可以绘制颜色。 |
nograyscale |
禁用灰度求和。 这是默认设置。 |
cross4MB |
启用像素行可以跨越 4MB 边界的功能。 这是非 Millennium 的默认设置。 |
nocross4MB |
像素行不能跨越 4MB 边界。 这是 Millennium I 或 II 的默认设置,因为这些设备具有不允许此操作的硬件限制。 但是此选项与某些(如果不是所有已发布的)XF86_FBDev 版本不兼容。 |
dfp |
启用数字平板接口。 此选项与辅助(TV)输出不兼容 - 如果 DFP 处于活动状态,则 TV 输出必须处于非活动状态,反之亦然。 DFP 始终使用与主(监视器)输出相同的时序。 |
dfp:X |
使用设置 X 用于数字平板接口。 X 是一个从 0 到 0xFF 的数字,每个单独位的含义在 G400 手册中描述,在 DAC 寄存器 0x1F 的描述中。 对于正常操作,您应该将所有位设置为零,除了最低位。 此最低位选择谁是显示时钟的来源,是 G400 还是面板。 默认值现在从硬件中读取 - 因此仅当您还使用 init 参数时才应指定此值。 |
outputs:XYZ |
设置 CRTC 和输出之间的映射。 每个字母的值可以是 0(对于无 CRTC)、1 (CRTC1) 或 2 (CRTC2),第一个字母对应于主模拟输出,第二个字母对应于辅助模拟输出,第三个字母对应于 DVI 输出。 低于 G400 或没有 DFP 的 G400 的默认设置为 100,带有 DFP 的 G400 的默认设置为 101,G450 和 G550 的默认设置为 111。 您只能在第一张卡上设置映射,使用 matroxset 设置其他设备。 |
vesa:X |
选择启动视频模式。 X 是一个从 0 到 0x1FF 的数字,有关详细说明,请参见上表。 如果驱动程序支持 8bpp,则默认值为 640x480x8bpp。 否则,第一个可用的是 640x350x4bpp、640x480x15bpp、640x480x24bpp、640x480x32bpp 或 80x25 文本(始终可以使用 80x25 文本)。 |
如果您对 vesa 选项选择的视频模式不满意,则可以使用以下选项修改它
xres:X |
水平分辨率,以像素为单位。 默认值源自 vesa 选项。 |
yres:X |
垂直分辨率,以像素行为单位。 默认值源自 vesa 选项。 |
upper:X |
顶部边界:VSYNC 脉冲结束和图片的第一条像素行开始之间的行。 默认值源自 vesa 选项。 |
lower:X |
底部边界:图片结束和 VSYNC 脉冲开始之间的行。 默认值源自 vesa 选项。 |
vslen:X |
VSYNC 脉冲的长度,以行为单位。 默认值源自 vesa 选项。 |
left:X |
左侧边界:HSYNC 脉冲结束和第一个像素之间的像素。 默认值源自 vesa 选项。 |
right:X |
右侧边界:图片结束和 HSYNC 脉冲开始之间的像素。 默认值源自 vesa 选项。 |
hslen:X |
HSYNC 脉冲的长度,以像素为单位。 默认值源自 vesa 选项。 |
pixclock:X |
点时钟,以 ps(皮秒)为单位。 默认值源自 vesa 选项以及 fh 和 fv 选项。 |
sync:X |
同步脉冲 - 位 0 反转 HSYNC 极性,位 1 反转 VSYNC 极性。 如果设置了位 3(值 0x08),则生成复合同步而不是 HSYNC。 如果设置了位 5(值 0x20),则开启绿色同步。 不要忘记,如果您想要绿色同步,您可能也想要复合同步。 默认值取决于 vesa。 |
depth:X |
每像素位数:0=文本,4、8、15、16、24 或 32。默认值取决于 vesa。 |
如果您知道显示器的功能,则可以指定一些(或全部)maxclk、fh 和 fv。 在这种情况下,pixclock 的计算方式为 pixclock <= maxclk,real_fh <= fh 且 real_fv <= fv。
maxclk:X |
最大点时钟。 X 可以用 MHz、kHz 或 Hz 指定。 默认值为 don`t care。 |
fh:X |
最大水平同步频率。 X 可以用 kHz 或 Hz 指定。 默认值为 don’t care。 |
fv:X |
最大垂直频率。 X 必须以 Hz 指定。 对于源自 vesa 且 yres <= 400 的模式,默认值为 70,对于 yres > 400,默认值为 60Hz。 |
限制¶
存在已知和未知的错误、功能和错误功能。 目前存在以下已知错误
SVGALib 在退出时不恢复屏幕
通用的 fbcon-cfbX 程序在 Alpha 上不起作用。 因此,noaccel(和 cfb4 accel)驱动程序在 Alpha 上不起作用。 因此,Alpha 上有权访问 /dev/fb* 的每个人都可以挂起机器(您应该限制对 /dev/fb* 的访问 - 相信我,有权访问此设备的每个人都可以破坏您的显示器...)。
24bpp 不正确支持 big-endian 架构上的 XF-FBDev。
不支持隔行扫描文本模式; 这看起来像硬件限制,但我不确定。
Gxx0 SGRAM/SDRAM 未自动检测到。
可能还有更多...
以下是错误功能
SVGALib 在退出时不恢复屏幕。
文本模式的点时钟受硬件限制为
G200 上为 83 MHz
Millennium I 上为 66 MHz
Millennium II 上为 60 MHz
因为我无法访问其他设备,所以我不知道它们的具体频率。 因此,驱动程序不会检查这一点,并允许您设置高于此值的频率。 这会导致火花、黑洞和屏幕上的其他漂亮效果。 在测试期间未销毁设备。 :-)
我的 Millennium G200 振荡器的频率范围为 35 MHz 到 380 MHz(它在 8bpp 上以大约 320 MHz 的点时钟(和更改的 mclk)工作)。 但是 Matrox 在产品说明书上说 VCO 限制为 50-250 MHz,所以我相信他们(也许该芯片过热,但它有一个非常大的冷却器(G100 没有),因此它应该可以工作)。
Mystique 和 Gx00 的特殊混合视频/图形视频模式 - 不支持 2G8V16 和 G16V16
不支持颜色键控
Mystique 和 Gx00 的功能连接器设置为 VGA 模式(它被 BIOS 禁用)
DDC(显示器检测)通过双头驱动程序支持
某些输入值的检查不像应该的那么严格(您可以指定 vslen=4000 等)。
可能还有更多...
以下是功能
4bpp 仅在 Millennium I 和 Millennium II 上可用。 这是一个硬件限制。
1:5:5:5 和 5:6:5 16bpp 视频模式之间的选择由 fbset 的 -rgba 选项完成:“fbset -depth 16 -rgba 5,5,5” 选择 1:5:5:5,其他任何选项选择 5:6:5 模式。
文本模式使用 6 位 VGA 调色板而不是 8 位(262144 种颜色之一而不是 16M 种颜色之一)。 这是由于 Millennium I/II 和 SVGALib 兼容性的硬件限制。
基准测试¶
在 1024x768 分辨率、60Hz 刷新率下,重绘整个屏幕 1000 次所需要的时间。通过 /dev/vcsa 在屏幕上绘制 6144000 个字符所需要的时间(对于 32bpp 来说,大约是 3GB 的数据(精确地说是 3000 MB);对于 8x16 字体来说,16 秒,即 187 MBps)。这些时间是从驱动程序的一个旧版本获得的,现在它们大约快 3%,这是在 P-II/350 MHz、Millennium I 在 33 MHz PCI 插槽、G200 在 AGP 2x 插槽上的纯内核空间时间。我没有测试 vgacon。
NOACCEL
8x16 12x22
Millennium I G200 Millennium I G200
8bpp 16.42 9.54 12.33 9.13
16bpp 21.00 15.70 19.11 15.02
24bpp 36.66 36.66 35.00 35.00
32bpp 35.00 30.00 33.85 28.66
ACCEL, nofastfont
8x16 12x22 6x11
Millennium I G200 Millennium I G200 Millennium I G200
8bpp 7.79 7.24 13.55 7.78 30.00 21.01
16bpp 9.13 7.78 16.16 7.78 30.00 21.01
24bpp 14.17 10.72 18.69 10.24 34.99 21.01
32bpp 16.15 16.16 18.73 13.09 34.99 21.01
ACCEL, fastfont
8x16 12x22 6x11
Millennium I G200 Millennium I G200 Millennium I G200
8bpp 8.41 6.01 6.54 4.37 16.00 10.51
16bpp 9.54 9.12 8.76 6.17 17.52 14.01
24bpp 15.00 12.36 11.67 10.00 22.01 18.32
32bpp 16.18 18.29* 12.71 12.74 24.44 21.00
TEXT
8x16
Millennium I G200
TEXT 3.29 1.50
* Yes, it is slower than Millennium I.
双头 G400¶
- 驱动程序支持双头 G400,但有一些限制
辅助头与主头共享显存。如果您有 32MB 的显存,这不是问题,但如果您只有 16MB,您可能需要在选择视频模式之前三思而后行(例如,两个 1880x1440x32bpp 是不可能的)。
由于硬件限制,辅助头只能使用 16 和 32bpp 视频模式。
辅助头没有加速。当辅助头使用加速时,加速的 XFree 存在严重问题。
辅助头总是以 640x480@60-32 视频模式启动。您必须使用 fbset 来更改此模式。
辅助头总是以监视器模式启动。您必须使用 fbmatroxset 将其更改为电视模式。此外,您必须为 NTSC 输出选择至少 525 行,为 PAL 输出选择 625 行。
内核还没有完全准备好支持多头。所以有些事情是不可能做到的。
如果您将其编译为模块,则必须将 i2c-matroxfb、matroxfb_maven 和 matroxfb_crtc2 插入到内核中。
双头 G450¶
- 驱动程序支持双头 G450,但有一些限制
辅助头与主头共享显存。如果您有 32MB 的显存,这不是问题,但如果您只有 16MB,您可能需要在选择视频模式之前三思而后行。
由于硬件限制,辅助头只能使用 16 和 32bpp 视频模式。
辅助头没有加速。
辅助头总是以 640x480@60-32 视频模式启动。您必须使用 fbset 来更改此模式。
不支持电视输出
内核还没有完全准备好支持多头,所以有些事情是不可能做到的。
如果您将其编译为模块,则必须将 matroxfb_g450 和 matroxfb_crtc2 插入到内核中。
Petr Vandrovec <vandrove@vc.cvut.cz>