LINUX.ORG.RU

Энтузиаст сделал с нуля видеокарту и запустил на ней Quake. Первый. В 2024.

 , , , ,


1

1

Сабж

Разработчик игрового программного обеспечения Дилан Бэрри (Dylan Barrie) создал собственную видеокарту. Проект FuryGPU, которым он в одиночку занимался в свободное от работы время, потребовал четырёх лет. За этот период Бэрри успел значительно подтянуть знания в инженерном деле, а именно в разработке графических ускорителей и их программировании. Его видеокарта формата PCIe, основанная на платформе Xilinx FPGA, способна запускать игру Quake.

Идея создать собственную видеокарту посетила Бэрри после его знакомства с проектом другого энтузиаста, Бена Итера (Ben Eater), собравшего с нуля программируемый 8-битный компьютер. Как можно увидеть на фотографиях, видеокарта FuryGPU выглядит как вполне типичный графический ускоритель PCIe 20-летней давности. Правда, он оснащён современными видеоразъёмами DisplayPort и HDMI. В рамках этого проекта было создано не только аппаратное обеспечение. По словам Бэрри, на самом деле самой сложной частью разработки было написание драйверов для Windows.

Бэрри начал реализовывать свою мечту о создании видеокарты после того, как взял в руки макетную плату Arty Z7 с FPGA и провёл предварительную разработку и тестирование. Впоследствии проект получил импульс благодаря дебюту системных модулей Xilinx Kria SoM (System-on-Modules), сочетающих в себе «безумно дешёвые ПЛИС Zynq UltraScale+ с массой модулей DSP, сравнительно большим количеством LUT и FF, а также усиленное ядро PCIe», объясняет энтузиаст.

Чтобы перейти от макетной платы к дизайну видеокарты, которую можно видеть на фотографиях, Бэрри самостоятельно изучил язык описания и верификации оборудования SystemVerilog, а также программный пакет KiCAD EDA/CAD для проектирования электроники. По его словам, для разработки схемы FuryGPU с 4-канальным PCIe потребовались титанические усилия, даже при наличии схемы FPGA, встроенной в SoM. После сборки FuryGPU он принялся за написание для неё программного обеспечения.

По словам энтузиаста, разработка драйвера Windows для FuryGPU оказалась «самой болезненной» частью всего проекта, даже несмотря на то, что последние 14 лет его основной деятельности были связаны с программным обеспечением рендеринга графики в индустрии разработки игр. Изначально Бэрри лишь хотел создать видеокарту и доказать, что она работает, запустив на ней простой демо-ролик. Однако с развитием проекта энтузиаст поставил перед собой цель добиться приемлемого уровня производительности видеокарты в классической ПК-игре Quake.

После написания драйвера для Windows, он также написал кастомный API для его взаимодействия с GPU, драйверы ядра Windows для дисплея и звука, и в итоге получил «полноценный графический ускоритель, способный отрисовывать Quake при 60 кадрах в секунду».

Ещё месяц назад Бэрри опубликовал ускоренное видео, на котором Quake работал на данной видеокарте в разрешении 720p с частотой кадров до 44. Однако, по словам разработчика, карта способна на большее. Он обнаружил некоторые узкие места, которые будет устранять при оптимизации.

FuryGPU является открытым проектом. Бэрри собирается опубликовать на сайте проекта статью, в котором подробно опишет весь процесс разработки видеокарты, опубликует схемы, драйверы, API, дополнительные материалы, а также порт игры Quake, оптимизированной под этот ускоритель.

Сцылко

Честно говоря, я удивлён. Неужели воспроизвести технологии 30-летней давности так тяжело?

А вообще, ждём дров под линукс

★★★★★

Последнее исправление: tiinn (всего исправлений: 2)

Неужели воспроизвести технологии 30-летней давности так тяжело?

30-летней давности не тяжело. Только кому оно в современном мире надо?
Вот и возникают подобные проекты отдельных энтузиастов, которые готовы вкладывать свои силы, время и деньги в нужный полутора анонимусам с Vogons продукт.

devl547 ★★★★★
()

разработка драйвера Windows для FuryGPU оказалась «самой болезненной» частью всего проекта

Дурачок. Нужно было делать под линуксом. Здесь есть mesa и можно натаскать код из других драйверов.

ox55ff ★★★★★
()

учитывая что он делал все с нуля, в свободное время, и железо и код, то 4 года весьма отличный срок.
если б впихнул туда еще и vga, то еще кучу лет бы ковырялся :)

pfg ★★★★★
()

Неужели воспроизвести технологии 30-летней давности так тяжело?

Собственно на этих технологиях 30-летней давности все и крутится. За эти 30 лет научились разве что впихивать больше транзисторов на кристалл, но принципиально то ничего нового нет.

Qui-Gon ★★★★★
()

Проект FuryGPU, которым он в одиночку занимался в свободное от работы время, потребовал четырёх лет.

На что люди тратят своё время ... Портогал бы траву. Это же столько полезного можно сделать за эти (365*3+366)*4 часов.

damix9 ★★★
()
Ответ на: комментарий от maxcom

работал без всяких GPU.

Ну, видео как-то надо ж выводить. Вы, наверное, имели в виду «без ускорителей».

А так - да, правда, но glQuake состряпали быстро.

tiinn ★★★★★
() автор топика
Ответ на: комментарий от maxcom

Для демонстрации ускорения у него были примерно такие два стула, как я понимаю: делать opengl/vulkan compatible драйвер, либо напилить кастомный рендерер под idTech 2. Как более опытный в графике он выбрал второе.

OpenGL даже ES довольно развесистая штука, то ещё хз сколько нудной работы. А для вулкана у него вычислительных шейдеров нет, а это тоже куча работы. А так - есть что показать.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от tiinn

А что проще - разгребать чужой говнокод

А это не проще? Просто я сколько ковырялся в чужом коде было проще найти там ошибку и поправить, чем альтернативу с нуля писать.

vbcnthfkmnth123 ★★★★★
()
Ответ на: комментарий от vbcnthfkmnth123

Так, одно дело, если разгребать чужой код, и совсем другое - если у тебя своё аппаратное оборудование, и надо чужой код портировать на это самое оборудование. Тут уже проще написать свой код.

tiinn ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Я больше всего ненавижу именно это явление, когда пользователи пытаются с вами по-хорошему, типа ну ребята, ну давайте жить дружно. Я хочу, чтобы новички поняли, что это без толку.

damix9 ★★★
()