Содержание
Voodoo 3 получит редкое обновление в Linux 7.3: старый драйвер tdfxfb научится сам запускать видеокарту без помощи PC BIOS. Для ускорителя конца 1990-х это не второе рождение, но полезная правка для ретро-систем и нестандартных сборок.
Речь идёт о framebuffer-драйвере tdfxfb, который давно живёт в ядре Linux. По данным Phoronix, патчи готовят к включению в Linux 7.3. Они меняют базовую логику запуска Voodoo 3.
Раньше драйвер считал, что системная прошивка уже выполнила video BIOS карты. На классическом x86-ПК это было нормой. BIOS запускал VGABIOS, настраивал железо и передавал Linux уже живой видеовыход.
Но эта схема ломается на нетипичных машинах. Например, на non-x86 системах, при второй видеокарте в роли основной или с новым BIOS, который не умеет запускать старый VGABIOS.
Voodoo 3 теперь может стартовать без PC BIOS
Новый код берёт нужные параметры из собственного video BIOS карты и запускает VGA-ядро уже силами Linux. В итоге система видит не просто PCI-устройство, а рабочий видеоадаптер, который выводит картинку.
Автор патчей, Daniel Palmer, столкнулся с проблемой на Amiga 4000 с PCI-мостом Mediator. Linux находил Voodoo 3, но карта оставалась неинициализированной. На мониторе висело обычное и злое для сборщика сообщение: no signal detected.
После правки драйвер может поднять framebuffer-устройство, обычно как /dev/fb0. Этого хватает для виртуальной консоли Linux и программ, которые умеют рисовать напрямую через fbdev.
- x86-64 ПК: современная система с установленной Voodoo 3
- Amiga 4000: ретро-компьютер с PCI-мостом Mediator
- Voodoo 3: целевая карта для ручной инициализации в текущей серии патчей
Voodoo 4 и Voodoo 5 пока остались за бортом. Palmer сначала упоминал карты на VSA-100, но убрал их поддержку. У этих моделей другой layout BIOS, и старый подход туда не переносится одним движением.

Это не современный драйвер для игр
Обновление tdfxfb не превращает Voodoo 3 в современную Linux-видеокарту. Драйвер работает через fbdev, а это старый интерфейс вывода картинки, который давно уступил место DRM/KMS.
Пользователь не получает Mesa, Wayland-ускорение, актуальный OpenGL или нормальную 3D-поддержку для рабочего стола. По сути, карта учится выводить пиксели на экран в базовом режиме. Для консоли и ретро-задач этого достаточно.
И да, ставить Voodoo 3 в обычный современный ПК ради такого сценария смысла мало. Но для людей, которые оживляют экзотическое железо, это ровно та маленькая деталь, из-за которой сборка внезапно начинает работать.
Контекст тут особенно приятный. 3dfx ушла с рынка около четверти века назад, а её карты всё ещё получают точечные правки в Linux. Не ради массового пользователя, а ради конкретных машин, где старое железо не вписывается в новые предположения прошивок.

У Palmer уже есть экспериментальный 3D-стек
Framebuffer-патч — только часть истории. Palmer параллельно строит экспериментальный путь для 3D на Voodoo 3, причём без X, Mesa и Glide.
Он добавил интерфейс /dev/tdfx3d, через который userspace получает доступ к регистрам карты. Поверх него работает smoltdfx, небольшая библиотека для прямого управления Voodoo 3. Ещё выше лежит smolminigl, лёгкая реализация OpenGL 1.x.
По словам Palmer, связка уже запускала Quake на настоящей Voodoo 3. Производительность пока слабая, а с мультитекстурированием остаются проблемы. Но сам факт прямого рендера через регистры живой карты звучит как хороший вечерний проект для людей, которые помнят Glide не по Википедии.
Для отладки Palmer развивает эмуляцию Voodoo 3 в QEMU. Он прогоняет одинаковые тесты на эмуляторе и реальной карте, а затем сравнивает frame digest. Если картинка расходится, эмулятор дорабатывают до более точного поведения.
Дальше открывается любопытный сценарий с виртуализацией. Теоретически PCI Voodoo 3 можно пробросить в виртуальную машину, чтобы гость работал с настоящим 3dfx-ускорителем. На практике там хватает боли с reset и старым PCI-железом, но ручная инициализация из Linux закрывает один важный кусок этой задачи.
В текущей серии патчей ручная инициализация заявлена только для Voodoo 3; поддержку Voodoo 4 и Voodoo 5 Palmer убрал из-за отличий в layout BIOS.