
A D7VK 2.2 mostantól elérhető a grafikus fordítási réteg új verziójaként, amelyet klasszikus Windows játékok Linuxon történő futtatására terveztek. A DXVK-ból származó projekt a régebbi Direct3D 7, 6, 5 és 3 API-k Vulkanra fordítására összpontosít a Wine és Proton használatához, és ez az új verzió munkájának jelentős részét az egyik olyan területre fordítja, amely továbbra is a legtöbb hiányossággal küzdött: a Direct3D 3 támogatására.
A frissítés mindössze néhány héttel a D7VK 2.1 után érkezik , és folytatja egy olyan technológia érlelési folyamatát, amely különösen érdekes azok számára, akik a 90-es évek végi és a 2000-es évek eleji játékokkal szeretnének játszani modern Linux rendszereken. A Direct3D 3 fejlesztése mellett a D7VK 2.2 számos hibajavítást és belső módosítást tartalmaz, és a legújabb DXVK 3.1 verzión alapul.
A D7VK 2.2 a Direct3D 3-ra összpontosít
A D7VK 2.2 fő új funkciója a Direct3D 3-hoz kapcsolódik, egy olyan API-hoz, amely némileg lemaradt a projekt által támogatott többi régebbi technológiához képest. Bár a fejlesztő által összegyűjtött és tesztelt Direct3D 3 játékok már működtek a D7VK-val, még mindig voltak olyan szélsőséges esetek és viselkedések, amelyeket nem sikerült helyesen megvalósítani.
Ez különösen problémás volt, mivel a Direct3D 3-at használó játékok katalógusát nehéz rekonstruálni. Ezek nagyon régi címek, amelyek közül sok már nem kapható kereskedelmi forgalomban, vagy nehezen található meg, így nehéz volt a gyakorlatban előforduló összes lehetséges implementációt tesztelni.
Ezzel a verzióval a fejlesztő a Direct3D 3 implementációjának nagy részét átdolgozta, hogy közelebb hozza a D7VK-val kompatibilis többi API által elért érettségi szinthez.
A D3D3 eszközök viselkedése megfelel az eredetinek
Az egyik technikai változás a Direct3D 3 eszközök referenciaszámláló rendszerének újragondolása. A D7VK 2.2 módosítja ezt a mechanizmust, hogy viselkedése megfeleljen a natív API implementáció viselkedésének.
Ez a fajta részlet lényegtelennek tűnhet a felhasználó számára, de kulcsfontosságú egy fordítási rétegben. A régebbi játékok az objektumok létrehozásához és megsemmisítéséhez kapcsolódó specifikus viselkedésekre támaszkodhatnak, és egy látszólag kis eltérés nehezen diagnosztizálható hibákhoz vezethet.
Az új implementáció így csökkenti annak az esélyét, hogy bizonyos címek ne tudják olyan módon kezelni a grafikus eszközeiket, amire a D7VK nem számított.
A D7VK 2.2 javítja az átlátszóságot a színkulcs használatával
A D7VK 2.2 módosítja a színkulcs- kezelést a tisztán Direct3D 3 eszközökön. Eddig a projekt egy nagyon egyszerű modellt használt, amelyben ez a funkció bizonyos körülmények között mindig engedélyezve maradt.
Az új verzió precízen szabályozza, hogy mikor kell engedélyezni, így hűebben reprodukálja a Direct3D 3 viselkedését. Ez különösen fontos a régebbi játékoknál, amelyek meghatározott színeken alapuló átlátszósági technikákat használnak.
Ezenkívül optimalizálták a normalizált színtartományokhoz kapcsolódó számításokat. Ezek az értékek mostantól csak akkor frissülnek, ha a felületleírás megváltozik, így gyorsítótárazhatók és később újra felhasználhatók.
Az eredménynek kismértékű vagy közepes teljesítményjavulást kell eredményeznie a színkulcsok átlátszóságát használó játékokban, valamint helyesebb viselkedést.
A végrehajtási pufferekben lévő határesetek korrigálva vannak
A D7VK 2.2 egy másik fontos aspektusa a Direct3D 3 végrehajtási puffer validációinak felülvizsgálata. A projekt átszervezte ennek a logikának egy részét, hogy kezelje a tesztelés során azonosított különféle szélsőséges eseteket.
Az API várható viselkedésének ellenőrzéséhez a fejlesztő a Direct3D 3-hoz kapcsolódó Wine tesztekre is támaszkodhatott. Ezek a tesztek lehetővé teszik a D7VK viselkedésének összehasonlítását egy kompatibilis implementációtól elvárt viselkedéssel, és olyan különbségek észlelését, amelyek csak a jól ismert játékok használata esetén észrevétlenek maradnának.
Ez a munka különösen értékes egy ilyen régi API esetében, ahol a tesztelésre elérhető címek szűkösek, és nem mindig fedik le az eredeti implementáció összes lehetőségét.
Nagyobb robusztusság a Direct3D 5 és 3 textúrákhoz
A frissítés nem korlátozódik a Direct3D 3-ra. A D7VK 2.2 javítja a Direct3D 5 és a Direct3D 3 által használt textúrák kezelését is, hogy megakadályozza, hogy az alatta lévő felületek használat közben is hatótávolságon kívülre kerüljenek.
A változás növeli a grafikus erőforrások kezelésének robusztusságát, és képes megoldani azokat a hibákat, amelyek csak bizonyos műveleti sorozatok során jelentkeznek. A fejlesztő azt is megjegyzi, hogy ez a fejlesztés pozitív hatással volt a Froggerre , amely eredetileg 1997-ben jelent meg.
A javítás bemutatja, hogy az erőforrás-gazdálkodási problémák megoldására irányuló belső változtatások hogyan válthatnak ki látható hatást bizonyos játékokra, még akkor is, ha a módosítást nem kifejezetten azokra tervezték.
A D7VK 2.2 a transzformációs és mátrixfeladatokat is kijavítja.
A D7VK 2.2 kijavít egy hibát is, amely a Direct3D 3 végrehajtási puffereinek átalakításával kapcsolatos. A problémát a csúcspont bemenetekhez használt FVF formátum helytelen meghatározása okozta.
Kijavítottunk egy problémát a korábbi vetítési mátrix számításokkal kapcsolatban is. A hibát egy Wine teszt során fedezték fel, amely nem a várt módon viselkedett, és negatívan befolyásolhatott volna bizonyos Direct3D 6, 5 és 3 alkalmazásokat.
Ezek a változások tovább hangsúlyozzák a D7VK kompatibilitási tesztelésének fontosságát. A régebbi grafikus API-kkal kapcsolatos problémák közül sok nem feltétlenül a legnépszerűbb játékokban jelentkezik, hanem inkább bizonyos funkciók kombinációiban, amelyek évekig rejtve maradhatnak.
Kevesebb terhelés a hagyományos rajzolási útvonalakon
Az új verzió a rajzolási útvonalat is átszervezi Begin() / Vertex() / End() A Direct3D 6 és a Direct3D 5 használja. A módosítás csökkenti a memóriafogyasztást és kismértékű teljesítményjavulást biztosít.
A Frogger ismét azon játékok közé tartozik, amelyek profitálhatnak ebből a változásból. Bár ez az optimalizálás nem fogja megduplázni az összes retró cím FPS-ét, segít csökkenteni a régebbi API-k által használt útvonalakon felhalmozódott terhelést.
A D7VK már a korábbi verziókban is jelentős teljesítményoptimalizáláson esett át, így a jelenlegi munka egyre inkább a megvalósítás finomítására és a felesleges költségek kiküszöbölésére összpontosít.
D7VK 2.2, a DXVK 3.1 része
A verzió egy másik fontos jellemzője, hogy a D7VK 2.2-t felváltotta a DXVK 3.1 . Ez lehetővé teszi a projekt számára, hogy egy újabb bázis előnyeit élvezze, és megvalósítása összhangban maradjon a DXVK fejlődésével.
A két projekt közötti kapcsolat különösen fontos. A D7VK a DXVK elágazásaként jött létre, amely a szabványos DXVK használat által nem lefedett régebbi Direct3D API-kra specializálódott, miközben mindkettő a Vulkant használja célállomásként a Windowsból származó grafikus hívások számára.
Ennek a kapcsolatnak köszönhetően a DXVK-ba érkező strukturális fejlesztések alapul szolgálhatnak a D7VK további fejlődéséhez anélkül, hogy a Vulkannal való kommunikációhoz szükséges összes infrastruktúrát a nulláról kellene fejleszteni.
Egy projekt, amelynek célja a klasszikus játékok újraélesztése
A D7VK-nak egy nagyon konkrét célja van a Linux ökoszisztémán belül: lehetővé tenni a Direct3D 7, 6, 5 és 3 verzióját használó Windows játékok Vulkan használatával történő futtatását. Ez különbözteti meg a DXVK-tól, amely elsősorban a Direct3D 9, 10 és 11 verziókra összpontosít.
A projekt fontossága megnő, ha olyan címekről van szó, amelyek olyan grafikai technológiákra támaszkodnak, amelyeket a Wine nem valósít meg közvetlenül ugyanúgy, vagy amelyek profitálhatnak egy pontosabb Vulkan-fordításból.
A D7VK Wine-nal vagy Protonnal kombinálásával a Linux-felhasználók jelentős mennyiségű, a 20. század végéről és a 21. század elejéről származó szoftvert állíthatnak helyre anélkül, hogy feltétlenül egy régi Windows-telepítéshez kellene folyamodniuk.
Azok számára, akik Wine-t vagy Protont használnak Linuxon való játékhoz, és érdeklődnek a klasszikus címek felélesztése iránt, a D7VK 2.2 megerősíti a kompatibilitási infrastruktúra egyik legfontosabb elemét. És bár számos fejlesztése láthatatlan lehet a felhasználó számára, minden egyes javítás növeli annak esélyét, hogy egy újabb, a Direct3D 3, 5, 6 vagy 7 korszakában elveszett játék ismét megfelelően működjön egy modern Linux rendszeren.