VKD3D 2.0

Команда Wine выпустила VKD3D 2.0 — крупный релиз библиотеки, реализующей работу приложений с Direct3D 12 поверх Vulkan. VKD3D используется в обычном upstream Wine для поддержки D3D12-приложений; его не следует путать с VKD3D-Proton, отдельной игровой веткой Valve, применяемой в Proton/Steam Play.
Проект распространяется под лицензией GNU Lesser General Public License 2.1 или более поздней версии. Исходный код релиза опубликован на сервере WineHQ, также код доступен через репозитории Wine.
VKD3D 2.0 стал переходом с ветки 1.19 сразу на новую мажорную версию. Основной акцент сделан на развитии шейдерной подсистемы и низкоуровневой совместимости с Direct3D 12.
Ключевые изменения:
-
Улучшена обработка HLSL-шейдеров. Расширена поддержка языка HLSL: реализовано больше операций, которые теперь корректно обрабатываются компилятором и транслятором VKD3D. Это важно для запуска приложений, которые используют собственные HLSL-шейдеры, а не только заранее скомпилированный байткод.
-
Доработана поддержка legacy Direct3D bytecode. Улучшена работа со старым типом исходного байткода Direct3D для совместимости со старыми шейдерными форматами и инструментами, которые всё ещё встречаются в приложениях и движках.
-
Улучшена работа с DXIL. В VKD3D 2.0 продолжена доработка обработки DXIL — современного промежуточного представления шейдеров DirectX. Для D3D12 это один из ключевых форматов, поэтому такие изменения напрямую влияют на корректность запуска более новых приложений.
-
Добавлены улучшения для effects. В релиз вошли изменения, связанные с effects — механизмами описания и применения графических эффектов в Direct3D-стеке. Это скорее инфраструктурная часть, но она важна для совместимости с существующим графическим кодом.
-
Появилась экспериментальная поддержка MSL. VKD3D 2.0 получил экспериментальную поддержку генерации MSL — Metal Shading Language. Это направление связано с переносимостью шейдерной части на платформы, где Vulkan обычно используется через дополнительные слои совместимости.
-
Расширены интерфейсы и отладочные возможности. Разработчики добавили новые интерфейсы и улучшили средства отладки VKD3D, что должно упростить разработку, диагностику ошибок и дальнейшее развитие поддержки Direct3D 12 в Wine.
Отдельно стоит подчеркнуть: для большинства пользователей Steam на Linux главным D3D12-компонентом остаётся VKD3D-Proton, а не обычный VKD3D. Тем не менее VKD3D остаётся важной частью самого Wine и служит базовой реализацией Direct3D 12 поверх Vulkan в upstream-проекте.
>>> Источник
