Megjelent a DXVK 2.0

kami911 képe

Megjelent a DXVK 2.0 verziója, amely a Steam rendszeren futtatható Windows-os játékok futtató komponense. A DXVK programkönyvtár segítségével a windows-os D3D9, D3D10 és D3D11 DirectX rendszerhívásokat fordítja át Vulkan-nal kompatibilis rendszerhívásokra. Ezt használja a Steam-be integrált, Wine köztesréteg alapú, Proton, amely lehetővé teszi a Windows-on futó játékok Linuxon futtatására. Fontos újdonság, hogy ehhez a verzióhoz már Vulkan 1.3 kompatibilis illesztőprogramok szükségesek.

A DXVK 2.0 körülbelül nyolc hónappal a DXVK 1.10.0 után érkezett meg, rengeteg teljesítményjavítással és javítással néhány népszerű játékhoz, köztük: Alan Wake, Alice Madness Returns, Anomaly: Warzone Earth, Beyond Good and Evil, Dragon Age Origins, Empire: Total War, Final Fantasy XV, Grand Theft Auto IV, Heroes Of Annihilated Empires, Limit King Of Fighters XIII, Metal Gear Solid V: Ground Zeroes, SiN Episodes: Emergence, Sonic Generations, Spider Man: Shattered Dimensions, The Ship, Warhammer Online, Ys Seven,

A DirectX 3D 9-cel kapcsolatos újdonság a memóriakezeléssel kapcsolatos fejlesztések. Annak érdekében, hogy a 32 bites D3D9 játékokban csökkenjen a címtartomány kifogyásának valószínűsége, a DXVK mostantól memóriatérkép-fájlokat (memory-mapped files) használ a textúrák árnyékmásolatainak tárolására. Ez lehetővé teszi, hogy feloldják a játék által nem használt memória leképezését, így jelentős mennyiségű, akár több száz megabájtnyi címterületet szabadíthat fel.

A VK_EXT_attachment_feedback_loop_layoutot támogató meghajtókon mostantól megfelelően támogatott a D3D9 játékokban az active render target olvasása, ami korábban az újabb AMD hardvereken leképzési problémákat okozott, és meghajtószintű megoldásokat igényelt. Ez számos játékot érint, köztük a GTA IV-et is.

A D3D9 alfa teszt implementációját megváltoztattuk, hogy jobban megfeleljen az Nvidia implementációjának viselkedésének, ami kijavítja a különböző játékok pontatlanságait. A d3d9.alphaTestWiggleRoom opciót eltávolítottuk, és a korábban ezt az opciót igénylő játékoknak mostantól alapértelmezés szerint helyesen kell működniük.

A DirectX 3D 10-ben változott, hogy a DXVK korábbi verziói a d3d10.dll és a d3d10_1.dll hiányos implementációit szállította, de az 1.6-os verzió óta nem telepíti őket alapértelmezés szerint, mivel a wine implementációja több olyan funkciót biztosít, amelyek szükségesek a D3D10 játékok futtatásához, beleértve a D3D10 Effects keretrendszert. Mivel a mi implementációnk nem teljes és a Proton vagy a Lutris már nagyon régóta nem használja, a DXVK ettől a kiadástól kezdve nem szállítja ezeket a DLL-eket. Maga a D3D10 API továbbra is támogatott a d3d10core.dll-en keresztül.

A DirectX 3D 11-gyel kapcsoltban új támogatott feature szint jelent meg. A DXVK mostantól a D3D11 Feature Level 12_1 funkciót a következő újonnan hozzáadott funkciókkal támogatja:

  • Tier 3 szintű tiled erőforrások (Tiled Resources up to Tier 3) használata a Vulkan sparse binding és sparse residency funkciók megléte esetén.
  • Konzervatív raszterizáció a Tier 3 szintig (Conservative Rasterization up to Tier 3), feltéve, hogy a megfelelő Vulkan konzervatív raszterizációs funkciók támogatottak.
  • Raszterizáló rendezett nézetek (Rasterizer Ordered Views), feltéve, hogy a megfelelő Vulkan fragment shader interlock funkciók támogatottak.

Bár nem ismert olyan játék, amely ezeket a funkciókat közvetlenül a D3D11-ben használná, néhány játék és játékindító arra támaszkodik, hogy a funkciók támogatása konzisztens legyen a D3D11 és a D3D12 között, hogy a felhasználók engedélyezhessék a D3D12-t a játékopciókban. Bár a saját implementáció általában működőképes, előfordulhatnak hibák vagy teljesítményproblémák abban az esetben, ha egy játék mégis használja ezeket a funkciókat.

Továbbá a DXVK mostantól támogatja a D3D11_FEATURE_SHADER_CACHE és a D3D11_FEATURE_D3D11_OPTIONS5 funkció lekérdezéseit.

Fontos kiemelni, hogy az AMD Vulkan illesztőprogramok jelenleg nem támogatják a fragment shader interlockot, és a 12_0 funkciószintre korlátozódnak. Továbbá az Intel ANV-illesztőprogramja jelenleg nem támogatja a megfelelő Vulkan-funkciókat, és ezért a 11_1-es funkciószintre korlátozódik. Ez a DXVK-ra és a vkd3d-protonra egyaránt vonatkozik.
Az ID3D11DeviceContext implementációit úgy alakították át, hogy az azonnali és a halasztott kontextusok (immediate contexts and deferred contexts) többé ne használjanak közös belépési pontokat. Ez közelebb áll a Windows viselkedéséhez, és javíthatja a kompatibilitást a harmadik féltől származó könyvtárakkal és modokkal, amelyek kifejezetten a D3D11 azonnali kontextusba kapcsolódnak, valamint csökkenti a CPU terhelést, mivel néhány gyakran használt kódútvonal mostantól specializáltabb az egyes kontextustípusokra. Az állapot törlési és visszaállítási módszereket optimalizálták, hogy tovább csökkentsék a CPU-ráfordítást a halasztott kontextusokat erősen használó játékokban, például az Assassin's Creedben: Origins, vagy kifejezetten gyakran hívják a ClearState-et, például: God of War.

A Shader-összeállítás kapcsolatos változások a VK_EXT_graphics_pipeline_library-t támogató meghajtókon, beleértve az IndependentInterpolationDecoration funkciót is, a Vulkan árnyékolók (shaders) mostantól a játék D3D árnyékolóinak betöltésekor kerülnek lefordításra, nem pedig a rajzoláskor. Ez sok játékban csökkenti vagy megszünteti az árnyékolók (shaders) menet közbeni fordítása által okozott akadozását.

Azokban a játékokban, amelyek a shadereket a betöltőképernyőkön vagy a menüben töltik be, ez hosszan tartó, nagyon magas CPU-kihasználtságú időszakokhoz vezethet, különösen a gyengébb CPU-kon. Az érintett játékok esetében ajánlott megvárni a árnyékolók (shaders) fordításának befejezését a játék indítása előtt, hogy elkerülhető legyen a szaggatás és az alacsony teljesítmény. A árnyékolók (shaders) fordításának aktivitása a DXVK_HUD=compiler használatával ellenőrizhető. Megjegyzés: A vonatkozó Vulkan funkciókat jelenleg csak az Nvidia illesztőprogramok támogatják (520.56.06 vagy újabb verzió). Az illesztőprogramok támogatása a jövőben várhatóan javulni fog.

A DXVK jelenlegi kódja Vulkan 1.3 képes meghajtót, valamint Wine 7.1 vagy újabb Wine 7.1-et igényel a winevulkan támogatáshoz.

Általánosságban elmondható, hogy minél naprakészebbek a grafikus illesztőprogramok - annál jobb, és legalább az operációs rendszeredhez és a hardveredhez elérhető legújabb stabil verziót használja. Az alábbi táblázat a DXVK futtatásához minimálisan szükséges verziókat, valamint az ajánlott oszlopban a további funkciókat támogató vagy teljesítményt nyújtó verziókat sorolja fel.

A következő Linux-illesztőprogramok támogatottak:

Illesztőprogram Szükséges verzió Ajánlott verzió
AMD (RADV) 22.0 22.2
Nvidia 510.47.03 520.56.06
Intel (ANV) 22.0 22.2

Az Nvidia Kepler architektúrája (a legtöbb GTX 600 / 700 sorozat) már nem támogatott. Ezzel a GPU-kkal szerelt kártyákhoz a DXVK 1.10.3 verziója használható. Ezzel a verzióval kapcsolatban a Vulkan 1.1 képes illesztőprogram a feltétel.

Illesztőprogram Szükséges verzió Ajánlott verzió
AMD (RADV) 20.2 22.0
Nvidia 470.82 510.47.03
Intel (ANV) 22.0 22.0

Érdemes figyelni, hogy a Proton és a DXVK fejlesztése hogyan alakul és miképpen lesz elérhető Linux-on egyre több és több Windows játék. A GitHub-on elérhető kiadás. Az újdonságok vélhetően hamarosan elérhetőek lesznek a Steam Play (Proton) alatt is.