D9VK 0.40, Direct3D 9 ieviešanas izlaišana virs Vulkan

notika projekta izlaidums D9VK 0.40, kas nodrošina Direct3D 9 ieviešanu, kas darbojas, tulkojot izsaukumus uz grafikas API Vulkan. Projekts ir balstīts uz projekta kodu bāzi DXVK, kas ir paplašināta, lai atbalstītu Direct3D 9. Salīdzinot ar WineD3D balstītu Direct9D 3 ieviešanu, D9VK sasniedz labāku veiktspēju, jo Direct3D 9 tulkošana, izmantojot OpenGL, ir lēnāka nekā tulkošana, izmantojot Vulkan.

D9VK var izmantot, lai palaistu 3D lietojumprogrammas un spēles operētājsistēmā Linux, izmantojot Wine. Tiek atbalstīta lielākā daļa spēļu, kuru pamatā ir Direct3D 9, izmantojot Shader modeļa 2. vai 3. versiju. Projekta kods izplata saskaņā ar bezmaksas Zlib licenci. D9VK nepieciešami draiveri, kas atbalsta Vulkan API, piemēram, AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ un AMDVLK.

Galvenie uzlabojumi:

  • Ir ieviesta iespēja izmantot vairāk nekā 4 GB video atmiņu 32 bitu lietojumprogrammās, kas atrisināja problēmas, palaižot modifikācijas spēlēm Skyrim un Oblivion;
  • Renderēšanas rezultāta parādīšanas ekrānā asinhronā apstrāde ir iespējota (prezentācijas posms). Lai samazinātu latentumu galvenajā renderēšanas pavedienā, komandu iesniegšanas pavedienā tiek veikta izvades apstrāde;
  • Noņemti nevajadzīgie komandu plūsmas sinhronizācijas punkti, izgūstot pieprasītos datus;
  • Iekšējā laika noteikšanas kods ir tulkots, lai izmantotu platformai specifisku taimeri, kas palīdzēja atrisināt problēmas ar nepareizu augstas_izšķirtspējas_pulksteņa uzvedību no MinGW;
  • Atlikto buferu MANAGED un SYSTEMMEM izkraušana tiek nodrošināta posmā pirms PrepareDraw izpildes, kas atrisināja izpildes problēmas spēlēs Risen un Legend of the Heroes: Trails of the Sky;
  • Pievienots atbalsts D3DTA_CONSTANT, kas ļāva ieviest pareizu renderēšanu mirdzuma efekts SpinTyres un Mudrunner spēlēs;
  • Uzlabota saderība ar DirectX 9Ex (D3D9Ex). Tiek ņemta vērā ResetEx un Reset apstrādes specifika;
  • Iztīrīts un pārveidots kods;
  • Tiek nodrošināta tieša WRITEONLY buferu kartēšana, kas var pozitīvi ietekmēt veiktspēju un apiet spēles kļūdu
    Counter-Strike: Global Offensive, kā rezultātā turpinās rakstīšana buferī pēc tā atbloķēšanas;

  • Metode ieviesta SetDialogBoxMode, kas ļauj izmantot dialoglodziņus pilnekrāna lietojumprogrammās;
  • Atbalsts īstenots sajaukšanas virsotnesIeskaitot indeksētā virsotņu sajaukšana, nepieciešama SWVP (SoftWare Vertex Processing);
  • Paraugu ņemšanas skaitītājs, kas tiek rādīts pašreizējā attēla augšpusē (uzmanības displejs, HUD), ir pārveidots;
  • Pievienota opcija d3d9.dialogBoxMode, ar kuru var atslēgt darbu tikai pilnekrāna režīmā;
  • Veica veiktspējas optimizāciju un atrisināja problēmas, kas radās, uzsākot GTA spēles: 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 Ātrums: Carbon and Risen 1.

Turklāt var atzīmēt nodomu projekta izstrādātājs DXVK (DXGI, Direct3D 10 un Direct3D 11 ieviešana papildus Vulkan API) īslaicīgi koncentrēsies tikai uz kļūdu labojumiem, palēninot funkcionalitātes paplašināšanos. Līdzīga vēlme ko izraisa bažas par koda bāzes kvalitātes pazemināšanos un sarežģītāku apkopi nākotnē. Katrs 1.4.x filiāles atjauninājums rada sūdzības par regresīvām izmaiņām, kuras nevar reproducēt, lokalizēt un labot.

Šīm problēmām ir jāanalizē to rašanās iemesli, pretējā gadījumā to atstāšana neizlabotu, turpinot palielināt funkcionalitāti, var tikai pasliktināt situāciju un pārvērst apkopes procesu par murgu. Plānos, ko DXVK izstrādātājs plāno īstenot pirms pārslēgšanās uz tikai kļūdu labošanas režīmu, ietilpst atbalsta pievienošana dažiem noderīgiem Vulkan paplašinājumiem un apvienošana ar D9VK projekta attīstību.

Papildinājums: karsti uz papēžiem veidojas koriģējošais izlaidums D9VK 0.40.1, kurā fiksēts iestatiet vec4(1) uz COLOR0 noklusējuma vērtību virsotņu ēnotājos un izlaboja kļūdu, kur noklusējuma ēnotāja izvades slota biti tika nepareizi lietoti un tāpēc tos nepareizi izlaboja aizmugursistēma, kā rezultātā tie tika aizstāti ar vec4(0).

Avots: opennet.ru

Pievieno komentāru