
Ang D7VK 2.2 ay makukuha na ngayon bilang isang bagong bersyon ng graphics translation layer na idinisenyo upang magpatakbo ng mga klasikong laro sa Windows sa Linux. Ang proyekto, na hango sa DXVK, ay nakatuon sa pagsasalin ng mga mas lumang Direct3D 7, 6, 5, at 3 API sa Vulkan para magamit sa Wine at Proton, at ang bagong bersyong ito ay naglalaan ng malaking bahagi ng trabaho nito sa isa sa mga lugar na mayroon pa ring pinakamaraming kakulangan: ang suporta sa Direct3D 3.
Ang update ay darating ilang linggo lamang matapos ang D7VK 2.1 at nagpapatuloy sa proseso ng pagkahinog ng isang teknolohiyang lalong kawili-wili para sa mga gustong maglaro ng mga laro mula sa huling bahagi ng dekada 90 at unang bahagi ng 2000 sa mga modernong sistema ng Linux. Bukod sa pagpapabuti ng Direct3D 3, ang D7VK 2.2 ay nagsasama ng maraming pag-aayos ng bug at mga panloob na pagsasaayos, at batay sa kamakailang bersyon ng DXVK 3.1.
Ang D7VK 2.2 ay nakatuon sa Direct3D 3
Ang pangunahing bagong tampok sa D7VK 2.2 ay may kaugnayan sa Direct3D 3, isang API na medyo nahuhuli sa iba pang mga mas lumang teknolohiyang sinusuportahan ng proyekto. Bagama't ang mga laro ng Direct3D 3 na nakolekta at nasubukan ng developer ay gumagana na sa D7VK, mayroon pa ring ilang mga edge case at pag-uugali na hindi naipatupad nang tama.
Naging problema ito lalo na dahil ang katalogo ng mga larong gumagamit ng Direct3D 3 ay mahirap buuin muli. Ang mga ito ay mga lumang titulo, na marami sa mga ito ay hindi na mabibili sa komersyo o mahirap hanapin, kaya mahirap subukan ang lahat ng posibleng implementasyon na maaaring matagpuan sa aktwal na paggamit.
Sa bersyong ito, binago ng developer ang malaking bahagi ng implementasyon ng Direct3D 3 upang mapalapit ito sa antas ng kapanahunan na nakamit ng iba pang mga API na tugma sa D7VK.
Ang kilos ng mga D3D3 device ay umaayon sa orihinal
Isa sa mga teknikal na pagbabago ay ang muling paggawa ng sistema ng pagbibilang ng sanggunian para sa mga Direct3D 3 device. Binabago ng D7VK 2.2 ang mekanismong ito upang ang kilos nito ay tumugma sa kilos ng implementasyon ng katutubong API.
Ang ganitong uri ng detalye ay maaaring mukhang walang kaugnayan sa gumagamit, ngunit ito ay mahalaga sa isang translation layer. Ang mga lumang laro ay maaaring umasa sa mga partikular na pag-uugali na may kaugnayan sa paglikha at pagsira ng object, at ang isang tila maliit na pagkakaiba ay maaaring humantong sa mga error na mahirap i-diagnose.
Dahil dito, nababawasan ng bagong implementasyon ang posibilidad na mabigo ang ilang partikular na laro na pamahalaan ang kanilang mga graphics device sa paraang hindi inaasahan ng D7VK.
Ipinakikilala ng D7VK 2.2 ang mga pagpapabuti sa transparency gamit ang color key
Binabago rin ng D7VK 2.2 ang pamamahala ng color keying sa mga purong Direct3D 3 device. Hanggang ngayon, gumamit ang proyekto ng isang napakasimpleng modelo kung saan ang function na ito ay nananatiling palaging naka-enable sa ilalim ng ilang partikular na pagkakataon.
Ang bagong bersyon ay nagbibigay-daan para sa tumpak na kontrol kung kailan ito paganahin, na mas tapat na ginagaya ang pag-uugali ng Direct3D 3. Ito ay lalong mahalaga para sa mga mas lumang laro na gumagamit ng mga diskarte sa transparency batay sa mga partikular na kulay.
Bukod pa rito, na-optimize na ang mga kalkulasyon na may kaugnayan sa mga normalized na hanay ng kulay. Ang mga halagang ito ay ina-update na lamang ngayon kapag nagbago ang paglalarawan ng ibabaw, na nagpapahintulot sa mga ito na ma-cache at magamit muli sa ibang pagkakataon.
Ang resulta ay dapat na isang maliit hanggang katamtamang pagbuti sa pagganap sa mga larong gumagamit ng transparency ng kulay ng mga susi, pati na rin ang mas tamang pag-uugali.
Ang mga boundary case sa mga execute buffer ay naitama
Ang isa pang mahalagang aspeto ng D7VK 2.2 ay ang rebisyon ng mga pagpapatunay ng buffer ng Direct3D 3. Muling inayos ng proyekto ang bahagi ng lohikang ito upang matugunan ang iba't ibang mga kaso ng edge na natukoy sa panahon ng pagsubok.
Upang mapatunayan ang inaasahang pag-uugali ng API, nagawa rin ng developer na umasa sa mga pagsubok sa Wine na partikular na nauugnay sa Direct3D 3. Ang mga pagsubok na ito ay nagbibigay-daan sa paghahambing ng pag-uugali ng D7VK sa inaasahan mula sa isang katugmang implementasyon at pagtuklas ng mga pagkakaiba na maaaring hindi mapansin kapag gumagamit lamang ng mga kilalang laro.
Ang gawaing ito ay partikular na mahalaga para sa isang lumang API, kung saan ang mga pamagat na magagamit para sa pagsubok ay kakaunti at hindi palaging sumasaklaw sa lahat ng posibilidad ng orihinal na implementasyon.
Mas matibay para sa mga texture ng Direct3D 5 at 3
Hindi limitado sa Direct3D 3 ang update. Pinapabuti rin ng D7VK 2.2 ang paghawak sa mga texture na ginagamit ng Direct3D 5 at Direct3D 3 upang maiwasan ang paglabas sa saklaw ng mga nakapailalim na ibabaw habang ginagamit pa rin.
Pinapataas ng pagbabagong ito ang katatagan ng paghawak ng mga mapagkukunan ng graphics at maaaring malutas ang mga error na lumilitaw lamang sa ilalim ng ilang partikular na pagkakasunud-sunod ng mga operasyon. Binanggit din ng developer na ang pagpapabuting ito ay nagkaroon ng positibong epekto sa Frogger , na orihinal na inilabas noong 1997.
Ipinapakita ng patch kung paano ang mga panloob na pagbabago na nilayon upang matugunan ang mga isyu sa pamamahala ng mapagkukunan ay maaaring magkaroon ng mga nakikitang epekto sa mga partikular na laro, kahit na ang pagbabago ay hindi partikular na idinisenyo para sa mga ito.
Itinatama rin ng D7VK 2.2 ang mga problema sa transpormasyon at matrix
Inaayos din ng D7VK 2.2 ang isang bug na may kaugnayan sa pagbabago ng mga execute buffer ng Direct3D 3. Ang problema ay sanhi ng maling pagtukoy ng format ng FVF na ginamit para sa mga input ng vertex.
Naayos na rin ang isang problema sa mga kalkulasyon ng legacy projection matrix. Natuklasan ang bug sa pamamagitan ng isang Wine test na hindi gumagana ayon sa inaasahan at maaaring negatibong nakaapekto sa ilang partikular na aplikasyon ng Direct3D 6, 5, at 3.
Ang mga pagbabagong ito ay lalong nagpapakita ng kahalagahan ng pagsubok sa compatibility para sa D7VK. Marami sa mga problema sa mga mas lumang graphics API ay hindi kinakailangang lumitaw sa mga pinakasikat na laro, kundi sa mga partikular na kumbinasyon ng mga tampok na maaaring manatiling nakatago sa loob ng maraming taon.
Mas kaunting gastos sa mga legacy draw path
Binabago rin ng bagong bersyon ang landas ng pagguhit Begin() / Vertex() / End() Ginagamit ng Direct3D 6 at Direct3D 5. Binabawasan ng pagbabago ang pagkonsumo ng memorya at nagbibigay ng kaunting pagpapabuti sa pagganap.
Muli, ang Frogger ay kabilang sa mga larong maaaring makinabang sa pagbabagong ito. Bagama't hindi madodoble ng pag-optimize na ito ang FPS ng lahat ng retro na laro, nakakatulong ito na mabawasan ang ilan sa mga overhead na naipon sa mga rutang ginagamit ng mga mas lumang API.
Nakatanggap na ang D7VK ng mga makabuluhang pag-optimize sa pagganap sa mga nakaraang bersyon, kaya ang kasalukuyang trabaho ay lalong nakatuon sa pagpino ng pagpapatupad at pag-aalis ng mga hindi kinakailangang gastos.
D7VK 2.2 bahagi ng DXVK 3.1
Ang isa pang mahalagang katangian ng bersyong ito ay ang D7VK 2.2 ay napalitan na ng DXVK 3.1 . Nagbibigay-daan ito sa proyekto na makinabang mula sa mas bagong base at mapanatili ang implementasyon nito na nakahanay sa ebolusyon ng DXVK.
Ang ugnayan sa pagitan ng dalawang proyekto ay partikular na mahalaga. Ang D7VK ay nagmula bilang isang fork ng DXVK na dalubhasa sa mga mas lumang Direct3D API na hindi sakop ng karaniwang paggamit ng DXVK, habang pareho nilang ginagamit ang Vulkan bilang destinasyon para sa mga graphics call na nagmumula sa Windows.
Dahil sa ugnayang ito, ang mga pagpapabuti sa istruktura na darating sa DXVK ay maaaring magsilbing batayan para sa D7VK upang patuloy na umunlad nang hindi kinakailangang paunlarin mula sa simula ang lahat ng imprastraktura na kinakailangan upang makipag-ugnayan sa Vulkan.
Isang proyektong idinisenyo upang buhayin muli ang mga klasikong laro
Ang D7VK ay may isang napaka-espesipikong layunin sa loob ng ecosystem ng Linux: ang payagan ang mga laro sa Windows na gumagamit ng Direct3D 7, 6, 5, at 3 na tumakbo gamit ang Vulkan. Ito ang nagpapaiba sa DXVK, na pangunahing nakatuon sa Direct3D 9, 10, at 11.
Ang kahalagahan ng proyekto ay tumataas pagdating sa mga titulong umaasa sa mga teknolohiyang grapiko na hindi direktang ipinapatupad ng Wine sa parehong paraan o maaaring makinabang mula sa mas tumpak na pagsasalin sa Vulkan.
Sa pamamagitan ng pagsasama ng D7VK sa Wine o Proton, maaaring mabawi ng mga gumagamit ng Linux ang isang malaking halaga ng software mula sa huling bahagi ng ika-20 at unang bahagi ng ika-21 siglo nang hindi kinakailangang gumamit ng lumang instalasyon ng Windows.
Para sa mga gumagamit ng Wine o Proton para maglaro ng mga laro sa Linux at interesado sa muling pagbuhay ng mga klasikong laro, pinapalakas ng D7VK 2.2 ang isa sa pinakamahalagang bahagi ng imprastraktura ng compatibility. At habang marami sa mga pagpapabuti nito ay maaaring hindi nakikita ng gumagamit, ang bawat pag-aayos ay nagpapataas ng pagkakataon na ang isa pang laro na nawala sa panahon ng Direct3D 3, 5, 6, o 7 ay maaaring gumana muli nang tama sa isang modernong sistema ng Linux.