Liberigo de D9VK 0.40, Direct3D 9 efektivigo aldone al Vulkan

okazis projekteldono D9VK 0.40, kiu disponigas Direct3D 9 efektivigon kiu funkcias tradukante vokojn al la grafika API vulkano. La projekto baziĝas sur la kodbazo de la projekto DXVK, kiu estis etendita por subteni Direct3D 9. Kompare kun la WineD3D-bazita Direct9D 3 efektivigo, D9VK atingas pli bonan efikecon ĉar Direct3D 9 traduko per OpenGL estas pli malrapida ol tradukado per Vulkan.

D9VK povas esti uzata por ruli 3D-aplikaĵojn kaj ludojn en Linukso uzante Wine. La plej multaj ludoj bazitaj sur Direct3D 9 uzanta version 2 aŭ 3 de la Shader Model estas subtenataj. Projekta kodo distribuita de sub la libera Zlib-licenco. D9VK postulas ŝoforojn kiuj subtenas la Vulkan API, kiel AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ kaj AMDVLK.

Ĉefaj plibonigoj:

  • La kapablo uzi pli ol 4 GB da videomemoro en 32-bitaj aplikoj estis efektivigita, kio solvis problemojn dum lanĉo de mods por la ludoj Skyrim kaj Oblivion;
  • Nesinkrona pretigo de montrado de la bildiga rezulto sur la ekrano estas ebligita (prezentetapo). Por redukti latencian sur la ĉefa bildiga fadeno, eligo-prilaborado estas farita en la komanda submeta fadeno;
  • Forigis nenecesajn komandfluajn sinkronigajn punktojn kiam oni reakiras petitajn datumojn;
  • La kodo por determini la internan tempon estis tradukita por uzi platform-specifan tempigilon, kiu helpis solvi problemojn kun la malĝusta konduto de high_resolution_clock de MinGW;
  • Malŝarĝo de prokrastitaj bufroj MANAGED kaj SYSTEMMEM estas certigita ĉe la etapo antaŭ la ekzekuto de PrepareDraw, kiu solvis rendimentajn problemojn en la ludoj Risen kaj Legend of the Heroes: Trails of the Sky;
  • Aldonita subteno D3DTA_CONSTANT, kiu ebligis efektivigi ĝustan bildigon brilefekto en SpinTyres kaj Mudrunner-ludoj;
  • Plibonigita kongruo kun DirectX 9Ex (D3D9Ex). La specifaĵoj pri prilaborado de ResetEx kaj Reset estas konsiderataj;
  • Purigita kaj refactorigita kodo;
  • Rekta mapado de WRITEONLY-bufroj estas provizita, kiu povas havi pozitivan efikon al agado kaj preteriri cimon en la ludo.
    Counter-Strike: Tutmonda Ofensivo, rezultigante daŭran skribon al la bufro post kiam ĝi estas malŝlosita;

  • Implementita metodo SetDialogBoxMode, kiu ebligas al vi uzi dialogujojn en plenekranaj aplikaĵoj;
  • Subteno efektivigita miksante verticojninkludante indeksita vertica miksado, bezonata por SWVP (SoftWare Vertex Processing);
  • La samplila nombrilo, montrita supre de la nuna bildo (kapa ekrano, HUD), estis restrukturita;
  • Aldonita opcio d3d9.dialogBoxMode, kiu povas esti uzata por malŝalti funkciadon nur en plena ekrana reĝimo;
  • Faris rendimentooptimumigojn kaj solvis problemojn, kiuj okazis dum lanĉo de GTA-ludoj: San Andreas, The Masquerade Bloodlines, Max Payne 2, La Sims 2, Silent Hunter 3, Senran Kagura Shinovi, Dungeons and Dragons, Crysis, Metal Slug X, ANGLE, Need for Rapido: Karbono kaj Leviĝinta 1.

Aldone, ĝi povas esti notita intenco projektisto DXVK (efektivigo de DXGI, Direct3D 10 kaj Direct3D 11 aldone al la Vulkan API) provizore fokusos klopodojn nur pri cimoj, malrapidigante la ekspansion de funkcieco. Simila deziro kaŭzita de zorgoj pri malkresko de la kvalito de la kodbazo kaj pli malfacila prizorgado en la estonteco. Ĉiu ĝisdatigo de la branĉo 1.4.x kaŭzas plendojn pri regresaj ŝanĝoj, kiuj ne povas esti reproduktitaj, lokalizitaj kaj riparitaj.

Ĉi tiuj problemoj postulas analizon de la kialoj de ilia apero, alie lasi ilin nekorektitaj dum daŭre pliigi funkciecon povas nur pligravigi la situacion kaj igi la prizorgan procezon en koŝmaron. La planoj, kiujn la DXVK-programisto intencas efektivigi antaŭ ol ŝanĝi al nur-riparado de cimoj, inkluzivas aldoni subtenon por iuj utilaj Vulkan-etendaĵoj kaj kunfandi kun la evoluoj de la D9VK-projekto.

Aldono: varma sur la kalkanoj formis korekta eldono D9VK 0.40.1, en kiu fiksita starigis vec4(1) al la defaŭlta valoro por COLOR0 en verticaj ombriloj, kaj riparis cimon kie la defaŭltaj ombrilaj eligfendetoj estis malĝuste aplikitaj kaj tial malĝuste korektitaj de la backend, igante ilin esti anstataŭigitaj per vec4(0).

fonto: opennet.ru

Aldoni komenton