OFFSET偏移
← 文章目录OFFSET / FIELD NOTESNO. 156

Wine 与 Proton 配置边界

按组件和版本使用环境变量、DLL、注册表、多 GPU、HDR 与性能参数。

所在专题Proton 游戏、部署与排错 ↗
约 15 分钟阅读开始阅读

环境变量与版本范围参考、注册表调优、DLL 覆盖策略、多 GPU 配置、HDR/Wayland 前沿功能。


环境变量与支持范围#

Wine 核心变量

变量 值 作用
WINEPREFIX /path/to/prefix 指定 Prefix 路径
WINEARCH 按 Wine 构建支持的值 创建时的架构策略,不用于任意原地转换已有 Prefix
WINEDEBUG -all / +seh,+loaddll 调试输出控制
WINEESYNC 1 / 0 仅在携带 esync 实现的 runner 中启用/禁用
WINEFSYNC 1 / 0 仅在携带 fsync 实现的 runner 中启用/禁用
WINEDLLOVERRIDES dllname=n,b DLL 覆盖(见下文)
WINE_FULLSCREEN_FSR 1 特定 Wine/GE 补丁中的 FSR 路径,不是所有上游 Wine 的通用功能
WINE_FULLSCREEN_FSR_STRENGTH 0-5 特定补丁的强度参数;含义与范围需查对应版本,不当作固定质量/性能等级

Proton 专用变量

变量 作用
PROTON_USE_WINED3D=1 用 WineD3D (OpenGL) 代替 DXVK
PROTON_NO_D3D11=1 禁用 D3D11
PROTON_NO_D3D12=1 旧教程/构建相关开关,核验时当前官方表未列出;不要据此假定已禁用
PROTON_NO_ESYNC=1 旧版禁用 esync;官方当前 README 标注在 Proton 11.0 过时
PROTON_NO_FSYNC=1 禁用 fsync
PROTON_ENABLE_WAYLAND=1 仅在所选 runner 支持时启用原生 Wayland
PROTON_ENABLE_MEDIACONV=1 历史/构建相关媒体开关,先查对应 runner 是否仍支持
PROTON_HIDE_NVIDIA_GPU=1 隐藏 NVIDIA GPU
PROTON_DISABLE_NVAPI=1 禁用 NVAPI
PROTON_LOG=1 生成调试日志

GE 与游戏相关变量(并非全部 GE 专属)

变量 作用
PROTON_FSR4_UPGRADE=1 兼容游戏的可选 FSR4 DLL 下载/升级;支持范围含所适配 RDNA3,但需驱动/GPU/游戏条件
PROTON_FSR4_RDNA3_UPGRADE=1 核验时 GE README 标为过时且无效,适配的 RDNA3 改用 FSR4_UPGRADE
PROTON_DLSS_UPGRADE=1 DLSS DLL 自动升级到最新
PROTON_XESS_UPGRADE=1 XeSS 2 DLL 自动升级
PROTON_FSR4_INDICATOR=1 FSR 4 水印指示器
PROTON_DLSS_INDICATOR=1 DLSS 水印指示器
PROTON_DISCORD_BRIDGE=1 旧教程中的 Discord 集成变量,当前支持未确认
PROTON_EAC_RUNTIME 特定构建/运行时路径;不能启用未获支持的反作弊
PROTON_BATTLEYE_RUNTIME 特定构建/运行时路径;不能绕过游戏方策略

DXVK/VKD3D 变量

变量 作用
DXVK_HDR=1 启用 HDR 输出
ENABLE_HDR_WSI=1 特定 HDR WSI 路径变量,需实际组件/版本支持
DXVK_ASYNC=1 旧/第三方 async 补丁变量,不能当作上游 DXVK 当前通用选项
DXVK_FRAME_RATE=60 限制帧率
DXVK_CONFIG_FILE 指定 DXVK 配置文件路径
VKD3D_CONFIG=no_upload_hvv 禁用 host-visible VRAM
VKD3D_SHADER_MODEL=6_6 强制 Shader Model 版本

Wine 注册表调优#

通过 winecfg

WINEPREFIX=/path/to/prefix winecfg

关键面板:

  • Applications:按应用设置 Windows 版本报告(Win10/Win11)
  • Libraries:DLL 覆盖优先级
  • Graphics:虚拟桌面模式、DPI 设置
  • Staging:启用/禁用 staging 实验性功能

通过 reg.exe 命令行

只修改 ProductName 改变的是注册表字符串,不等于 winecfg 的版本设置、NT 版本报告或 API 支持。设置模拟版本优先使用 winecfg,或当前 runner 支持的 winetricks 版本 verb。以下 GPU 注册表值也只影响某些 WineD3D 报告,不改变真实 GPU:


# 按 WineD3D/应用要求测试供应商报告;不是更换真实 GPU
WINEPREFIX=/path/to/prefix wine reg add 'HKCU\Software\Wine\Direct3D' \
  /v VideoPciVendorID /t REG_DWORD /d 0x1002 /f  # AMD

注册表路径与渲染后端范围

HKCU\Software\Wine\
├── Direct3D\
│   ├── MaxVersionGL          # 限制 OpenGL 版本
│   ├── renderer              # 强制渲染器 (gl/vulkan/gdi)
│   └── VideoMemorySize       # 覆盖显存大小(MB)
├── Drivers\
│   └── winex11.drv\
│       └── GrabFullscreen    # 全屏独占
└── FileOpenAssociations\     # 文件关联

注册表键可能是历史 WineD3D 选项,DXVK/VKD3D 或所选 runner 未必读取它们。修改前导出相关项或保留前缀备份,记录旧值;不能因为 reg add 成功就判定图形配置生效。

DLL 覆盖策略#

覆盖语法

WINEDLLOVERRIDES="d3d11=n,b;nvapi64=;d3d12=b" wine game.exe
标志 含义
n Native 优先(用真实 DLL)
b Builtin 优先(用 Wine 自带)
空值(如 nvapi64=) 禁用此 DLL;使用标准空覆盖语法
, 先尝试第一个,失败再第二个
; 分隔多个 DLL

常见覆盖组合

# 优先加载已正确安装的 DXVK DLL;n,b 仍允许 builtin 回退
WINEDLLOVERRIDES="d3d9,d3d11,d3d10core=n,b;dxgi=n,b"

# 禁用 NVAPI(部分游戏检测后崩溃)
WINEDLLOVERRIDES="nvapi64=;nvapi="

# 网络隔离不通过 DLL 覆盖实现;wininet=n,b / winhttp=n,b 是加载顺序。
# 若需禁止联网,使用经核对的沙箱/网络命名空间或防火墙策略。

模组 DLL 与加载启发式

模组(例如 ReShade)可能在游戏目录放置同名 DLL。是否优先加载它,取决于 DLL 搜索、runner 版本、覆盖、进程位宽和游戏启动方式,不能仅凭原材料所称的 Wine 11.6 自动规则保证有效。

使用 WINEDEBUG=+loaddll 或所选 runner 的日志确认实际加载位置;先校验模组来源与游戏支持,保留原文件,遇到异常撤销单项覆盖。禁用 NVAPI 可能同时影响 DLSS/Reflex 等功能;错误覆盖图形 DLL 会造成启动失败。不要把本地 DLL 当作可信或通用加速补丁。

前沿配置#

HDR 输出

HDR 是整条显示链路的结果,需要同时核对:游戏是否提供 HDR、DXVK/VKD3D 或原生渲染路径、runner/WSI、compositor 或 Gamescope、GPU 驱动、显示连接与 HDR 显示器。只有显示器支持或设置一个变量不足以证明正确输出。

# Steam 启动栏的条件性示例:仅适用于明确支持这些开关的组件。
DXVK_HDR=1 ENABLE_HDR_WSI=1 %command%

# Gamescope 的可选入口;按安装版本核对 --hdr-enabled 等参数。
gamescope -W 3840 -H 2160 --hdr-enabled -- %command%

分别确认 compositor 的 HDR 状态、游戏设置与输出链路,再观察亮度、色彩及截图/显示行为。不能用统一的 kernel、Plasma、驱动或 Proton 最低版本表保证所有链路可用。

Wayland 原生运行(区别于 XWayland)

# 仅用于所选 runner 明确支持该变量的构建。
PROTON_ENABLE_WAYLAND=1 %command%

设置变量不证明 winewayland.drv 已被使用;从日志确认驱动,再测试窗口、缩放、鼠标、输入法、剪贴板、全屏和 VR 等应用需求。某些情况下 XWayland 更兼容,不能承诺原生 Wayland 必定更低延迟或与 Gamescope 叠加就更好。

多 GPU 环境

GPU 选择有不同层次:Mesa 的设备选择、NVIDIA PRIME render offload、Vulkan ICD/物理设备枚举,以及 DXVK/VKD3D 自身的适配器选择。不要把 DRI_PRIME=1 当作所有混合显卡的统一开关。

# Mesa 驱动环境中的条件性选择示例。
DRI_PRIME=1 %command%

# NVIDIA PRIME render offload 的条件性示例;还需正确驱动/会话配置。
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command%

Vulkan 的 ICD 路径是库加载层,指定它不等于选择某块物理 GPU;沙箱里尤其不能写死宿主 JSON。若所选 VKD3D-Proton 支持 VKD3D_VULKAN_DEVICE,索引应从该环境实际枚举结果核对,不能假定 1 永远是独显。

用目标游戏的 DXVK/VKD3D 日志、HUD 和实际负载验证设备,并记录 Flatpak/Steam runtime 与宿主诊断的区别。只看 vulkaninfo 的第一项或一个环境变量不足以完成验收。

FSR / DLSS 自动升级(Proton-GE)

# FSR4 可选升级:兼容的 GPU、驱动与游戏前提
PROTON_FSR4_UPGRADE=1 %command%

# GE 的可选 DLSS DLL 下载:按所选 release/manifest 核对版本
PROTON_DLSS_UPGRADE=1 %command%

# 指示器提供线索;仍需核对游戏设置、DLL 与实际渲染链路
PROTON_FSR4_INDICATOR=1 PROTON_FSR4_UPGRADE=1 %command%
PROTON_DLSS_INDICATOR=1 PROTON_DLSS_UPGRADE=1 %command%

帧生成与多帧生成

帧生成需要游戏自身集成、支持的 GPU、驱动、正确的组件和游戏设置。普通 DLSS 超分、Frame Generation 与 Multi Frame Generation 是不同能力,下载新版 DLL 不会为任意游戏/显卡添加它们。

# 只启用所选 GE 构建的 DLL 升级;不等于帧生成已开启。
PROTON_DLSS_UPGRADE=1 %command%

然后检查游戏是否提供相应选项、运行日志是否加载目标 DLL,测量实际显示帧率、基础渲染帧率与延迟。核验时 GE README 支持可选下载机制,但不能由一个固定 DLL 下限概括所有版本的多帧生成支持。

内存、文件句柄与配置优化

先测量并定位瓶颈,再调整一个参数。文件描述符限制对使用大量句柄的旧同步路径可能有影响,但不能对全部当前 Proton 统一设定数十万的 ulimit。

ulimit -Sn
ulimit -Hn
cat /proc/sys/vm/max_map_count
cat /sys/kernel/mm/transparent_hugepage/enabled

上述是读取诊断值。若确需调整进程 soft limit,必须处于 hard limit 范围并有日志依据;vm.max_map_count 与句柄上限属于不同资源。THP 可能影响特定工作负载,但不默认禁用,也不在教程中通过 sudo 写 /sys 改全系统策略。NixOS 持久配置要走声明式模块,并把构建、激活与运行结果分别验收。

DXVK 配置需要使用实际版本支持的键,不照抄历史 async 补丁的线程参数。下面演示已核对配置文件的传入方式,不预填未知优化项:

# 配置文件应由当前 DXVK 的文档说明创建,保留原配置与对照结果。
DXVK_CONFIG_FILE="$HOME/Games/MyGame/dxvk.conf" %command%

配置文件出现在目录里不证明被读取;从日志核对生效设置,再在同一场景比较帧时间、稳定性与资源。去掉开关和配置文件可以恢复对照,避免“参数更多”被当作性能更好。

版本说明:以上变量分属 Wine、官方 Proton、GE、DXVK、VKD3D 与历史补丁,未知或失效变量可能静默被忽略。当前参考不能替代所选 release 的说明;本篇未运行命令或验证任何 GPU/HDR/帧生成效果。

来源与核验边界#

以下参考定义相关机制与支持范围。安装、构建、激活、前缀状态与实际应用行为需要按目标环境分别核验;示例命令没有附带任何主机运行成功的结论。

参考与延伸

  1. 官方 Proton README ↗
  2. GE-Proton README ↗
  3. Linux NTSYNC 接口 ↗
  4. Flatpak 图形扩展 ↗
  5. Flatpak 沙箱权限 ↗

根据技术笔记重新整理,示例使用通用名称。

沿专题继续阅读

Proton 游戏、部署与排错

  1. 01umu、Wine 与 Proton:看懂兼容层,再选 Bottles 运行器
  2. 02Proton:游戏运行环境
  3. 03NixOS 中的 Wine 与游戏环境
  4. 04Wine 与 Proton 排错
  5. 05Wine 与 Proton 配置边界
CONTINUE READING / 下一篇umu、Wine 与 Proton:看懂兼容层,再选 Bottles 运行器

从 Steam 外的 Proton 运行环境,到 Soda、ProtoSoda、GE 与其他运行器的选择顺序。