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。 编译,安装,玩得开心……请给我一份报告:)

模块使用

警告

  1. 在发出任何命令之前,您应该完整阅读本节。

  2. 如果您只有一个监视器可以使用,一旦您 insmod 该模块,3dfx 将控制输出,因此您必须将监视器插入 “normal” 显卡才能发出命令,或者您可以盲目地使用 tools 目录中的 sst_dbg_vgapass(参见 Tools)。 最新的解决方案是在 insmod 驱动程序时传递参数 vgapass=1。(参见内核/模块选项)

模块插入

  1. insmod sstfb.o

    您应该看到主板的一些奇怪输出:一个大的蓝色正方形,一个绿色和一个红色的小的正方形,以及一个垂直的白色矩形。 为什么? 函数的名称是不言自明的:“sstfb_test()”……(如果您没有第二个监视器,您必须将监视器直接插入 2D 显卡才能看到您正在键入的内容)

  2. con2fb /dev/fbx /dev/ttyx

    将 tty 绑定到新的帧缓冲区。 如果您已经有一个帧缓冲区驱动程序,则 voodoo fb 可能是 /dev/fb1。 如果没有,则设备将是 /dev/fb0。 您可以通过执行 cat /proc/fb 来检查这一点。 您可以在 tools/ 目录中找到 con2fb 的副本。 如果您没有其他 fb 设备,则此步骤是多余的,因为控制台子系统会自动将 tty 绑定到 fb。

  3. 切换到您刚刚映射的虚拟控制台。 “tadaaa”...

模块移除

  1. con2fb /dev/fbx /dev/ttyx

    将 tty 绑定到旧的帧缓冲区,以便可以移除模块。(它如何与 vgacon 一起工作? 简短的回答:它不起作用)

  2. 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

  • Voodoo 1 为 50Mhz,

  • Voodoo 2 为 75MHz。

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

http://sstfb.sourceforge.net/README