Выпуск проекта DXVK 1.3 с реализацией Direct3D 10/11 поверх API Vulkan

Сформирован выпуск прослойки DXVK 1.3, предоставляющей реализацию DXGI (DirectX Graphics Infrastructure), Direct3D 10 и Direct3D 11, работающую через трансляцию вызовов в API Vulkan. Для использования DXVK требуется наличие драйверов с поддержкой API Vulkan, таких как AMD RADV 18.3, NVIDIA 415.22, Intel ANV 19.0 и AMDVLK.

DXVK может применяться для запуска 3D-приложений и игр в Linux при помощи Wine, выступая в качестве более высокопроизводительной альтернативы встроенной в Wine реализации Direct3D 11, работающей поверх OpenGL. В некоторых играх производительность связки Wine+DXVK отличается от запуска в Windows всего на 10–20%, в то время как при использовании реализации Direct3D 11 на базе OpenGL производительность снижается более существенно.

Добавленные улучшения:

  • Реализована оптимизация с использованием инструкции «discard» в шейдерах, основанная на Vulkan-расширении VK_EXT_shader_demote_to_helper_invocation и способная повысить производительность в некоторых играх. Для использования оптимизации требуется обновить компонент winevulkan и драйверы (Intel до Mesa 19.2-git и NVIDIA до проприетарного драйвера 418.52.14-beta, драйверы AMD пока не поддерживают расширение VK_EXT_shader_demote_to_helper_invocation);
  • Обеспечена асинхронная обработка представления (presentation). Для уменьшения задержек в основном потоке рендеринга, обработка представления теперь выполняется в потоке передачи команд (command submission thread). Выигрыш в производительности от асинхронной обработки особенно заметен при выводе с высокой частотой кадров и при ресурсоёмкой передаче команд. Из игр в которых наблюдается прирост производительности отмечается Quake Champions при запуске на системах с GPU AMD;
  • Появилась возможность начальной загрузки ресурсов с использованием движков копирования (copy engine), предоставляемых устройством с поддержкой Vulkan (пока поддерживается только драйверами AMDVLK и NVIDIA). Новая возможность позволяет немного улучшить согласованность времени кадра в играх, загружающий большое число текстур во время игры;
  • Улучшено ведение лога ошибок, возникающих в условиях нехватки памяти;
  • Улучшена совместимость с MSVC (Microsoft Visual C++);
  • Убраны повторяющиеся цикличные проверки во время представления, что может значительно снизить нагрузку на CPU в сценариях с ограниченными GPU;
  • Устранена проблема с двойным маппингом субресурсов изображений, проявлявшаяся в игре Final Fantasy XIV;
  • Устранён крах из-за некорректного поведения метода RSGetViewport, проявлявшийся в игре Scrap Mechanic.

© OpenNet