Vorab klären: Darfst du das überhaupt?
OptiScaler legt eine Proxy-DLL (dxgi.dll oder d3d12.dll) in den Spielordner, die das Spiel statt der System-DLL lädt. Das ist technisch dasselbe Muster wie ein Cheat-Loader. Anti-Cheat-Systeme sehen das.
Bei Spielen mit Easy Anti-Cheat, BattlEye, Vanguard oder eigener Kernel-Überwachung (Star Citizen, Escape from Tarkov, Rust, Fortnite, Call of Duty, Valorant …) nicht installieren. Online-Spiele ohne Kernel-Anti-Cheat (Path of Exile 2, Diablo IV) gehen meist, aber auf eigenes Risiko – die Betreiber verbieten Modifikationen in ihren AGB.
Zweite Frage: Braucht das Spiel OptiScaler überhaupt? Wenn es DLSS/FSR nativ anbietet und du nur ein neueres Preset willst, reicht auf NVIDIA oft PROTON_ENABLE_NVAPI=1 plus DLSS-Override im Overlay. OptiScaler lohnt sich, wenn ein Upscaler fehlt (FSR 4 auf RDNA 4, XeSS auf Intel/AMD, DLSS-Presets ohne NVIDIA-App) oder Frame Generation nachgerüstet werden soll.
MangoHud und goverlay – einmal, nativ
MangoHud zeigt dir gleich, ob DLSS wirklich läuft; goverlay ist die GUI dafür. Beides aus den Repos, nicht zusätzlich als Flatpak – zwei Installationen mit getrennten Configs sind die häufigste Quelle für „bei mir greift die Einstellung nicht“.
Wenn goverlay-git oder ein Flatpak auftaucht: eins davon weg. Auf CachyOS hängt goverlay-git gern im Metapaket cachyos-gaming-applications – dann tauscht man statt zu entfernen:
Dann goverlay starten, MangoHud einrichten (Position, FPS-Limit, Toggle-Taste) und speichern. Die Config landet in ~/.config/MangoHud/MangoHud.conf. Empfehlung für das FPS-Limit: eine Liste statt eines Werts – dann schaltest du im Spiel per Taste durch:
Wenn MangoHud limitiert, das In-Game-Limit ausschalten. Zwei Limiter mit unterschiedlichen Zielwerten (z. B. 142 und 144) erzeugen genau die unruhigen Frametimes, die man dann fälschlich OptiScaler anlastet.
OptiScaler herunterladen
Nur von der offiziellen Quelle: github.com/optiscaler/OptiScaler/releases. Nimm das letzte Release (0.9.x), keine Nightly, es sei denn du brauchst eine bestimmte neue Funktion. Wer bezahlt hat, wurde betrogen – steht auch im Log.
Fehlt 7z: sudo pacman -S 7zip. Mit unzip entpackte ZIPs aus Windows-Quellen legen manchmal Dateien namens OptiScaler\libxess.dll an – mit Backslash im Namen statt eines Unterordners. Dann findet OptiScaler nichts. 7z x und bsdtar machen das richtig.
In den Spielordner entpacken
Ziel ist der Ordner, in dem die Spiel-.exe liegt (bei Unreal-Spielen meist …/Binaries/Win64/). Vorher zwei Dinge festhalten, die man später beim Rückbau braucht:
Jetzt entscheidet setup_linux.sh, unter welchem Namen das Spiel OptiScaler lädt. Es kopiert dafür nur OptiScaler.dll um – nichts wird „gebaut“:
Manche Spiele liefern libxess.dll oder amd_fidelityfx_*.dll selbst mit (PoE 2 z. B. libxess.dll). Das Entpacken überschreibt sie mit OptiScalers Version. Meist harmlos – aber beim Rückbau Steam-Integritätsprüfung laufen lassen, damit die Originale zurückkommen.
Steam-Startoption setzen
Wine lädt bei dxgi und d3d12 standardmäßig seine eigenen (DXVK/vkd3d-proton). Damit die Proxy-DLL aus dem Spielordner Vorrang bekommt, braucht es eine Override. Rechtsklick auf das Spiel → Eigenschaften → Startoptionen:
n,b heißt: erst native (deine Datei im Spielordner), dann builtin (Wines eigene). OptiScaler lädt die builtin danach selbst nach – deshalb funktioniert DXVK/vkd3d weiter.
goverlay bietet an, ein Spiel über seinen Wrapper bgmod zu starten, der die Dateien bei jedem Start synchronisiert. In Version 1.9.2 wartet dieser Wrapper nach Spielende auf die falsche PID (die von Steam) und bleibt hängen – Steam zeigt dann „läuft“, bis man ihn killt; nebenbei macht seine Log-Schleife die Frametimes unruhig. Die zwei Umgebungsvariablen oben sind alles, was der Wrapper wirklich beiträgt. Setz sie direkt.
Im Spiel prüfen
- Spiel starten. Im Grafikmenü einen Upscaler wählen (DLSS, FSR, XeSS – egal welchen, OptiScaler fängt ihn ab).
- Einfg öffnet das OptiScaler-Overlay. Oben steht die aktive Kette, z. B. „DLSS → DLSS“ oder „FSR 3.1 → XeSS 2“. Hier wählst du den echten Upscaler, das Preset (NVIDIA: K = Transformer), Schärfe.
- MangoHud mit Shift_R+F12 einblenden – Render- vs. Display-Auflösung und die Frametime-Linie zeigen, ob Upscaling greift.
Und das Log liest man einmal, weil es nicht lügt:
OptiScaler v0.9.4-final loaded → working as dxgi.dll, system dll loaded → DLSSFeatureDx12::Init _CreateFeature result: NVSDK_NGX_Result_Success → Render Resolution: 2293x960, Display Resolution 3440x1440. Fehlt die erste Zeile, wurde die DLL nicht geladen: Override falsch oder falscher Ordner.
Rückbau – ohne Reste
Dann: Startoption in Steam leeren, Integrität der Spieldateien überprüfen (holt überschriebene Originale zurück), einmal starten. Die Liste von Schritt 4 zeigt dir, ob wirklich alles weg ist.
Fallstricke, die wir selbst gefunden haben
- Zwei goverlays. Flatpak und nativ nebeneinander → zwei MangoHud-Configs, zwei OptiScaler-Caches in drei Versionen. Eine Installation, fertig.
- Backslash-Dateinamen.
OptiScaler\libxess.dllals flache Datei statt Unterordner – Windows-ZIP mitunzipentpackt. Mit7z xpassiert das nicht. - Font-Pfad aus dem Flatpak. Eine vom Flatpak-goverlay geschriebene MangoHud.conf zeigt auf
/usr/share/fonts/dejavu/…, das es auf dem Host nicht gibt. MangoHud fällt still auf die Standardschrift zurück. Mitfc-match -f '%{file}' 'DejaVu Sans:bold'den echten Pfad holen. - Doppelter Limiter. In-Game 144 + MangoHud 142 = Zittern. Einer von beiden, nicht beide.
- Wrapper-Hänger. goverlay 1.9.2 / bgmod beendet sich nicht mit dem Spiel. Umgebungsvariablen direkt in die Startoption.
- Überschriebene Spieldateien.
libxess.dllgehört bei manchen Spielen zum Depot. Nach dem Rückbau Integritätsprüfung. - Streamline verlangt Windows 10. Steht der Wine-Prefix auf einer älteren Version, fehlen DLSS/Reflex im Menü komplett – unabhängig von OptiScaler.
protontricks <AppID> win10.
Path of Exile 2 – die Besonderheiten
Renderer
DLSS, DLAA, XeSS und Reflex erscheinen nur unter DirectX 12. Unter Vulkan gibt es nur FSR/NIS. Umstellen im Grafikmenü oder renderer_type=DirectX12 in …/My Games/Path of Exile 2/poe2_production_Config.ini.
Prefix auf Windows 10
PoE 2 treibt DLSS über NVIDIA Streamline; das bricht mit Requires Windows 10 ab, wenn der Prefix älter ist. protontricks 2694490 win10. Kontrolle in logs/Client.txt: [STREAMLINE][DLSS]: Loaded version ….
Loader
d3d12.dll funktioniert nachweislich (Log: Quirk: Load d3d12.dll, working as d3d12.dll). Startoption also mit WINEDLLOVERRIDES=d3d12=n,b.
Spieleigene libxess.dll
Liegt im Depot-Manifest. OptiScaler überschreibt sie; nach dem Rückbau Integritätsprüfung, sonst fehlt XeSS im Menü.
Frame Generation
Hat PoE 2 nativ nicht. OptiScalers FSR-FG lässt sich aktivieren, bringt in einem ARPG mit Maus-Input aber Latenz – bei 60-FPS-Limit eher lassen.
Limiter
Das In-Game-Limit ausschalten, MangoHud mit fps_limit=60,0,142 übernehmen lassen. Bei 142 FPS ist PoE 2 auf der CPU am Anschlag – Zacken dort sind das echte CPU-Limit, nicht OptiScaler.
„DLSS 5 Neural Rendering“ – was die Videos weglassen
Es kursiert ein OptiScaler-Fork (OptiScaler_DLSSNR), der NVIDIAs Neural-Rendering-Modell als Extra-Pass hinter jeden Upscaler hängt – „DLSS 5 in jedem Spiel“. Der Fork ist echt und funktioniert. Aber:
| Datei | Was sie ist | Woher |
|---|---|---|
OptiScaler.dll | der Fork selbst, wird per Setup-Script zu dxgi.dll/d3d12.dll | im ZIP |
nvngx.dll_dlssnr.dll (114 KB) | Namensadapter, damit das Modell den Aufrufer akzeptiert | im ZIP |
nvngx_dlssnr.dll (~165 MB) | das Modell – ohne das passiert nichts | nicht im ZIP, nicht im Linux-Treiber |
Die Modell-DLL stammt aus einem Leak (NBA-2K27-Early-Access) und wurde von der Community für RTX 20/30/40 nachgepatcht – offiziell läuft es nur auf RTX 50. Das Setup-Script des Forks sagt es selbst: nvngx_dlssnr.dll – you supply it. Dieser Guide beschafft sie nicht. NVIDIA hat offiziellen RTX-40-Support angekündigt; sobald ein Treiber die Datei mitliefert, ist der Rest ein Fünf-Minuten-Umbau. Bis dahin ist der Fork nur normales OptiScaler mit Nightly-Risiko – und die Performance-Kosten (~8 ms pro Frame in 4K auf einer 5090) machen ihn für alles über 60 FPS ohnehin unbrauchbar.
Nebenbei: Strom sparen bei festen FPS
Wer mit 60-FPS-Limit spielt, zahlt trotzdem für jedes Bild den vollen Renderpreis. Die Reihenfolge der Hebel, gemessen an einer RTX 4090 in PoE 2 (3440×1440):
| Einstellung | Leistungsaufnahme |
|---|---|
| 60 FPS, DLAA (native Auflösung) | ≈ 290 W |
| 60 FPS, DLSS Quality | ≈ 97 W |
| 142 FPS, DLSS Quality, Power-Cap 200 W | ≈ 198 W (am Cap) |
Erst Upscaling (Quality-Stufe, Preset K sieht auf WQHD+ wie nativ aus), dann ein Power-Cap in LACT als Deckel für Effektgewitter. Undervolting bringt darüber hinaus wenig, solange die Karte bei 60 FPS ohnehin nur ein Drittel arbeitet.