Энтузиаст Эндрю Капица под псевдонимом GoblinFlash опубликовал в открытом доступе на GitHub репозиторий экспериментального проекта Native DX12 Linux. Разработка ставит целью запуск графического API Direct3D 12 в среде операционных систем Linux напрямую через ресурсы видеокарт, полностью исключая трансляцию инструкций через интерфейс Vulkan или популярный слой совместимости VKD3D-Proton.
Архитектура проекта опирается на собственный фронтенд Direct3D 12 и прямой доступ к низкоуровневым компонентам видеодрайвера. В случае с графическими чипами NVIDIA передача команд происходит через системные интерфейсы RM и UVM, включая системные вызовы к файлам устройств /dev/nvidiactl и /dev/nvidia-uvm, минуя окружение CUDA. Обработка шейдеров выполняется с помощью компилятора NAK из состава Mesa, который переводит байткод DXIL через промежуточный формат NIR непосредственно в машинный код архитектур NVIDIA без обязательной конвертации в SPIR-V.
Первые аппаратные тесты вычислительных конвейеров состоялись на видеокарте GeForce RTX 4090 с официальным драйвером версии 615.78.08. В испытаниях на расчет гистограмм из 16384 значений оптимизированный шейдерный конвейер продемонстрировал падение задержки диспетчеризации до 44.22%. В тестовой цепочке из 4 взаимосвязанных программ комплексное время выполнения снизилось на 5-6%, при этом в синтетических тестах нативный маршрут показал меньшее время задержки по сравнению с замерами в Vulkan.
Автор проекта, обсуждающий детали с сообществом на техническом форуме NVIDIA под ником Bober, заранее предупредил об узкой направленности текущей сборки.
После тестов на топовом адаптере фокус разработки сместился на серию GeForce RTX 30 из-за дороговизны и малой распространенности флагмана. На реальной видеокарте RTX 3080 с драйвером 580.95.05 уже удалось добиться корректного выполнения вычислительных шейдеров и сортировки 4096 элементов. Вместе с тем на архитектуре Ampere обнаружилась аппаратно-программная аномалия: в 4-этапном конвейере добавление третьего прохода вызывало дополнительную задержку в 649 микросекунд, природу которой автор связывает с выделением разделяемой памяти или синхронизацией системных ресурсов.
Инициатива вызвала неоднозначную реакцию специалистов по низкоуровневой графике. Скептики напомнили, что предыдущие проекты нативных трансляторов DirectX для Linux в стеке Mesa были заброшены именно в пользу Vulkan. Кроме того, создание единого слоя адаптации сразу для чипов NVIDIA, AMD и Intel без доступа к закрытым спецификациям производителей выглядит практически невыполнимой задачей для энтузиастов-одиночек, поэтому на форуме автору рекомендовали ограничиться поддержкой только одной архитектуры.
Разработчик признался, что для написания столь сложной кодовой базы и подготовки аналитических тестов привлекаются нейросети Claude и Codex. По словам автора, искусственный интеллект берет на себя рутинную генерацию кода, составление тестовых скриптов и отладку ошибок, тогда как сам программист руководит общим вектором исследований и проверяет корректность вычислений на реальном оборудовании.
Проект опубликован под лицензией GPL-3.0 и на данный момент рассчитан на среду Ubuntu 26.04. В репозитории уже представлены исходные коды компилятора и базового интерфейса под ускорители GeForce RTX, тогда как реализация модулей для видеокарт AMD Radeon и графики Intel пока находится на этапе проверок на уровне центрального процессора.
Источник: www.playground.ru