DXVK 是一个把 Direct3D 8/9/10/11 转译为 Vulkan 的兼容层,用于在 Linux 与 Wine 上运行老 D3D 游戏。
- v3.1.1
- 发布于
- 2026年9月16日
- 18,487
- 星标
- 12,600,103
- 下载
- 同步于
- 6 分钟前
最新版本
v3.1.12026年9月16日 01:43下载慢?可在上方随时切换镜像源
项目说明
项目概述
DXVK 把 Direct3D 8/9/10/11 的绘制调用翻译成 Vulkan 命令,全程以一组替换 DLL 的形式插在游戏与驱动之间。游戏照常加载 d3d11.dll 或 d3d9.dll,实际执行的是 DXVK 的转译层,再由 Vulkan 驱动落到 GPU。它最早用于在 Wine 下跑 Windows 游戏,现在也被拿来当作原生移植的渲染后端。
| 项目 | 内容 |
|---|---|
| 平台 | Linux、Wine,另提供 Windows 构建 |
| 语言 / 构建 | C++17,Meson 0.58 以上 |
| 转译接口 | D3D8、D3D9、D3D10、D3D11、DXGI |
| 目标接口 | Vulkan 1.3 |
| 版本 / 许可 | 3.1.1 / zlib |
让 D3D 游戏以为自己跑在 Windows 上,实际走的是 Vulkan。
核心能力
- D3D9 转译:处理固定管线与着色器模型,覆盖大量 2000 年代游戏
- D3D11 转译:由
d3d11.dll与dxgi.dll支撑 DX11 作品 - DXGI 呈现:交换链、全屏切换与帧率限制由
dxgi.dll接管 - 状态合并:把冗余的管线与描述符绑定合并,降低每帧 CPU 提交开销
- 着色器缓存:编译结果落盘复用,位置由
DXVK_SHADER_CACHE_PATH指定 - HUD 诊断:
DXVK_HUD可开fps、frametimes、drawcalls、pipelines、memory等十余项计数
集成方式
Wine 前缀
把发布包里的 DLL 复制到前缀对应目录,再在 winecfg 的 Libraries 页为 d3d8、d3d9、d3d10core、d3d11、dxgi 添加 native 覆盖:
export WINEPREFIX=/path/to/wineprefix
cp x64/*.dll $WINEPREFIX/drive_c/windows/system32
cp x32/*.dll $WINEPREFIX/drive_c/windows/syswow64
winecfg单一 API 只需要其中一部分 DLL:
| 接口 | 需要的 DLL |
|---|---|
| d3d8 | d3d8.dll、d3d9.dll |
| d3d9 | d3d9.dll |
| d3d10 | d3d10core.dll、d3d11.dll、dxgi.dll |
| d3d11 | d3d11.dll、dxgi.dll |
Steam 启动项
Proton 已内置 DXVK,在启动项里追加环境变量即可,%command% 之前的键值对会先于游戏进程生效:
DXVK_HUD=devinfo,fps DXVK_FILTER_DEVICE_NAME="AMD RADV" %command%启动器与原生移植
Lutris、Bottles、Heroic 在打开 DXVK 选项后会自动放置 DLL 与覆盖项;用 DXVK Native 做原生移植时,必须通过 DXVK_WSI_DRIVER 显式指定 SDL3、SDL2 或 GLFW 窗口后端。
适用场景
- 在 Linux 上通过 Wine 或 Proton 跑 Windows 游戏
- 用 Lutris、Bottles、Heroic 统一管理游戏库
- 游戏移植时复用现成的 D3D 渲染后端
- 排查渲染问题,需要 HUD 与分级日志
- 多显卡机器需要锁定某块 GPU
环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Linux 或 Wine 前缀,另提供 Windows 构建 |
| 图形接口 | 支持 Vulkan 1.3 以上的驱动 |
| 运行库 | 支持 Vulkan 的 GPU 驱动,含 32 位 ICD |
| 构建工具 | wine 10.0、Meson 0.58、Mingw-w64 10.0、glslang |
| 权限 | 对目标前缀的 system32、syswow64 有写权限 |
注意事项
- 联机风险:替换 D3D 库在多人游戏中可能被判定为作弊,账号存在封禁风险
- 设备过滤:
DXVK_FILTER_DEVICE_NAME只做子串匹配,写错会过滤掉全部设备并导致无法创建 D3D 设备 - 编译卡顿:支持
VK_EXT_graphics_pipeline_library的驱动会在加载期预编译,弱 CPU 上占用会长时间偏高 - 日志位置:Windows 下日志写在游戏工作目录,Linux 下需要设置
DXVK_LOG_PATH - 彻底移除:删掉 DLL 与覆盖设置后执行
wineboot -u,才会恢复原始 DLL
历史版本
排序