Po šestih mesecih razvoja je izšla nova različica DXVK (Prevodna plast Direct3D v Vulkan), odprte knjižnice, ki pretvarja klice API Direct3D 8, 9, 10 in 11 v ukaze Vulkan. Omogoča zagon 3D aplikacij in iger, zasnovanih za Windows, na sistemih, kjer nativna podpora za Direct3D ni na voljo, ob tem pa izkorišča prednosti bolj učinkovitega grafičnega API-ja Vulkan.
Glavne promene
V novi različici je bil prehod na uporabo specifikacij in razširitev Vulkan 1.4, kar bo ustrezno zahtevalo sorazmerni gonilnik.
DXVK zdaj uporablja dxbc-spirv za prevajanje senčil za vse podprte modele senčil. To odpravi vrsto težav, ki jih prej ni bilo mogoče rešiti:
Težave z upodabljanjem v igrah, ki so jih povzročile ali nepredvidljive obnašanje iger, ali pa ker FXC v nekaterih primerih generira napačno kodo, kot v Postal: Brain Damaged, Snowrunner
Generirana koda je bolj kompaktna kot le pretvorjena koda SPIR-V, kar znatno zmanjša količino pomnilnika, ki ga uporablja DXVK. V igrah, kot sta Overwatch ali God of War, to omogoča prihranek približno 1 GiB sistemskega pomnilnika.
Prevajanje senčil je zdaj popolnoma preneseno na delovne procese, kar lahko skrajša čas zagona v igrah, kot sta Days Gone in Final Fantasy XIV, ali v nekaterih primerih zmanjša zamike. Prej je DXVK izvajal prevajanje SPIR-V v niti aplikacije in prevajal le resnične Vulkan pipeline v delovnih procesih.
Vmesna predstavitev prevedenih senčil DXVK se zdaj predpomni na disku znotraj imenika AppData/Local trenutnega prefiksa Wine. To je potrebno, saj je čas prevajanja v primerjavi s starim prevajalnikom povečal. Pot do predpomnilnika lahko spremenite z okoljsko spremenljivko DXVK_SHADER_CACHE_PATH.
Novo razširitev Vulkan VK_EXT_descriptor_heap se zdaj privzeto uporablja v gonilnikih, ki to podpirajo.
Pričakuje se, da bo v primerjavi s staro implemetacijo modela vezanja, ki temelji na VK_EXT_descriptor_buffer, ta nova rešitev zagotovila približno enako raven zmogljivosti, povezane s CPU-jem, obenem pa se izognila zmanjšanju zmogljivosti na GPUjih Nvidia (zahteva nvidia-drivers-595.84 in novejše)
Spremembe D3D9
Za emulacijo zastarelega podjetniškega vodila s fiksnimi funkcijami, ki omogoča igram D3D8 in D3D9, da izvajajo risanje brez senčilnikov, je DXVK prej generiral lastno kodo senčilnikov sproti na podlagi stanja vodila. V nekaterih igrah, kot je Unreal Tournament 2004, je to lahko povzročilo opazne zamude tudi po daljših časovnih obdobjih igranja.
Za rešitev tega problema DXVK zdaj implementira vodilo s fiksnimi funkcijami v obliki dveh uber-senčilnikov, za katere so optimizirane različice predkompilirane v ozadju.
Optimizacija nalaganja pomnilniškega sektorskega
Da bi bolj natančno ustrezalo vedenju Windows, so različne vrste pomnilnikov, ki so prej bile nameščene neposredno v VRAM, zdaj naložene na zahtevo, prav tako pa je bila uvedena strategija omejevanja količine RAM-a, ki odpravlja zrušitve, povezane z naslovnim prostorom, v nekaterih 32-bitnih igrah D3D9.
Te spremembe lahko tudi izboljšajo zmogljivost na sistemih brez spremenljive velikosti BAR v takih igrah, kot je GTA IV.
V sistemih, ki zadostno podpirajo VK_EXT_sample_locations in VK_EXT_extended_dynamic_state3, sedaj pravilno deluje stanje risanja D3DRS_MULTISAMPLEANTIALIAS, kar omogoča aplikacijam uporabo rasterizacije z eno izbiro pri risanju v ciljne objekte risanja z več izbirkami. To odpravlja težave z upodabljanjem uporabniškega vmesnika v igrah Anno 1701, Men of War Assault Squad in podobne težave v drugih igrah z vključenim MSAA.
Skupni viri zdaj delujejo z izvirno implementacijo Wine in ne zahtevajo več popravkov, specifičnih za Proton.
Prav tako je treba omeniti številne popravke za različne igre, ki bodo zdaj bolje delovale.
Izvor: linux.org.ru
