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

VKD3D-proton — ключевой компонент для трансляции Direct3D 12 в Vulkan, используемый в Proton и Wine. Этот релиз знаменует собой последнюю «стабильную» веху перед крупными изменениями в версии 3.2. Он приносит поддержку VK_EXT_descriptor_heap (пока не включённую по умолчанию), Opacity Micromaps с трассировкой лучей DXR 1.2, Shader Model 6.9 с Shader Execution Reordering, а также оптимизации производительности и множество исправлений для AMD GCN, Steam Frame и QCOM.

Новые возможности

🔹 Поддержка VK_EXT_descriptor_heap

Добавлена поддержка VK_EXT_descriptor_heap. Это расширение уже много месяцев тестировалось в режиме опции и прошло серьёзную проверку на NVIDIA. Однако в этом релизе оно не включено по умолчанию из-за опасений по поводу качества драйверов. В ближайшее время ситуация изменится в основной ветке.

🔹 Opacity Micromaps и DXR 1.2

Добавлена поддержка KHR_opacity_micromap, а старый и сломанный путь EXT удалён. При наличии поддержки экспонируется DXR 1.2.

🔹 Shader Model 6.9

Добавлена поддержка Shader Model 6.9, включая Shader Execution Reordering (SER) и long vector. На данный момент работает только на NVIDIA, так как SM 6.9 — это обновление, ориентированное на трассировку лучей и машинное обучение.

🔹 Другие нововведения

  • Поддержка различных интринсиков NVAPI в dxil-spirv.
  • Экспонирование функций AgilitySDK 619.
  • View instancing теперь включён по умолчанию, так как всё больше игр полагаются на эту функцию.

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

  • Оптимизированный путь для ClearUAV: Теперь используется vkCmdClearColorImage или vkCmdFillBuffer, где это возможно, что позволяет драйверам оптимизировать очистку.
  • Оптимизация патологических паттернов барьеров COPY → RESOURCE → COPY: Нельзя доверять приложениям писать компетентный код. :')
  • Устранены некоторые обходы композитора в IDXGISwapChain::Present(): Связанные с проверками окклюзии — должно улучшить производительность при CPU-bound на главном потоке рендеринга.
  • Пакетная обработка команд сборки RTAS перед вставкой барьеров: Значительно увеличивает производительность трассировки лучей в некоторых случаях.

Исправления

  • Steam Frame: Теперь официально поддерживается как платформа. Добавлены исправления для оборудования QCOM и поддержка сборок aarch64.
  • AMD GPU: Корректная обработка копирования D24 ↔ buffer на GPU AMD, где используется эмуляция D32. Это исправило подтормаживания в ремастере MGS4.
  • low_latency2: Различные исправления путей, отправленных NVIDIA, для соответствия спецификации версии 3.
  • Неопределённое поведение (UB) вокруг udiv/umod/sdiv/srem: Компиляторы NVIDIA иногда используют разрешённое UB, что ломало работу — исправлено.
  • Незадокументированное поведение resolve в render pass API: Исправлено.
  • AMD_anti_lag: Реализация значительно упрощена, исправлено множество ошибок с атрибуцией кадров.
  • dxil-spirv: Множество исправлений, которые скоро исчезнут.

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

  • AMD GCN и QCOM: Добавлены обходные пути для оборудования, не поддерживающего Wave32, с которым многие современные игры просто ломаются.
  • UE5 / RE Engine: Добавлено более детальное определение движков, чтобы помочь драйверам Mesa выполнять сложные обходные пути, которые нельзя привязать напрямую к vkd3d-proton.
  • Сломанное поведение root SRV/UAV на NVIDIA: Исправлено — игры на Windows могут позволить себе поведение вне спецификации, которое мы не воспроизводили.
  • Use-after-free обходные пути: Переписаны, что обходит множество сломанных поведений в плагине FSR4 для UE.

vkd3d-proton 3.1 — это важный рубеж перед крупными изменениями в версии 3.2. Релиз приносит поддержку новейших графических технологий, улучшения производительности и стабильности, а также расширяет совместимость с новыми платформами, включая Steam Frame.

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

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