Выпуск D9VK 0.40, реализации Direct3D 9 поверх Vulkan

Состоялся выпуск проекта D9VK 0.40, предоставляющего реализацию Direct3D 9, работающую через трансляцию вызовов в графический API Vulkan. Проект основан на кодовой базе проекта DXVK, которая была расширена поддержкой Direct3D 9. По сравнению с реализацией Direct3D 9 на базе WineD3D, D9VK позволяет добиться более высокой производительности, так трансляция Direct3D 9 через OpenGL работает медленнее трансляции через Vulkan.

D9VK может применяться для запуска 3D-приложений и игр в Linux при помощи Wine. Поддерживается запуск большей части игр на базе Direct3D 9, использующих 2 или 3 версию Shader Model. Код проекта распространяется под свободной лицензией Zlib. Для использования D9VK требуется наличие драйверов с поддержкой API Vulkan, таких как AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ и AMDVLK.

Основные улучшения:

  • Реализована возможность использования более 4 ГБ видеопамяти в 32-разрядных приложениях, что решило проблемы при запуске модов игр Skyrim и Oblivion;
  • Включена асинхронная обработка вывода результата рендеринга на экран (стадия presentation). Для уменьшения задержек в основном потоке рендеринга, обработка вывода выполняется в потоке передачи команд (command submission thread);
  • Убраны излишние точки синхронизации потока команд при извлечении запрашиваемых данных;
  • Код для определения внутреннего времени переведён на использование специфичного для платформ таймера, что помогло решить проблемы с некорректным поведением high_resolution_clock из MinGW;
  • Обеспечена выгрузка отложенных буферов MANAGED + SYSTEMMEM на стадии до выполнение PrepareDraw, что решило проблемы с производительностью в играх Risen и Legend of the Heroes: Trails of the Sky;
  • Добавлена поддержка D3DTA_CONSTANT, позволившая реализовать корректный рендеринг эффекта свечения в играх SpinTyres и Mudrunner;
  • Улучшена совместимость с DirectX 9Ex (D3D9Ex). Учтена специфика обработки ResetEx и Reset;
  • Проведены чистка и рефакторинг кода;
  • Обеспечен прямо маппинг буферов WRITEONLY, что может положительно повлиять на производительность и обойти ошибку в игре Counter-Strike: Global Offensive, приводящую к продолжению записи в буфер после его разблокировки;
  • Реализован метод SetDialogBoxMode, позволяющий использовать диалоговые окна в полноэкранных приложениях;
  • Реализована поддержка смешивания вершин, в том числе индексируемого смешивания вершин, необходимого для SWVP (SoftWare Vertex Processing);
  • Переделан счётчик семплера, выводимый поверх текущего изображения (heads-up display, HUD);
  • Добавлена опция d3d9.dialogBoxMode, которую можно использовать для отключения работы только в полноэкранном режиме;
  • Внесены оптимизации производительности и решены проблемы, проявляющиеся при запуске игр GTK: San Andreas, The Masquerade Bloodlines, Max Payne 2, The Sims 2, Silent Hunter 3, Senran Kagura Shinovi, Dungeons and Dragons, Crysis, Metal Slug X, ANGLE, Need for Speed: Carbon и Risen 1.



Источник: http://www.opennet.ru/opennews/art.shtml? num=52035

OpenNet прочитано 4215 раз