Издаване на 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, е необходима наличност на драйвери с поддръжка на Vulkan API, като AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ и AMDVLK.

Основни подобрения:

  • Добавена е възможност за използване на повече от 4 GB видео памет в 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, която може да се използва за деактивиране на работа само в режим на цял екран;
  • Извършени оптимизации на представянето и решени проблеми, проявяващи се при стартиране на игрите 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