
D7VK 2.3现已发布,这是该兼容层的最新版本,旨在让基于Direct3D 7、Direct3D 6、Direct3D 5 和 Direct3D 3 的旧游戏能够在 Vulkan Linux 上运行。该更新于 2016 年 9 月 29 日发布,包含新的优化、针对多款经典游戏的特定修复,以及旨在提升旧版图形 API 性能的内部更改。
然而,此版本也带来了一个对项目未来发展至关重要的消息:开发者宣布 D7VK 将进入维护模式。这意味着不会再有重大新功能推出,未来的版本将主要致力于修复特定游戏或配置中可能出现的漏洞。
D7VK 2.3 将旧版 Direct3D 引入 Vulkan
D7VK 是一个源自 DXVK 的项目,专门针对 DXVK 没有直接涵盖的 DirectX 部分:第一代 Direct3D。
虽然 DXVK 主要关注较新的 API,但 D7VK 为Direct3D 3、5、6 和 7提供了基于 Vulkan 的实现。这使得 Wine 能够运行大量 20 世纪 90 年代末和 21 世纪初依赖于这些较旧图形接口的游戏。
该项目对于使用第一代 Direct3D 的游戏来说尤其有趣,因为这些游戏在使用 Wine 的传统图形路径运行时可能会出现问题。
一种新的阴影表面优化方法
D7VK 2.3 的主要修改之一影响了所谓的阴影表面,这些表面在内部使用,以避免 D3D 交换链和使用 DirectDraw 的呈现之间发生冲突。
在之前的版本中,这些表面存储在设备的内存中。D7VK 2.3 将它们移到了系统内存中。
这项改动专为那些大量使用这些表面的游戏而设计,例如,将鼠标光标直接复制到最终图像上的情况。开发者指出,这种修改可以显著提升此类场景下的性能。
纹理标识符处理方式的重组
D7VK 2.3 还对旧版 Direct3D API 使用的标识符的处理方式进行了更改。
尽管 Direct3D 6 官方已移除纹理标识符,但仍有一些程序继续使用依赖于这些标识符的兼容路径。新版本规范了不同代 Direct3D(兼容 D7VK)对这些标识符的处理方式。
目标是提高与以非常规方式使用这些接口的旧应用程序的兼容性,并防止某些游戏中出现错误行为。
经典游戏的修正
D7VK 2.3 还包含对旧版本的一些具体修正。
受影响的游戏包括《极品飞车:保时捷》、《黑暗复仇》 、《ZAR》和《星球大战:X翼联盟》。此外,还针对渲染问题、表面管理问题以及旧版API的行为问题进行了多项修复。
以《极品飞车:保时捷》为例,新增了与图形表现相关的更改,而其他游戏则进行了修复,旨在解决兼容性测试期间发现的特定问题。
D7VK 2.3 基于 DXVK 3.1.1
此版本还更新了 D7VK 使用的代码库。D7VK 2.3 基于DXVK 3.1.1构建,并包含了其来源项目的相应修改。
这样,D7VK 就可以继续受益于共享基础架构的修复和更改,同时保持其针对旧版 Direct3D API 的特定修改。
项目进入维护模式
D7VK 2.3 最重要的新功能与 Vulkan 或任何特定游戏没有直接关系。
开发商WinterSnowfall宣布 D7VK 项目即将进入维护模式。该项目已基本实现其目标,未来不会再推出任何重大新功能。
这并不意味着D7VK项目将被放弃。该项目仍将继续进行错误修复,但开发速度会放慢,新版本发布频率也会降低。
从项目发展的角度来看,这个决定是合理的:D7VK 实现的 API 已经几十年没有改变,现在的主要目标是保持现有游戏正常运行,而不是不断扩展功能。
这对Linux用户意味着什么?
对于通过 Wine 使用经典 Windows 游戏的用户来说,D7VK 2.3 主要代表了一个整合版本。
该项目在其不同版本中不断积累性能和兼容性改进,使得基于 Direct3D 3、5、6 和 7 的游戏能够通过 Vulkan 在现代图形硬件上运行。
转为维护状态意味着未来版本的功能不会有重大提升,但这并不意味着 D7VK 将失去作用。如果某个游戏已经能与 D7VK 完美兼容,那么项目的新状态仅仅意味着开发工作将专注于维护这种兼容性,并在发现问题时进行修复。
使用老旧硬件的用户还可以使用DXVK-Sarek,它在兼容旧版 Vulkan 的基础上集成了 D7VK 的许多功能。此版本适用于无法使用最新版本 D7VK 的系统。
D7VK 2.3,巩固阶段
D7VK 2.3 代表着技术改进与项目新阶段的结合。新版本优化了界面管理,重组了内部组件,修复了多款经典游戏中的问题,并更新了其技术基础。
但最重要的是,这标志着 D7VK 从一个不断扩展的项目过渡到一个仅维护的工具。对于仍然需要在 Linux 上运行基于第一代 Direct3D 的游戏的用户来说,该项目仍将可用并继续获得错误修复,尽管不再提供主要的新功能。