Treiber aus dem Grab: Linux 7.3 erweckt Voodoo 3

Alte Hardware wird unter Linux nicht nur erstaunlich lange unterstützt, sie erhält mitunter sogar neue Funktionen. Der Kernel 7.3 kann eine Voodoo 3 künftig selbstständig initialisieren. Bislang setzte der vorhandene Treiber voraus, dass zuvor das Video-BIOS der Grafikkarte ausgeführt worden war.

Voodoo 3 blieb ohne Bild

Entwickler Daniel Palmer stieß auf dieses Problem, als er eine Voodoo 3 in einem Amiga 4000 mit Mediator-PCI-Brücke verwenden wollte. Linux erkannte die Grafikkarte zwar, konnte sie aber nicht in Betrieb nehmen. Der Bildschirm meldete lediglich, dass kein Signal anliege.

Ursache ist eine Annahme des betagten Framebuffer-Treibers tdfxfb: Dieser erwartet, dass das BIOS des Rechners bereits das Video-BIOS der Grafikkarte ausgeführt und die Hardware initialisiert hat. Bei klassischen x86-PCs war das üblicherweise der Fall. Andere Architekturen, Systeme mit einer zweiten primären Grafikkarte oder moderne UEFI-Firmware ohne Compatibility Support Module können daran jedoch scheitern.

Die für Linux 7.3 übernommenen Änderungen versetzen den Treiber deshalb in die Lage, eine noch nicht gestartete Voodoo 3 selbst zu wecken. Dazu liest er die erforderlichen Konfigurationswerte aus einer Tabelle im Video-BIOS der Karte und programmiert unter anderem Speicher, Taktgeber sowie den VGA-Kern. Insgesamt wächst der Treiber dafür um 155 Zeilen Code.

Getestet wurde die Erweiterung sowohl auf einem x86-64-System als auch auf dem erwähnten Amiga 4000. Obwohl tdfxfb grundsätzlich außerdem Voodoo 4 und Voodoo 5 unterstützt, gilt die neue Initialisierung vorerst ausschließlich für die Voodoo 3. Die jüngeren Karten verwenden ein anderes BIOS-Layout.

Kein moderner 3D-Treiber

Aus der Voodoo 3 wird dadurch keine moderne Linux-Grafikkarte. tdfxfb stellt lediglich einen klassischen Framebuffer bereit, über den etwa die Linux-Konsole und dafür ausgelegte Anwendungen ein Bild ausgeben können. Unterstützung für Mesa, Wayland oder zeitgemäßes OpenGL gehört nicht zu den Änderungen.

An einer experimentellen 3D-Unterstützung arbeitet Palmer allerdings ebenfalls. Über eine kleine Bibliothek und eine reduzierte OpenGL-Implementierung soll die Hardware direkt angesprochen werden können. Quake läuft damit bereits auf einer echten Voodoo 3, wenngleich noch mit geringer Leistung und Problemen beim Multitexturing. Diese Arbeiten sind jedoch nicht Bestandteil von Linux 7.3.

Bei der Fehlersuche half zudem Claude Fable 5. Das KI-Modell erstellte Palmer zufolge eine Voodoo-3-Emulation für QEMU. Der Vergleich mit der echten Hardware machte sichtbar, dass zwar die Initialisierungssequenz stimmte, der VGA-Kern aber nicht gestartet worden war.

3dfx gehörte in der zweiten Hälfte der 1990er-Jahre zu den prägenden Herstellern von 3D-Beschleunigern. Ende 2000 verkaufte das finanziell angeschlagene Unternehmen wesentliche Vermögenswerte an Nvidia. Die Voodoo 3 war im Frühjahr 1999 erschienen.