Вышла новая версия vkd3d-proton 3.0.1

Команда разработчиков vkd3d-proton во главе с Хансом-Кристианом Арнтценом (Hans-Kristian Arntzen) выпустила обновление, которое хотя и имеет номер 3.0.1, по объёму изменений вполне могло бы стать 3.1. Релиз содержит долгожданные функции, исправляет множество проблем в современных играх и закладывает основу для будущих улучшений.

Экспериментальные функции

D3D12 View Instancing

Добавлена экспериментальная поддержка D3D12 view instancing. Эта функция включена для одной известной игры, которая требует её для корректной работы — Crimson Desert (версии 1.04 и новее).

VK_EXT_present_timing

Реализовано расширение VK_EXT_present_timing, которое обеспечивает плавную синхронизацию кадров для SyncInterval > 1 при поддержке со стороны драйвера. Это особенно важно для игр, использующих сложные схемы синхронизации.

Поддержка независимых устройств

Добавлена функция Independent Devices, позволяющая более гибко работать с несколькими GPU.

Поддержка операций WMMA для FSR4

Добавлена поддержка новых операций AGS WMMA (Wave Matrix Multiply Accumulate), необходимых для FSR4 Ray Reconstruction и Denoiser. Как уже упоминалось, это используется в игре Crimson Desert.

Обновлённые интерфейсы NVAPI и AMD AGS

  • NVAPI: Добавлены новые интерфейсы для более современной версии NVAPI и поддержка шейдерных интринсиков NVIDIA. При использовании актуального dxvk-nvapi, например, должны работать расширения для переупорядочивания выполнения шейдеров (Shader Execution Reordering).
  • AMD AGS: Добавлены новые интерфейсы и поддержка шейдерных интринсиков, используемых в Crimson Desert.

Исправления

  • SV_PrimitiveID: Теперь можно читать SV_PrimitiveID (идентификатор примитива) в большем количестве шейдерных стадий, как и ожидается.
  • NVIDIA Reflex: Различные исправления для повышения производительности в некоторых случаях (вклад от NVIDIA).
  • ID3D12Fence: Блокировка при ожидании ID3D12Fences больше не привязана к ID презентации, что особенно помогает в сценариях с генерацией кадров (frame-gen).
  • Turnip (драйвер для Adreno): Различные исправления для прохождения тестового набора vkd3d-proton.
  • dxil-spirv: Различные исправления в компиляторе для предотвращения падений при компиляции шейдеров в новых играх.
  • F1 2019/2020: Исправлена регрессия, когда старый обходной путь из старого компилятора не был сохранён в новом коде.
  • Многие другие исправления ошибок.

Производительность

Большая часть работы над производительностью в этом релизе была направлена на мобильные чипы, которые полагаются на тайловый рендеринг (tiling):

  • Отложенная очистка и отбраковка (deferred clears и discards): Реализованы для потенциального повышения производительности, например, на драйвере Turnip.
  • Приостановка/возобновление проходов рендеринга (render pass suspend-resume): Используется на мобильных GPU, что может значительно повысить производительность. Примечание: это зависит от драйвера и игры.
  • Оптимизация пулов запросов (query pools): Инициализация и разрешение перемещены, чтобы по возможности не нарушать проходы рендеринга.
  • Переработана работа MSAA resolves: Это упрощает оптимизацию для драйверов.

Другие улучшения производительности:

  • Пакетная система для сложных ExecuteIndirect: Улучшает производительность в играх, которые выполняют множество вызовов ExecuteIndirect с обновлениями состояний, таких как Crimson Desert, Starfield и Halo Infinite.
  • Реализация SM 6.4 dot2add: Использует расширение VK_VALVE_shader_mixed_float_dot_product для повышения производительности.
  • Использование очереди TRANSFER: Теперь для очередей D3D12 COPY используется подходящая очередь TRANSFER в Vulkan, вместо очереди COMPUTE. На NVIDIA это включено по умолчанию и должно улучшить производительность при потоковой загрузке ресурсов (RADV пока не включает этот флаг по умолчанию).

Обходные пути (Workarounds)

  • Введён механизм применения обходных путей на основе имени точки входа шейдера, а не хеша. Это позволяет решать проблемы в часто обновляемых играх (например, Wuthering Waves и Crimson Desert), где шейдерные хеши постоянно меняются.
  • Обходной путь для DispatchRays, когда игра забывает правильно установить корневую сигнатуру.
  • Обходные пути для ошибок в играх: Shadows of the Tomb Raider, Rise of the Tomb Raider, Spider-Man 2, Death Stranding 2, Guardians of the Galaxy, REANIMAL, Crimson Desert и других.
  • Обходной путь для аппаратной ошибки на RDNA4 с SV_ShadingRate на определенных версиях Mesa (исправлено в Mesa 26.1+).
  • Удалён обходной путь для NULL SMEM PRT на AMD в будущих версиях Mesa 26.2+. Это решает проблему, мучившую разработчиков 1.5 года в Monster Hunter Wilds.
  • Добавлен обходной путь для производительности ядра NVIDIA при ожидании ID3D12Fences.
  • Для GPU RDNA1 разрешено притворяться, что они поддерживают барицентрики и VRS (Variable Rate Shading), что позволяет запускать Crimson Desert на этих картах.
  • Удалена глобальная блокировка представления (submission lock) на NVIDIA.

Этот релиз — важный шаг вперёд для vkd3d-proton, особенно для поддержки современных игр, активно использующих Direct3D 12. Пользователи могут ожидать улучшенной совместимости и производительности в таких тайтлах, как Crimson Desert, Monster Hunter Wilds, Starfield и многих других.

Релиз уже доступен на GitHub-странице проекта.

  • Просмотров: 208

Этот веб-сайт использует технические и функциональные файлы cookie. Чтобы зарегистрировать учетную запись, связаться с нами, получить наши продукты или услуги, вы должны принять нашу Политику Конфиденциальности. Нажимая кнопку «Принять» или щелкая любую ссылку на этой странице, вы соглашаетесь на использование файлов cookie и принимаете нашу Политику использования cookie-файлов.