AMD RX 6800 GPU optimization, Steam/Proton, Lutris, MangoHud, GameMode, and Hyprland gaming rules
Complete reference for gaming on Arch Linux with AMD RX 6800, Hyprland, Steam/Proton, Lutris, and performance optimization.
| Component | Package | Purpose |
|---|---|---|
| AMDGPU | Built into kernel | Kernel-level GPU driver (open source) |
| Mesa | mesa | OpenGL/Vulkan userspace driver |
| Mesa 32-bit | lib32-mesa | 32-bit support (required for Steam) |
| RADV | Part of Mesa | Vulkan driver for AMD (default, excellent) |
| ACO | Part of Mesa | AMD shader compiler (default, faster than LLVM) |
| Vulkan ICD | vulkan-radeon |
| Vulkan installable client driver |
| Vulkan 32-bit | lib32-vulkan-radeon | 32-bit Vulkan (for Proton/Wine) |
# Check Vulkan driver
vulkaninfo | grep driverName
# Should show: RADV (radv)
# Check OpenGL
glxinfo | grep "OpenGL renderer"
# Should show: AMD Radeon RX 6800
# Check GPU info
lspci -k | grep -A3 VGA
# Verify 32-bit libs are installed
pacman -Qs lib32-mesa lib32-vulkan
# Essential
pacman -S mesa vulkan-radeon lib32-mesa lib32-vulkan-radeon
# Monitoring
pacman -S radeontop lm-sensors
| Tool | Command | Purpose |
|---|---|---|
radeontop | radeontop | Real-time GPU usage monitor |
sensors | sensors | Temperature readings |
corectrl | GUI app (AUR) | GPU clocking, fan curves |
btop | btop | Includes GPU monitoring |
# Read GPU temp (divide by 1000 for °C)
cat /sys/class/drm/card1/device/hwmon/hwmon*/temp1_input | awk '{printf "%.0f°C\n", $1/1000}'
# GPU usage percentage
cat /sys/class/drm/card1/device/gpu_busy_percent
# Requires multilib repo enabled in /etc/pacman.conf
pacman -S steam
Proton-GE includes extra patches, media codecs, and game fixes not in official Proton:
# Install via AUR
yay -S proton-ge-custom-bin
After installing, select it per-game: Game Properties → Compatibility → Force specific tool.
Common Steam launch options (right-click game → Properties → Launch Options):
| Launch Option | Purpose |
|---|---|
MANGOHUD=1 %command% | Enable MangoHud overlay |
gamemoderun %command% | Enable GameMode optimizations |
MANGOHUD=1 gamemoderun %command% | Both MangoHud + GameMode |
DXVK_ASYNC=1 %command% | Async shader compilation (reduces stuttering) |
AMD_VULKAN_ICD=RADV %command% | Force RADV driver |
PROTON_USE_WINED3D=1 %command% | Use OpenGL instead of Vulkan (compatibility fallback) |
PROTON_NO_ESYNC=1 %command% | Disable esync (debugging) |
pacman -S lutris wine-staging
| Runner | Purpose |
|---|---|
| Wine (system) | System-installed Wine |
| Wine-GE | Custom Wine with gaming patches |
| Proton | Valve's Wine fork |
| Linux | Native Linux games |
On-screen display showing FPS, CPU/GPU usage, temps, and frame timing.
pacman -S mangohud lib32-mangohud
# Environment variable
MANGOHUD=1 game_command
# Steam launch option
MANGOHUD=1 %command%
# Lutris: enable in runner options
Config file: ~/.config/MangoHud/MangoHud.conf
# Toggle HUD
toggle_hud=F12
toggle_fps_limit=F11
# Position
position=top-left
# Display options
fps
gpu_stats
gpu_temp
cpu_stats
cpu_temp
ram
vram
frame_timing
frametime
fps_limit=0
# Appearance
background_alpha=0.5
font_size=20
Optimizes system settings while games are running.
pacman -S gamemode lib32-gamemode
| Optimization | Detail |
|---|---|
| CPU governor | Switches to performance |
| Process priority | Raises to higher nice value |
| GPU power state | Sets to high performance |
| IO scheduler | Changes to deadline |
| Screensaver | Inhibits screen blanking |
# Wrap game command
gamemoderun ./game
# Steam launch option
gamemoderun %command%
# Verify it works
gamemoded -t
Config file: ~/.config/gamemode.ini
[general]
renice = 10
softrealtime = auto
inhibit_screensaver = 1
[gpu]
apply_gpu_optimisations = accept-responsibility
gpu_device = 0
yay -S curseforge-bin
pacman -S jre-openjdk # Java runtime for Minecraft
-XX:+UseG1GC -XX:+ParallelRefProcEnabledAdd to hyprland.conf:
# ── Steam ──
windowrulev2 = float, class:^(steam)$, title:^(Friends List)
windowrulev2 = float, class:^(steam)$, title:^(Steam Settings)
windowrulev2 = float, class:^(steam)$, title:^(Game Properties)
windowrulev2 = workspace 9, class:^(steam)$, title:^(Steam)$
# ── Games general ──
# Steam games: fullscreen, no idle, allow tearing (VRR)
windowrulev2 = fullscreen, class:^(gamescope)$
windowrulev2 = idleinhibit always, class:^(steam_app_.*)$
windowrulev2 = immediate, class:^(steam_app_.*)$
# ── Lutris ──
windowrulev2 = float, class:^(lutris)$
windowrulev2 = size 1200 800, class:^(lutris)$
# ── Minecraft ──
windowrulev2 = idleinhibit always, class:^(Minecraft.*)$
windowrulev2 = fullscreen, class:^(Minecraft.*)$, title:^(Minecraft.*)$
# Watch for new windows
hyprctl clients -j | jq '.[].class'
# Or use hyprctl event monitoring
hyprctl event-listener
# Required by many games — increase memory map limit
# /etc/sysctl.d/99-gaming.conf
vm.max_map_count = 1048576
# Apply immediately
sudo sysctl vm.max_map_count=1048576
| Variable | Value | Effect |
|---|---|---|
AMD_VULKAN_ICD | RADV | Force RADV Vulkan driver |
DXVK_ASYNC | 1 | Async shader compilation |
RADV_PERFTEST | gpl | Graphics pipeline library (faster shaders) |
mesa_glthread | true | Multi-threaded OpenGL |
# Enable variable refresh rate
misc {
vrr = 1 # 0=off, 1=on, 2=fullscreen only
}
# Disable unnecessary compositor effects during fullscreen
# (Hyprland is already very GPU-efficient, but these help)
decoration {
blur {
enabled = true
# Blur doesn't apply to fullscreen, so no perf impact
}
}
DXVK_ASYNC=1 or wait for shader pre-caching in Steamvrr = 1 in Hyprland insteadPyTorch深度学习模式与最佳实践,用于构建稳健、高效且可复现的训练流程、模型架构和数据加载。