D9VK 0.40 kiadás, a Direct3D 9 Vulkanon keresztüli megvalósításával

Megvalósult a projekt kiadása D9VK 0.40, amely a Direct3D 9 megvalósítását nyújtja, hívások átkonvertálásával a grafikus API-ba Vulkan. A projekt a DXVKkó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 terjesztésre kerül 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 D3DTA_CONSTANT, lehetővé téve a helyes renderelést a fényhatás a SpinTyres és Mudrunner játékokban;
  • Javítottuk a kompatibilitást a DirectX 9Ex (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 SetDialogBoxMode, amely lehetővé teszi a párbeszédablakok használatát teljes képernyős alkalmazásokban;
  • Megvalósítottuk a vertex blending, többek között indexed vertex blending, 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 szándékát a projekt fejlesztője DXVK (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 az okozza 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 megalakult a D9VK 0.40.1 javító kiadása, amelyben javítva lett 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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster