diff options
| author | xXJsonDeruloXx <danielhimebauch@gmail.com> | 2026-03-20 17:32:52 -0400 |
|---|---|---|
| committer | xXJsonDeruloXx <danielhimebauch@gmail.com> | 2026-03-20 17:32:52 -0400 |
| commit | d81bb130385114389728f849d0ab8cccf62b90d1 (patch) | |
| tree | e4bdd986c3b18c62cae7311b92fb5ad5f9be86e6 /README.md | |
| parent | ca5db2231b8554d1377dd449f6fb9c736e3d6386 (diff) | |
| download | Decky-Framegen-d81bb130385114389728f849d0ab8cccf62b90d1.tar.gz Decky-Framegen-d81bb130385114389728f849d0ab8cccf62b90d1.zip | |
Add Steam UI for prefix-managed integrationfeature/prefix-managed-optiscaler
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 184 |
1 files changed, 114 insertions, 70 deletions
@@ -1,98 +1,142 @@ -# Decky Framegen Plugin +# Decky Framegen [](https://ko-fi.com/B0B71HZTAX) -A Steam Deck plugin that enables DLSS upscaling and Frame Generation on handhelds by utilizing the latest OptiScaler and supporting modification software. This plugin automatically installs and manages all necessary components for FSR-based frame generation in games that support DLSS, or OptiFG for adding FG to games that do not have any existing FG pathway (highly experimental) +Decky Framegen now treats OptiScaler as a **prefix-managed per-game runtime** instead of a game-folder mod installer. -## What This Plugin Does +## What changed -This plugin uses OptiScaler to replace DLSS calls with FSR3/FSR3.1, giving you: +The plugin no longer needs to copy OptiScaler into the game install directory. -- **Frame Generation**: Smooth out your frame rate using AMD's FSR3 pathways -- **Upscaling**: Improves performance while maintaining visual quality using FSR and XESS using DLSS FSR or XESS inputs. Upgrade FSR 2 games to FSR 3.1.4 or XESS for better visual quality. -- **Easy Management**: One-click installation and game patching/unpatching through the Steam Deck interface. No going into desktop mode every time you want to add or remove OptiScaler from a game! +Instead, it: -## Features +- installs a shared OptiScaler runtime under `~/fgmod` +- stages OptiScaler into `compatdata/<appid>/pfx/drive_c/windows/system32` at launch time +- keeps a writable per-game config under `compatdata/<appid>/optiscaler-managed` +- restores the original Wine/Proton proxy DLL on cleanup -### Core Functionality -- **One-Click Setup**: Automatically downloads and installs OptiScaler into a "fgmod" directory -- **Smart Installation**: Handles all required dependencies and library files -- **Game Patching**: Easy copy-paste launch commands for enabling/disabling the mod per game -- **OptiScaler Wiki**: Direct access to OptiScaler documentation and settings via a webpage launch button right inside the plugin. +That makes the integration: -## How to Use +- non-invasive +- reversible +- per-game +- compatible with Steam launch options and future launcher/runtime style integration -1. **Install the Plugin**: Download and install through Decky Loader "install from zip" option in developer settings -2. **Setup OptiScaler**: Open the plugin and click "Setup OptiScaler Mod" -3. **Configure Games**: For each game you want to enhance: - - Click "Copy Patch Command" in the plugin - - Go to your game's Properties → Launch Options in Steam - - Paste the command: `~/fgmod/fgmod %command%` -4. **Enable Features**: Launch your game and enable DLSS in the graphics settings -5. **Advanced Options**: Press the Insert key in-game for additional OptiScaler settings +## Current default behavior -### Removing the Mod from Games -- Click "Copy Unpatch Command" and replace the launch options with: `~/fgmod/fgmod-uninstaller.sh %command%` -- Run the game at least once to make the uninstaller script run. After you can leave the launch option or remove it +The default proxy is: -### Configuring OptiScaler via Environment Variables -As of v0.15.1, you can update OptiScaler settings before a game launches by adding environment variables. -This is useful if you plan to use the same settings across multiple games so they are pre-configured by the time you launch them. +- `winmm.dll` -For example, considering the following sample from the OptiScaler.ini config file: +The default launch command is: + +```bash +OPTISCALER_PROXY=winmm ~/fgmod/fgmod %command% ``` -[Upscalers] -Dx11Upscaler=auto -Dx12Upscaler=auto -VulkanUpscaler=auto - -[FrameGen] -Enabled=auto -FGInput=auto -FGOutput=auto -DebugView=auto -DrawUIOverFG=auto + +To clean a game's managed prefix manually: + +```bash +~/fgmod/fgmod-uninstaller.sh %command% ``` -We can decide to set `Dx12Upscaler=fsr31` to enable FSR4 in DX12 games by default. This works because the option name `Dx12Upscaler` is unique throughout the file but for options that appear multiple times like `Enabled`, you can prefix the option name with the section name like `FrameGen_Enabled=true`. -You can provide section names for all options if you want to be explicit. You can also prefix `Section_Option` with `OptiScaler` to ensure no conflict with other commands. -Here's the breakdown of supported formats: -- `OptiScaler_Section_Option=value` - Full format (foolproof) -- `Section_Option=value` - Short format (recommended) -- `Option=value` - Minimal format (only works if the option name appears once in OptiScaler.ini) +## How to use + +1. Install the plugin zip through Decky Loader. +2. Open Decky Framegen. +3. Press **Install Prefix-Managed Runtime**. +4. Enable a game from the **Steam game integration** section, or copy the launch command manually. +5. Launch the game. +6. Press **Insert** in-game to open the OptiScaler menu. + +## Steam game integration + +The plugin can now manage Steam launch options for a selected installed game. + +Enable: + +- writes `OPTISCALER_PROXY=winmm ~/fgmod/fgmod %COMMAND%` into Steam launch options + +Disable: + +- clears Steam launch options +- cleans the managed OptiScaler files from the game's compatdata prefix + +## Advanced notes + +### Config persistence + +`OptiScaler.ini` is stored per game under: + +```text +compatdata/<appid>/optiscaler-managed/OptiScaler.ini +``` + +The runtime copies that INI into `system32` before launch and syncs it back after the game exits, so in-game menu saves persist. + +### Proxy override + +You can test a different proxy by changing the launch option manually: -**Example:** ```bash -# Enable frame generation with XeFG output -FrameGen_Enabled=true FGInput=fsrfg FGOutput=xefg ~/fgmod/fgmod %command% +OPTISCALER_PROXY=dxgi ~/fgmod/fgmod %command% +OPTISCALER_PROXY=version ~/fgmod/fgmod %command% +``` + +Supported values currently include: + +- `winmm` +- `dxgi` +- `version` +- `dbghelp` +- `winhttp` +- `wininet` +- `d3d12` + +### Environment-driven INI updates -# Set DX12 upscaler to FSR 3.1 (Upgrades to FSR4) -Dx12Upscaler=fsr31 ~/fgmod/fgmod %command% +The existing OptiScaler env var patching still works. For example: + +```bash +Dx12Upscaler=fsr31 FrameGen_Enabled=true OPTISCALER_PROXY=winmm ~/fgmod/fgmod %command% ``` -**Notes:** -- Environment variables override the OptiScaler.ini file on each game launch -- Hyphenated section names like `[V-Sync]` can be accessed like `VSync_Option=value` -- If an option name appears in multiple sections of the OptiScaler.ini file, use the `Section_Option` or `OptiScaler_Section_Option` format +## Technical summary -## Technical Details +At launch the runtime: -### What's Included -- **[OptiScaler 0.9.0-pre11](https://github.com/xXJSONDeruloXx/OptiScaler-Bleeding-Edge/releases/tag/opti-9-pre-11)**: Bleeding-edge OptiScaler bundle used by this plugin, paired with the RDNA2-optimized `amd_fidelityfx_upscaler_dx12.dll` override for Steam Deck compatibility -- **Nukem9's DLSSG to FSR3 mod**: Allows use of DLSS inputs for FSR frame gen outputs, and xess or FSR upscaling outputs -- **FakeNVAPI**: NVIDIA API emulation for AMD/Intel GPUs, to make DLSS options selectable in game -- **Supporting Libraries**: All required DX12/Vulkan libraries (libxess.dll, amd_fidelityfx, etc.) +1. resolves `STEAM_COMPAT_DATA_PATH` +2. creates `compatdata/<appid>/optiscaler-managed` +3. preserves the original selected proxy DLL as `<proxy>-original.dll` +4. stages OptiScaler and helper DLLs into prefix `system32` +5. sets `WINEDLLOVERRIDES=<proxy>=n,b` +6. launches the game +7. syncs `OptiScaler.ini` back to the managed directory on exit +## Build notes -## Credits +Local frontend build: -### Core Technologies -- **[Nukem9](https://github.com/Nukem9/dlssg-to-fsr3)** - Creator of the DLSS to FSR3 mod that makes frame generation possible -- **[Cdozdil/OptiScaler Team](https://github.com/optiscaler/OptiScaler)** - OptiScaler mod that provides the core functionality and bleeding-edge improvements -- **[Artur Graniszewski](https://github.com/artur-graniszewski/DLSS-Enabler)** - DLSS Enabler that allows DLSS features on non-RTX hardware -- **[FakeMichau](https://github.com/FakeMichau)** - Various essential tools including fgmod scripts, innoextract, and fakenvapi for AMD/Intel GPU support +```bash +pnpm build +``` -### Community & Documentation -- **[Deck Wizard](https://www.youtube.com/watch?v=o_TkF-Eiq3M)** - Extensive community support including comprehensive guides, promotional content, thorough testing and feedback, custom artworks, and tutorial videos. His passionate advocacy and continuous support have been instrumental in Decky Framegen's success. +Decky zip build: + +```bash +bash .vscode/build.sh +``` + +If Decky CLI is missing, run: + +```bash +bash .vscode/setup.sh +``` + +## Credits -- **The DLSS2FSR Community** - Ongoing support and guidance for understanding the various mods and tools +- [Nukem9](https://github.com/Nukem9/dlssg-to-fsr3) +- [OptiScaler / cdozdil](https://github.com/optiscaler/OptiScaler) +- [Artur Graniszewski / DLSS Enabler](https://github.com/artur-graniszewski/DLSS-Enabler) +- [FakeMichau](https://github.com/FakeMichau) +- Deck Wizard and the DLSS2FSR community |
