Valve финансирует перенос открытого драйвера Vulkan RADV на Windows: уже запускается Counter-Strike 2

2026-07-30 315 комментарии
Valve профинансировала первые этапы переноса открытого драйвера Vulkan RADV из Mesa на Windows. Экспериментальная версия уже запускает Counter-Strike 2, однако до полноценной альтернативы официальному драйверу AMD ещё далеко из-за ограничений закрытого интерфейса WDDM

С чего начался проект

28 июля 2026 года инженер Collabora Луи-Франсис Ратте-Булиан (Louis-Francis Ratte-Boulianne) опубликовал отчёт о переносе RADV на Windows. Работы профинансировала Valve – компания уже несколько лет содержит штат разработчиков, занятых RADV и остальным графическим стеком Linux, а теперь дополнительно оплатила исследовательскую фазу проекта у Collabora.

RADV – открытый драйвер Vulkan для видеокарт AMD, входящий в состав Mesa. На Linux он давно стал основным: в сентябре 2025 года AMD закрыла собственный проект AMDVLK на базе библиотеки PAL и передала роль официального открытого драйвера Vulkan именно RADV. На нём же работают Steam Machine и Steam Deck.

На Windows у владельцев Radeon альтернативы нет – доступен только проприетарный AMD Radeon Software Adrenalin. Цель проекта – дать Windows ту же реализацию Vulkan, что уже проверена на Linux.

Зачем переносить RADV на Windows

Collabora перечисляет доводы:

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

Как проект дошёл до запуска первой игры

Основу заложила Фейт Экстранд (Faith Ekstrand): она первой проверила принципиальную возможность запуска RADV на Windows и представила результаты на конференции XDC 2024.

Ключевой тезис её доклада: начиная с Windows 10 интерфейс WDDM2 задаёт понятную модель взаимодействия драйвера пользовательского режима (UMD) с операционной системой и драйвером режима ядра (KMD), поэтому сторонний драйвер туда встроить реально. Но вызовы D3DKMT могут переносить приватные данные драйвера – непрозрачные блоки, формат которых полностью определяет производитель. Это жёстко связывает UMD и KMD между собой, а сам интерфейс нигде не описан.

Чтобы обойти проблему, Экстранд написала утилиту wddm2-pdd-re, которая протоколирует вызовы WDDM2 и содержимое приватных данных для приложений D3D12. По этим журналам удалось восстановить достаточную часть закрытого интерфейса – запрос сведений об адаптере, выделение буферов, создание очередей и отправку команд – и вывести на экран вращающуюся трёхмерную модель.

Collabora продолжила работу с тремя задачами: сделать код гибче (убрать жёстко заданные значения ради поддержки разного железа), перенести его на Windows без обязательной прослойки WSL и добиться устойчивости – прежняя сборка падала через две минуты тестов deqp-vk.

Что сделано:

  • переработана обработка потоков команд и синхронизация;
  • добавлена поддержка разреженных привязок (sparse bindings), тесселяции и task-шейдеров;
  • реализован динамический запрос свойств графического процессора;
  • запущена первая игра – Counter-Strike 2. Переключение на Vulkan выполняется аргументом запуска -vulkan.
Важно. Драйвер не проходит сертификацию соответствия Vulkan. Доля успешных тестов резко выросла, но говорить о полном соответствии спецификации пока нельзя.

С какими трудностями столкнулись разработчики

Разные поколения видеокарт

Collabora экспериментировала на Radeon RX 7900 XT, тогда как Экстранд работала с Radeon RX 7800 XT. Из-за архитектурных различий результаты долго не воспроизводились: система зависала при любой операции сложнее очистки поверхности заранее заданным цветом.

Инструментов для разбора таких зависаний на Windows не существует, поэтому утилиту обратной разработки пришлось превратить в полноценный слой протоколирования WDDM2. Он способен анализировать любое приложение, запущенное на официальном драйвере Vulkan, и выгружать потоки команд, значения регистров и код шейдеров.

Компилятор MSVC

Mesa разрабатывается с расчётом на GCC и Clang, и часть допущений в коде под MSVC не работает. Пример из отчёта: MSVC иначе трактует перечисления – может считать значение знаковым и ограничить его 32 битами, что приводит к неожиданному поведению.

Вызов D3DKMTEscape

WDDM2 позволяет производителю добавлять собственные обработчики через метод D3DKMTEscape, содержимое которого не структурировано вообще никак. Единственное ограничение – такой вызов не должен дублировать уже стандартизированный. Пока эти вызовы удалось проигнорировать: судя по всему, они отвечают за дополнительные возможности вроде рендеринга на нескольких графических процессорах.

Главное препятствие

Собственный драйвер режима ядра разработчики писать не собираются, значит RADV обязан общаться с драйвером AMD. Сейчас это общение построено на восстановленных методом обратной разработки приватных структурах данных, что ненадёжно по своей природе: UMD и KMD поставляются единым комплектом без гарантий обратной совместимости, поэтому структуры могут меняться от выпуска к выпуску без предупреждения.

Для превращения проекта в поддерживаемый продукт нужно одно из двух:

  • стабильный документированный интерфейс к проприетарному драйверу режима ядра;
  • прослойка (shim), которая берёт на себя обмен приватными данными с KMD и даёт RADV неизменную точку опоры, пока формат блоков меняется.
Примечание. На Linux этой проблемы нет: там открыт и драйвер ядра amdgpu, и пользовательская часть. Перенос amdgpu на Windows в задачи проекта не входит – RADV работает поверх официального драйвера ядра AMD. Отдельно AMD поддерживает AMD Radeon Software для Linux, куда RADV уже включён.

Что ещё предстоит сделать

Второй крупный участок работ – вывод кадров на экран. Джесси Натали (Jesse Natalie) ранее реализовал часть WSI для Windows в рамках драйвера Dozen, но RADV пока умеет только медленный путь через центральный процессор.

  • Следующий шаг – задействовать цепочки буферов DXGI. Для этого нужно научиться импортировать изображение из D3D12, а это снова непрозрачные метаданные.
  • Дальше идёт обмен буферами без копирования (zero-copy). По оценке Collabora, для приложений, не упирающихся в графический процессор, выигрыш может достигать трёхкратного.
  • Последний шаг невозможен без прямого участия AMD и, вероятно, Microsoft – есть ограничения, связанные с совместным использованием изображений.

Исходный код проекта

Наработки лежат в отдельной ветке wddm2 репозитория Mesa на GitLab freedesktop.org. Это экспериментальный код без гарантий работоспособности, в основную ветку Mesa он не принят.

Примечание. Статус проекта – исследование. Сроков включения в состав Mesa и выпуска пригодного для игр драйвера Vulkan под Windows никто не называл.

Смотрите также

© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте