DXVK 3.0 现已发布,这是基于 Vulkan API 的 Direct3D 8/9/10/11 实现的最新主要功能版本,可供 Wine 和 Valve 的 Steam Play (Proton) 使用。
DXVK 3.0 的一项重大改进是使用 dxbc-spirv 进行着色器编译,替换了所有受支持着色器模型的旧版着色器转换代码。这修复了许多以前无法解决的问题:
- 游戏中的渲染问题,可能是由于游戏依赖于未定义的行为,或者在某些情况下 FXC 生成无效代码造成的,例如 Postal: Brain Damaged(#3488) 和Snowrunner(#13251)。
- 生成的代码比直接翻译的 SPIR-V 代码更紧凑,从而大幅降低了 DXVK 的内存占用。在 Overwatch 或 God of War 等游戏中,这可以节省大约 1 GiB 的系统内存。
- 着色器编译现在完全卸载到工作线程,这可以缩短 Days Gone 和 Final Fantasy XIV 等游戏的启动时间,或者在某些情况下减少卡顿。此前,DXVK 会在应用程序线程上执行 SPIR-V 转换,而仅在工作线程上编译实际的 Vulkan pipelines。
- DXVK 自身编译着色器的中间表示形式现在缓存在当前 Wine 前缀
AppData/Local目录下的磁盘上。这是因为与旧编译器相比,编译时间有所增加。缓存路径可以通过DXVK_SHADER_CACHE_PATH环境变量进行更改。
D3D9 的 Shader Model 1-3 支持已实现。
注意:除特定极端情况外,新编译器预计不会提升整体性能。对于开发者:在修改着色器编译器时,建议设置DXVK_SHADER_CACHE=0避免加载过时的着色器。
DXVK 3.0 的另一项重大改进是,在支持的 Vulkan API 驱动程序上默认使用 Vulkan 描述符堆 (VK_EXT_descriptor_heap)。
以及带来了一系列 Direct3D 改进、共享资源增强、帧率限制器支持以及其他各种错误修复和改进。同时,DXVK 3.0 现在需要 Vulkan 1.4 驱动程序级别的支持。
详情可查看:https://github.com/doitsujin/dxvk/releases/tag/v3.0