D7VK 2.2 forbedrer Direct3D 3-understøttelse til afspilning af Windows-klassikere på Linux

  • D7VK 2.2 forbedrer Direct3D 3-understøttelse betydeligt, retter enhedsproblemer, udfører buffere og vertex-transformation.
  • Opdateringen forbedrer også teksturstyring og gennemsigtighed i farvetaster og reducerer overhead på nogle Direct3D 5- og 6-stier.
  • D7VK 2.2 er baseret på DXVK 3.1 og fortsætter med at forbedre kørsel af klassiske Windows-spil ved hjælp af Wine og Proton på Linux.

D7VK 2.2

D7VK 2.2 er nu tilgængelig som en ny version af grafikoversættelseslaget, der er designet til at køre klassiske Windows-spil på Linux. Projektet, der er afledt af DXVK, fokuserer på at oversætte de ældre Direct3D 7, 6, 5 og 3 API'er til Vulkan til brug med Wine og Proton, og denne nye version dedikerer en betydelig del af sit arbejde til et af de områder, der stadig havde de største mangler: Direct3D 3-understøttelse.

Opdateringen kommer blot et par uger efter D7VK 2.1 og fortsætter modningsprocessen for en teknologi, der er særligt interessant for dem, der ønsker at spille spil fra slutningen af ​​90'erne og begyndelsen af ​​2000'erne på moderne Linux-systemer. Udover at forbedre Direct3D 3, indeholder D7VK 2.2 adskillige fejlrettelser og interne justeringer og er baseret på den seneste DXVK 3.1-version.

D7VK 2.2 fokuserer på Direct3D 3

Den vigtigste nye funktion i D7VK 2.2 er relateret til Direct3D 3, en API, der var sakket noget bagud i forhold til de andre ældre teknologier, der blev understøttet af projektet. Selvom de Direct3D 3-spil, som udvikleren havde været i stand til at indsamle og teste, allerede fungerede med D7VK, var der stadig flere edge cases og adfærdsmønstre, der ikke var implementeret korrekt.

Dette var især problematisk, fordi kataloget over spil, der bruger Direct3D 3, er vanskeligt at rekonstruere. Det er meget gamle titler, hvoraf mange ikke længere er kommercielt tilgængelige eller er svære at finde, hvilket gør det udfordrende at teste alle de mulige implementeringer, der kan opstå i praksis.

Med denne version har udvikleren revideret en stor del af Direct3D 3-implementeringen for at bringe den tættere på det modenhedsniveau, der opnås af de andre API'er, der er kompatible med D7VK.

D3D3-enhedernes opførsel er i overensstemmelse med originalen

En af de tekniske ændringer involverer en ny udførelse af referencetællingssystemet for Direct3D 3-enheder. D7VK 2.2 ændrer denne mekanisme, så dens opførsel matcher den native API-implementerings.

Denne type detaljer kan virke irrelevante for brugeren, men de er afgørende i et oversættelseslag. Ældre spil kan være afhængige af specifikke adfærdsmønstre relateret til oprettelse og ødelæggelse af objekter, og en tilsyneladende lille forskel kan føre til fejl, der er vanskelige at diagnosticere.

Den nye implementering reducerer dermed chancerne for, at visse titler ikke kan administrere deres grafikenheder på en måde, som D7VK ikke havde forventet.

D7VK 2.2 introducerer forbedringer af gennemsigtighed ved hjælp af farvetast

D7VK 2.2 ændrer også farvetaststyring på rene Direct3D 3-enheder. Indtil nu har projektet brugt en meget simpel model, hvor denne funktion altid forblev aktiveret under visse omstændigheder.

Den nye version giver præcis kontrol over, hvornår den skal aktiveres, hvilket mere trofast gengiver Direct3D 3's opførsel. Dette er især vigtigt for ældre spil, der bruger gennemsigtighedsteknikker baseret på specifikke farver.

Derudover er beregningerne relateret til normaliserede farveområder blevet optimeret. Disse værdier opdateres nu kun, når overfladebeskrivelsen ændres, hvilket gør det muligt at cache dem og genbruge dem senere.

Resultatet burde være en lille til moderat forbedring i ydeevnen i spil, der bruger farvetasternes gennemsigtighed, samt en mere korrekt opførsel.

Grænsetilfælde i udførelsesbuffere korrigeres

Et andet vigtigt aspekt af D7VK 2.2 er revisionen af ​​Direct3D 3- eksekveringsbuffervalideringerne . Projektet har reorganiseret en del af denne logik for at håndtere forskellige edge-tilfælde, der blev identificeret under testning.

For at verificere API'ens forventede opførsel har udvikleren også kunnet benytte Wine-tests specifikt relateret til Direct3D 3. Disse tests gør det muligt at sammenligne D7VK's opførsel med den, der forventes af en kompatibel implementering, og opdage forskelle, der kan gå ubemærket hen, når man kun bruger kendte spil.

Dette arbejde er særligt værdifuldt for en så gammel API, hvor de tilgængelige titler til test er knappe og ikke altid dækker alle mulighederne i den oprindelige implementering.

Større robusthed for Direct3D 5 og 3 teksturer

Opdateringen er ikke begrænset til Direct3D 3. D7VK 2.2 forbedrer også håndteringen af ​​teksturer, der bruges af Direct3D 5 og Direct3D 3, for at forhindre, at underliggende overflader kommer uden for rækkevidde, mens de stadig er i brug.

Ændringen øger robustheden af ​​håndteringen af ​​grafikressourcer og kan løse fejl, der kun opstår under bestemte operationssekvenser. Udvikleren bemærker også, at denne forbedring har haft en positiv effekt på Frogger , der oprindeligt blev udgivet i 1997.

Programrettelsen viser, hvordan interne ændringer, der har til formål at løse problemer med ressourcehåndtering, kan have synlige effekter på specifikke spil, selv når ændringen ikke er specifikt designet til dem.

D7VK 2.2 korrigerer også transformations- og matrixproblemer

D7VK 2.2 retter også en fejl relateret til transformationen af ​​Direct3D 3-udførelsesbuffere. Problemet skyldtes en forkert bestemmelse af det FVF-format, der bruges til vertex-input.

Et problem med ældre projektionsmatrixberegninger er også blevet rettet. Fejlen blev opdaget gennem en Wine-test, der ikke opførte sig som forventet og kunne have påvirket visse Direct3D 6-, 5- og 3-applikationer negativt.

Disse ændringer demonstrerer yderligere vigtigheden af ​​kompatibilitetstest for D7VK. Mange af problemerne med ældre grafik-API'er optræder ikke nødvendigvis i de mest populære spil, men snarere i specifikke kombinationer af funktioner, der kan forblive skjulte i årevis.

Mindre overhead på ældre tegnestier

Den nye version omorganiserer også tegnestien Begin() / Vertex() / End() Bruges af Direct3D 6 og Direct3D 5. Ændringen reducerer hukommelsesforbruget og giver en lille forbedring af ydeevnen.

Endnu engang er Frogger blandt de spil, der kan drage fordel af denne ændring. Selvom denne optimering ikke vil fordoble FPS'en for alle retro-titler, hjælper den med at reducere noget af den overhead, der akkumuleres på de ruter, der bruges af ældre API'er.

D7VK har allerede modtaget betydelige ydeevneoptimeringer i tidligere versioner, så det nuværende arbejde fokuserer i stigende grad på at forfine implementeringen og eliminere unødvendige omkostninger.

D7VK 2.2 del af DXVK 3.1

En anden vigtig funktion ved denne version er, at D7VK 2.2 er blevet erstattet af DXVK 3.1 . Dette gør det muligt for projektet at drage fordel af en nyere base og holde implementeringen i overensstemmelse med udviklingen af ​​DXVK.

Forholdet mellem de to projekter er særligt vigtigt. D7VK opstod som en forgrening af DXVK, der specialiserede sig i ældre Direct3D API'er, der ikke er dækket af standard DXVK-brug, mens begge bruger Vulkan som destination for grafikkald, der stammer fra Windows.

Takket være dette forhold kan de strukturelle forbedringer, der kommer til DXVK, tjene som grundlag for, at D7VK kan fortsætte med at udvikle sig uden at skulle udvikle al den infrastruktur, der er nødvendig for at kommunikere med Vulkan, fra bunden.

Et projekt designet til at genoplive klassiske spil

D7VK har et meget specifikt mål inden for Linux-økosystemet: at tillade Windows-spil, der bruger Direct3D 7, 6, 5 og 3, at køre med Vulkan. Dette adskiller det fra DXVK, som primært fokuserer på Direct3D 9, 10 og 11.

Projektets betydning stiger, når det kommer til titler, der er afhængige af grafikteknologier, som Wine ikke direkte implementerer på samme måde, eller som kan drage fordel af en mere præcis oversættelse til Vulkan.

Ved at kombinere D7VK med Wine eller Proton kan Linux-brugere gendanne en betydelig mængde software fra slutningen af ​​det 20. og begyndelsen af ​​det 21. århundrede uden nødvendigvis at skulle ty til en gammel Windows-installation.

For dem, der bruger Wine eller Proton til at spille spil på Linux og er interesserede i at genoplive klassiske titler, styrker D7VK 2.2 en af ​​de vigtigste dele af kompatibilitetsinfrastrukturen. Og selvom mange af forbedringerne kan være usynlige for brugeren, øger hver rettelse chancerne for, at et andet spil, der gik tabt i Direct3D 3, 5, 6 eller 7-æraen, igen kan fungere korrekt på et moderne Linux-system.


Tilføj som foretrukken kilde i Google