
Спустя полгода разработки состоялся релиз 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, а общий список исправлений охватывает множество других игровых проектов.






