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 winecfgKey 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 # AMDRegistry 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/enabledThe 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.
- Official Proton README
- GE-Proton README
- Linux NTSYNC interface
- Flatpak graphics extensions
- Flatpak sandbox permissions
References & further reading
- Official Proton README ↗
- GE-Proton README ↗
- Linux NTSYNC interface ↗
- Flatpak graphics extensions ↗
- Flatpak sandbox permissions ↗
Adapted from technical notes. Examples use generic names.