| dev | ||
| docs | ||
| dual-gpu-fg | ||
| gamescope-framegen | ||
| scripts | ||
| yolkooboost | ||
| ARCHITECTURE.txt | ||
| Makefile | ||
| README.md | ||
YolkooBoost
Dual-GPU frame generation and upscaling for Linux games. Render a game at a lower resolution and framerate on one GPU, then let a second GPU (the one driving your display) upscale it with FSR and generate in-between frames with MCFI (motion-compensated frame interpolation) for a smoother picture. The goal is to help older or slower PCs put out a steady 60 fps.
It works by running games inside a patched build of gamescope, so it needs no per-game mods and no changes inside the game. A small Qt app, YolkooBoost, sets everything up for your Steam games.
What you get
- YolkooBoost (
yolkooboost): a GUI that detects your GPUs, lists your installed Steam games, and turns the effect on or off per game by writing the right Steam launch options for you. - A patched gamescope (
gamescope): the compositor that does the compositing, FSR upscaling, and frame generation on the display GPU.
Requirements
- Linux with two GPUs, where one drives your display. The display GPU becomes the compositor; the other renders the game. (A single-GPU machine can still run it, but the point is the split.)
- Steam (games are launched through it).
- An X11 or Wayland desktop session.
- For
make deps: a Debian-based distribution (Debian, Ubuntu, Mint, Pop!_OS). On other distributions, install the equivalent packages by hand;make depsprints the list.
Build and install
make deps # check for, and offer to install, the build dependencies
make # build the patched gamescope and the launcher
sudo make install
make builds two things. The launcher is quick. The compositor is a patched
gamescope built from source: the first build clones a fixed, verified release
of gamescope (3.16.25, pinned by commit) with its submodules from GitHub, so it
needs a network connection and takes a while.
The patched compositor installs under its own name, yolkooboost-gamescope, so
it never conflicts with a gamescope your distribution may already provide.
Install goes to /usr/local by default. To install elsewhere:
sudo make install PREFIX=/opt/yolkooboost
To remove everything:
sudo make uninstall
Using it
- Launch YolkooBoost (from your application menu, or run
yolkooboost). - The top shows your compositing GPU. This is fixed: it is whichever GPU drives your display, and it is where upscaling and frame generation happen. Its PCIe link is shown for reference. Pick your rendering GPU (the one the game renders on) from the dropdown.
- Tick a game in the list to enable YolkooBoost for it. Settings appear on the right: FSR upscaling with a render and output resolution, frame generation, and a hold-back setting. The defaults (upscaling on at 1280x720 to 1920x1080, frame generation on, hold-back 1) are a good starting point. Everything is per game.
- Click Apply. Steam stores launch options in a file it only rewrites when it closes, so YolkooBoost offers to close Steam, makes the changes, and offers to restart it. Your original launch options, if any, are saved and restored if you later turn a game off.
- Launch the game from Steam as normal.
Installed a new game while YolkooBoost is open? Click Refresh to pick it up without restarting. Refresh keeps any changes you have not applied yet.
Settings, briefly
- Upscaling (FSR): the game renders at the render resolution and is scaled to the output resolution on the display GPU. Rendering fewer pixels is where most of the speedup comes from.
- Render / output resolution: the game sees the render resolution as its screen size, so it renders there natively. No in-game setting needed.
- Frame generation (MCFI): generates in-between frames on the display GPU to reach your display's refresh rate.
- Hold-back: 1 frame is lowest latency. 2 frames is smoother if a game dips well below 30 fps, at the cost of one extra frame of input latency.
Notes
- No conflict with system gamescope: the patched compositor installs as
yolkooboost-gamescope, a separate binary, so an existing distributiongamescopeis left untouched. It only needsPREFIX/bin(by default/usr/local/bin) to be on yourPATH, which is the norm. - Pinned version: the compositor is built from gamescope 3.16.25 at a fixed
commit, verified after cloning. If upstream ever moves the tag, the build
stops rather than build something unverified. To try a different release,
override
GAMESCOPE_TAGandGAMESCOPE_COMMITwhen building the compositor. - Older distributions: if your distribution's Wayland or pixman libraries
are too old to build gamescope 3.16.25 against, you may need to build those
libraries into a local prefix. In that case, point YolkooBoost at the prefix
so the launched gamescope can find them, either with the
YOLKOOBOOST_GAMESCOPE_PREFIXenvironment variable (set to the lib directory) or by writing that path into~/.config/yolkooboost/gamescope-prefix. On current distributions this is not needed. - Real-time frame pacing: install grants
cap_sys_niceto gamescope so the frame pacer can use real-time scheduling. It still runs without it, just without that scheduling priority.
More detail
ARCHITECTURE.txt documents how the whole thing works, why it is built on
gamescope rather than a Vulkan layer, and every non-obvious constraint that
shaped it. dev/ holds maintainer-only scripts and is not part of the build.
