Udgivelse af D9VK 0.40, Direct3D 9 implementering oven på Vulkan

tog sted projektudgivelse D9VK 0.40, som giver en Direct3D 9-implementering, der fungerer ved at oversætte opkald til grafik-API'en Vulkan. Projektet er baseret på projektets kodebase DXVK, som er blevet udvidet til at understøtte Direct3D 9. Sammenlignet med den WineD3D-baserede Direct9D 3-implementering opnår D9VK bedre ydeevne, fordi Direct3D 9-oversættelse via OpenGL er langsommere end oversættelse via Vulkan.

D9VK kan bruges til at køre 3D-applikationer og spil på Linux ved hjælp af Wine. De fleste spil baseret på Direct3D 9, der bruger version 2 eller 3 af Shader-modellen, understøttes. Projektkode distribueret af under den gratis Zlib-licens. D9VK kræver drivere, der understøtter Vulkan API, såsom AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ og AMDVLK.

Vigtigste forbedringer:

  • Muligheden for at bruge mere end 4 GB videohukommelse i 32-bit applikationer er blevet implementeret, hvilket løste problemer ved lancering af mods til spillene Skyrim og Oblivion;
  • Asynkron behandling af visning af gengivelsesresultatet på skærmen er aktiveret (præsentationsstadiet). For at reducere latens på hovedgengivelsestråden udføres outputbehandling i kommandoafsendelsestråden;
  • Fjernede unødvendige kommandoflowsynkroniseringspunkter ved hentning af anmodede data;
  • Koden til at bestemme den interne tid er blevet oversat til at bruge en platformsspecifik timer, som hjalp med at løse problemer med den forkerte opførsel af high_resolution_clock fra MinGW;
  • Aflæsning af udskudte buffere MANAGED og SYSTEMMEM er sikret på stadiet før udførelsen af ​​PrepareDraw, som løste præstationsproblemer i spillene Risen og Legend of the Heroes: Trails of the Sky;
  • Tilføjet support D3DTA_CONSTANT, hvilket gjorde det muligt at implementere korrekt gengivelse glød effekt i SpinTyres og Mudrunner spil;
  • Forbedret kompatibilitet med DirectX 9Ex (D3D9Ex). Der tages hensyn til detaljerne i behandlingen af ​​ResetEx og Reset;
  • Renset og omdannet kode;
  • Direkte kortlægning af WRITEONLY buffere er tilvejebragt, hvilket kan have en positiv effekt på ydeevnen og omgå en fejl i spillet
    Counter-Strike: Global Offensive, hvilket resulterer i fortsat skrivning til bufferen, efter at den er låst op;

  • Implementeret metode SetDialogBoxMode, som giver dig mulighed for at bruge dialogbokse i fuldskærmsapplikationer;
  • Support implementeret blande hjørnerHerunder indekseret toppunktblanding, påkrævet til SWVP (SoftWare Vertex Processing);
  • Sampletælleren, der vises oven på det aktuelle billede (heads-up display, HUD), er blevet omdesignet;
  • Tilføjet mulighed d3d9.dialogBoxMode, som kan bruges til at deaktivere arbejde kun i fuldskærmstilstand;
  • Lavet ydeevneoptimeringer og løste problemer, der opstod ved lancering af GTA-spil: San Andreas, The Masquerade Bloodlines, Max Payne 2, The Sims 2, Silent Hunter 3, Senran Kagura Shinovi, Dungeons and Dragons, Crysis, Metal Slug X, ANGLE, Need for Hastighed: Carbon og Risen 1.

Derudover kan det bemærkes hensigt projektudvikler DXVK (en implementering af DXGI, Direct3D 10 og Direct3D 11 oven på Vulkan API) vil midlertidigt kun fokusere indsatsen på fejlrettelser, hvilket bremser udvidelsen af ​​funktionaliteten. Et lignende ønske forårsaget af bekymring for et fald i kvaliteten af ​​kodebasen og vanskeligere vedligeholdelse i fremtiden. Hver opdatering til 1.4.x-grenen forårsager klager over regressive ændringer, som ikke kan reproduceres, lokaliseres og rettes.

Disse problemer kræver analyse af årsagerne til deres forekomst, ellers kan det kun forværre situationen og forvandle vedligeholdelsesprocessen til et mareridt, hvis de ikke korrigeres, mens de fortsætter med at øge funktionaliteten. Planerne, som DXVK-udvikleren har til hensigt at implementere, før han skifter til tilstanden med kun fejlrettelse, omfatter tilføjelse af understøttelse af nogle nyttige Vulkan-udvidelser og sammensmeltning med udviklingen af ​​D9VK-projektet.

Tillæg: i forfølgelse dannet korrigerende udgivelse D9VK 0.40.1, hvori fast sæt vec4(1) til standardværdien for COLOR0 i vertex shaders, og rettet en fejl, hvor standard shader output slot bits blev anvendt forkert og derfor forkert korrigeret af backend, hvilket fik dem til at blive erstattet af vec4(0).

Kilde: opennet.ru

Tilføj en kommentar