Инженер Дилан Барри разработал прототип самодельного видеоадаптера под названием FuryGpu на базе ПЛИС Xilinx Zynq UltraScale+. Он представляет собой отдельную плату, подключаемую к ПК через интерфейс PCIe.
Аппаратные блоки написаны на языке SystemVerilog. Проект платы подготовлен в свободной системе автоматизированного проектирования печатных плат KiCAD.
В настоящее время с помощью FuryGpu можно запустить игру Quake с производительностью отрисовки 60 FPS при разрешении 1280x720.
Инженер, который специализируется на разработке компьютерных игр, начал этот проект в 2021 году. Он пообещал в будущем открыть схемы платы, Verilog-описания и драйверы. Барри вдохновлялся проектом Бена Итера по созданию программируемого 8-битного компьютера с нуля.
Пока же возможности FuryGpu сравнимы с продвинутой видеокартой середины 1990-годов. Он поддерживает набор фиксированных функций, но не выполнение программных шейдеров. В центре разработки оказались компоненты для рендеринга, растеризации и обработки текстур. Для выполнения графических операций задействуется собственный графический API FuryGL по типу API Vulkan,однако совместимости с ним нет из-за отсутствия поддержки шейдеров.
Возможности FuryGpu:
четыре независимых тайловых растеризатора;
работа на частоте 400MHz, работа блока управления текстурами на частоте 480MHz;
фронтенд для выполнения операций с плавающей запятой (fp32);
блок маппинга и обработки текстур с поддержкой линейной и билинейной фильтрации с поддержкой MIP-текстурирования;
интерфейс PCIe Gen 2x4, порты DisplayPort и HDMI для подключения монитора.
Барри начал реализовывать проект с помощью макетной платы Arty Z7 с FPGA. Впоследствии проект получил импульс благодаря дебюту Xilinx Kria System-on-Modules (SoM), которые сочетают в себе «безумно дешёвые FPGA Zynq UltraScale+ с массой модулей DSP и (сравнительно) большим количеством LUT и FF, а также получили усиленное ядро PCIe». Чтобы добиться собственного дизайна платы, Барри самостоятельно изучил язык описания оборудования и проверки SystemVerilog, а также KiCAD EDA. Отдельной сложностью стала разработка схемы FuryGPU с 4-канальным PCIe. Создание драйверов Windows для FuryGPU Барри описывает как «самый болезненный» аспект всего проекта.
По мере развития проекта инженер поставил новую цель — сыграть в культовую компьютерную игру Quake с приемлемой частотой кадров. Барри объясняет, что после подготовки драйверов для Windows он написал специальный графический API для связи с графическим процессором, драйверы ядра Windows для дисплея и звука, получив «полнофункциональное графическое оборудование».
Разработчик считает, что может заставить Quake «работать намного быстрее», поскольку он уже нашёл некоторые узкие места, требующие оптимизации.
Барри отдельно опубликовал статью, посвящённую текстурным блокам графического процессора, для желающих глубже погрузиться в архитектуру.
Источник новости: habr.com