Домой Новости Софт и сервисы Выпуск DXVK 3.0: что нового в библиотеке для трансляции Direct3D в Vulkan

Выпуск DXVK 3.0: что нового в библиотеке для трансляции Direct3D в Vulkan

Крупное обновление DXVK 3.0: переход на Vulkan 1.4, оптимизация компиляции шейдеров и исправление проблем в популярных играх.

Выпуск DXVK 3.0: что нового в библиотеке для трансляции Direct3D в Vulkan
Выпуск DXVK 3.0: что нового в библиотеке для трансляции Direct3D в Vulkan — иллюстрация к материалу. Источник: linux.org.ru

Спустя полгода разработки состоялся релиз DXVK 3.0 — новой версии открытой библиотеки, предназначенной для трансляции вызовов API Direct3D 8, 9, 10 и 11 в команды Vulkan. Данный инструмент позволяет запускать графические приложения и игры, изначально созданные для Windows, на операционных системах с поддержкой Vulkan, обеспечивая более высокую эффективность работы графики.

Основные изменения

В актуальной версии разработчики перешли на использование спецификаций и расширений Vulkan 1.4, что требует наличия у пользователя соответствующих драйверов.

Компиляция шейдеров и работа с памятью

Одним из ключевых нововведений стал переход на использование dxbc-spirv для компиляции шейдеров во всех поддерживаемых моделях. Это позволило решить ряд критических проблем:

  • Устранены ошибки рендеринга в играх, которые полагались на неопределенное поведение API или некорректный код от FXC (например, в Postal: Brain Damaged и Snowrunner).
  • Сгенерированный код стал компактнее, что существенно снизило нагрузку на системную память. В таких проектах, как Overwatch и God of War, экономия составляет около 1 ГиБ ОЗУ.
  • Процесс компиляции полностью перенесен на фоновые рабочие потоки. Это помогает минимизировать зависания и ускорить запуск игр, включая Days Gone и Final Fantasy XIV.
  • Добавлено кэширование промежуточного представления шейдеров на диске в каталоге AppData/Local текущего префикса Wine. Изменить путь к кэшу можно через переменную окружения DXVK_SHADER_CACHE_PATH.

Модель привязки descriptor_heap

По умолчанию теперь используется расширение VK_EXT_descriptor_heap. Новая модель привязки обеспечивает производительность на уровне CPU, сопоставимую с предыдущей реализацией, при этом позволяя избежать падения FPS на видеокартах Nvidia (для работы требуется драйвер версии 595.84 и новее).

Улучшения D3D9 и оптимизация

Для исправления заметных подтормаживаний в играх вроде Unreal Tournament 2004, связанных с эмуляцией устаревшего конвейера с фиксированными функциями, DXVK теперь использует систему убершейдеров с оптимизированными вариантами, компилируемыми в фоновом режиме.

Оптимизация работы с буферами:

  • Различные типы буферов теперь загружаются по требованию, а не размещаются сразу во VRAM.
  • Внедрена стратегия ограничения объема ОЗУ, исправляющая сбои в 32-битных играх D3D9.
  • Повышена производительность в GTA IV на системах без поддержки Resizable BAR.

Также реализована корректная работа состояния D3DRS_MULTISAMPLEANTIALIAS при использовании расширений VK_EXT_sample_locations и VK_EXT_extended_dynamic_state3. Это решает проблемы с графикой интерфейса в Anno 1701, Men of War: Assault Squad и других играх при активации MSAA.

В дополнение к этому, общие ресурсы теперь полноценно функционируют со стандартной реализацией Wine без необходимости применения патчей от Proton, а общий список исправлений охватывает множество других игровых проектов.

Источник: https://www.linux.org.ru