Новые версии D7VK 2.0 и DXVK 3.0.2, реализаций Direct3D поверх API Vulkan

Опубликован выпуск проекта D7VK 2.0, развивающего реализацию графических API Direct3D 3, 5, 6 и 7, предложенных компанией Microsoft в 1996, 1997, 1998 и 1999 годах. D7VK работает через трансляцию вызовов в API Vulkan и позволяет при помощи Wine запускать в Linux ретро игры, завязанные на API Direct3D 3, 5, 6 и 7. Код проекта написан на языке C++ и распространяется под лицензией Zlib. В качестве основы при разработке использован код бэкенда d3d9 от проекта DXVK — D7VK преобразует API Direct3D 3, 5, 6 и 7 в вызовы Direct3D 9, которые затем транслируются в API Vulkan. Разработчик не намерен добиваться включения D7VK в состав DXVK, как это было с реализациями Direct3D 8 и Direct3D 9 поверх Vulkan.

Значительное изменение номера версии объясняется внесением оптимизаций, повышающих производительность более чем в два раза в некоторых ситуациях, в которых вычисления производятся только на стороне CPU. Улучшена обработка вызова ProcessVertices, в котором для всех вычислений при помощи CPU задействованы SSE-инструкции, а также оптимизирована работа с буферами. В итоге, по сравнению с выпуском D7VK 1.12 производительность в игре Half-Life выросла с 19.8 до 59.9 кадров в секунду, а в игре Toy Story 2 — с 9.8 до 30 FPS.

Отключена большая часть обработчиков для записи в отладочные логи, приводивших к заметным накладным расходам из-за манипуляций со строками. Показатели производительности D3D6 в тесте 3DMark 99 Max увеличились с 75282 баллов в D7VK 1.12 до 111398 в D7VK 2.0, а D3D7 в тесте 3DMark 2000 v1.1 с 69566 в D7VK 1.12 до 164075 в D7VK 2.0. В игре Unreal Tournament FPS вырос с 484 до 654, а нагрузка на GPU снизилась с 18% до 17%.

Осуществлён переход на работу поверх выпуска DXVK 3.0.2. Внесены исправления, улучшающие поддержку игр Dungeon Keeper 2, Empire Earth, Total Annihilation: Kingdoms, Revenant, Need for Speed: Porsche, The Sims: Complete Collection.

Дополнительно можно отметить выпуск выпуск прослойки DXVK 3.0.2, предоставляющей реализацию DXGI (DirectX Graphics Infrastructure), Direct3D 8, 9, 10 и 11, работающую через трансляцию вызовов в API Vulkan. Для использования DXVK требуется наличие драйверов с поддержкой API Vulkan 1.4, таких как NVIDIA 575.51.02, Mesa AMD RADV 25.0, NVIDIA 25.1 и Intel ANV 25.1. DXVK может применяться для запуска 3D-приложений и игр в Linux при помощи Wine, выступая в качестве более высокопроизводительной альтернативы встроенных в Wine реализаций Direct3D, работающих поверх OpenGL.

В новой версии добавлен режим отладки зависаний и аварийных завершений из-за возникновения ошибок VK_ERROR_DEVICE_LOST, включаемый через переменную окружения «DXVK_DEBUG=hang» и записывающий лог с дополнительной информацией. Решены проблемы в играх Dying Light: The Beast, Granblue Fantasy Relink, Halo CE, Overwatch и Splinter Cell: Chaos Theory.

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