Vydání D9VK 0.40, implementace Direct3D 9 nad Vulkanem

odehrál se vydání projektu D9VK 0.40, která poskytuje implementaci Direct3D 9, která funguje tak, že překládá volání do grafického rozhraní API Vulkan. Projekt je založen na kódové základně projektu DXVK, který byl rozšířen o podporu Direct3D 9. Ve srovnání s implementací Direct3D 9 založenou na WineD3D dosahuje D9VK lepšího výkonu, protože překlad Direct3D 9 přes OpenGL je pomalejší než překlad přes Vulkan.

D9VK lze použít ke spouštění 3D aplikací a her na Linuxu pomocí Wine. Podporována je většina her založených na Direct3D 9 využívajících verze 2 nebo 3 Shader Model. Kód projektu distribuovány pod volnou licencí Zlib. D9VK vyžaduje ovladače, které podporují Vulkan API, jako je AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ a AMDVLK.

Hlavní vylepšení:

  • Byla implementována možnost využívat více než 4 GB video paměti v 32bitových aplikacích, což vyřešilo problémy při spouštění modů pro hry Skyrim a Oblivion;
  • Je povoleno asynchronní zpracování zobrazení výsledku renderování na obrazovce (fáze prezentace). Pro snížení latence v hlavním vykreslovacím vláknu se výstupní zpracování provádí ve vláknu odeslání příkazu;
  • Odstraněny zbytečné body synchronizace toku příkazů při získávání požadovaných dat;
  • Kód pro určování vnitřního času byl přeložen do použití časovače specifického pro platformu, což pomohlo vyřešit problémy s nesprávným chováním high_resolution_clock od MinGW;
  • Vykládání odložených bufferů MANAGED a SYSTEMMEM je zajištěno ve fázi před provedením PrepareDraw, která řešila výkonnostní problémy ve hrách Risen a Legend of the Heroes: Trails of the Sky;
  • Přidána podpora D3DTA_CONSTANT, což umožnilo implementovat správné vykreslování efekt záře ve hrách SpinTyres a Mudrunner;
  • Vylepšená kompatibilita s DirectX 9Ex (D3D9Ex). Jsou zohledněna specifika zpracování ResetEx a Reset;
  • Vyčištěný a refaktorovaný kód;
  • Je zajištěno přímé mapování WRITEONLY bufferů, což může mít pozitivní vliv na výkon a obejít chybu ve hře
    Counter-Strike: Global Offensive, což má za následek pokračující zápis do vyrovnávací paměti po jejím odemčení;

  • Implementovaná metoda SetDialogBoxMode, která umožňuje používat dialogová okna v aplikacích na celou obrazovku;
  • Implementovaná podpora prolínací vrcholyVčetně míchání indexovaných vrcholů, požadovaný pro SWVP (SoftWare Vertex Processing);
  • Počítadlo vzorkovače zobrazené v horní části aktuálního obrázku (heads-up display, HUD) bylo přepracováno;
  • Přidána možnost d3d9.dialogBoxMode, kterou lze zakázat práci pouze v režimu celé obrazovky;
  • Provedli optimalizaci výkonu a vyřešili problémy, které se vyskytly při spouštění her 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 Rychlost: Carbon and Risen 1.

Navíc lze poznamenat záměr developer projektu DXVK (implementace DXGI, Direct3D 10 a Direct3D 11 nad rozhraním Vulkan API) dočasně zaměří úsilí pouze na opravy chyb, což zpomalí rozšiřování funkčnosti. Podobná touha způsobeno obavy ze snížení kvality kódové základny a obtížnější údržby do budoucna. Každá aktualizace větve 1.4.x způsobuje stížnosti na regresivní změny, které nelze reprodukovat, lokalizovat a opravit.

Tyto problémy vyžadují analýzu důvodů jejich výskytu, v opačném případě jejich ponechání neopravené při dalším zvyšování funkčnosti může situaci jen zhoršit a proměnit proces údržby v noční můru. Plány, které vývojář DXVK hodlá implementovat před přechodem do režimu pouze opravy chyb, zahrnují přidání podpory pro některá užitečná rozšíření Vulkan a sloučení s vývojem projektu D9VK.

Dodatek: v horkém pronásledování vytvořený opravné vydání D9VK 0.40.1, ve kterém opraveno nastavte vec4(1) na výchozí hodnotu pro COLOR0 ve vertex shaderech a opravili chybu, kdy výchozí bity výstupního slotu shaderu byly nesprávně použity, a proto byly nesprávně opraveny backendem, což způsobilo jejich nahrazení vec4(0).

Zdroj: opennet.ru

Přidat komentář