OFFSET偏移
← All articlesOFFSET / FIELD NOTESNO. 156

Wine and Proton configuration boundaries

Use environment variables, DLLs, the registry, multiple GPUs, HDR, and performance parameters according to component and version.

English translation · Code and commands follow the Chinese original.

IN THESE READING PATHSProton gaming, deployment, and troubleshooting ↗
About 8 min readStart reading

Environment variables and version-support references, registry tuning, DLL override strategies, multi-GPU configuration, and emerging HDR/Wayland features.


Environment variables and support scope#

Core Wine variables

Variable Value Purpose
WINEPREFIX /path/to/prefix Specifies the prefix path
WINEARCH Values supported by the Wine build Architecture policy at creation time; not a way to arbitrarily convert an existing prefix in place
WINEDEBUG -all / +seh,+loaddll Controls debug output
WINEESYNC 1 / 0 Enables/disables esync only in runners that include its implementation
WINEFSYNC 1 / 0 Enables/disables fsync only in runners that include its implementation
WINEDLLOVERRIDES dllname=n,b DLL overrides (see below)
WINE_FULLSCREEN_FSR 1 An FSR path in specific Wine/GE patches, not a universal feature of upstream Wine
WINE_FULLSCREEN_FSR_STRENGTH 0-5 A strength parameter for specific patches; consult the corresponding version for its meaning and range rather than treating it as a fixed quality/performance level

Proton-specific variables

Variable Purpose
PROTON_USE_WINED3D=1 Uses WineD3D (OpenGL) instead of DXVK
PROTON_NO_D3D11=1 Disables D3D11
PROTON_NO_D3D12=1 A switch from older tutorials or specific builds, absent from the current official table when checked; do not assume it has disabled the feature
PROTON_NO_ESYNC=1 Disables esync in older versions; the current official README marks it as obsolete in Proton 11.0
PROTON_NO_FSYNC=1 Disables fsync
PROTON_ENABLE_WAYLAND=1 Enables native Wayland only when the selected runner supports it
PROTON_ENABLE_MEDIACONV=1 A historical/build-specific media switch; first check whether the corresponding runner still supports it
PROTON_HIDE_NVIDIA_GPU=1 Hides the NVIDIA GPU
PROTON_DISABLE_NVAPI=1 Disables NVAPI
PROTON_LOG=1 Generates a debug log

GE- and game-related variables (not all exclusive to GE)

Variable Purpose
PROTON_FSR4_UPGRADE=1 Optional FSR4 DLL download/upgrade for compatible games; support includes adapted RDNA3 hardware, subject to driver, GPU, and game requirements
PROTON_FSR4_RDNA3_UPGRADE=1 Marked obsolete and ineffective in the GE README when checked; supported RDNA3 setups should use FSR4_UPGRADE instead
PROTON_DLSS_UPGRADE=1 Automatically upgrades the DLSS DLL to the latest version
PROTON_XESS_UPGRADE=1 Automatically upgrades the XeSS 2 DLL
PROTON_FSR4_INDICATOR=1 FSR 4 watermark indicator
PROTON_DLSS_INDICATOR=1 DLSS watermark indicator
PROTON_DISCORD_BRIDGE=1 A Discord integration variable from older tutorials; current support is unconfirmed
PROTON_EAC_RUNTIME A path for specific builds/runtimes; cannot enable unsupported anti-cheat
PROTON_BATTLEYE_RUNTIME A path for specific builds/runtimes; cannot bypass the game's policies

DXVK/VKD3D variables

Variable Purpose
DXVK_HDR=1 Enables HDR output
ENABLE_HDR_WSI=1 A variable for a specific HDR WSI path; requires support in the actual components and versions used
DXVK_ASYNC=1 A variable for older/third-party async patches; not a general option in current upstream DXVK
DXVK_FRAME_RATE=60 Limits the frame rate
DXVK_CONFIG_FILE Specifies the DXVK configuration file path
VKD3D_CONFIG=no_upload_hvv Disables host-visible VRAM
VKD3D_SHADER_MODEL=6_6 Forces a Shader Model version

Wine registry tuning#

Through winecfg

WINEPREFIX=/path/to/prefix winecfg

Key panels:

  • Applications: sets the reported Windows version per application (Win10/Win11)
  • Libraries: DLL override priorities
  • Graphics: virtual desktop mode and DPI settings
  • Staging: enables/disables experimental staging features

Through the reg.exe command line

Changing only ProductName changes a registry string; it is not equivalent to the winecfg version setting, NT version reporting, or API support. Prefer winecfg for setting the emulated version, or a winetricks version verb supported by the current runner. The GPU registry values below likewise affect only certain WineD3D reports and do not change the actual GPU:


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

Registry paths and rendering-backend scope

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

Registry keys may be historical WineD3D options that DXVK/VKD3D or your chosen runner does not read. Before editing, export the relevant keys or keep a prefix backup, and record the old values. A successful reg add does not prove that a graphics setting has taken effect.

DLL override strategies#

Override syntax

WINEDLLOVERRIDES="d3d11=n,b;nvapi64=;d3d12=b" wine game.exe
Flag Meaning
n Native first (uses the real DLL)
b Builtin first (uses Wine's implementation)
Empty value (for example, nvapi64=) Disables this DLL using the standard empty-override syntax
, Tries the first choice, then the second if it fails
; Separates multiple DLLs

Common override combinations

# 优先加载已正确安装的 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 是加载顺序。
# 若需禁止联网,使用经核对的沙箱/网络命名空间或防火墙策略。

Mod DLLs and loading heuristics

Mods such as ReShade may place a same-named DLL in the game directory. Whether it loads first depends on DLL search behavior, the runner version, overrides, process bitness, and how the game is launched. The automatic Wine 11.6 rules claimed by the source material alone cannot guarantee that it works.

Use WINEDEBUG=+loaddll or the selected runner's logs to confirm the actual load location. First verify the mod's source and game support, keep the original files, and undo individual overrides if problems arise. Disabling NVAPI may also affect features such as DLSS/Reflex; incorrect graphics-DLL overrides can prevent startup. Do not treat a local DLL as a trusted or universal performance patch.

Emerging configuration options#

HDR output

HDR depends on the entire display chain. Check all of the following: HDR support in the game, the DXVK/VKD3D or native rendering path, the runner/WSI, the compositor or Gamescope, the GPU driver, the display connection, and the HDR monitor. A compatible monitor or a single environment variable is not enough to prove correct output.

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

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

Confirm the compositor's HDR state, the game's settings, and the output path separately, then examine brightness, color, and screenshot/display behavior. A single table of minimum kernel, Plasma, driver, or Proton versions cannot guarantee that every display chain works.

Native Wayland operation (as distinct from XWayland)

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

Setting a variable does not prove that winewayland.drv is in use. Confirm the driver in the logs, then test the application's requirements for windows, scaling, mouse input, input methods, the clipboard, fullscreen, and VR. XWayland may be more compatible in some cases; native Wayland cannot be guaranteed to have lower latency or to work better when combined with Gamescope.

Multi-GPU environments

GPU selection operates at several layers: Mesa device selection, NVIDIA PRIME render offload, Vulkan ICD/physical-device enumeration, and adapter selection within DXVK/VKD3D itself. Do not treat DRI_PRIME=1 as a universal switch for every hybrid-GPU setup.

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

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

The Vulkan ICD path operates at the library-loading layer; specifying it does not select a particular physical GPU. In a sandbox especially, do not hard-code host JSON paths. If the selected VKD3D-Proton supports VKD3D_VULKAN_DEVICE, verify the index against the devices actually enumerated in that environment. Do not assume that 1 always means the discrete GPU.

Verify the device using the target game's DXVK/VKD3D logs, HUD, and actual load, and record differences between Flatpak/Steam runtime diagnostics and host diagnostics. Looking only at the first vulkaninfo entry or one environment variable is not sufficient validation.

Automatic FSR / DLSS upgrades (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%

Frame generation and multi-frame generation

Frame generation requires integration in the game itself, a supported GPU and driver, the correct components, and appropriate game settings. Ordinary DLSS Super Resolution, Frame Generation, and Multi Frame Generation are distinct capabilities. Downloading a newer DLL does not add them to arbitrary games or graphics cards.

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

Next, check whether the game offers the corresponding options and whether its runtime logs show the intended DLL loading. Measure the actual displayed frame rate, base rendered frame rate, and latency. The GE README supported an optional download mechanism when checked, but one fixed minimum DLL version cannot describe multi-frame-generation support across all releases.

Memory, file handles, and configuration tuning

Measure and identify the bottleneck first, then change one parameter at a time. File-descriptor limits may affect older synchronization paths that use many handles, but an ulimit of hundreds of thousands should not be applied indiscriminately to all current Proton versions.

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

The commands above read diagnostic values. If a process's soft limit genuinely needs adjustment, keep it within the hard limit and base the change on logs. vm.max_map_count and the handle limit govern different resources. THP can affect specific workloads, but it should not be disabled by default, nor should a tutorial use sudo to write to /sys and change system-wide policy. Persistent NixOS settings belong in declarative modules, with build, activation, and runtime results validated separately.

DXVK configuration must use keys supported by the actual version, rather than copying thread parameters from historical async patches. The following example shows how to pass in a verified configuration file, without prepopulating unknown tuning options:

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

A configuration file's presence in a directory does not prove that it was read. Check the effective settings in the logs, then compare frame times, stability, and resource use in the same scenario. Remove the switches and configuration file to restore the baseline; more parameters should not be mistaken for better performance.

Version note: the variables above belong to Wine, official Proton, GE, DXVK, VKD3D, and historical patches. Unknown or obsolete variables may be silently ignored. Current references are no substitute for the selected release's documentation. No commands were run and no GPU, HDR, or frame-generation behavior was validated for this article.

Sources and verification boundaries#

The references below define the relevant mechanisms and scope of support. Installation, builds, activation, prefix state, and actual application behavior must each be verified in the target environment. The example commands make no claim of successful execution on any host.

References & further reading

  1. Official Proton README ↗
  2. GE-Proton README ↗
  3. Linux NTSYNC interface ↗
  4. Flatpak graphics extensions ↗
  5. Flatpak sandbox permissions ↗

Adapted from technical notes. Examples use generic names.

Continue along a reading path

Proton gaming, deployment, and troubleshooting

  1. 01umu, Wine and Proton: understanding compatibility tools and choosing Bottles runners
  2. 02Proton: the gaming runtime
  3. 03Wine and gaming environments on NixOS
  4. 04Troubleshooting Wine and Proton
  5. 05Wine and Proton configuration boundaries
CONTINUE READING / NEXT ARTICLEumu, Wine and Proton: understanding compatibility tools and choosing Bottles runners

From running Proton outside Steam to choosing Soda, ProtoSoda, GE-Proton and other runners.