D9VK 0.40 kiadás, Direct3D 9 implementáció a Vulkan tetején

került sor projekt kiadás D9VK 0.40, amely egy Direct3D 9 megvalósítást biztosít, amely úgy működik, hogy lefordítja a hívásokat a grafikus API-ra Vulkán. A projekt a projekt kódbázisán alapul DXVKA WineD3D alapú Direct9D 3 megvalósításához képest a D9VK jobb teljesítményt ér el, mivel az OpenGL-en keresztüli Direct3D 9 fordítás lassabb, mint a Vulkanon keresztüli fordítás.

A D9VK használható 3D alkalmazások és játékok futtatására Linuxon a Wine segítségével. A legtöbb, a Shader Model 3-es vagy 9-as verzióját használó Direct2D 3 alapú játék támogatott. Projekt kód forgalmazza ingyenes Zlib licenc alatt. A D9VK olyan illesztőprogramokat igényel, amelyek támogatják a Vulkan API-t, például az AMD RADV 18.3+, az NVIDIA 415.22+, az Intel ANV 19.0+ és az AMDVLK.

Főbb fejlesztések:

  • A 4 bites alkalmazásokban több mint 32 GB videomemória használatának képességét megvalósították, ami megoldotta a problémákat a Skyrim és az Oblivion játékok modjainak indításakor;
  • A megjelenítési eredmény képernyőn való megjelenítésének aszinkron feldolgozása engedélyezve van (prezentációs szakasz). A fő megjelenítési szál késésének csökkentése érdekében a kimeneti feldolgozást a parancsküldési szálban hajtják végre;
  • A kért adatok lekérésekor eltávolították a szükségtelen parancsfolyam-szinkronizálási pontokat;
  • A belső idő meghatározására szolgáló kódot platform-specifikus időzítőre fordították, amely segített megoldani a MinGW high_resolution_clock hibás viselkedésével kapcsolatos problémákat;
  • A MANAGED és a SYSTEMMEM elhalasztott pufferek kirakodása a PrepareDraw végrehajtása előtti szakaszban biztosított, amely megoldotta a teljesítményproblémákat a Risen és a Legend of the Heroes: Trails of the Sky játékokban;
  • Hozzáadott támogatás D3DTA_CONSTANT, amely lehetővé tette a helyes megjelenítés megvalósítását ragyogó hatás SpinTyres és Mudrunner játékokban;
  • Továbbfejlesztett kompatibilitás a DirectX 9Ex (D3D9Ex). A ResetEx és a Reset feldolgozás sajátosságait figyelembe veszik;
  • Tisztított és újrafaktorált kód;
  • A WRITEONLY pufferek közvetlen leképezése biztosított, ami pozitív hatással lehet a teljesítményre, és megkerülheti a játékban lévő hibákat
    Counter-Strike: Global Offensive, ami azt eredményezi, hogy a puffer feloldása után is folytatódik az írás;

  • Módszer végrehajtva SetDialogBoxMode, amely lehetővé teszi a párbeszédpanelek használatát teljes képernyős alkalmazásokban;
  • Támogatás megvalósítva csúcsok keveréseBeleértve indexelt csúcskeverés, szükséges az SWVP-hez (SoftWare Vertex Processing);
  • Az aktuális kép tetején megjelenő mintavevő számláló (heads-up display, HUD) újra lett tervezve;
  • Hozzáadott d3d9.dialogBoxMode opció, amellyel csak teljes képernyős módban lehet letiltani a munkát;
  • Teljesítményoptimalizálást és problémákat oldott meg, amelyek a GTA-játékok indításakor fordultak elő: 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 Sebesség: Carbon and Risen 1.

Ezenkívül meg lehet jegyezni szándék projekt fejlesztője DXVK (a DXGI, a Direct3D 10 és a Direct3D 11 megvalósítása a Vulkan API-n) átmenetileg csak a hibajavításokra összpontosítja az erőfeszítéseket, lelassítva a funkcionalitás bővülését. Hasonló vágy okozta aggodalmát fejezi ki a kódbázis minőségének csökkenése és a jövőbeni nehezebb karbantartás miatt. Az 1.4.x ág minden frissítése panaszokat okoz a regresszív változásokkal kapcsolatban, amelyeket nem lehet reprodukálni, lokalizálni és javítani.

Ezek a problémák megkövetelik előfordulásuk okainak elemzését, ellenkező esetben, ha a funkcionalitás további bővítése mellett kijavítanák őket, az csak súlyosbíthatja a helyzetet, és a karbantartási folyamatot rémálommá változtathatja. A tervek, amelyeket a DXVK fejlesztője a csak hibajavító módra való váltás előtt megvalósítani kíván, néhány hasznos Vulkan-bővítmény támogatása, valamint a D9VK projekt fejlesztéseivel való egyesülés.

Kiegészítés: forró a sarkán alakított korrekciós kiadás D9VK 0.40.1, amelyben rögzített beállította a vec4(1)-et a COLOR0 alapértelmezett értékére a vertex shaderekben, és kijavított egy hibát, ahol az alapértelmezett shader kimeneti slot bitjeit helytelenül alkalmazták, és ezért a háttérprogram helytelenül korrigálta őket, ami miatt a vec4(0) helyettesítette őket.

Forrás: opennet.ru

Hozzászólás