izdavanje projekta , koji omogućava implementaciju Direct3D 9, koja radi putem prevođenja poziva u grafički API . Projekt se temelji na kodnoj bazi projekta , koja je proširena podrškom za Direct3D 9. U usporedbi s implementacijom Direct3D 9 temeljenom na WineD3D, D9VK omogućava postizanje veće izvedbe, jer prevođenje Direct3D 9 putem OpenGL radi sporije od prevođenja putem Vulkan.
D9VK se može koristiti za pokretanje 3D aplikacija i igara u Linuxu pomoću Wine. Podržava pokretanje većine igara temeljenih na Direct3D 9, koje koriste verziju 2 ili 3 Shader Modela. Kod projekta je pod slobodnom licencom Zlib. Za korištenje D9VK potrebni su drajveri koji podržavaju API Vulkan, poput AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ i AMDVLK.
Glavna poboljšanja:
- Implementirana je mogućnost korištenja više od 4 GB video memorije u 32-bitnim aplikacijama, što je riješilo probleme prilikom pokretanja modova igara Skyrim i Oblivion;
- Uključena je asinhrona obrada izlaza rezultata renderiranja na ekran (faza predstave). Za smanjenje kašnjenja u glavnoj niti renderiranja, obrada izlaza obavlja se u niti prijenosa naredbi;
- Uklonjene su suvišne tačke sinkronizacije niti naredbi prilikom vađenja zatraženih podataka;
- Kod za određivanje unutarnjeg vremena prebačen je na korištenje platformi specifičnih tajmera, što je pomoglo riješiti probleme s netočnim ponašanjem high_resolution_clock iz MinGW;
- Osigurano je oslobađanje odgođenih bafera MANAGED i SYSTEMMEM u fazi prije izvođenja PrepareDraw, što je riješilo probleme s performansama u igrama Risen i Legend of the Heroes: Trails of the Sky;
- Dodana podrška , što je omogućilo ispravno renderiranje u igrama SpinTyres i Mudrunner;
- Poboljšana kompatibilnost s (D3D9Ex). Uzimana je u obzir specifičnost obrade ResetEx i Reset;
- Provodi se čišćenje i refaktoriranje koda;
- Osiguran je izravni mapping bafera WRITEONLY, što može pozitivno utjecati na performanse i izbjeći grešku u igri
Counter-Strike: Global Offensive, koja dovodi do nastavka zapisivanja u bafer nakon što je otključan; - Implementirana je metoda , koji omogućava korištenje dijaloških prozora u aplikacijama na cijelom ekranu;
- Implementirana je podrška , uključujući , potrebnog za SWVP (SoftWare Vertex Processing);
- Revidiran je brojčanik uzorkivača, prikazan preko trenutne slike (heads-up display, HUD);
- Dodana je opcija d3d9.dialogBoxMode koja se može koristiti za isključivanje rada samo u načinu punog zaslona;
- Optimizirane su performanse i riješeni problemi koji su se pojavljivali prilikom pokretanja igara 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 i Risen 1.
Dodatno se može istaknuti razvijatelj projekta (implementacija DXGI, Direct3D 10 i Direct3D 11 iznad Vulkan API-ja) na određeno vrijeme fokusirati će se samo na ispravke grešaka, usporavajući širenje funkcionalnosti. Takva želja strahom od smanjenja kvalitete koda i otežanom održavanju u budućnosti. Svako ažuriranje grane 1.4.x izaziva pritužbe na regresivne promjene koje nije moguće reproducirati, lokalizirati i ispraviti.
Ovi problemi zahtijevaju analizu uzroka njihovog nastanka, inače će ostavljanje istih neispravljenima uz daljnje povećanje funkcionalnosti samo pogoršati situaciju i pretvoriti proces održavanja u noćnu moru. Od planova koje DXVK razvijatelj namjerava realizirati prije prelaska u način isključivo ispravki grešaka, spominje se dodavanje podrške za neka korisna proširenja Vulkan i spajanje s radovima na projektu D9VK.
Dodatak: u žurbi korektivno izdanje D9VK 0.40.1, u kojem na vec4(1) vrijednost po defaultu za COLOR0 u vertex shaderima i ispravljen problem zbog kojeg su baiti slotova za izlaze shadera po defaultu pogrešno primjenjivani i stoga neispravno ispravljeni backendom, uzrokujući njihovu zamjenu s vec4(0).
Izvor: opennet.ru
