a projekt kiadása , amely a Direct3D 9 megvalósítását nyújtja, hívások átkonvertálásával a grafikus API-ba . A projekt a kódalapján alapul, amely ki lett bővítve a Direct3D 9 támogatásával. A WineD3D alapú Direct3D 9 megvalósításhoz képest a D9VK nagyobb teljesítményt nyújt, mivel a Direct3D 9 OpenGL-en keresztüli átkonvertálása lassabb, mint a Vulkanon keresztüli átkonvertálás.
A D9VK használható 3D-alkalmazások és játékok futtatására Linux alatt a Wine segítségével. Támogatja a legtöbb Direct3D 9 alapján készült játék, 2 vagy 3-as Shader Model verziót használó indítását. A projekt kódja szabad Zlib licenc alatt áll. A D9VK használatához Vulkan API támogatású illesztőprogramokra van szükség, például AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ és AMDVLK.
Fő fejlesztések:
- Megvalósítottuk a több mint 4 GB videomemória használatának lehetőségét 32 bites alkalmazásokban, ami megoldotta a Skyrim és Oblivion játékok modjaival kapcsolatos problémákat;
- Beépítettük az aszinkron renderelési kimenet feldolgozást a képernyőre (presentation). A renderelési főszál késleltetésének csökkentésére a kimenet feldolgozása a parancsok előkészítésének szálán történik;
- Eltávolítottuk a parancsszál felesleges szinkronizálási pontjait a kért adatok előhívásakor;
- A belső idő meghatározására vonatkozó kódot specifikus platform időzítő használatára alakítottuk, ami segített megoldani a high_resolution_clock MinGW általi helytelen viselkedését;
- Biztosítottuk a késleltetett MEM MANAGED és SYSTEMMEM pufferek kiszabadítását a PrepareDraw végrehajtása előtt, ami javította a teljesítményt a Risen és Legend of the Heroes: Trails of the Sky játékokban;
- Támogatás került hozzáadásra , lehetővé téve a helyes renderelést a SpinTyres és Mudrunner játékokban;
- Javítottuk a kompatibilitást a (D3D9Ex). Figyelembe vettük a ResetEx és Reset feldolgozásának sajátosságait;
- Tisztítást és refaktorizálást végeztünk a kódon;
- Közvetlen WRITEONLY puffermapping biztosítása, ami pozitívan befolyásolhatja a teljesítményt és megkerülheti a
Counter-Strike: Global Offensive játékban fellépő hibát, amely a puffer ismételt írását okozza a feloldása után; - Megvalósítottuk a , amely lehetővé teszi a párbeszédablakok használatát teljes képernyős alkalmazásokban;
- Megvalósítottuk a , többek között , amely szükséges a SWVP (SoftWare Vertex Processing) számára;
- A frissített mintakövető, amely a jelenlegi kép fölött jelenik meg (heads-up display, HUD);
- Hozzáadva a d3d9.dialogBoxMode opció, amelyet kizárólag teljes képernyős üzemmód letiltására lehet használni;
- Teljesítményoptimalizálások történtek, és megoldották azokat a problémákat, amelyek a 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 és Risen 1 játékok indításakor jelentkeztek.
További megjegyzésként a projekt fejlesztője (DXGI, Direct3D 10 és Direct3D 11 megvalósítása Vulkan API fölött) ideiglenesen összpontosítson az hibajavítások végrehajtására, lelassítva a funkcionalitás bővítését. Ez a vágy a kód alapminőségének és a jövőbeli karbantartás bonyolultságának csökkenése miatt. Minden 1.4.x ágon végrehajtott frissítés panaszokat vált ki a regresszív változások miatt, amelyeket nem sikerül reprodukálni, lokalizálni és kijavítani.
Ezek a problémák a megjelenésük okának feltárását igénylik, különben a karbantartás bővítése mellett a megoldatlan kérdések fokozhatják a problémákat, és rémálommá válhat a karbantartási folyamat. Azokat a terveket, amelyeket a DXVK fejlesztője el akar érni, mielőtt csak hibajavítási módba lépne, a Vulkan bizonyos hasznos kiterjesztéseinek támogatásának hozzáadása és a D9VK projekt eredményeinek összevonása jelenti.
Kiegészítés: forró nyomokon a D9VK 0.40.1 javító kiadása, amelyben a vec4(1) alapértelmezett értéke a COLOR0-ban a vertex shaderekben, és megszűnt az a hiba, amely miatt a shader kimeneti slotok biteit alapértelmezés szerint helytelenül alkalmazták, és ezért a backend rosszul javította, így azok vec4(0) -ra cserélődtek.
Forrás: opennet.ru
