Vydání D9VK 0.40, implementace Direct3D 9 na Vulkan

Proběhlo vydání projektu D9VK 0.40, která implementuje Direct3D 9 a pracuje prostřednictvím překladu volání do grafického API Vulkan. Projekt je založen na kódové základně projektu DXVK, která byla rozšířena o podporu Direct3D 9. Ve srovnání s implementací Direct3D 9 založenou na WineD3D, D9VK umožňuje dosáhnout vyššího výkonu, jelikož překlad Direct3D 9 přes OpenGL funguje pomaleji než překlad přes Vulkan.

D9VK lze použít ke spuštění 3D aplikací a her v Linuxu prostřednictvím Wine. Podporováno je spuštění většiny her založených na Direct3D 9, které používají verzi 2 nebo 3 Shader Modelu. Kód projektu distribuováno je dostupný pod volnou licencí Zlib. Pro používání D9VK jsou vyžadovány ovladače s podporou API Vulkan, jako jsou AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ a AMDVLK.

Hlavní vylepšení:

  • Byla implementována možnost použití více než 4 GB video paměti v 32bitových aplikacích, což vyřešilo problémy při spuštění modů her Skyrim a Oblivion;
  • Byla zahrnuta asynchronní zpracování výstupu renderování na obrazovku (fáze prezentace). Aby se snížily zpoždění v hlavním vlákně renderování, zpracování výstupu se provádí ve vlákně příkazu (thread of command submission);
  • Byly odstraněny nadbytečné synchronizační body příkazu při extrakci požadovaných dat;
  • Kód pro určení vnitřního času byl převeden na použití specifického pro platformu časovače, což pomohlo vyřešit problémy s nesprávným chováním high_resolution_clock z MinGW;
  • Bylo zajištěno uvolnění odložených bufferů MANAGED a SYSTEMMEM ve fázi před provedením PrepareDraw, což vyřešilo problémy s výkonem v hrách Risen a Legend of the Heroes: Trails of the Sky;
  • Byla přidána podpora D3DTA_CONSTANT, umožňující správné vykreslení efektu záření ve hrách SpinTyres a Mudrunner;
  • Byla vylepšena kompatibilita s DirectX 9Ex (D3D9Ex). Byla zohledněna specifika zpracování ResetEx a Reset;
  • Byly provedeny úklidy a refaktorizace kódu;
  • Bylo zajištěno přímé mapování bufferů WRITEONLY, což může pozitivně ovlivnit výkon a obejít chybu ve hře
    Counter-Strike: Global Offensive, vedoucí k pokračování zápisu do bufferu po jeho odemknutí;
  • Byla implementována metoda SetDialogBoxMode, umožňující používat dialogová okna v celoobrazovkových aplikacích;
  • Byla implementována podpora smíchání vrcholů, včetně indexovatelného smíchání vrcholů, potřebného pro SWVP (SoftWare Vertex Processing);
  • Byl přepracován čítač vzorkovače, zobrazený na aktuálním obraze (heads-up display, HUD);
  • Přidána volba d3d9.dialogBoxMode, kterou lze použít k vypnutí režimu na celé obrazovce;
  • Byla provedena optimalizace výkonu a vyřešeny problémy, které se objevovaly při spuštění her jako 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 a Risen 1.

Dále lze poznamenat na záměr vývojáře projektu DXVK (implementace DXGI, Direct3D 10 a Direct3D 11 nad API Vulkan) se na čas zaměřit pouze na opravu chyb, přičemž rozšíření funkcionality bylo pozastaveno. Taková touha je způsobeno se obavami o kvalitu kódové základny a zpřístupnění údržby v budoucnosti. Každá aktualizace větve 1.4.x vyvolává stížnosti na regresivní změny, které se nedaří reprodukovat, lokalizovat a odstranit.

Tyto problémy vyžadují analýzu příčin jejich vzniku, jinak by ponechání bez opravy při pokračujícím zvyšování funkcionality mohlo situaci pouze zhoršit a proměnit proces údržby v noční můru. Mezi plány vývojáře DXVK, které hodlá uskutečnit před přechodem na režim pouze pro opravy chyb, patří přidání podpory některých užitečných rozšíření Vulkan a sloučení s pracemi projektu D9VK.

Doplňující informace: na horké stopy byl vytvořen opravené vydání D9VK 0.40.1, ve kterém byly opraveny na vec4(1) výchozí hodnota pro COLOR0 ve vertex shaderech a odstraněna chyba, kvůli které byly bity slotů pro výstupy shaderu výchozím způsobem nesprávně aplikovány a tudíž nesprávně opraveny backendem, což vedlo k jejich nahrazení vec4(0).

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster