everything
This commit is contained in:
+410
@@ -0,0 +1,410 @@
|
||||
# Steam Launch Options — Full Reference
|
||||
|
||||
Compiled reference for every tool this project assembles into Steam launch
|
||||
commands: gamescope, Proton (GE/CachyOS), MangoHud, obs-gamecapture, GameMode,
|
||||
and Mesa Vulkan layers. Sources: ValveSoftware/gamescope (README + `main.cpp`
|
||||
usage), flightlessmango/MangoHud (`data/MangoHud.conf`), nowrep/obs-vkcapture,
|
||||
FeralInteractive/gamemode, Mesa docs, and the project's own
|
||||
`launch_args_env_vars.md` / `steam-tinker-launcher.md`.
|
||||
|
||||
## The reference config this file started from
|
||||
|
||||
```
|
||||
LD_PRELOAD="" PROTON_USE_NTSYNC=1 PROTON_ENABLE_WAYLAND=1 ENABLE_LAYER_MESA_ANTI_LAG=1
|
||||
MANGOHUD=1 gamemoderun obs-gamecapture gamescope --fullscreen -w 1920 -W 1920 -h 1080
|
||||
-H 1080 -r 165 --immediate-flips --nested-unfocused-refresh 30 --sharpness 20
|
||||
--force-grab-cursor --backend wayland -- env LD_PRELOAD="$LD_PRELOAD" %command%
|
||||
```
|
||||
|
||||
Annotated: envs → `gamemoderun` (outermost) → `obs-gamecapture` → `gamescope`
|
||||
(inner wrapper, its own `--` separator) → `env LD_PRELOAD=... %command%`.
|
||||
Everything before the first `--` applies to gamescope itself; `%command%` is the
|
||||
game.
|
||||
|
||||
---
|
||||
|
||||
## 1. gamescope
|
||||
|
||||
Usage: `gamescope [options...] -- [command...]`. Options before `--` configure
|
||||
the compositor; everything after runs inside it.
|
||||
|
||||
### General
|
||||
|
||||
| Option | Meaning |
|
||||
| ------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `-W, --output-width`, `-H, --output-height` | Resolution gamescope outputs at (default 1280×720). Ignored in embedded mode. |
|
||||
| `-w, --nested-width`, `-h, --nested-height` | Resolution the game renders at (defaults to `-W`/`-H`). |
|
||||
| `-r, --nested-refresh` | Frame-rate limit for the game (e.g. `-r 165`). |
|
||||
| `-m, --max-scale` | Maximum scale factor. |
|
||||
| `-S, --scaler` | Upscaler type: `auto`, `integer`, `fit`, `fill`, `stretch`. |
|
||||
| `-F, --filter` | Upscale filter: `linear`, `nearest`, `fsr` (FSR 1.0), `nis` (NIS 1.0.3), `pixel`. |
|
||||
| `--sharpness, --fsr-sharpness` | Upscaler sharpness **0 (max) to 20 (min)**. Affects FSR/NIS. |
|
||||
| `--expose-wayland` | Accept Wayland clients (xdg-shell). |
|
||||
| `-s, --mouse-sensitivity` | Multiply mouse movement by a decimal (e.g. `-s 1.0`). |
|
||||
| `--backend` | Rendering backend: `auto` (default), `drm` (standalone session), `sdl`, `openvr`, `headless`, `wayland`. |
|
||||
| `--mangoapp` | Launch the MangoHud `mangoapp` overlay inside gamescope (prefer over mangohud on the game). |
|
||||
| `--adaptive-sync` | Enable adaptive sync / VRR if available. |
|
||||
|
||||
### Nested mode
|
||||
|
||||
| Option | Meaning |
|
||||
| -------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
||||
| `-o, --nested-unfocused-refresh` | Game refresh rate when the window is unfocused (e.g. `30`). Note: does not work on the Wayland backend. |
|
||||
| `-b, --borderless` | Borderless window. |
|
||||
| `-f, --fullscreen` | Fullscreen window. |
|
||||
| `-g, --grab` | Grab the keyboard. |
|
||||
| `--force-grab-cursor` | Always use relative mouse mode regardless of cursor visibility. |
|
||||
| `--display-index` | Force a specific display in nested mode. |
|
||||
|
||||
### Embedded mode
|
||||
|
||||
| Option | Meaning |
|
||||
| ---------------------- | ------------------------------------------------------------------------ |
|
||||
| `-O, --prefer-output` | Connectors in preference order (e.g. `DP-1,DP-2,HDMI-A-1`). |
|
||||
| `--default-touch-mode` | Touch mode: `0` hover, `1` left, `2` right, `3` middle, `4` passthrough. |
|
||||
| `--generate-drm-mode` | DRM mode generation algorithm: `cvt`, `fixed`. |
|
||||
| `--immediate-flips` | Immediate flips (may tear). |
|
||||
| `--framerate-limit` | Hard FPS limit for the embedded session (steamcompmgr-style). |
|
||||
|
||||
### HDR
|
||||
|
||||
| Option | Meaning |
|
||||
| --------------------------------------------- | -------------------------------------------------- |
|
||||
| `--hdr-enabled` | Enable HDR output. |
|
||||
| `--hdr-wide-gammut-for-sdr` | Wide gamut for SDR content. |
|
||||
| `--hdr-sdr-content-nits` | Assumed SDR content brightness (e.g. `400`). |
|
||||
| `--hdr-itm-enable` | Inverse tone mapping for SDR content. |
|
||||
| `--hdr-itm-sdr-nits`, `--hdr-itm-target-nits` | ITM input/output brightness (e.g. `100` / `1000`). |
|
||||
|
||||
### VR (OpenVR backend)
|
||||
|
||||
| Option | Meaning |
|
||||
| ---------------------------------------------------------- | --------------------------------------- |
|
||||
| `--openvr` | Run as an OpenVR session. |
|
||||
| `--vr-overlay-show-immediately` | Show overlay immediately. |
|
||||
| `--vr-overlay-enable-control-bar` / `-keyboard` / `-close` | Control bar + keyboard/close shortcuts. |
|
||||
| `--vr-overlay-modal` | Modal overlay. |
|
||||
| `--vr-scrolls-speed` | Scroll speed (e.g. `8.0`). |
|
||||
| `--vr-overlay-key`, `--vr-app-overlay-key` | Overlay key / per-app key. |
|
||||
| `--vr-overlay-explicit-name`, `--vr-overlay-default-name` | Overlay names. |
|
||||
| `--vr-overlay-icon` | Overlay icon path. |
|
||||
|
||||
### Debug / misc
|
||||
|
||||
| Option | Meaning |
|
||||
| ------------------------------------ | ------------------------------------------------------- |
|
||||
| `--debug-hud` | Show gamescope's internal debug HUD. |
|
||||
| `--force-composition` | Always composite (disable direct flips). |
|
||||
| `--rt` | Realtime scheduling. |
|
||||
| `--headless` | Headless backend. |
|
||||
| `--prefer-vk-device` | Prefer a specific Vulkan device (e.g. `%{VK_DEVICE}%`). |
|
||||
| `--disable-layers`, `--debug-layers` | Disable / debug Vulkan layers. |
|
||||
| `--allow-deferred-backend` | Allow the backend to start deferred. |
|
||||
| `--keep-alive` | Keep the session alive after the app exits. |
|
||||
| `--expose-wayland` | (see General) |
|
||||
|
||||
Also: `GAMESCOPE_*` env vars exist for embedded-session behavior; the
|
||||
STL doc `steam-tinker-launcher.md` §3.1–3.6 has the full catalog incl. legacy
|
||||
flags (`-i`, `-n`, `-U`, `-Y` = older GameScope filter flags, deprecated).
|
||||
|
||||
---
|
||||
|
||||
## 2. Proton (GE / CachyOS)
|
||||
|
||||
Run with `binary=proton suffix=waitforexecandrun` — all toggles are env vars.
|
||||
Full per-variant tables in `launch_args_env_vars.md`; highlights:
|
||||
|
||||
| Env var | Meaning |
|
||||
| -------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
|
||||
| `PROTON_LOG=1` | Write a debug log to `steam-<appid>.log`. |
|
||||
| `PROTON_USE_NTSYNC=1` / `PROTON_NO_NTSYNC=1` | Force / disable ntsync. |
|
||||
| `PROTON_USE_WINED3D=1` | OpenGL backend instead of DXVK. |
|
||||
| `PROTON_NO_D3D12/11/10/9=1` | Disable a D3D version. |
|
||||
| `PROTON_NO_ESYNC=1`, `PROTON_NO_FSYNC=1` | Disable esync / fsync. |
|
||||
| `PROTON_ENABLE_WAYLAND=1` | Use the Wayland driver (no XWayland). |
|
||||
| `PROTON_ENABLE_NVAPI=1` / `PROTON_DISABLE_NVAPI=1` | NVIDIA API support (GE / CachyOS). |
|
||||
| `PROTON_FSR4_UPGRADE=1`, `PROTON_DLSS_UPGRADE=1`, `PROTON_XESS_UPGRADE=1` | FSR4 / DLSS / XESS frame-gen upgrades (FSR4 = AMD 7xxx+). |
|
||||
| `PROTON_FSR3_UPGRADE=1`, `PROTON_MLFG_UPGRADE=1`, `PROTON_FFX3_UPGRADE=1`, `PROTON_FFX4_UPGRADE=1` | Other upscale upgrades (CachyOS). |
|
||||
| `WINE_FULLSCREEN_FSR=1` (+ `WINE_FULLSCREEN_FSR_STRENGTH=2`) | Wine fullscreen FSR. |
|
||||
| `WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER=1` | Fix miscolored video. |
|
||||
| `PROTON_USE_SECCOMP=1`, `PROTON_NO_WRITE_WATCH=1`, `PROTON_HEAP_DELAY_FREE=1` | Compatibility shims. |
|
||||
| `PROTON_USE_WOW64=1` | New WoW64 prefix mode. |
|
||||
| `PROTON_ENABLE_MEDIACONV=1`, `PROTON_MEDIA_FORCE_GST=1` | Media Foundation via GStreamer. |
|
||||
| `PROTON_USE_XALIA=1/0` | Enable/disable the Xalia gamepad→keyboard bridge. |
|
||||
| `PROTON_USE_SDL=1` / `PROTON_PREFER_SDL=1` | SDL input path. |
|
||||
| `DXVK_HDR=1` / `DXVK_NO_HDR=1` | HDR on/off (CachyOS). |
|
||||
| `DXVK_NVAPI_VKREFLEX=1`, `LOW_LATENCY_LAYER=1` | NVIDIA Reflex / low-latency layer (CachyOS). |
|
||||
| `PROTON_NVIDIA_LIBS=1` (+ `_NO_32BIT`, `NVCUDA`, `NVENC`, `NVML`, `NVOPTIX`) | NVIDIA library set (CachyOS). |
|
||||
| `PROTON_USE_D9VK=1`, `PROTON_DXVK_SAREK=1`, `PROTON_DXVK_LOWLATENCY=1`, `PROTON_D7VK_DDRAW=1` | Alternative D3D translation (CachyOS). |
|
||||
| `PROTON_DISCORD_BRIDGE=1` | Discord Rich Presence bridge (CachyOS). |
|
||||
|
||||
The app exposes these as checkbox toggles under the Proton tabs (categories:
|
||||
Debug / Performance / Graphics / Compatibility / NVIDIA / Upscaling / Input /
|
||||
Display / Audio / HDR / Media / Integration).
|
||||
|
||||
---
|
||||
|
||||
## 3. MangoHud
|
||||
|
||||
Enable with `MANGOHUD=1` (Vulkan/OpenGL) or by wrapping the command with
|
||||
`mangohud <cmd>` (GL). Config lives in `~/.config/MangoHud/MangoHud.conf`;
|
||||
everything below is also settable via `MANGOHUD_CONFIG` (comma-separated, e.g.
|
||||
`MANGOHUD_CONFIG=fps_limit=60,fps,gpu_stats`).
|
||||
|
||||
| Config param | Meaning |
|
||||
| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `fps_limit=N` | Limit FPS (comma list e.g. `0,30,60`; `0` = unlimited). |
|
||||
| `fps_limit_method=` | `early` (wait before present) / `late` (wait after). |
|
||||
| `vulkan_present_mode=` | Override present mode: `immediate`, `mailbox`, `fifo`, `fifo_relaxed`, `shared_demand_refresh`, `shared_continuous_refresh`, `fifo_latest_ready`. |
|
||||
| `vsync=N` | Force vsync on/off. |
|
||||
| `fps`, `gpu_stats`, `gpu_temp`, `gpu_core_clock`, `gpu_mem_clock`, `gpu_mem_temp`, `gpu_power`, `gpu_load_change`, `gpu_fan`, `gpu_voltage` | GPU readouts (misc info). |
|
||||
| `cpu_stats`, `cpu_temp`, `cpu_power`, `ram`, `vram`, `io_stats`, `frametime` | CPU/memory/IO stats. |
|
||||
| `frame_timing`, `frame_timing_detailed`, `dynamic_frame_timing`, `histogram` | Frametime graphs. |
|
||||
| `gamemode` | Show GameMode active status. |
|
||||
| `fsr` / `hide_fsr_sharpness` | Show FSR status (gamescope only). |
|
||||
| `debug` | Gamescope app frametime/latency graph. |
|
||||
| `show_fps_limit`, `resolution`, `display_server`, `engine_version`, `wine`, `winesync`, `arch` | Misc display toggles. |
|
||||
| `custom_text=`, `exec=` | Custom text / shell-command output column. |
|
||||
| `media_player` | Spotify/media metadata. |
|
||||
| `toggle_hud=`, `toggle_hud_position=`, `toggle_preset=`, `toggle_fps_limit=`, `toggle_logging=`, `reload_cfg=`, `upload_log=` | Keybinds (e.g. `Shift_R+F12`). |
|
||||
| `autostart_log=`, `log_duration=`, `log_interval=`, `log_upload=`, `log_sync=` | Benchmark logging. |
|
||||
| `graphs=` | Which graphs to show (`gpu_load,cpu_load,gpu_core_clock,gpu_mem_clock,vram,ram,cpu_temp,gpu_temp`). |
|
||||
|
||||
Env vars: `MANGOHUD_CONFIG`, `MANGOHUD_CONFIGFILE`, `MANGOHUD_PRESETSFILE`.
|
||||
`mangoapp` = standalone overlay for Steam/gamescope sessions.
|
||||
|
||||
The app exposes: `MANGOHUD=1` (Enable overlay), `fps_limit=60`, `fps`.
|
||||
|
||||
---
|
||||
|
||||
## 4. obs-gamecapture
|
||||
|
||||
Binary wrapper from obs-vkcapture. Enables OBS "Game Capture" sources to see
|
||||
the game.
|
||||
|
||||
| Option / env | Meaning |
|
||||
| ------------------------------------------------------ | ---------------------------------------------------------- |
|
||||
| `--width W`, `--height H` | Capture resolution. |
|
||||
| `--rate N` | Capture frame rate. |
|
||||
| `--no-sound` | Disable audio capture. |
|
||||
| `OBS_FORCE_GAMECAPTURE=1` | Force game-capture path. |
|
||||
| `OBS_NO_GAMECAPTURE=1` | Disable game-capture detection. |
|
||||
| `OBS_NO_XLIB=1`, `OBS_NO_XSHM=1`, `OBS_NO_VKCAPTURE=1` | Disable specific capture paths. |
|
||||
| `OBS_VKCAPTURE=1` | Enable the Vulkan capture layer (native games). |
|
||||
| `OBS_VKCAPTURE_NAME=` | Override the app name reported to OBS for window matching. |
|
||||
|
||||
OBS-side (Game Capture source): window matching (any / specific app / any
|
||||
except), cursor capture (X11 + Wayland), transparency.
|
||||
|
||||
---
|
||||
|
||||
## 5. GameMode
|
||||
|
||||
`gamemoderun %command%` (or `gamemoderun ./game`) requests the gamemoded daemon
|
||||
switch to the performance profile for the process tree. Legacy pre-1.3 form:
|
||||
`LD_PRELOAD="$LD_PRELOAD:/usr/$LIB/libgamemodeauto.so.0" %command%`.
|
||||
|
||||
| Env / config | Meaning |
|
||||
| ------------------------------------ | ---------------------------------------------------------------------------------------------- |
|
||||
| `GAMEMODERUNEXEC="cmd"` | Extra command gamemoderun executes. |
|
||||
| `~/.config/gamemode.ini` `[general]` | `desired_gov` (governor override), `reaper_freq`, `defaultgov`. |
|
||||
| `[gpu]` | `apply_gpu_optimisations`, `gpu_device`, `amd_performance_level=high`, `nv_powermizer_mode=1`. |
|
||||
| `[cpufreq]` | `min_freq`, `max_freq`, `governor=performance`. |
|
||||
| `[core]` | `park_cores=no`. |
|
||||
| `[custom]` | `start=`, `end=` commands run on mode start/stop. |
|
||||
|
||||
---
|
||||
|
||||
## 6. Mesa Vulkan layers (AMD)
|
||||
|
||||
Layers shipped with Mesa (`-D vulkan-layers=...` build option); enable with
|
||||
env vars. Some distros (e.g. CachyOS, mesa-git) ship extra ones as
|
||||
`mesa-vulkan-layers`.
|
||||
|
||||
| Env var | Layer | Meaning |
|
||||
| ----------------------------------------------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `ENABLE_LAYER_MESA_ANTI_LAG=1` | anti-lag (`VK_AMD_anti_lag`, Mesa 25.3+) | AMD CPU-side latency pacing (Anti-Lag-style). Vulkan 1.3.281+. AMD GPUs only. |
|
||||
| `VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_overlay` (or `VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay`) | overlay | Built-in Vulkan HUD: fps, frametimes, GPU/CPU stats. |
|
||||
| `VK_LAYER_MESA_OVERLAY_CONFIG=position=top-left,submit,draw,...` | overlay | Overlay content config: `fps`, `frametime`, `submit`, `draw`, `pipeline_graphics`, `pipeline_compute`, `queue_ops`, `position=...` (run with `help` for the list). |
|
||||
| `MESA_VK_DEVICE_SELECT=list` / `vid:did` | device-select | Pick the Vulkan device (e.g. `MESA_VK_DEVICE_SELECT=1002:747e`); append `!` to force. |
|
||||
| `ENABLE_LAYER_MESA_FPS_MONITOR=1` | fps-monitor | Vsync/FPS rate limiting layer (CachyOS mesa-git). |
|
||||
|
||||
Notes: anti-lag needs the layer present in the runtime (Flatpak Mesa misses it);
|
||||
it only applies to AMD RADV and requires `VK_AMD_anti_lag` support in the game
|
||||
or translation layer. `MESA_VK_DEVICE_SELECT` is the stable way to pin a GPU for
|
||||
multi-GPU setups.
|
||||
|
||||
---
|
||||
|
||||
## 7. DXVK (D3D9/10/11 → Vulkan)
|
||||
|
||||
Translation layer inside Proton. Env vars set per-launch; the config-file
|
||||
options (`dxvk.conf` / `DXVK_CONFIG=...`) are its “args”. `dxvk.conf` is read
|
||||
from the game's working directory; `DXVK_CONFIG_FILE` overrides the path.
|
||||
|
||||
### Env vars
|
||||
|
||||
| Env var | Meaning |
|
||||
| ------------------------------------------------ | ----------------------------------------------------------------------------- |
|
||||
| `DXVK_HUD=...` | HUD elements, comma-separated (see below). `1` = `devinfo,fps`; `full` = all. |
|
||||
| `DXVK_LOG_LEVEL=none\|error\|warn\|info\|debug` | Log verbosity (stderr). |
|
||||
| `DXVK_LOG_PATH=dir` | Write `app_d3d11.log` etc. to a directory; `none` disables files. |
|
||||
| `DXVK_SHADER_CACHE=0` | Disable the internal shader cache. |
|
||||
| `DXVK_SHADER_CACHE_PATH=dir` | Shader cache location (default `%LOCALAPPDATA%/dxvk` / `$XDG_CACHE_HOME`). |
|
||||
| `DXVK_FILTER_DEVICE_NAME="Name"` | Pick GPU by Vulkan device name substring (e.g. `VEGA`). |
|
||||
| `DXVK_FILTER_DEVICE_UUID=32-hex` | Pick GPU by device UUID (vulkaninfo). |
|
||||
| `DXVK_CONFIG_FILE=path` | Point at an explicit `dxvk.conf`. |
|
||||
| `DXVK_CONFIG="opt = val; opt2 = val"` | Set config options inline (`;` separates). |
|
||||
| `DXVK_DEBUG=capture\|hang\|markers\|validation` | Debug modes (hang = GPU-hang detection, markers = debug utils, …). |
|
||||
| `DXVK_WSI_DRIVER=SDL3\|SDL2\|GLFW` | Backend selector for DXVK Native builds. |
|
||||
| `VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation` | Vulkan validation layers (debugging). |
|
||||
|
||||
`DXVK_HUD` elements: `devinfo`, `fps`, `frametimes`, `submissions`,
|
||||
`drawcalls`, `pipelines`, `compiler`, `samplers` (D3D9), `swvp` (D3D9),
|
||||
`scale=x` (e.g. `1.5`), `opacity=y` (e.g. `0.5`).
|
||||
|
||||
### Config options (the “args”)
|
||||
|
||||
| Option | Meaning |
|
||||
| ------------------------------------------- | ----------------------------------------------------------------------------- |
|
||||
| `dxvk.hud = ...` | Same as `DXVK_HUD` (ignored when the env var is set). |
|
||||
| `dxvk.numCompilerThreads = N` | Pipeline-compiler threads; `0` = use all CPU cores. |
|
||||
| `dxvk.enableAsync = True` | Asynchronous pipeline compilation (reduces stutter in shader-heavy games). |
|
||||
| `dxvk.useRawSsbo = True` | Raw SSBOs for buffer views (default on supported hardware). |
|
||||
| `dxvk.enableGraphicsPipelineLibrary = True` | GPL shader pre-compilation (drivers with `VK_EXT_graphics_pipeline_library`). |
|
||||
| `dxvk.enableMemoryDefrag = True` | Defragment VRAM. |
|
||||
| `dxvk.enableDescriptorHeap = True` | Split descriptor heaps (newer path). |
|
||||
| `dxvk.enableDebugUtils = True` | Debug-utils integration. |
|
||||
| `dxgi.syncInterval = 0` | Disable vsync (D3D11 present). |
|
||||
| `dxgi.hideAmdGpu = True` | Hide the AMD GPU from the app (multi-GPU). |
|
||||
|
||||
Full option list: <https://github.com/doitsujin/dxvk/wiki/Configuration>
|
||||
|
||||
---
|
||||
|
||||
## 8. vkd3d-proton (D3D12 → Vulkan)
|
||||
|
||||
Env vars only (no CLI); debug-oriented, may change between versions.
|
||||
|
||||
| Env var | Meaning |
|
||||
| ------------------------------------------------ | ---------------------------------------------------------------------------------------- |
|
||||
| `VKD3D_CONFIG=...` | Comma/semicolon-separated behavior flags (see below). |
|
||||
| `VKD3D_LOG_LEVEL=none\|error\|warn\|info\|trace` | Log verbosity. |
|
||||
| `VKD3D_FRAME_RATE=N` | Frame-rate limit; `0` uncaps. |
|
||||
| `VKD3D_SWAPCHAIN_PRESENT_MODE=MODE` | Force present mode: `IMMEDIATE`, `MAILBOX`, `FIFO`, `FIFO_RELAXED`, `FIFO_LATEST_READY`. |
|
||||
| `VKD3D_SHADER_CACHE_PATH=dir` | DXBC/DXIL→SPIR-V shader cache location; `0` disables. |
|
||||
| `VKD3D_PROFILE_PATH=path` | CPU profiling output (profiled builds only). |
|
||||
|
||||
`VKD3D_CONFIG` flags: `vk_debug` (validation layer), `nodxr` (disable DXR),
|
||||
`dxr` (force DXR even when unsafe), `dxr12` (experimental DXR 1.2),
|
||||
`force_static_cbv` (NVIDIA speed hack), `single_queue` (no async queues),
|
||||
`no_upload_hvv` (block host-visible VRAM for uploads), `pipeline_library_app_cache`,
|
||||
`skip_application_workarounds`, `breadcrumbs`, `descriptor_qa_checks` (debug).
|
||||
|
||||
---
|
||||
|
||||
## 9. Wine core env vars (also work under Proton)
|
||||
|
||||
Proton ships Wine; these env vars apply to the whole prefix.
|
||||
|
||||
| Env var | Meaning |
|
||||
| -------------------------------- | --------------------------------------------------------------------------------------------- |
|
||||
| `WINEPREFIX=path` | Wine prefix directory (default `~/.wine`); all Wine processes of a prefix share `wineserver`. |
|
||||
| `WINEDLLOVERRIDES="dll=n,b;..."` | DLL load order: `n` native, `b` builtin (e.g. `dxgi=n`, `dinput8=n,b`). |
|
||||
| `WINEDEBUG=...` | Debug channel control (e.g. `-all`, `+d3d`). |
|
||||
| `WINE_CPU_TOPOLOGY=N:list` | Expose N physical cores to the game (e.g. `8:0,1,2,3,4,5,6,7` — Steam Deck uses this). |
|
||||
|
||||
Note: esync/fsync are built into Proton (toggled via `PROTON_NO_ESYNC` /
|
||||
`PROTON_NO_FSYNC`); upstream Wine also accepts `WINEESYNC=1` / `WINEFSYNC=1`.
|
||||
|
||||
---
|
||||
|
||||
## 10. NVIDIA PRIME render offload (hybrid laptops)
|
||||
|
||||
Forcing the discrete NVIDIA GPU. Env vars only — no args; the `prime-run`
|
||||
wrapper command sets all three. Needs driver 435.17+.
|
||||
|
||||
| Env var | Meaning |
|
||||
| ----------------------------------- | ------------------------------------ |
|
||||
| `__NV_PRIME_RENDER_OFFLOAD=1` | Offload rendering to the PRIME GPU. |
|
||||
| `__GLX_VENDOR_LIBRARY_NAME=nvidia` | OpenGL path (GLX). |
|
||||
| `__VK_LAYER_NV_optimus=NVIDIA_only` | Vulkan path (via the Optimus layer). |
|
||||
|
||||
Usage: `prime-run %command%` or inline:
|
||||
`__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only %command%`.
|
||||
Combined with gamemode: `gamemoderun prime-run %command%`.
|
||||
|
||||
---
|
||||
|
||||
## 11. gamescope — SteamOS session env vars + extra CLI
|
||||
|
||||
### Env vars (Steam/SteamOS session integration)
|
||||
|
||||
From the Steam Deck `gamescope-session` script (HoloISO/SteamOS); these tell
|
||||
Steam/gamescope which session capabilities exist or control the session:
|
||||
|
||||
| Env var | Meaning |
|
||||
| ----------------------------------------------------- | ----------------------------------------------------------- |
|
||||
| `STEAM_GAMESCOPE_VRR_SUPPORTED=1` | Advertise VRR controls in Steam. |
|
||||
| `STEAM_GAMESCOPE_TEARING_SUPPORTED=1` | Enable tearing controls in Steam. |
|
||||
| `STEAM_GAMESCOPE_HAS_TEARING_SUPPORT=1` | Gamescope tearing via `GAMESCOPE_ALLOW_TEARING`. |
|
||||
| `STEAM_GAMESCOPE_DYNAMIC_FPSLIMITER=1` | Mesa fifo-based dynamic FPS limiter. |
|
||||
| `STEAM_GAMESCOPE_COLOR_TOYS=1` | Gamma/degamma exponent support in Steam. |
|
||||
| `STEAM_GAMESCOPE_NIS_SUPPORTED=1` | Advertise NIS upscaling. |
|
||||
| `STEAM_GAMESCOPE_DYNAMIC_REFRESH_IN_STEAM_SUPPORTED` | Dynamic refresh toggle in the steamui. |
|
||||
| `STEAM_DISPLAY_REFRESH_LIMITS=40,60` | Refresh-rate range + switching (e.g. Deck 40 Hz mode). |
|
||||
| `STEAM_USE_DYNAMIC_VRS=1` | Dynamic VRS (with `RADV_FORCE_VRS_CONFIG_FILE`). |
|
||||
| `STEAM_MULTIPLE_XWAYLANDS=1` | Per-game XWayland isolation. |
|
||||
| `STEAM_USE_MANGOAPP=1` | mangoapp overlay in session. |
|
||||
| `STEAM_MANGOAPP_HORIZONTAL_SUPPORTED=1` | Horizontal mangoapp bar. |
|
||||
| `GAMESCOPE_MODE_SAVE_FILE=path` | Mode-save file (res/refresh modes). |
|
||||
| `GAMESCOPE_NV12_COLORSPACE=...` | NV12 colorspace for RPT (e.g. `k_EStreamColorspace_BT601`). |
|
||||
| `GAMESCOPE_LIMITER_FILE=path` | Callback-based FPS limiter file. |
|
||||
| `GAMESCOPE_STATS=path` / `GAMESCOPE_WAYLAND_DISPLAY=` | Session stats pipe / Wayland display set by gamescope. |
|
||||
|
||||
### Extra CLI flags (beyond §1)
|
||||
|
||||
| Option | Meaning |
|
||||
| ------------------------------------ | ---------------------------------------------------------------- |
|
||||
| `--xwayland-count N` | Number of XWayland servers (e.g. `2` on Deck). |
|
||||
| `--hide-cursor-delay ms` | Hide the cursor after N ms of inactivity (e.g. `3000`). |
|
||||
| `--fade-out-duration ms` | Fade-to-black duration on startup (e.g. `200`). |
|
||||
| `--force-orientation VALUE` | Panel orientation: `left`, `right`, `upside_down`. |
|
||||
| `--cursor PATH --cursor-hotspot x,y` | Custom cursor image + hotspot (per-user path — skip in presets). |
|
||||
| `-R socket` / `-T stats-pipe` | Session startup socket / stats pipe (used by SteamOS session). |
|
||||
|
||||
Keyboard shortcuts (nested session): `Super+F` fullscreen, `Super+N`
|
||||
nearest-neighbour, `Super+U` FSR, `Super+Y` NIS, `Super+I`/`Super+O` FSR
|
||||
sharpness ±1, `Super+S` screenshot, `Super+G` keyboard grab.
|
||||
|
||||
---
|
||||
|
||||
## 12. Steam launch-option syntax
|
||||
|
||||
- Steam runs the launch options with `/bin/sh`; `%command%` is substituted
|
||||
with the actual game command (must appear exactly once, at the end).
|
||||
- Env assignments prefix the command: `VAR=1 VAR2=x gamescope ... -- %command%`.
|
||||
- Wrappers chain left → right, outermost first: `gamemoderun prime-run
|
||||
gamescope -r 60 -- %command%` (gamemode outermost, gamescope innermost).
|
||||
- `--` separates the wrapper's own args from the wrapped command (gamescope,
|
||||
obs-gamecapture). Without a wrapper, `%command%` alone is valid.
|
||||
- Example: `gamescope -h 720 -H 1440 -S integer -- %command%` (720p→1440p
|
||||
integer scale); `gamescope -r 30 -- %command%` (FPS limit).
|
||||
- Linux-only env vars (DXVK/vkd3d/Proton) have no effect on Windows builds of
|
||||
the same game.
|
||||
|
||||
---
|
||||
|
||||
## Sources
|
||||
|
||||
- <https://github.com/ValveSoftware/gamescope> (`main.cpp` usage string, README)
|
||||
- <https://github.com/flightlessmango/MangoHud> (`data/MangoHud.conf`)
|
||||
- <https://deepwiki.com/nowrep/obs-vkcapture/4.1-configuration-options>
|
||||
- <https://github.com/FeralInteractive/gamemode> (+ `gamemoderun(1)`)
|
||||
- <https://docs.mesa3d.org/envvars> · Phoronix "Mesa 25.3 Merges Vulkan AMD Anti-Lag Support"
|
||||
- <https://github.com/doitsujin/dxvk> (README + Configuration wiki)
|
||||
- <https://github.com/HansKristian-Work/vkd3d-proton> (README)
|
||||
- <https://wiki.archlinux.org/title/PRIME> · <https://download.nvidia.com/XFree86/Linux-x86_64/595.91.07/README/primerenderoffload.html>
|
||||
- <https://wiki.archlinux.org/title/Launch_option> · <https://man.archlinux.org/man/wine.1.en>
|
||||
- <https://github.com/HoloISO/gamescope-steamos-pkgbuild> (`gamescope-session` script)
|
||||
- Project-internal: `launch_args_env_vars.md`, `steam-tinker-launcher.md`
|
||||
Reference in New Issue
Block a user