Вышел DXVK-Sarek 1.14.0 – форк DXVK для видеокарт, которые не дотягивают до требований актуальных сборок. Главное изменение практическое: в проект перенесли распределитель памяти из свежего DXVK, и это закрыло рост потребления памяти в долгих сессиях и аварийные завершения из-за её нехватки. Вторая заметная правка – диагностика: теперь видно, каких расширений Vulkan не хватает драйверу и как это проявляется на экране.
Что такое DXVK-Sarek
DXVK – слой трансляции, который переводит вызовы Direct3D в Vulkan и позволяет запускать Windows-игры на Linux через Wine и Proton. Актуальные сборки требуют от драйвера Vulkan 1.4, и на части оборудования они просто не запускаются. DXVK-Sarek развивает ветку 1.10.x, рассчитанную на Vulkan 1.1 и 1.2, и переносит туда исправления из новых версий. Проект поддерживает Direct3D с третьей по одиннадцатую версию.
Что нового в DXVK-Sarek 1.14.0
Память
- Прежний распределитель памяти заменён страничным и пуловым распределителями из актуального DXVK. Это устраняет постепенный рост потребления памяти в долгих сессиях и аварийные завершения из-за её нехватки.
- Режим
DXVK_HUD=memoryтеперь показывает расход относительно выделенного драйвером бюджета, а не просто объём. - Дефрагментация памяти пока не перенесена. Разработчик не обещает её и в будущем: поведение на старых драйверах, для которых код никогда не предназначался, предсказать сложно.
Диагностика нехватки расширений
- Сразу после создания устройства в журнал выводится список недостающих расширений Vulkan с описанием того, как их отсутствие выглядит на экране. Если всё на месте, в журнале так и написано.
- В оверлее
DXVK_HUD=devinfoрядом с названием видеокарты появляется пометка[DEGRADED], когда чего-то не хватает. - Добавлена переменная
DXVK_SAREK_STRICT=1, которая делает все необязательные расширения обязательными. Режим нужен только для отладки: с ним игра не запустится, зато в журнале будет поимённый список того, чего нет у драйвера.
Совместимость и исправления
- Делитель атрибутов вершин теперь включается и на старых редакциях расширения.
- Внутренний модуль работы с окном заменён на доработанный
wsiиз актуального DXVK. Это упрощает перенос исправлений и попутно устранило проблемы при переключении между окнами. - DXGI сообщает о перекрытии окна, когда оно свёрнуто, и выходит из полноэкранного режима, если окно перекрыли.
- Перенесена поддержка D7VK 2.2 и включено цветовое ключевание для каждой стадии отдельно.
- Добавлен параметр
d3d9.splitSamplerSlots, исправляющий чёрный экран Direct3D 9 на MoltenVK – прослойке Vulkan поверх Metal в macOS. - Исправлен искажённый текст в Civilization VI.
- Исправлен выход за границы в инструкции
resinfoв коде dxbc. - Добавлена защита от нулевого знаменателя частоты обновления экрана.
Полный список изменений опубликован на странице выпуска.
Зачем нужен отдельный форк
Требования DXVK к драйверу поднимались дважды. Версия 2.0 потребовала Vulkan 1.3, а DXVK 3.0 – уже Vulkan 1.4. Для владельцев видеокарт, которые остановились на Vulkan 1.1 или 1.2, это означает, что все исправления последних лет проходят мимо: актуальная версия 3.1.1 на таком оборудовании не запустится.
DXVK-Sarek решает это иначе, чем простая заморозка старой версии. Почти все расширения Vulkan в нём объявлены необязательными, поэтому устройство создаётся почти на любом оборудовании. Плата за это – ошибки отрисовки вместо отказа запускаться: неверные цвета, пропавшая геометрия, смещённые объекты. Именно поэтому в версии 1.14.0 так много внимания уделено журналу: по нему видно, что именно отсутствует и какой артефакт этим вызван.
Проект ориентирован на драйверы, которые больше не развиваются, в том числе на NVIDIA 470 для старых видеокарт. Отдельно разработчик упоминает мобильные видеоядра Mali и Adreno, а также запуск через слои трансляции Box64 и FEX на ARM: там работоспособность не гарантируется, а жалобы на артефакты и производительность он не принимает. Предыдущая крупная версия, 1.12.0, вышла в апреле.
Что нужно для запуска
Требования скромные: видеокарта и драйвер с поддержкой Vulkan 1.1, а также Wine 7.1 или новее. В выпуске лежат 32- и 64-разрядные библиотеки, разложенные так же, как в оригинальном DXVK, – их подкладывают вручную или подключают через лаунчер.
Со сборками Proton всё строже. Собственный Proton-Sarek разработчик закрыл, и единственный официально поддерживаемый вариант – Proton-CachyOS, где DXVK-Sarek включается параметром запуска PROTON_DXVK_SAREK=1. Вручную с файлами при этом возиться не нужно: в Lutris и Heroic Games Launcher нужная версия выбирается в настройках, а при её отсутствии ставится через ProtonPlus или ProtonUp-Qt.