
三步跑起 Windows 游戏Linux 上的 DXVK 从安装到调优【免费下载链接】dxvkVulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine项目地址: https://gitcode.com/gh_mirrors/dx/dxvkDXVK 是一个把 Direct3D 8/9/10/11 调用翻译成 Vulkan 指令的转换层配合 Wine 即可在 Linux 上运行原本只能在 Windows 上跑的 3D 游戏游戏本体不需要任何修改。它通过 Wine 的 DLL 替换机制工作Windows 程序调用 d3d9.dll、d3d11.dll 时实际加载的是 DXVK 提供的实现直接生成 Vulkan 命令提交给显卡而不是走软件模拟。 它和 Wine 自带的 wined3d 差在哪Wine 自身内置的 wined3d 是纯软件光栅化实现CPU 逐帧模拟渲染帧率低、CPU 占用高只适合勉强能跑的场景。DXVK 则把 D3D 状态机重新映射到现代 Vulkan 硬件管线上显存分配、管线缓存、着色器编译都由 GPU 驱动完成绝大多数游戏能拿到接近原生 Windows 的帧数。对比项wined3dWine 内置DXVK渲染路径CPU 软件光栅化Vulkan 硬件管线适用 API仅 D3D9D3D8 / 9 / 10 / 11 DXGI着色器软件模拟HLSL 实时编译为 SPIR-V 并缓存典型表现个位数到二十帧多数游戏可达原生水平安装方式随 Wine 自带复制 DLL 到 Wine 前缀一个需要注意的限制联网多人游戏里替换 Direct3D 库可能被视为外挂有封号风险离线游戏没有这个问题。 环境检查与安装开始前的检查清单系统已安装 Winewine --version能正常输出显卡驱动支持 Vulkanvulkaninfo能列出你的 GPU已下载 DXVK 发布包当前版本 3.0.2包含x64/和x32/两个目录默认64 位Wine 前缀的安装只需三条命令# 把 64/32 位 DLL 复制进 Wine 前缀然后注册原生覆盖 export WINEPREFIX/path/to/wineprefix cp x64/*.dll $WINEPREFIX/drive_c/windows/system32 cp x32/*.dll $WINEPREFIX/drive_c/windows/syswow64 winecfg # Libraries 页将 d3d8、d3d9、d3d10core、d3d11、dxgi 设为 nativewinecfg 的 native 覆盖是关键一步漏掉它 Wine 仍会优先加载自带的 wined3d。纯 32 位前缀则把x32/*.dll复制到system32即可。如果你通过 Steam PlayProton、Lutris、Bottles 或 Heroic 启动游戏这些工具会自动完成整套配置无需手动操作。验证是否生效以DXVK_HUDdevinfo,fps环境变量启动游戏屏幕角落出现显卡型号和帧率 HUD说明走的就是 DXVK 而不是 wined3d。 从源码构建 DXVK 的 32/64 位 DLL发布包之外也可以自己编译。构建依赖四项mingw-w64 10.0 交叉编译器、Meson 0.58、glslang 编译器、Wine 10.0 头文件。git clone --recursive https://gitcode.com/gh_mirrors/dx/dxvk cd dxvk ./package-release.sh master /your/target/directory --no-package # 产物在 /your/target/directory/dxvk-master含 x64/x32 两套 DLL一个常见坑Debian/Ubuntu 的 mingw-w64 默认用 win32 线程模型会出现error: std::cv_status has not been declared。用update-alternatives --config x86_64-w64-mingw32-gcc把 gcc/g 切到 posix 备选即可解决。想保留构建目录做开发时给脚本加--dev-build之后在build.64里执行ninja install就能增量重建。 四个日常用得上的能力性能 HUDDXVK_HUD环境变量开启接受逗号分隔的选项fps、frametimes、gpuload、devinfo、memory都是常用项DXVK_HUD1等价于devinfo,fpsDXVK_HUDfull全开还能用scale1.5、opacity0.5调整大小和透明度。着色器缓存默认开启编译结果存到~/.cacheWine 下为%LOCALAPPDATA%/dxvk二次启动不再卡顿。用DXVK_HUDcompiler可以实时看到编译活动在支持VK_EXT_graphics_pipeline_library的驱动上编译会提前到游戏加载着色器时进行而不是首次绘制时。指定显卡游戏不允许选 GPU 时用DXVK_FILTER_DEVICE_NAMEVEGA按名称子串匹配或DXVK_FILTER_DEVICE_UUID按 32 位十六进制 UUID 精确指定两者都可用vulkaninfo查到。注意配置写错会把所有设备过滤掉导致游戏无法创建 D3D 设备。独立日志DXVK_LOG_PATH/tmp/dxvklogs会在指定目录生成游戏名_d3d11.log这类日志文件配合DXVK_LOG_LEVELdebug可输出详细级别排查问题比只看 stderr 方便。 遇到问题时怎么办装完游戏画面正常但感觉没加速。先别怀疑游戏用DXVK_HUD1重启确认 HUD 是否出现没有出现多半是 winecfg 里漏了 native 覆盖。也可以检查启动时 stderr 里是否打印了 DXVK 的初始化信息。双显卡机器上游戏总跑在核显上。这类程序自己不提供显卡选择项设置DXVK_FILTER_DEVICE_NAME为独显名称的子串比如VEGA可以匹配 AMD RADV VEGA10即可强制指定。改完用vulkaninfo核对一下设备名没写错。进图后偶发卡顿、掉帧。大概率是着色器首次编译的卡顿。加载界面停留时开着DXVK_HUDcompiler等编译活动停下来再正式开局驱动支持管线库扩展时这一现象会明显减轻。另一种卡顿是物理与帧率绑定的游戏在超高帧下模拟异常用dxgi.maxFrameRate 60之类的限帧项解决——但如果有 MangoHud 或 Gamescope 等外部限帧器优先用外部的体验更好。 原理速览DXVK 的代码分层和调用链基本一一对应Windows 游戏进程Direct3D 8/9/10/11 调用 │ Wine 加载 DXVK 提供的 d3d*.dll / dxgi.dll ▼ src/d3d8、src/d3d9、src/d3d10、src/d3d11、src/dxgi ← API 翻译层 │ 状态转换、资源管理、HLSL 转 SPIR-V ▼ src/dxvk ← Vulkan 后端 │ 命令缓冲、管线缓存、显存分配 ▼ Vulkan 驱动 → GPU着色器编译的转换核心在 subprojects 里的 dxbc-spirv 子项目src/wsi则提供 GLFW、SDL2、SDL3 三套窗口后端是 DXVK Native 模式脱离 Wine、供游戏移植直接调用的窗口来源。⚙️ 进阶配置参数与生态所有可调项集中在dxvk.conf通过DXVK_CONFIG_FILE指定路径也支持DXVK_CONFIGdxgi.syncInterval 0; d3d9.presentInterval -1这种环境变量直接传参分号分隔。项目根目录的 dxvk.conf 模板里每个参数都带注释是最完整的参考。参数作用建议值dxvk.maxFrameRate限帧修物理与帧率绑定的游戏目标帧率有外部限帧器时保持 0dxvk.numCompilerThreads着色器编译线程数0用满全部核心或固定 4dxvk.enableGraphicsPipelineLibrary编译提前到加载期Auto默认dxgi.syncInterval/d3d9.presentInterval覆盖 Vsync0 关闭撕裂明显时设 1d3d11.samplerAnisotropy强制各向异性过滤0~16视效果决定d3d11.maxTessFactor限制曲面细分程度8~64用于细分滥用的游戏dxvk.maxMemoryBudget限制实际 VRAM 用量0调试专用开了会掉性能排查渲染错误的标准手段是 Vulkan 验证层装好 Vulkan SDK 后设VK_INSTANCE_LAYERSVK_LAYER_KHRONOS_validation启动游戏驱动问题和 API 误用都会直接报出来。帧率监控可以交给 MangoHud它比 DXVK 内置 HUD 显示得更全Proton、Lutris 这类启动器已把上面这些工具链打包好普通用户基本不需要逐个配置。下一步DXVK 3.0.2 已覆盖 D3D8 到 D3D11 全栈配合 Proton 或手动装 DLL 都是成熟路径日常使用默认配置即可参数只在出现具体症状时再动。现在就挑一个你的 DX9 或 DX11 游戏按快速上手一节的三步装好 DLL再用DXVK_HUD1确认 HUD 出现——看到帧率数字的那一刻这套方案就已经在你的机器上跑起来了。【免费下载链接】dxvkVulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine项目地址: https://gitcode.com/gh_mirrors/dx/dxvk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考