„D7VK 2.2“ pagerina „Direct3D 3“ palaikymą, skirtą žaisti „Windows“ klasikinius žaidimus „Linux“ sistemoje

  • „D7VK 2.2“ gerokai patobulina „Direct3D 3“ palaikymą, ištaisydama įrenginių, vykdymo buferių ir viršūnių transformacijų problemas.
  • Atnaujinimas taip pat pagerina tekstūrų valdymą ir spalvų raktų skaidrumą bei sumažina kai kurių „Direct3D 5“ ir „6“ kelių apkrovą.
  • „D7VK 2.2“ yra pagrįstas „DXVK 3.1“ ir toliau tobulina klasikinių „Windows“ žaidimų veikimą naudojant „Wine“ ir „Proton“ „Linux“ sistemoje.

D7VK 2.2

„D7VK 2.2“ dabar yra prieinama kaip nauja grafikos vertimo sluoksnio versija, skirta klasikiniams „Windows“ žaidimams paleisti „Linux“ sistemoje. Projektas, sukurtas iš „DXVK“, daugiausia dėmesio skiria senesnių „Direct3D 7“, „6“, „5“ ir „3“ API vertimui į „Vulkan“, kad būtų galima naudoti su „Wine“ ir „Proton“, o ši nauja versija didelę savo darbo dalį skiria vienai iš sričių, kurioje vis dar buvo daugiausia trūkumų: „Direct3D 3“ palaikymui.

Atnaujinimas pasirodo vos kelios savaitės po „D7VK 2.1“ išleidimo ir tęsia technologijos, kuri ypač įdomi tiems, kurie nori žaisti 90-ųjų pabaigos ir 2000-ųjų pradžios žaidimus moderniose „Linux“ sistemose, brandinimo procesą. Be „Direct3D 3“ patobulinimų, „D7VK 2.2“ apima daugybę klaidų pataisymų ir vidinių pakeitimų ir yra pagrįstas naujausia „DXVK 3.1“ versija.

D7VK 2.2 daugiausia dėmesio skiria „Direct3D 3“

Pagrindinė nauja „D7VK 2.2“ funkcija yra susijusi su „Direct3D 3“ – API, kuri šiek tiek atsiliko nuo kitų senesnių projekto palaikomų technologijų. Nors „Direct3D 3“ žaidimai, kuriuos kūrėjas sugebėjo surinkti ir išbandyti, jau veikė su „D7VK“, vis dar buvo keletas netinkamai įdiegtų kraštutinių atvejų ir elgsenos sutrikimų.

Tai buvo ypač problemiška, nes žaidimų, naudojančių „Direct3D 3“, katalogą sunku atkurti. Tai labai seni žaidimai, kurių daugelis nebėra komerciškai prieinami arba juos sunku rasti, todėl sunku išbandyti visus įmanomus jų įgyvendinimus praktikoje.

Šioje versijoje kūrėjas peržiūrėjo didelę „Direct3D 3“ įgyvendinimo dalį, kad ji priartėtų prie kitų su D7VK suderinamų API pasiekto brandos lygio.

D3D3 įrenginių veikimas atitinka originalą

Vienas iš techninių pakeitimų yra susijęs su etalonų skaičiavimo sistemos, skirtos „Direct3D 3“ įrenginiams, perdarymu. „D7VK 2.2“ modifikuoja šį mechanizmą taip, kad jo veikimas atitiktų gimtosios API įgyvendinimo veikimą.

Šio tipo detalės vartotojui gali atrodyti nereikšmingos, tačiau jos yra labai svarbios vertimo sluoksnyje. Senesni žaidimai gali pasikliauti specifiniais objektų kūrimu ir naikinimu susijusiais veiksmais, o iš pažiūros nedidelis skirtumas gali sukelti sunkiai diagnozuojamas klaidas.

Taigi naujas įdiegimas sumažina tikimybę, kad tam tikri žaidimai nesugebės valdyti savo grafikos įrenginių taip, kaip „D7VK“ nesitikėjo.

„D7VK 2.2“ patobulina skaidrumą naudojant spalvų raktą

„D7VK 2.2“ taip pat modifikuoja spalvų klavišų valdymą įrenginiuose, kuriuose naudojama tik „Direct3D 3“ technologija. Iki šiol projekte buvo naudojamas labai paprastas modelis, kuriame ši funkcija tam tikromis aplinkybėmis visada būdavo įjungta.

Naujoji versija leidžia tiksliai kontroliuoti, kada jį įjungti, tiksliau atkuriant „Direct3D 3“ elgesį. Tai ypač svarbu senesniems žaidimams, kuriuose naudojamos skaidrumo technikos, pagrįstos konkrečiomis spalvomis.

Be to, optimizuoti su normalizuotais spalvų diapazonais susiję skaičiavimai. Šios vertės dabar atnaujinamos tik pasikeitus paviršiaus aprašymui, todėl jas galima išsaugoti talpykloje ir pakartotinai naudoti vėliau.

Rezultatas turėtų būti nedidelis arba vidutinis našumo pagerėjimas žaidimuose, kuriuose naudojamas spalvų klavišų skaidrumas, taip pat teisingesnis veikimas.

Ribiniai atvejai vykdymo buferiuose yra ištaisyti

Kitas svarbus „D7VK 2.2“ aspektas yra „Direct3D 3“ vykdymo buferio patvirtinimų peržiūra. Projekte buvo pertvarkyta dalis šios logikos, kad būtų galima spręsti įvairius testavimo metu nustatytus kraštutinius atvejus.

Siekdamas patikrinti numatomą API veikimą, kūrėjas taip pat galėjo pasikliauti „Wine“ testais, specialiai susijusiais su „Direct3D 3“. Šie testai leidžia palyginti D7VK veikimą su suderinamo įdiegimo elgesiu ir aptikti skirtumus, kurie gali likti nepastebėti naudojant tik gerai žinomus žaidimus.

Šis darbas yra ypač vertingas tokiai senai API sąsajai, kur testavimui skirtų pavadinimų yra mažai ir jie ne visada apima visas originalaus įgyvendinimo galimybes.

Didesnis „Direct3D 5“ ir „3“ tekstūrų patikimumas

Atnaujinimas neapsiriboja „Direct3D 3“. „D7VK 2.2“ taip pat pagerina „Direct3D 5“ ir „Direct3D 3“ naudojamų tekstūrų tvarkymą, kad būtų išvengta, jog pagrindiniai paviršiai išeitų iš diapazono, kol jie vis dar naudojami.

Šis pakeitimas padidina grafikos išteklių tvarkymo patikimumą ir gali išspręsti klaidas, kurios atsiranda tik atliekant tam tikras operacijų sekas. Kūrėjas taip pat pažymi, kad šis patobulinimas turėjo teigiamos įtakos „Frogger“ , kuri iš pradžių buvo išleista 1997 m.

Pataisa rodo, kaip vidiniai pakeitimai, skirti spręsti išteklių valdymo problemas, gali turėti matomą poveikį konkretiems žaidimams, net jei modifikacija nėra specialiai jiems sukurta.

D7VK 2.2 taip pat ištaiso transformacijos ir matricų problemas

„D7VK 2.2“ taip pat ištaiso klaidą, susijusią su „Direct3D 3“ vykdymo buferių transformacija. Problemą sukėlė neteisingas viršūnių įvestims naudojamo FVF formato nustatymas.

Taip pat ištaisyta problema, susijusi su senesnių projekcijų matricų skaičiavimais. Klaida buvo aptikta atliekant „Wine“ testą, kuris neveikė taip, kaip tikėtasi, ir galėjo neigiamai paveikti tam tikras „Direct3D 6“, „5“ ir „3“ programas.

Šie pakeitimai dar labiau parodo D7VK suderinamumo testavimo svarbą. Daugelis senesnių grafikos API problemų nebūtinai atsiranda populiariausiuose žaidimuose, o veikiau specifiniuose funkcijų deriniuose, kurie gali likti paslėpti metų metus.

Mažiau išlaidų naudojant senesnius traukimo kelius

Naujoji versija taip pat pertvarko piešimo kelią Begin() / Vertex() / End() Naudojamas „Direct3D 6“ ir „Direct3D 5“. Modifikacija sumažina atminties sunaudojimą ir šiek tiek pagerina našumą.

„Frogger“ vėlgi yra vienas iš žaidimų, kuriems šis pakeitimas gali būti naudingas. Nors ši optimizacija nepadidins visų retro žaidimų FPS dvigubai, ji padeda sumažinti kai kurias senesnių API naudojamų maršrutų apkrovas.

Ankstesnėse versijose D7VK jau buvo gerokai optimizuotas našumas, todėl dabartinis darbas vis labiau sutelktas į įgyvendinimo tobulinimą ir nereikalingų išlaidų pašalinimą.

D7VK 2.2 yra DXVK 3.1 dalis

Dar viena svarbi šios versijos ypatybė yra ta, kad D7VK 2.2 buvo pakeista DXVK 3.1 . Tai leidžia projektui pasinaudoti naujesne baze ir išlaikyti jo įgyvendinimą suderintą su DXVK evoliucija.

Ryšys tarp šių dviejų projektų yra ypač svarbus. D7VK atsirado kaip DXVK atšaka, specializuojantis senesnėse „Direct3D“ API, kurių neapima standartinis DXVK naudojimas, o abu naudoja „Vulkan“ kaip paskirties vietą grafikos iškvietimams, atliekamiems iš „Windows“.

Dėl šio ryšio DXVK struktūriniai patobulinimai gali būti pagrindas D7VK tolesniam vystymuisi, nereikalaujant nuo nulio kurti visos infrastruktūros, reikalingos bendravimui su „Vulkan“.

Projektas, skirtas atgaivinti klasikinius žaidimus

„D7VK“ turi labai konkretų tikslą „Linux“ ekosistemoje: leisti „Windows“ žaidimams, kurie naudoja „Direct3D 7“, „6“, „5“ ir „3“, veikti naudojant „Vulkan“. Tai skiria jį nuo „DXVK“, kuris daugiausia skirtas „Direct3D 9“, „10“ ir „11“.

Projekto svarba padidėja, kai kalbama apie pavadinimus, kurie priklauso nuo grafikos technologijų, kurių „Wine“ tiesiogiai neįdiegia tokiu pačiu būdu, arba kuriems būtų naudingas tikslesnis vertimas į „Vulkan“.

Derindami D7VK su „Wine“ arba „Proton“, „Linux“ vartotojai gali atkurti nemažą kiekį XX a. pabaigos ir XXI a. pradžios programinės įrangos, nebūtinai griebdamiesi senos „Windows“ diegimo.

Tiems, kurie žaidžia „Linux“ sistemoje naudodami „Wine“ arba „Proton“ ir nori atgaivinti klasikinius žaidimus, „D7VK 2.2“ sustiprina vieną iš svarbiausių suderinamumo infrastruktūros dalių. Ir nors daugelis patobulinimų vartotojui gali būti nematomi, kiekvienas pataisymas padidina tikimybę, kad kitas žaidimas, prarastas „Direct3D 3“, „5“, „6“ ar „7“ eroje, vėl galės tinkamai veikti šiuolaikinėje „Linux“ sistemoje.


Pridėti kaip pageidaujamą šaltinį „Google“ sistemoje