(Image credit: 3dfx Interactive)
Linux kernel 7.3 is set to bring an oddly nostalgic update for 3dfx's Voodoo 3, one of the most recognizable graphics cards of the late 1990s. Don't get too excited; the venerable PCI-and-AGP accelerator isn't suddenly getting a modern Linux graphics stack, but the kernel's existing tdfxfb framebuffer driver is being updated so that it can initialize a Voodoo 3 itself rather than relying on the system firmware to have already run the card's video BIOS. It's a small change with a surprisingly specific purpose, and one that illustrates why ancient hardware occasionally gets attention in contemporary Linux.Go deeper with TH Premium: GPUsThe problem is that the tdfxfb driver historically assumed that the Voodoo card had already been initialized by the PC's firmware. That's because, at the time it was written, that was a reasonable assumption on a conventional x86 PC. The system firmware would execute the card's video BIOS during boot, configure the hardware, and then hand Linux something that is already capable of displaying an image. That assumption breaks down on newer and unusual platforms where the firmware cannot or does not execute the VGABIOS. The creator's patch description specifically calls out non-x86 computers, systems where another graphics card is primary, and newer BIOSes that can't run the old video BIOS.The developer behind the patches, Daniel Palmer, was using a Voodoo 3 in an Amiga 4000 equipped with a PCI bridge when the problem cropped up. Linux could detect the card, but the Voodoo was still completely uninitialized, leaving him staring at "no signal detected." The new code uses configuration information from the card's own video BIOS to perform the initialization from Linux instead, allowing the driver to bring the VGA core up and establish a working display without depending on the system firmware. For now, the new manual initialization code is specifically aimed at the Voodoo 3; he had initially noted support for the VSA-100-based Voodoo 4 and 5 cards, but their BIOS layouts are different, so that support was removed from the current patch series. The code has been tested on both a modern x86-64 system and an Amiga 4000 with a Mediator PCI bridge.






