udgivelsen af projektet , der giver en implementering af Direct3D 9, der fungerer via opkaldstranslation til grafisk API . Projektet er baseret på kodebasen fra projektet , som er blevet udvidet til at understøtte Direct3D 9. Sammenlignet med implementeringen af Direct3D 9 baseret på WineD3D, tillader D9VK højere ydeevne, da translationen af Direct3D 9 via OpenGL er langsommere end translationen via Vulkan.
D9VK kan bruges til at køre 3D-applikationer og spil i Linux ved hjælp af Wine. Størstedelen af spillene baseret på Direct3D 9, der bruger version 2 eller 3 af Shader Model, understøttes. Projektkoden er under den frie Zlib-licens. For at bruge D9VK kræves drivere, der understøtter Vulkan API, såsom AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ og AMDVLK.
Hovedforbedringer:
- Muligheden for at bruge mere end 4 GB videomemory i 32-bit applikationer er implementeret, hvilket løste problemerne med at køre mods i Skyrim og Oblivion;
- Asynkron behandling af rendering output til skærmen (præsentationsstadiet) er inkluderet. For at reducere latens i hovedrenderingstråden udføres outputbehandlingen i kommandopaneltråden (command submission thread);
- Overflødige synkroniseringspunkter i kommandotråden ved indhentning af forespurgte data er blevet fjernet;
- Koden til at bestemme intern tid er oversat til brugen af en platformsspecifik timer, hvilket har hjulpet med at løse problemer med forkert opførsel af high_resolution_clock fra MinGW;
- Sikret indlæsning af udskudte buffere MANAGED og SYSTEMMEM i fasen før PrepareDraw, hvilket har løst ydeevneproblemer i spillene Risen og Legend of the Heroes: Trails of the Sky;
- Tilføjet support for , hvilket har gjort korrekt rendering af i spillene SpinTyres og Mudrunner;
- Forbedret kompatibiliteten med (D3D9Ex). Specifikationen for behandling af ResetEx og Reset er taget i betragtning;
- Rensning og refaktorering af koden er udført;
- Direkte mapping af WRITEONLY buffere er sikret, hvilket kan have en positiv indvirkning på ydeevnen og undgå en fejl i spillet
Counter-Strike: Global Offensive, der fører til fortsat skrivning i bufferen efter at den er blevet låst op; - Metoden , der muliggør brug af dialogbokse i fuldskærmsapplikationer;
- Implementeret støtte , herunder , der er nødvendig for SWVP (SoftWare Vertex Processing);
- Ombygget tælleren for sample, der vises over det aktuelle billede (heads-up display, HUD);
- Tilføjet indstillingen d3d9.dialogBoxMode, som kan bruges til at deaktivere funktionaliteten kun i fuld skærm;
- Foretaget ydeevneoptimeringer og løst problemer, der opstår ved lanceringen af spil som GTA: 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 Speed: Carbon og Risen 1.
Yderligere kan det nævnes projektets udvikler (implementeringen af DXGI, Direct3D 10 og Direct3D 11 oven på Vulkan API) midlertidigt fokusere indsatsen kun på fejlretning, mens udvidelse af funktionaliteten sættes på pause. Ønsket om dette af bekymringer om kvaliteten af kodebasen og vanskelighederne ved vedligeholdelse i fremtiden. Hver opdatering af branch 1.4.x medfører klager over regressionsændringer, som er umulige at reproducere, lokalisere og rette.
Disse problemer kræver en analyse af årsagerne til deres opståen, ellers kan det at lade dem stå ubesluttede mens funktionaliteten fortsætter med at udvide situationen kun forværre problemet og gøre vedligeholdelsesprocessen til et mareridt. Planer, som udvikleren af DXVK har tænkt sig at gennemføre inden overgangen til udelukkende fejlretningstilstand, omfatter tilføjelsen af støtte til nogle nyttige Vulkan-udvidelser og fusionen med resultaterne fra D9VK-projektet.
Tillæg: straks efter justeringsudgave D9VK 0.40.1, hvori til vec4(1) standardværdien for COLOR0 i vertex-shaders, og en fejl, der medførte, at slots_bits for shaderens udgange ikke blev anvendt korrekt per standard, og derfor blev forkert rettet af backend og dermed erstattet med vec4(0).
Kilde: opennet.ru
