Графический ускоритель 3dfx Voodoo, до сих пор известный в кругах аппаратного обеспечения ПК и ретро-игр, теперь «возвращается» на сцену в виде новой реализации FPGA. Поскольку многочисленные симуляторы DOS и ПК смогли хорошо воспроизвести производительность Voodoo, разработчик решил напрямую реконструировать этот классический чип прошлого века на программируемом оборудовании.

Бренд 3dfx был приобретен Nvidia в 2000 году и в конечном итоге исчез, но карты-ускорители серии Voodoo до сих пор остаются «волшебными картами» в сердцах многих игроков и энтузиастов 3D-графики, а также являются основными компонентами в различных проектах ретро-модификаций и старых игровых аппаратных решениях. В настоящее время чипы Voodoo практически полностью смоделированы в различных симуляторах, таких как DOSBox-X, PCem и 86Box, а игроки аппаратного обеспечения постоянно пробуют проекты модификаций на основе оригинальных чипов или самодельных решений.

Франсиско Айяла Ле Брюн, технический директор голландской компании VideowindoW, решил найти новый путь «реинкарнации» Voodoo через FPGA. Он использовал SpinalHDL, язык описания аппаратного обеспечения, чтобы полностью описать видеокарту Voodoo 1, а затем преобразовал ее в цифровую модель схемы, которая могла работать на современной программируемой вентильной матрице (FPGA).

Ле Брун подчеркнул в техническом описании, что хотя Voodoo 1 и очень старый, это ни в коем случае не простая конструкция чипа. В отличие от современных графических процессоров, он не имеет аппаратных средств преобразования и освещения, а также функций программируемых шейдеров. Все графические возможности «жестко закодированы» в кремниевом чипе в виде фиксированных функций, включая полный конвейер вычислений градиента для затенения Гуро, выборку текстур, мип-маппинг, многоуровневую фильтрацию текстур (билинейную и трилинейную), альфа-отсечение, вычисления отсечения и т. д.

В процессе рендеринга графики на основе 3dfx центральный процессор отвечает за выполнение сложных математических операций, необходимых для описания 3D-сцены, а ускоритель Voodoo максимально быстро рисует на экране текстурированные треугольники. Ле Брен отметил, что такое «кажущееся простым» разделение обязанностей может легко заставить людей думать, что аппаратная структура тоже очень проста. Фактически, даже если визуализируется только один треугольник, внутри чипа должен быть выполнен ряд операций, таких как интерполяция цвета, выборка текстур, выбор MIP-уровня, фильтрация, сравнение глубины, обрезка и эффекты тумана. Причём это не программируемые процессы в современном понимании, а закреплённые в чипе в виде фиксированных схем.

В процессе реконструкции Voodoo 1 Ле Брюну нужно было разгадать скрытую внутри него сложность: реорганизовать путь управления, зарегистрировать семантику и чрезвычайно «глубокую» временную схему конвейера, чтобы этот ранний 3D-ускоритель мог также разделять сложные задачи рендеринга по пикселям на FPGA, как это было тогда, и конвейерную обработку в несколько этапов, тем самым достигая возможностей пропускной способности данных, которые намного превосходят возможности чистого программного рендеринга.

С помощью современных инструментов, таких как SpinalHDL и проектирования уровня передачи регистров (RTL), Ле Брен «закодировал» архитектурные концепции Voodoo в реализацию FPGA, не теряя деталей. Он назвал этот проект «SpinalVoodoo» и разместил его исходный код на GitHub. В настоящее время не реализована лишь небольшая часть функций оригинального чипа Voodoo.

Хотя проект вызвал ажиотаж среди энтузиастов ретро-аппаратуры, Ле Брун пока не проявил интереса к запуску и продаже готового оборудования FPGA вокруг SpinalVoodoo. Для поклонников 3dfx и ретро-геймеров эта реализация с открытым исходным кодом по-прежнему открывает привлекательный новый путь для будущих аппаратных проектов, карт DIY или решений для моддинга.

узнать больше:

https://noquiche.fyi/vooodoo