Udgivelse af DXVK 3.0

Efter seks måneders udvikling er den nye version af DXVK (Direct3D til Vulkan Oversættelseslag) blevet udgivet. Dette er et åbent bibliotek, der konverterer API-opkald fra Direct3D 8, 9, 10 og 11 til Vulkan-kommandoer. Det gør det muligt at køre 3D-applikationer og -spil, der er udviklet til Windows, på systemer, hvor der ikke er indbygget support for Direct3D, mens det samtidig udnytter de mere effektive grafiske API-muligheder i Vulkan.

Vigtige ændringer
I den nye version er der sket et skifte til brugen af specifikationer og udvidelser fra Vulkan 1.4, hvilket vil kræve en kompatibel driver.

DXVK bruger nu dxbc-spirv til kompilering af shaders for alle understøttede shader-modeller. Dette løser en række problemer, der tidligere var umulige at tackle:
Renderingproblemer i spil, der enten skyldes, at spillene er afhængige af usikker adfærd, eller at FXC i nogle tilfælde genererer forkert kode, som i Postal: Brain Damaged, Snowrunner.
Den genererede kode er mere kompakt end blot den konverterede SPIR-V-kode, hvilket betydeligt reducerer den mængde hukommelse, som DXVK optager. I spil som Overwatch eller God of War gør det det muligt at spare omkring 1 GB systemhukommelse.
Kompileringen af shaders er nu fuldt overført til arbejdsstrømme, hvilket kan reducere indlæsningstiden i spil som Days Gone og Final Fantasy XIV, eller i nogle tilfælde mindske lag. Tidligere udførte DXVK oversættelsen af SPIR-V i applikationsstrømmen og komplicerede kun reelle Vulkan-pipelines i arbejdsprocesserne.
Det mellemliggende repræsentation af de kompilere shaders fra DXVK caches nu på disken i AppData/Local-mappen for det nuværende Wine-præfiks. Dette er nødvendigt, da kompileringstiden er steget sammenlignet med den gamle kompilator. Stien til cachen kan ændres ved hjælp af miljøvariabelen DXVK_SHADER_CACHE_PATH.

Den nye Vulkan-udvidelse VK_EXT_descriptor_heap anvendes nu som standard i drivere, der understøtter den.
Det forventes, at denne nye model, sammenlignet med den gamle binding model baseret på VK_EXT_descriptor_buffer, vil give omtrent samme niveau af CPU-relateret ydeevne, samtidig med at den undgår fald i ydeevne på Nvidia GPU'er (nvidia-drivers-595.84 og nyere kræves).
Ændringer i D3D9
For at emulere den forældede fastfunktion pipeline, som lader D3D8- og D3D9-spil udføre rendering uden shadere, genererede DXVK tidligere sin egen shaderkode on-the-fly baseret på pipeline-tilstanden. I nogle spil, som for eksempel Unreal Tournament 2004, kunne det føre til mærkbare hak, selv efter lange spilsessioner.

For at løse dette implementerer DXVK nu pipeline med faste funktioner som et par uber-shadere, for hvilke optimerede varianter kompilere i baggrunden.
Optimering af bufferindlæsning
For at matche Windows' adfærd mere præcist indlæses forskellige typer af buffere, som tidligere blev placeret direkte i VRAM, nu efter behov, og det er også implementeret en strategi for at begrænse mængden af RAM, der løser problemer relateret til adresserumsbegrænsninger i en række 32-bit D3D9-spil.
Disse ændringer kan også forbedre ydeevnen på systemer uden justerbar BAR-størrelse i spil som GTA IV.

I systemer, der tilstrækkeligt understøtter VK_EXT_sample_locations og VK_EXT_extended_dynamic_state3, fungerer D3DRS_MULTISAMPLEANTIALIAS renderingstilstanden korrekt, så applikationer kan bruge rasterisering med en enkelt sample, når der renderes til renderingsmål med flere samples. Dette eliminerer problemer med UI-rendering i Anno 1701, Men of War Assault Squad og lignende problemer i andre spil med aktiveret MSAA.

Generelle ressourcer fungerer nu med den originale Wine-implementation og kræver ikke længere proton-specifikke rettelser.

Der skal også nævnes en række rettelser til forskellige spil, som nu vil fungere bedre.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster