DXVK
DXVK — это программный проект с открытым исходным кодом, позволяющий запускать приложения и игры, написанные для Windows с использованием графического API Direct3D версий 9, 10 и 11, на системах Linux и других Unix-подобных операционных системах. Это достигается путём преобразования вызовов Direct3D в эквивалентные команды Vulkan — современного, низкоуровневого графического API, который активно поддерживается в Linux.
Проще говоря, DXVK выступает как «переводчик» между Windows-ориентированными приложениями и Linux-средой, позволяя запускать игры с Windows-графикой на другой платформе без значительной потери производительности.
Контекст появления DXVK
В последние годы интерес к Linux как к игровой платформе заметно вырос. Этому способствовали несколько факторов: развитие Steam на Linux, появление Proton от Valve (инструмента совместимости для запуска Windows-игр на Linux), а также растущее сообщество пользователей, выбирающих свободное ПО.
Однако у Linux по-прежнему отсутствует полноценная нативная поддержка Direct3D — ключевого компонента Windows-графики. Именно здесь на сцену выходит DXVK, который стал важным элементом технологического стека для обеспечения совместимости.
Как работает DXVK
DXVK реализован как набор динамических библиотек (файлов .dll
), которые подменяют оригинальные компоненты Direct3D в Windows-программах. Когда приложение или игра на Windows вызывает, к примеру, функцию Direct3D 11 для отрисовки сцены, DXVK перехватывает этот вызов и превращает его в аналогичный вызов Vulkan.
Этот процесс называется «транслированием графических команд». DXVK не эмулирует Direct3D, а преобразует вызовы напрямую, что позволяет добиться высокой производительности, близкой к оригинальной Windows-среде. В ряде случаев игры даже работают быстрее на Linux с DXVK, чем на Windows.
DXVK в связке с Wine и Proton
DXVK сам по себе не может запустить Windows-программу. Он работает в составе других решений, таких как Wine — слой совместимости, позволяющий запускать Windows-программы на Unix-подобных системах. Wine перехватывает вызовы Windows API, а для графических функций может использовать DXVK в качестве модуля, заменяющего Direct3D.
Valve активно использует DXVK в своём проекте Proton, который встроен в Steam. Proton сочетает Wine, DXVK и другие компоненты, позволяя запускать тысячи Windows-игр на Linux буквально в один клик — без ручной настройки.
Почему используют Vulkan, а не OpenGL
На первый взгляд может показаться логичным, что для замены Direct3D можно было бы использовать OpenGL — другой графический API, традиционно доступный в Linux. Однако Vulkan имеет ряд преимуществ:
- Он ближе по архитектуре к Direct3D 12, чем OpenGL.
- Предоставляет более низкоуровневый контроль над видеокартой.
- Лучше масштабируется на многопоточность.
- Позволяет достичь большей производительности при правильной реализации.
Таким образом, выбор в пользу Vulkan объясняется техническими особенностями, обеспечивающими более точное и быстрое преобразование графических команд из Direct3D.
Возможности и ограничения
DXVK поддерживает Direct3D 10 и 11, а также в ограниченном объёме Direct3D 9 (через отдельный проект DXVK-native или d9vk). Однако не все игры работают идеально: могут встречаться артефакты, проблемы с производительностью или падения при запуске. Всё зависит от конкретного проекта и его особенностей.
С другой стороны, большинство современных и популярных игр, особенно тех, что используют Direct3D 11, отлично запускаются через DXVK. Некоторые даже работают стабильнее, чем на Windows, особенно на системах с гибридной графикой или нестандартным железом.
Технические аспекты
DXVK написан на языке C++ и активно использует возможности Vulkan API. Для кэширования шейдеров используется специальная система, позволяющая ускорять повторные запуски игр. Также DXVK поддерживает асинхронную компиляцию шейдеров, многопоточную обработку и другие оптимизации.
Исходный код проекта доступен на GitHub, и любой желающий может внести вклад или собрать свою версию.
DXVK и будущее кроссплатформенных игр
Появление DXVK стало важной вехой в развитии игровой экосистемы на Linux. Он позволяет запускать игры, которые иначе были бы недоступны на этой платформе, расширяя выбор для пользователей и снижая зависимость от одной операционной системы.
Кроме того, успех DXVK стимулирует разработчиков задумываться о поддержке Vulkan в своих играх изначально, что может привести к более широкой кроссплатформенной совместимости в будущем.
Заключение
DXVK — это технологическое решение, которое открыло новую эру в совместимости между Windows и Linux. Благодаря ему тысячи игр стали доступны пользователям альтернативных операционных систем, а производительность — на уровне или даже выше, чем в родной среде. Это пример того, как энтузиасты и открытые технологии могут изменить индустрию без участия крупных корпораций.

DXVK 2.7 отказывается от поддержки устаревших драйверов, обеспечивая повышение производительности

DXVK 2.6.2 содержит целевые исправления для VR, графических процессоров Intel и ошибок, связанных с играми

DXVK 2.5.2 Улучшает игровой опыт Windows
