Byl vydán nový layer DXVK 3.0, který implementuje DXGI (DirectX Graphics Infrastructure), Direct3D 8, 9, 10 a 11, fungující prostřednictvím translace volání do API Vulkan. Pro použití DXVK je nutné mít ovladače podporující API Vulkan 1.4, jako jsou NVIDIA 575.51.02, Mesa AMD RADV 25.0, NVIDIA 25.1 a Intel ANV 25.1. DXVK může být použit pro spouštění 3D aplikací a her v Linuxu pomocí Wine, což představuje výkonnější alternativu k zabudovaným implementacím Direct3D v rámci Wine, které fungují nad OpenGL.
Hlavní změny:
- Pro všechny podporované modely shaderů byl použit shaderový kompilátor dxbc-spirv. Kompilace shaderů byla přesunuta z hlavního vlákna do samostatných vláken.
Bylo implementováno diskové cache pro mezipředstavení shaderů (cache se ukládá do podadresáře AppData/Local v aktuálním prefixu Wine).
Použití dxbc-spirv umožnilo snížit spotřebu paměti, zkrátit čas spuštění, vyloučit záseky a zbavit se řady problémů, které se projevovaly ve hrách Postal: Brain Damaged, Snowrunner, Overwatch, God of War, Days Gone a Final Fantasy XIV, které nebylo možné vyřešit ve starém kódu pro translaci shaderů. - Pro D3D9 byla implementována podpora shaderových modelů 1-3.
- Ve výchozím nastavení je použito Vulkan rozšíření VK_EXT_descriptor_heap. Ve srovnání s dříve používaným úložištěm deskriptorů na bázi Vulkan rozšíření VK_EXT_descriptor_buffer nová implementace zajišťuje stejnou úroveň výkonu operací prováděných na CPU, ale snižuje zátěž na GPU, zejména při použití grafických karet NVIDIA. Pro práci na systémech s grafickými kartami NVIDIA je vyžadována alespoň verze proprietárních ovladačů NVIDIA 595.84. Implementace založená na VK_EXT_descriptor_buffer byla vyhlášena za zastaralou a bude odstraněna v jednom z následujících vydání.
V implementaci Direct3D 9 se místo generování shaderů za běhu nyní používají uber-shadery, jejichž optimalizované verze jsou kompilovány na pozadí, což vyřešilo problémy se záseky některých starých her, jako je Unreal Tournament 2004. Je zajištěno načítání bufferů podle potřeby, stejně jako ve Windows, místo předběžného umístění ve video paměti, což vyloučilo havárie některých 32bitových D3D9 her kvůli omezenému adresnímu prostoru. - V implementaci Direct3D 9 se nyní místo generování shaderů za běhu používají uber-shadery, jejichž optimalizované verze se kompilují na pozadí, což vyřešilo problémy s výpadky některých starých her, jako je Unreal Tournament 2004. Bylo zajištěno načítání bufferů podle potřeby, jako ve Windows, místo předběžného umístění do videopaměti, což odstranilo havárie některých 32bitových D3D9 her kvůli omezenému adresnímu prostoru.
- Byla zajištěna správná funkčnost multiplikačního vzorkování (MSAA) v režimu D3DRS_MULTISAMPLEANTIALIAS na systémech s podporou Vulkan rozšíření VK_EXT_sample_locations a VK_EXT_extended_dynamic_state3, což vyřešilo problémy s renderováním ve hrách Anno 1701, Men of War a dalších při zapnutém MSAA.
- Byla zajištěna podpora práce se sdílenými zdroji (Shared resources) v běžných verzích Wine bez dalších patchů od projektu Proton.
- Byla odstraněna proměnná prostředí DXVK_FRAME_RATE, používaná k omezení snímkové frekvence (Frame rate limiter), místo které se doporučuje používat externí limitátory, jako jsou Gamescope a Mangohud. Pro aktivaci vestavěného limitátoru lze použít nastavení „dxvk.maxFrameRate = n“.
- Vyřešeny problémy ve hrách:
- Bioshock Infinite
- Borderlands 2
- Colin McRae Rally 3
- Dirt Rally 2
- Fallout New Vegas
- Insurgency & Counter-Strike
- Jump Space
- Max Payne
- Railroad Tycoon 3
- Resident Evil 6
- Sang-Froid: Tales of Werewolves
- Sea Dogs
- Splinter Cell 4
- The I of the Dragon
- The Sims 3
- Total War: Pharaoh
- Witch on the Holy Night
- World of Final Fantasy
- Vietcong
- Požadavky na minimální verzi grafického API byly zvýšeny na Vulkan 1.4.
Pro práci nyní vyžaduje alespoň verze ovladačů AMD RADV 25.0, NVIDIA 575.51.02, NVIDIA 25.1 a Intel ANV 25.1.
Zdroj: opennet.ru
