D7VK 2.2 vylepšuje podporu Direct3D 3 pro přehrávání klasických her z Windows na Linuxu

  • D7VK 2.2 výrazně vylepšuje podporu Direct3D 3, opravuje problémy se zařízeními, vyrovnávacími pamětí pro provádění a transformací vrcholů.
  • Aktualizace také vylepšuje správu textur a průhlednost barevných klíčů a snižuje režijní náklady na některé cesty Direct3D 5 a 6.
  • D7VK 2.2 je založen na DXVK 3.1 a nadále vylepšuje běh klasických her pro Windows pomocí Wine a Proton na Linuxu.

D7VK 2.2

D7VK 2.2 je nyní k dispozici jako nová verze vrstvy pro překlad grafiky určené pro spouštění klasických her pro Windows na Linuxu. Projekt, odvozený od DXVK, se zaměřuje na překlad starších API Direct3D 7, 6, 5 a 3 do Vulkanu pro použití s ​​Wine a Proton a tato nová verze věnuje významnou část své práce jedné z oblastí, která měla stále nejvíce nedostatků: podporu Direct3D 3.

Aktualizace vychází jen několik týdnů po D7VK 2.1 a pokračuje v procesu zrání technologie, která je obzvláště zajímavá pro ty, kteří chtějí hrát hry z konce 90. let a začátku roku 2000 na moderních linuxových systémech. Kromě vylepšení Direct3D 3 obsahuje D7VK 2.2 řadu oprav chyb a interních úprav a je založen na nedávné verzi DXVK 3.1.

D7VK 2.2 se zaměřuje na Direct3D 3

Hlavní nová funkce v D7VK 2.2 se týká Direct3D 3, API, které poněkud zaostávalo za ostatními staršími technologiemi podporovanými projektem. Ačkoli hry Direct3D 3, které vývojáři dokázali shromáždit a otestovat, již s D7VK fungovaly, stále existovalo několik hraničních případů a chování, které nebyly implementovány správně.

To bylo obzvláště problematické, protože katalog her používajících Direct3D 3 je obtížné rekonstruovat. Jedná se o velmi staré tituly, z nichž mnohé již nejsou komerčně dostupné nebo je těžké je sehnat, což ztěžuje testování všech možných implementací, se kterými by se v praxi mohlo setkat.

V této verzi vývojář přepracoval velkou část implementace Direct3D 3, aby se přiblížil úrovni vyspělosti dosažené ostatními API kompatibilními s D7VK.

Chování zařízení D3D3 odpovídá originálu

Jednou z technických změn je přepracování systému počítání referencí pro zařízení Direct3D 3. D7VK 2.2 upravuje tento mechanismus tak, aby jeho chování odpovídalo nativní implementaci API.

Tento typ detailu se uživateli může zdát irelevantní, ale v překladové vrstvě je klíčový. Starší hry se mohou spoléhat na specifické chování související s vytvářením a ničením objektů a zdánlivě malý rozdíl může vést k chybám, které je obtížné diagnostikovat.

Nová implementace tak snižuje pravděpodobnost, že některé tituly nedokážou spravovat svá grafická zařízení způsobem, který D7VK neočekával.

D7VK 2.2 zavádí vylepšení průhlednosti pomocí barevného klíče

D7VK 2.2 také upravuje správu barevného klíčování na čistě Direct3D 3 zařízeních. Doposud projekt používal velmi jednoduchý model, ve kterém tato funkce za určitých okolností zůstávala vždy povolená.

Nová verze umožňuje přesnou kontrolu nad tím, kdy ji povolit, a věrněji reprodukuje chování Direct3D 3. To je obzvláště důležité pro starší hry, které používají techniky průhlednosti založené na specifických barvách.

Kromě toho byly optimalizovány výpočty týkající se normalizovaných barevných rozsahů. Tyto hodnoty se nyní aktualizují pouze při změně popisu povrchu, což umožňuje jejich uložení do mezipaměti a pozdější opětovné použití.

Výsledkem by mělo být malé až střední zlepšení výkonu ve hrách, které používají průhlednost barevných kláves, a také správnější chování.

Opraveny okrajové případy ve vyrovnávacích pamětech pro provádění.

Dalším důležitým aspektem D7VK 2.2 je revize validací vyrovnávací paměti pro spuštění Direct3D 3. Projekt reorganizoval část této logiky, aby řešil různé okrajové případy identifikované během testování.

Pro ověření očekávaného chování API se vývojář mohl spolehnout také na testy Wine, které se konkrétně týkají Direct3D 3. Tyto testy umožňují porovnat chování D7VK s chováním očekávaným od kompatibilní implementace a odhalit rozdíly, které by mohly zůstat nepovšimnuty při použití pouze známých her.

Tato práce je obzvláště cenná pro tak staré API, kde je málo titulů dostupných pro testování a ne vždy pokrývají všechny možnosti původní implementace.

Větší robustnost pro textury Direct3D 5 a 3

Aktualizace se neomezuje pouze na Direct3D 3. D7VK 2.2 také vylepšuje zpracování textur používaných Direct3D 5 a Direct3D 3, aby se zabránilo tomu, aby se podkladové povrchy dostaly mimo rozsah, i když jsou stále používány.

Tato změna zvyšuje robustnost zpracování grafických zdrojů a dokáže vyřešit chyby, které se objevují pouze při určitých sekvencích operací. Vývojář také poznamenává, že toto vylepšení mělo pozitivní vliv na Frogger , původně vydaný v roce 1997.

Tato záplata ukazuje, jak interní změny určené k řešení problémů se správou zdrojů mohou mít viditelný dopad na konkrétní hry, a to i v případě, že modifikace není pro ně konkrétně navržena.

D7VK 2.2 také opravuje problémy s transformací a maticemi

D7VK 2.2 také opravuje chybu související s transformací vyrovnávacích pamětí pro spuštění Direct3D 3. Problém byl způsoben nesprávným určením formátu FVF použitého pro vertexové vstupy.

Byl také opraven problém s výpočty starších projekčních matic. Chyba byla objevena pomocí testu Wine, který se nechoval očekávaným způsobem a mohl mít negativní dopad na některé aplikace Direct3D 6, 5 a 3.

Tyto změny dále ukazují důležitost testování kompatibility pro D7VK. Mnoho problémů se staršími grafickými API se nemusí nutně objevovat v nejoblíbenějších hrách, ale spíše ve specifických kombinacích funkcí, které mohou zůstat skryté po celá léta.

Menší režie u starších cest kreslení

Nová verze také reorganizuje cestu kreslení Begin() / Vertex() / End() Používáno Direct3D 6 a Direct3D 5. Tato modifikace snižuje spotřebu paměti a poskytuje malé zlepšení výkonu.

Frogger opět patří mezi hry, které z této změny mohou těžit. I když tato optimalizace nezdvojnásobí FPS všech retro titulů, pomůže snížit část režijních nákladů nahromaděných na trasách používaných staršími API.

D7VK již v předchozích verzích prošel významnými optimalizacemi výkonu, takže současná práce se stále více zaměřuje na zdokonalení implementace a eliminaci zbytečných nákladů.

D7VK 2.2 součást DXVK 3.1

Další důležitou vlastností této verze je, že D7VK 2.2 byla nahrazena verzí DXVK 3.1 . To umožňuje projektu těžit z novějšího základu a udržet jeho implementaci v souladu s vývojem DXVK.

Vztah mezi těmito dvěma projekty je obzvláště důležitý. D7VK vznikl jako odnož DXVK specializující se na starší Direct3D API, která nejsou pokryta standardním používáním DXVK, zatímco oba používají Vulkan jako cíl pro grafická volání pocházející z Windows.

Díky tomuto vztahu mohou strukturální vylepšení, která DXVK přináší, sloužit jako základ pro další vývoj D7VK, aniž by bylo nutné od nuly vyvíjet veškerou infrastrukturu nezbytnou pro komunikaci s Vulkanem.

Projekt určený k oživení klasických her

D7VK má v rámci linuxového ekosystému velmi specifický cíl: umožnit spuštění her pro Windows, které používají Direct3D 7, 6, 5 a 3, pomocí Vulkanu. To ho odlišuje od DXVK, který se primárně zaměřuje na Direct3D 9, 10 a 11.

Důležitost projektu se zvyšuje, pokud jde o tituly, které závisí na grafických technologiích, které Wine přímo neimplementuje stejným způsobem, nebo které by mohly těžit z přesnějšího překladu do Vulkanu.

Kombinací D7VK s Wine nebo Protonem mohou uživatelé Linuxu obnovit značné množství softwaru z konce 20. a začátku 21. století, aniž by se nutně museli uchýlit ke staré instalaci Windows.

Pro ty, kteří používají Wine nebo Proton k hraní her na Linuxu a zajímají se o oživení klasických titulů, D7VK 2.2 posiluje jednu z nejdůležitějších součástí infrastruktury kompatibility. A i když mnoho jeho vylepšení může být pro uživatele neviditelných, každá oprava zvyšuje šance, že další hra ztracená v éře Direct3D 3, 5, 6 nebo 7 bude moci opět správně fungovat na moderním linuxovém systému.


Přidat jako preferovaný zdroj v Googlu