Выпуск 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 раз