Pas gjashtë muajsh zhvillim, është lëshuar një version i ri i DXVK (Shtresa e Transliteralizimit nga Direct3D në Vulkan), një bibliotekë e hapur që konverton thirrjet API Direct3D 8, 9, 10 dhe 11 në komanda Vulkan. Ajo lejon të funksionojnë aplikacionet 3D dhe lojërat, të zhvilluara për Windows, në sisteme ku mbështetja native për Direct3D mungon, duke përdorur mundësitë më efikase të API Vulkan.
Ndryshimet kryesore
Në këtë version, është kryer kalimi në përdorimin e specifikimeve dhe zgjerimeve të Vulkan 1.4, e cila përkatësisht do të kërkojë një drejtues të përputhshëm.
DXVK tani përdor dxbc-spirv për kompilimin e shenjave për të gjitha modelet e mbështetura të shenjave. Kjo eliminon një sërë problemesh që më parë ishin të pamundura për t'u zgjidhur:
Problemet me renderimin në lojëra, të shkaktuara ose nga fakti që lojërat mbështeten në sjellje të paqartë, ose nga fakti që FXC në disa raste gjeneron kod të gabuar, si në Postal: Brain Damaged, Snowrunner.
Kodi i gjeneruar është më kompakt sesa thjesht kodi i konvertuar SPIR-V, gjë që ndjeshëm redukton sasinë e memories të zënë nga DXVK. Në lojëra si Overwatch ose God of War, kjo lejon kursimin e rreth 1 GB memories sistemike.
Kompilimi i shaders tani është tërësisht i transferuar në proceset punuese, çka mund të reduktojë kohën e nisjes në lojëra si Days Gone dhe Final Fantasy XIV, ose në disa raste të zvogëlojë ngadalësimet. Më parë, DXVK bënte translacionin e SPIR-V në rrjedhën e aplikacionit dhe kompilonte vetëm konviklat e vërteta Vulkan në proceset punuese.
Përfaqësimi i ndërmjetëm i shaders të kompiluar DXVK tani ruhet në disk brenda katalogut AppData/Local të prefiksit aktual të Wine. Kjo është e nevojshme, pasi koha e kompilimit është rritur në krahasim me kompila tjetër. Rruga për në cache mund të ndryshohet nëpërmjet variablës së ambientit DXVK_SHADER_CACHE_PATH.
Shtrirja e re Vulkan VK_EXT_descriptor_heap tani përdoret si standard në drejtuesit që e mbështesin atë.
Pritet që në krahasim me implementimin e vjetër të modelit të lidhjes, i bazuar në VK_EXT_descriptor_buffer, ky model i ri të ofrojë një nivel të ngjashëm të performancës lidhur me CPU-në, duke shmangur gjithashtu rënien e performancës në GPU-të Nvidia (nevojiten drejtuesit nvidia-595.84 dhe më të rinjtë).
Ndryshimet D3D9
Për të emuluar një pipeline të vjetruar me funksione fikse që lejon lojërat D3D8 dhe D3D9 të realizojnë renderimin pa shader, DXVK më parë gjeneronte kod shader-i të vetin në kohë reale në bazë të gjendjes së pipeline-it. Në disa lojëra, si Unreal Tournament 2004, kjo mund të çonte në vonesa të ndjeshme madje pas periudhash të zgjatura lojrash.
Për të rregulluar këtë, DXVK tani implementon një pipeline me funksione fikse në formën e dy uber-shader-ëve, për të cilat variantet e optimizuara kompilohet në sfond.
Optimizimi i ngarkesës së buffers
Për të përputhur më saktë sjelljen e Windows-it, lloje të ndryshme buffers që më parë ishin vendosur drejtpërdrejt në VRAM tani ngarkohen sipas kërkesës, si dhe është implementuar një strategji për kufizimin e volumit të memories RAM, e cila rregullon gabimet e lidhura me hapësirën e adresave në një sërë lojërash 32-bit D3D9.
Këto ndryshime gjithashtu mund të përmirësojnë performancën në sisteme pa madhësi të ndryshueshme BAR në lojëra të tilla si GTA IV.
Në sistemet që mbështesin mjaftueshëm VK_EXT_sample_locations dhe VK_EXT_extended_dynamic_state3, gjendja e renderimit D3DRS_MULTISAMPLEANTIALIAS tani funksionon saktë, duke lejuar që aplikacionet të përdorin rastërizimin me një mostër kur renderojnë në objekte renderimi me shumë mostra. Kjo eliminon problemet me renderimin e ndërfaqes së përdoruesit në Anno 1701, Men of War Assault Squad dhe probleme të ngjashme në lojëra të tjera me MSAA të aktivizuar.
Burimet e zakonshme tani funksionojnë me implementimin origjinal të Wine dhe nuk kërkojnë më ndreqje specifike për Proton.
Gjithashtu, duhet përmendur një numër i madh rregullimesh për lojëra të ndryshme, që tani do të funksionojnë më mirë.
Burimi: linux.org.ru
