当 Valve 与 CodeWeavers 团队的一部分签订合同来帮助构建 Proton 时,他们可能没有想到他们今天看到的成功程度。自该合同于 2016 年秘密开始以来,Steam 目录的很大一部分现在都在 Linux 上运行。至少这些游戏既没有使用旨在检测其运行环境的 Windows 反作弊客户端,也没有成为与 DXVK 或VKD3D不完全兼容的 DirectX 调用的受害者。DXVK 是负责将 DirectX 即时转换为 Vulcan 的软件,而 VKD3D 为 DirectX 12 做同样的事情
CodeWeavers 对 Proton 的衍生技术并不陌生。20 多年来,他们一直在 Wine(Wine-Is-Not-An-Emulator)上构建解决方案,一直为公共和私营部门提供商业解决方案。2006 年,当 Apple 转向英特尔时,他们的消费产品 Crossover Office 获得了新的生命,促使他们将 Linux/Xorg 原生应用程序移植到 BSD/Aqua 环境。
团队面临新的挑战。与 DirectX12 的兼容性。虽然实验代码已经合并到 Valve 的 Proton 供 Linux 用户使用,但 Mac 上的 VKD3D 面临着许多必须克服的技术挑战和限制。根据 CodeWeavers 的说法,进入的障碍是 Apple 的Metal。他们说 DirectX 12 需要一百万个着色器资源视图 (SRV),与 Vulkan 等跨平台技术相比,这是很多的。Metal 的 SRV 上限为该数量的一半。来自帖子:
一般来说,Metal 以不同的方式进行细分,并且缺少几何着色器和变换反馈。特定于 DirectX 12 和 Metal,存在资源限制问题。通常,游戏需要访问至少一百万个着色器资源视图 (SRV)。访问这么多 SRV 需要在第 2 层级别进行资源绑定。Metal 每个参数缓冲区仅支持大约 500,000 个资源,因此第 2 层资源绑定是不可能的。Metal 的 50 万的限制足以用于 Vulkan 描述符索引,但不适用于 D3D12。这个限制意味着 CrossOver Mac 不能支持 Tier 2 绑定,因此很多 DirectX 12 游戏将无法运行。
CodeWeavers 似乎有信心他们可以清除这些障碍,并在即将推出的 CrossOver 23 中为 Mac 带来 DirectX 12 兼容性,这对于那些想要玩PC 游戏的人来说是个好消息在M1 硬件上。对于那些计划在 Steam Deck、Steam OS 3.0 或广阔 Linux 桌面环境中的任何其他地方玩游戏的人,您将能够更快地利用这些进步,因为它们被推向上游Proton 实验。