vydání projektu , která implementuje Direct3D 9 a pracuje prostřednictvím překladu volání do grafického API . Projekt je založen na kódové základně projektu , která byla rozšířena o podporu Direct3D 9. Ve srovnání s implementací Direct3D 9 založenou na WineD3D, D9VK umožňuje dosáhnout vyššího výkonu, jelikož překlad Direct3D 9 přes OpenGL funguje pomaleji než překlad přes Vulkan.
D9VK lze použít ke spuštění 3D aplikací a her v Linuxu prostřednictvím Wine. Podporováno je spuštění většiny her založených na Direct3D 9, které používají verzi 2 nebo 3 Shader Modelu. Kód projektu je dostupný pod volnou licencí Zlib. Pro používání D9VK jsou vyžadovány ovladače s podporou API Vulkan, jako jsou AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ a AMDVLK.
Hlavní vylepšení:
- Byla implementována možnost použití více než 4 GB video paměti v 32bitových aplikacích, což vyřešilo problémy při spuštění modů her Skyrim a Oblivion;
- Byla zahrnuta asynchronní zpracování výstupu renderování na obrazovku (fáze prezentace). Aby se snížily zpoždění v hlavním vlákně renderování, zpracování výstupu se provádí ve vlákně příkazu (thread of command submission);
- Byly odstraněny nadbytečné synchronizační body příkazu při extrakci požadovaných dat;
- Kód pro určení vnitřního času byl převeden na použití specifického pro platformu časovače, což pomohlo vyřešit problémy s nesprávným chováním high_resolution_clock z MinGW;
- Bylo zajištěno uvolnění odložených bufferů MANAGED a SYSTEMMEM ve fázi před provedením PrepareDraw, což vyřešilo problémy s výkonem v hrách Risen a Legend of the Heroes: Trails of the Sky;
- Byla přidána podpora , umožňující správné vykreslení ve hrách SpinTyres a Mudrunner;
- Byla vylepšena kompatibilita s (D3D9Ex). Byla zohledněna specifika zpracování ResetEx a Reset;
- Byly provedeny úklidy a refaktorizace kódu;
- Bylo zajištěno přímé mapování bufferů WRITEONLY, což může pozitivně ovlivnit výkon a obejít chybu ve hře
Counter-Strike: Global Offensive, vedoucí k pokračování zápisu do bufferu po jeho odemknutí; - Byla implementována metoda , umožňující používat dialogová okna v celoobrazovkových aplikacích;
- Byla implementována podpora , včetně , potřebného pro SWVP (SoftWare Vertex Processing);
- Byl přepracován čítač vzorkovače, zobrazený na aktuálním obraze (heads-up display, HUD);
- Přidána volba d3d9.dialogBoxMode, kterou lze použít k vypnutí režimu na celé obrazovce;
- Byla provedena optimalizace výkonu a vyřešeny problémy, které se objevovaly při spuštění her jako 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 a Risen 1.
Dále lze poznamenat vývojáře projektu (implementace DXGI, Direct3D 10 a Direct3D 11 nad API Vulkan) se na čas zaměřit pouze na opravu chyb, přičemž rozšíření funkcionality bylo pozastaveno. Taková touha se obavami o kvalitu kódové základny a zpřístupnění údržby v budoucnosti. Každá aktualizace větve 1.4.x vyvolává stížnosti na regresivní změny, které se nedaří reprodukovat, lokalizovat a odstranit.
Tyto problémy vyžadují analýzu příčin jejich vzniku, jinak by ponechání bez opravy při pokračujícím zvyšování funkcionality mohlo situaci pouze zhoršit a proměnit proces údržby v noční můru. Mezi plány vývojáře DXVK, které hodlá uskutečnit před přechodem na režim pouze pro opravy chyb, patří přidání podpory některých užitečných rozšíření Vulkan a sloučení s pracemi projektu D9VK.
Doplňující informace: na horké stopy opravené vydání D9VK 0.40.1, ve kterém na vec4(1) výchozí hodnota pro COLOR0 ve vertex shaderech a odstraněna chyba, kvůli které byly bity slotů pro výstupy shaderu výchozím způsobem nesprávně aplikovány a tudíž nesprávně opraveny backendem, což vedlo k jejich nahrazení vec4(0).
Zdroj: opennet.ru
