Izdaja D9VK 0.40, implementacija Direct3D 9 na vrhu Vulkana

potekala izdaja projekta D9VK 0.40, ki zagotavlja implementacijo Direct3D 9, ki deluje s prevajanjem klicev v grafični API Vulkan. Projekt temelji na kodni bazi projekta DXVK, ki je bil razširjen za podporo Direct3D 9. V primerjavi z izvedbo Direct3D 9, ki temelji na WineD3D, D9VK dosega boljšo zmogljivost, ker je prevod Direct3D 9 prek OpenGL počasnejši od prevoda prek Vulkana.

D9VK se lahko uporablja za zagon 3D aplikacij in iger v Linuxu z uporabo Wine. Podprtih je večina iger, ki temeljijo na Direct3D 9 in uporabljajo različico 2 ali 3 Shader Model. Koda projekta distributer pod brezplačno licenco Zlib. D9VK zahteva gonilnike, ki podpirajo API Vulkan, kot so AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ in AMDVLK.

Glavne izboljšave:

  • Izvedena je bila možnost uporabe več kot 4 GB video pomnilnika v 32-bitnih aplikacijah, kar je rešilo težave pri zagonu modifikacij za igre Skyrim in Oblivion;
  • Omogočena je asinhrona obdelava prikaza rezultata upodabljanja na zaslonu (stopnja predstavitve). Za zmanjšanje zakasnitve v glavni niti upodabljanja se izhodna obdelava izvede v niti za oddajo ukaza;
  • Odstranjene nepotrebne točke sinhronizacije toka ukazov pri pridobivanju zahtevanih podatkov;
  • Koda za določanje notranjega časa je bila prevedena za uporabo časovnika, specifičnega za platformo, kar je pomagalo rešiti težave z nepravilnim delovanjem high_resolution_clock iz MinGW;
  • Razkladanje odloženih medpomnilnikov MANAGED in SYSTEMMEM je zagotovljeno na stopnji pred izvedbo PrepareDraw, ki je rešil težave z zmogljivostjo v igrah Risen in Legend of the Heroes: Trails of the Sky;
  • Dodana podpora D3DTA_KONSTANT, kar je omogočilo implementacijo pravilnega upodabljanja učinek sijaja v igrah SpinTyres in Mudrunner;
  • Izboljšana združljivost z DirectX 9Ex (D3D9Ex). Upoštevane so posebnosti obdelave ResetEx in Reset;
  • Očiščena in refaktorirana koda;
  • Zagotovljeno je neposredno preslikavo medpomnilnikov WRITEONLY, kar lahko pozitivno vpliva na zmogljivost in zaobide napako v igri
    Counter-Strike: Global Offensive, kar ima za posledico nadaljnje pisanje v medpomnilnik, potem ko je odklenjen;

  • Izvedena metoda SetDialogBoxMode, ki vam omogoča uporabo pogovornih oken v celozaslonskih aplikacijah;
  • Podpora izvedena mešalna ogliščaVključno indeksirano mešanje vozlišč, potrebno za SWVP (programska obdelava vozlišč);
  • Števec vzorčevalnika, prikazan na vrhu trenutne slike (heads-up display, HUD), je bil preoblikovan;
  • Dodana možnost d3d9.dialogBoxMode, s katero lahko onemogočite delovanje samo v celozaslonskem načinu;
  • Izvedene so bile optimizacije delovanja in rešene težave, ki so se pojavile pri zagonu iger 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 Hitrost: Carbon in Risen 1.

Poleg tega je mogoče opozoriti namen razvijalec projekta DXVK (implementacija DXGI, Direct3D 10 in Direct3D 11 na vrhu API-ja Vulkan) bo začasno osredotočil prizadevanja le na popravke napak, kar bo upočasnilo širitev funkcionalnosti. Podobna želja povzročil skrbi glede zmanjšanja kakovosti kodne baze in težjega vzdrževanja v prihodnosti. Vsaka posodobitev veje 1.4.x povzroča pritožbe glede regresivnih sprememb, ki jih ni mogoče reproducirati, lokalizirati in popraviti.

Te težave zahtevajo analizo vzrokov za njihov nastanek, sicer lahko, če jih pustite neodpravljene ob nadaljnjem povečevanju funkcionalnosti, le poslabšate situacijo in spremenite postopek vzdrževanja v nočno moro. Načrti, ki jih razvijalec DXVK namerava izvesti pred preklopom na način samo za odpravljanje napak, vključujejo dodajanje podpore za nekatere uporabne razširitve Vulkan in združitev z razvojem projekta D9VK.

Dodatek: vroče za petami oblikovana popravljalna izdaja D9VK 0.40.1, v kateri določen nastavil vec4(1) na privzeto vrednost za COLOR0 v senčnikih vozlišč in odpravil napako, pri kateri so bili privzeti biti izhodne reže senčila nepravilno uporabljeni in jih je zato nepravilno popravilo zaledje, zaradi česar so bili zamenjani z vec4(0).

Vir: opennet.ru

Dodaj komentar