diff options
| author | nippy <nippy@nippy-Mac-mini.lan> | 2026-08-29 14:55:31 +0200 |
|---|---|---|
| committer | nippy <nippy@nippy-Mac-mini.lan> | 2026-08-29 14:58:07 +0200 |
| commit | 9d5d5683d974eb93562256234631bfd250328ff3 (patch) | |
| tree | a924d85ee103170dbd82c08477147f7addcbe051 /raveos-welcome/raveos-gpu-optimizer.sh | |
| parent | 792a7a00872eb4f10fa204da9cf814e3f1638ad6 (diff) | |
| download | RaveOS-PKGBUILD-9d5d5683d974eb93562256234631bfd250328ff3.tar.gz RaveOS-PKGBUILD-9d5d5683d974eb93562256234631bfd250328ff3.zip | |
fix
Diffstat (limited to 'raveos-welcome/raveos-gpu-optimizer.sh')
| -rw-r--r-- | raveos-welcome/raveos-gpu-optimizer.sh | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/raveos-welcome/raveos-gpu-optimizer.sh b/raveos-welcome/raveos-gpu-optimizer.sh new file mode 100644 index 0000000..e24285a --- /dev/null +++ b/raveos-welcome/raveos-gpu-optimizer.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# RaveOS Safe GPU Performance Optimizer & Stutter Preventer +# Prevents P-state lock lag, Wayland compositor micro-stuttering, and thermal throttling drops. + +set -euo pipefail + +# Root check +if [[ $EUID -ne 0 ]]; then + echo "[RaveOS-GPU] Error: Root permissions required." >&2 + exit 1 +fi + +log() { + echo "[RaveOS-GPU] $1" +} + +# 1. AMD GPU Optimization (Auto P-State + Smooth Power Cap) +optimize_amd() { + log "Optimizing AMD GPU acceleration without P-state locking..." + for card in /sys/class/drm/card*/device; do + if [ -f "$card/power_dpm_force_performance_level" ]; then + # Use 'auto' instead of rigid 'high' to prevent mouse lag and compositor stutter + echo "auto" > "$card/power_dpm_force_performance_level" 2>/dev/null || true + fi + done +} + +# 2. NVIDIA GPU Optimization (Adaptive PowerMizer + Smooth TDP Limit) +optimize_nvidia() { + if command -v nvidia-smi &>/dev/null; then + log "Optimizing NVIDIA GPU (Adaptive PowerMizer mode)..." + # Auto-boost enabled, avoiding forced clock lock that breaks PCIe ASPM + nvidia-smi --auto-boost-default=ENABLED 2>/dev/null || true + + if command -v nvidia-settings &>/dev/null && [ -n "${DISPLAY:-}" ]; then + # Set PowerMizer to Auto/Adaptive (0) instead of max performance (1) to prevent compositor stutter + nvidia-settings -a "[gpu:0]/GpuPowerMizerMode=0" 2>/dev/null || true + fi + fi +} + +# Main Execution +main() { + log "Starting safe GPU optimization..." + + if lspci | grep -iE "vga|3d|display" | grep -i "amd" &>/dev/null; then + optimize_amd + fi + + if lspci | grep -iE "vga|3d|display" | grep -i "nvidia" &>/dev/null; then + optimize_nvidia + fi + + log "GPU Optimization complete. Dynamic P-states and ASPM preserved." +} + +main "$@" |