Valve 最近推出了 发布新版 VKD3D-Proton 2.9, vkd3d 代码库的一个分支,旨在提高质子游戏启动器中的 Direct3D 12 兼容性。
对于那些仍然不知道 VKD3D-Proton 的人应该知道这个 支持 Proton 特定的更改、优化和增强功能,以提高基于 Direct3D 12 的 Windows 游戏的性能,vkd3d 的主要部分尚未接受。 在这些差异中,还有一个重点是使用现代 Vulkan 扩展和最新版本的图形驱动程序的功能来实现完全的 Direct3D 12 兼容性。
因此 Valve 使用基于 Wine 的包中指定的 fork 运行 Windows Proton 游戏。 Proton 中的 DirectX 9/10/11 支持基于 DXVK 包,而 DirectX 12 实现目前一直基于 vkd3d 库(在 vkd3d 作者去世后,CodeWeavers 继续开发该组件和 wine 社区)。
VKD3D-Proton 2.9 的主要创新
这个新版本的 VKD3D-Proton 2.9 提到了 一些游戏开始假设 DLL 的设计类似于 AgilitySDK, 因此,库 d3d12core.dll 分为加载程序 (d3d12.dll) 和主要实现 (d3d12core.dll)。 通过此更改,现在需要更新多个脚本以适应这两个 DLL。 在前缀中安装 d3d12.dll 后,只需更新 d3d12core.dll。
在这个新版本中突出的另一个变化是 实施了性能优化 是在这个版本中 显着降低内存需求 在第一次启动应用程序时。
还强调的是e 在使用的代码中提高了性能 扩展名 VK_EXT_descriptor_buffer,以及对使用 Intel、AMD 和 NVIDIA GPU 的系统进行的优化。
除此之外, 添加了对 D3D11On12 可移植接口的支持, 删除了之前实施虚拟帧缓冲区 (SwapChain) 的代码,为 SwapChain 添加了对标准 Linux 接口的支持,并修复了使用 NVIDIA 和 RADV 驱动程序时出现的一些问题。
此外, Vulkan 1.3 现在被宣布为最低要求的版本, 还添加了对无序切片(3D UAV,Unordered View)操作的支持,使用 VK_EXT_image_sliced_view_of_3d 扩展实现。
其他变化 从这个新版本中脱颖而出:
- 支持 VK_EXT_pageable_device_local_memory 时改进了 VRAM 行为,允许以有用的方式实现 Evicty 和 MakeResident API。
VK_EXT_memory_priority 也用于提供静态优先级作为后备。 - 通过启用 VK_EXT_pipeline_library_group_handles 扩展改进了对 DXR 1.1 的支持。
- 添加了对 VK_EXT_fragment_shader_interlock 扩展的支持。
- 改进了与使用 AgilitySDK 特定功能的游戏的兼容性。
- 修复了许多游戏中的问题。
- 在 Wine 中,使用 winevulkan.dll 代替 vulkan-1.dll(如果可用)。
- 改进了与依赖于 AgilitySDK 某些细节的游戏的兼容性。
- 改进了构建系统与不同 widl 版本的兼容性
- VKD3D_CONFIG=dxr 现在也启用 DXR 1.1 并且 dxr11 被保存用于兼容。
- 修复了 HDR 元数据最小亮度值。
- 添加了 VKD3D_LIMIT_TESS_FACTORS 以修复过多的曲面细分。 为卧龙启用。
- 修复了导致着色器缓存内存过多的 RADV 错误。 您可以节省数百 MB 的内存,这对于某些需要大量内存的游戏来说很重要,可以避免不稳定。
- 修复了使用时间线信号量并发队列提交的 NVIDIA 错误
- 修复了许多不同游戏中的一堆 Xid 109 CTX_SWITCH_TIMEOUT 无法解释的错误。
最后 如果您有兴趣了解有关此新版本的更多信息, 您可以查看详细信息 在下面的链接中。如果你想 立即在Steam上尝试Proton,您已经知道可以从 网络公报,尽管您也会在大多数发行版的存储库中找到它。