Рубрики
Технологии

Спустя 27 лет легендарный ускоритель 3dfx Voodoo 3 получил новую поддержку в Linux — и уже снова запускает Quake

3dfx умерла четверть века назад, но Voodoo 3 еще не забыта

Linux 7.3 получит неожиданное обновление для одной из самых культовых видеокарт в истории — 3dfx Voodoo 3, выпущенной в 1999 году. Спустя более четверти века ядро ОС сможет самостоятельно запускать ускоритель даже на компьютерах, BIOS которых не умеет инициализировать старую видеопрошивку.

Изображение сгенерировано ChatGPT
Изображение сгенерировано ChatGPT // Источник изображения: ChatGPT

Изменения затрагивают существующий драйвер tdfxfb, отвечающий за работу Voodoo 3 в режиме framebuffer. Раньше он предполагал, что видеокарта уже подготовлена к работе системной прошивкой. На классических ПК с BIOS это происходило автоматически, но на современных платформах, Amiga и других нестандартных системах карта могла определяться, но не выводить изображение.

Именно с такой проблемой столкнулся разработчик Дэниел Палмер, когда попытался запустить Voodoo 3 на Commodore Amiga 4000 с PCI-мостом Mediator. Linux видел устройство на шине PCI, однако сама видеокарта не инициализировалась.

Новая версия драйвера исправляет этот недостаток. Теперь Linux считывает данные из собственного Video BIOS Voodoo 3 и самостоятельно выполняет необходимые процедуры запуска, превращая найденное PCI-устройство в рабочий видеоадаптер без помощи прошивки компьютера.

Патч уже успешно протестировали как на современной системе x86-64, так и на Amiga 4000. Пока поддерживается только Voodoo 3 — модели Voodoo 4 и Voodoo 5 на чипе VSA-100 в обновление не вошли из-за различий в структуре их BIOS.

При этом ждать полноценного возвращения легендарной карты в современный графический стек не стоит. tdfxfb по-прежнему использует устаревший framebuffer и предназначен главным образом для вывода изображения и работы текстовой консоли. Поддержки Mesa, современных OpenGL, Wayland или DRM/KMS нет.

Гораздо интереснее другой проект Палмера, который уже выходит за рамки обычного драйвера. Разработчик создал экспериментальный интерфейс /dev/tdfx3d, позволяющий программам напрямую управлять 3D-ускорителем Voodoo 3. Поверх него работают библиотеки smoltdfx и smolminigl — компактная открытая реализация OpenGL 1.x, не требующая ни X11, ни Mesa, ни фирменного API Glide.

Эксперимент можно назвать удачным: Voodoo 3 способен запускать Quake с аппаратным 3D-рендерингом. Производительность пока далека от идеала, а некоторые возможности (например, мультитекстурирование) еще находятся в разработке.

Для ускорения работы Палмер даже создал эмулятор Voodoo 3 для QEMU. По его словам, в разработке ему помог Claude: одинаковые сцены одновременно запускаются на эмуляторе и на реальной видеокарте, после чего кадры автоматически сравниваются, помогая находить ошибки в реализации.

В перспективе это открывает интересные возможности для пользователей ретро-ПК. Теоретически PCI-версию Voodoo 3 можно передавать виртуальной машине с Windows 98 через PCI passthrough, позволяя классическим играм работать на оригинальном «железе».

Linux 7.3 не делает Voodoo 3 современной видеокартой, но убирает важное ограничение, которое мешало использовать легендарный ускоритель на необычных и современных системах. А экспериментальный открытый 3D-стек уже подарил карте вторую жизнь — и возможность снова запускать Quake.