sstfb¶
简介¶
这是一个用于 3dfx Voodoo Graphics (又名 voodoo 1,又名 sst1) 和 Voodoo² (又名 Voodoo 2,又名 CVG) 显卡的帧缓冲区设备驱动程序。 它是一个高度实验性的代码,但保证可以在我的电脑上,使用我的 “Maxi Gamer 3D” 和 “Maxi Gamer 3d²” 显卡,以及我 “在椅子和键盘之间” 工作。 有些人测试了其他组合,似乎也可以工作。 主页位于 <http://sstfb.sourceforge.net>,如果您想要最新版本,请查看 CVS,因为驱动程序仍在开发中,我觉得发布一些未完全工作的东西的 tarball 令人不舒服……别担心,它仍然非常可用(我吃自己的狗粮)。
请阅读 Bug 部分,并将任何成功或失败报告给我 (Ghozlane Toumi <gtoumi@laposte.net>)。 顺便说一句,如果您只有一个监视器,并且不想玩 vga passthrou 电缆,我只能建议您从某个地方借一个屏幕……
安装¶
这个驱动程序(应该)可以在 ix86 上工作,使用 “late” 2.2.x 内核(经过 x = 19 测试)和 “recent” 2.4.x 内核,作为一个模块或编译到内核中。 自臭名昭著的 2.4.10 以来,它已被包含在主流内核中。 您可以应用 sstfb/kernel/*-2.{2|4}.x.patch 中找到的补丁,并将 sstfb.c 复制到 linux/drivers/video/,或者将单个补丁 sstfb/patch-2.{2|4}.x-sstfb-yymmdd 应用到您的 Linux 源代码树。
然后像往常一样配置您的内核:在 “console” 部分中选择 “m” 或 “y” 作为 3Dfx Voodoo Graphics。 编译,安装,玩得开心……请给我一份报告:)
模块使用¶
警告
在发出任何命令之前,您应该完整阅读本节。
如果您只有一个监视器可以使用,一旦您 insmod 该模块,3dfx 将控制输出,因此您必须将监视器插入 “normal” 显卡才能发出命令,或者您可以盲目地使用 tools 目录中的 sst_dbg_vgapass(参见 Tools)。 最新的解决方案是在 insmod 驱动程序时传递参数 vgapass=1。(参见内核/模块选项)
模块插入¶
insmod sstfb.o
您应该看到主板的一些奇怪输出:一个大的蓝色正方形,一个绿色和一个红色的小的正方形,以及一个垂直的白色矩形。 为什么? 函数的名称是不言自明的:“sstfb_test()”……(如果您没有第二个监视器,您必须将监视器直接插入 2D 显卡才能看到您正在键入的内容)
con2fb /dev/fbx /dev/ttyx
将 tty 绑定到新的帧缓冲区。 如果您已经有一个帧缓冲区驱动程序,则 voodoo fb 可能是 /dev/fb1。 如果没有,则设备将是 /dev/fb0。 您可以通过执行 cat /proc/fb 来检查这一点。 您可以在 tools/ 目录中找到 con2fb 的副本。 如果您没有其他 fb 设备,则此步骤是多余的,因为控制台子系统会自动将 tty 绑定到 fb。
切换到您刚刚映射的虚拟控制台。 “tadaaa”...
模块移除¶
con2fb /dev/fbx /dev/ttyx
将 tty 绑定到旧的帧缓冲区,以便可以移除模块。(它如何与 vgacon 一起工作? 简短的回答:它不起作用)
rmmod sstfb
内核/模块选项¶
您可以将一些选项传递给 sstfb 模块,并在驱动程序编译到内核中时通过内核命令行传递:对于模块:insmod sstfb.o option1=value1 option2=value2 ... 在内核中:video=sstfb:option1,option2:value2,option3 ...
sstfb 支持以下选项
模块 |
内核 |
描述 |
---|---|---|
vgapass=0 |
vganopass |
启用或禁用 VGA 直通电缆。 |
vgapass=1 |
vgapass |
启用后,监视器将从 VGA 板获得信号,而不是从 voodoo 获得信号。 默认值:nopass |
mem=x |
mem:x |
强制帧缓冲区内存 (以 MiB 为单位) 允许的值:0、1、2、4。 默认值:0 (= 自动检测) |
inverse=1 |
inverse |
应该启用反向控制台。 尚不起作用... |
clipping=1 |
clipping |
启用或禁用裁剪。 |
clipping=0 |
noclipping |
启用裁剪后,所有屏幕外读取和写入都将被丢弃。 默认值:启用裁剪。 |
gfxclk=x |
gfxclk:x |
强制显卡时钟频率(以 MHz 为单位)。 请小心使用此选项,它可能很危险。 默认值:auto
|
slowpci=1 |
fastpci |
启用或禁用快速 PCI 读/写。 |
slowpci=1 |
slowpci |
默认值:fastpci |
dev=x |
dev:x |
将驱动程序附加到设备编号 x。 0 是第一个兼容的板(按 lspci 顺序) |
工具¶
这些工具主要用于调试目的,但您可能会发现其中一些很有趣
con2fb,将 tty 映射到帧缓冲区
con2fb /dev/fb1 /dev/tty5
sst_dbg_vgapass,更改 vga 直通。 您必须使用设置为 1 的 SST_DEBUG 和 SST_DEBUG_IOCTL 重新编译驱动程序
sst_dbg_vgapass /dev/fb1 1 (enables vga cable) sst_dbg_vgapass /dev/fb1 0 (disables vga cable)
glide_reset,使用 glide 重置 voodoo,如果在 rmmoding sstfb 后模块拒绝重新插入,请使用它。
Bug¶
请勿在 sstfb 模块开启时使用 glide,您很可能会使计算机挂起。
如果您看到一些伪影(像素未清理等),请尝试关闭裁剪 (clipping=0),和/或使用 slowpci
该驱动程序无法检测到 4Mb 帧缓冲区 voodoos,似乎最后 2 个 Mbs 会环绕。 正在调查。
该驱动程序仅为 16 bpp,24/32 将不起作用。
该驱动程序不是您最喜欢的玩具的安全的。 这包括 SMP...
[实际上,从检查来看,它似乎是安全的 - Alan]
当使用 XFree86 FBdev(X over fbdev)时,您可能会在窗口的边界看到奇怪的颜色图案(像素丢失了最低字节 -> 基本上是蓝色分量和一些绿色)。 我无法使用 XFree86-3.3 重现这一点,但其中一位测试人员在使用 XFree86-4 时遇到了这个问题。 显然,最新的 Xfree86-4.x 解决了这个问题。
我没有真正测试更改调色板,因此在玩这些时您可能会发现一些奇怪的东西。
有时驱动程序将无法识别 DAC,并且初始化将失败。 这对于 voodoo 2 显卡尤其如此,但应该在最新版本中解决。 请联系我。
考虑到硬件在 24/32 bpp 中执行……不寻常的操作,24/32 不太可能很快工作。
Todo¶
摆脱上一段。
购买更多咖啡。
测试/移植到其他架构。
尝试使用前后缓冲区调整来添加平移。
尝试在 voodoo2 上实现 accel,即使它作为仅限 3D 的板卡出售,该板卡实际上可以在 2D 中做很多事情...
Ghozlane Toumi <gtoumi@laposte.net>
日期:2002/05/09 20:11:45