Пускането на 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 GB видеопамет в 32-битови приложения, което реши проблемите при стартиране на модове за играта Skyrim и Oblivion;
  • Включена е асинхронна обработка на извода на резултата от рендеринга на екран (фаза на презентация). За намаляване на закъсненията в основния поток на рендеринга, обработката на извода се извършва в потока за подаване на команди;
  • Премахнати са излишните точки на синхронизация на потока с команди при извличане на заявените данни;
  • Кодът за определяне на вътрешното време е пренаписан да използва платформен таймер, което помогна за решаване на проблемите с неправилното поведение на 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, която може да се използва за деактивиране на работа само в режим на цял екран;
  • Извършени са оптимизации на производителността и са решени проблеми, проявяващи се при стартиране на игри като GTA: 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.

Допълнително може да се отбележи намерение разработчик на проекта DXVK (реализация на DXGI, Direct3D 10 и Direct3D 11 върху API Vulkan) временно да се съсредоточат усилията само върху отстраняване на грешки, спирайки разширяването на функционалността. Такова желание е предизвикано е свързано с опасения за намаляване качеството на кодовата база и затруднение с поддръжката в бъдеще. Всяко обновление на клон 1.4.x предизвиква оплаквания за регресивни промени, които не могат да бъдат възпроизведени, локализирани и отстранени.

Тези проблеми изискват разглеждане на причините за появата им, в противен случай оставянето им неизправени при продължаващо увеличаване на функционалността може само да влоши ситуацията и да превърне процеса на поддръжка в кошмар. От плановете, които разработчикът на DXVK има за изпълнение преди преминаване в режим само за поправки, е добавянето на поддръжка за някои полезни разширения на Vulkan и сливане с разработки на проекта D9VK.

Допълнение: по горещи следи сформирано коригиращата версия D9VK 0.40.1, в която е поправено значението по подразбиране на vec4(1) за COLOR0 във вершинните шейдъри и е отстранена грешка, при която битовете на слотовете за изходи на шейдъра по подразбиране неправилно са се прилагани и следователно неправилно поправяни от бекенда, което е довело до тяхната замяна с vec4(0).

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster