projekt release , som tillhandahåller en Direct3D 9-implementering som fungerar genom att översätta anrop till grafik-API . Projektet bygger på projektets kodbas , som har utökats för att stödja Direct3D 9. Jämfört med den WineD3D-baserade Direct9D 3-implementeringen, uppnår D9VK bättre prestanda eftersom Direct3D 9-översättning via OpenGL är långsammare än översättning via Vulkan.
D9VK kan användas för att köra 3D-applikationer och spel i Linux med Wine. De flesta Direct3D 9-spel som använder Shader Model 2 eller 3 stöds. Projektkod under den fria Zlib-licensen. D9VK kräver drivrutiner som stöder Vulkan API, såsom AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ och AMDVLK.
Huvudsakliga förbättringar:
- Möjligheten att använda mer än 4 GB videominne i 32-bitars applikationer har implementerats, vilket löste problem vid lansering av moddar för spelen Skyrim och Oblivion;
- Asynkron bearbetning av visning av renderingsresultatet på skärmen är aktiverad (presentationsstadiet). För att minska latensen på huvudrenderingstråden utförs utdatabearbetning i kommandotråden;
- Tog bort onödiga kommandoflödessynkroniseringspunkter vid hämtning av begärd data;
- Koden för att bestämma den interna tiden har översatts till att använda en plattformsspecifik timer, som hjälpte till att lösa problem med det felaktiga beteendet hos high_resolution_clock från MinGW;
- Avlastning av uppskjutna buffertar MANAGED och SYSTEMMEM säkerställs i skedet före körningen av PrepareDraw, som löste prestandaproblem i spelen Risen och Legend of the Heroes: Trails of the Sky;
- Lagt till stöd , vilket gjorde det möjligt att implementera korrekt rendering i SpinTyres och Mudrunner-spel;
- Förbättrad kompatibilitet med (D3D9Ex). Detaljerna för bearbetning av ResetEx och Reset beaktas;
- Rensad och refaktorerad kod;
- Direkt mappning av WRITEONLY-buffertar tillhandahålls, vilket kan ha en positiv effekt på prestandan och kringgå en bugg i spelet
Counter-Strike: Global Offensive, vilket resulterar i fortsatt skrivning till bufferten efter att den har låsts upp; - Metod implementerad , som låter dig använda dialogrutor i helskärmsprogram;
- Support implementerat Inklusive , krävs för SWVP (SoftWare Vertex Processing);
- Samplingsräknaren, som visas ovanpå den aktuella bilden (heads-up display, HUD), har gjorts om;
- Lade till alternativet d3d9.dialogBoxMode, som kan användas för att inaktivera arbete endast i helskärmsläge;
- Gjorde prestandaoptimeringar och löste problem som uppstod när GTA-spel lanserades: 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 Hastighet: Carbon and Risen 1.
Dessutom kan det noteras projektutvecklare (implementering av DXGI, Direct3D 10 och Direct3D 11 ovanpå Vulkan API) kommer tillfälligt att fokusera ansträngningarna endast på buggfixar, vilket saktar ner utbyggnaden av funktionalitet. En liknande önskan oro för en sämre kvalitet på kodbasen och svårare underhåll i framtiden. Varje uppdatering av 1.4.x-grenen orsakar klagomål om regressiva ändringar som inte kan reproduceras, lokaliseras och åtgärdas.
Dessa problem kräver analys av orsakerna till att de uppstår, annars kan det bara förvärra situationen och göra underhållsprocessen till en mardröm om de inte korrigeras samtidigt som de fortsätter att öka funktionaliteten. Planerna som DXVK-utvecklaren avser att implementera innan han byter till endast buggfixningsläge inkluderar att lägga till stöd för några användbara Vulkan-tillägg och slås samman med utvecklingen av D9VK-projektet.
Tillägg: het på hälarna korrigerande utgåva D9VK 0.40.1, i vilken ställ in vec4(1) till standardvärdet för COLOR0 i vertex shaders, och fixade en bugg där standard shader output slot bitar applicerades felaktigt och därför felaktigt korrigerades av backend, vilket gjorde att de ersattes av vec4(0).
Källa: opennet.ru
