Bannerlator · LSFG Native

Fill your screen. Don't flood it.

LSFG Native makes up extra frames between the real ones your game draws, so motion looks smoother. Whether that feels buttery or broken comes down to one rule.

Max FPS 48 Real frames your game makes each second. You set it with Max FPS in the in-game side menu.
Multiplier How many frames you get per real frame: 2×, 3× or 4×.
Screen Hz 144 How many pictures your screen can show each second: 60, 90, 120, 144…

48 × 3 = 144 on a 144 Hz screen is a perfect fit. Get as close to your screen's number as you can without going over, using a Max FPS your game can hold even in its busiest moments.

Try it

Put in your numbers

Each box below is one refresh of your screen. See what happens when you go over your screen's number, or stay well under it.

Your screen (top speed)
60
Multiplier

This starts on a common mistake. Tap one of the suggested combos below to fix it.

Your screen runs at 144 Hz.

0 mseach box = 6.9 ms167 ms
  • Real frame (from the game)
  • Made-up frame (from LSFG)
  • Same picture again
  • Real frame skipped
Frames made180/s60 real + 120 made up
Screen can show144/sone per refresh, never more
Repeats0/srefreshes showing the same picture again
Skipped12/sreal frames that never reach the screen
Too many

Your screen can't keep up.

Try one of these instead

This is a simplified model of what your screen does. Real games wobble a little, but the pattern is the same.

How your screen works

One picture per refresh. No more.

Your screen redraws itself a fixed number of times every second. That's its refresh rate, measured in Hz. A 144 Hz screen has 144 slots a second, and each slot shows exactly one picture.

With LSFG Native on, each real frame from the game arrives with its made-up frames attached. Bannerlator puts them on screen one per refresh, back-to-back, then waits for the game's next real frame. That leaves three ways it can go:

Just right

48 × 3 = 144 on a 144 Hz screen

Every refresh gets a new picture, and they're evenly spaced. This is the goal.

Too many

60 × 3 = 180 on a 144 Hz screen

That's 36 more frames a second than the screen has slots for. They queue up, so what you see falls behind what you press, and real frames get skipped to catch up (the red ✕). It stutters, the controls feel late, and your device runs hotter to give you a worse picture.

Too few

30 × 2 = 60 on a 144 Hz screen

Two frames go out back-to-back, then the screen repeats the last one until the next real frame arrives (the stripes). Motion goes smooth, stop, smooth. Nothing's broken, but most of your screen is wasted. Two ways out: a bigger multiplier fills the gaps (36 × 4 = 144), or the screen drops to 60 Hz so 30 × 2 fits exactly. Bannerlator does the second one for you while frame generation runs (Auto (match FPS), below).

Steady beats high

A steady base matters more than a big one

Both of these average about 48 real frames a second. The only difference is that the one on the right wobbles between 36 and 60.

Steady48 every second × 3
Wobbly36 to 60 × 3

Setup

Set it up in eight steps

  1. Bring your own Lossless.dll

    LSFG Native uses the frame generator from Lossless Scaling, which you need to own. Import its Lossless.dll at the bottom of Bannerlator's Settings. If you installed Lossless Scaling through Bannerlator's Steam store, Settings can find the file for you.

  2. Choose LSFG Native

    In the container's settings (or the game's own settings), set the Renderer to Vulkan and Frame Generation to LSFG Native (Lossless Scaling). LSFG Native also needs a Renderer Driver with Vulkan 1.3; on older Adreno GPUs, pick a Turnip driver there. The first launch afterwards may show "Preparing frame-generation shaders…". Let it finish. If anything is missing, the side menu tells you what and how to fix it. Used lsfg-vk before? Here's what changed.

  3. Let the screen fit itself

    You don't need to set the refresh rate yourself. When frame generation starts, Auto (match FPS) switches on and moves your screen to exactly Max FPS × multiplier if it has that speed, otherwise to the closest speed above. Just make sure your device isn't holding the screen at 60 Hz: turn off battery saver's 60 Hz mode, and on handhelds with their own refresh control, set it to Auto.

  4. Find your steady number

    Start the game with frame generation off. In the side menu, turn on Show HUD, then play the busiest part (a fight, a big open area) for a minute. Note the lowest FPS it keeps dipping to.

  5. Set Max FPS

    In the side menu, open Frame rate & refresh, turn on Limit FPS, and set Max FPS at that number or a little under it.

  6. Pick the multiplier

    Choose the multiplier where Max FPS × multiplier lands on one of your screen's speeds, or just under the top one. The cheat sheet below has the numbers. If you go over, the side menu shows a red warning with a one-tap fix; if the numbers don't fit a screen speed exactly, it suggests the Max FPS that does.

  7. Turn it on

    In the side menu, go to Frame Generation and tap , or . The picture can freeze for a couple of seconds while LSFG gets ready. That's normal. You can change the multiplier while you play.

  8. Check the readout

    Under Frame Generation you'll see a line like 48 real → 144 shown (3x) 3.6 ms/frame GPU. If "real" is lower than your Max FPS, the game can't keep up with frame generation running. Lower Flow Scale first, then Max FPS a step. While LSFG runs, your HUD's FPS counter shows the "shown" number.

Heads up

Two settings change while LSFG Native or Win-FG Native runs. Limit FPS stays on, because frame generation needs a steady cap; you can still move Max FPS, and if you never set one it uses 30. Auto (match FPS) switches on to fit your screen to your numbers. You can turn Auto off in the side menu, and that game remembers your choice (games started without a shortcut remember it for that session only). Both go back to your normal settings when you turn frame generation off.

The other dial, Flow Scale (0.20 to 1.00), controls how closely LSFG studies the motion between frames. Higher gives cleaner made-up frames but costs more power. If "real" drops after you turn frame generation on, lower it.

Cheat sheet

The Max FPS to set

Find your screen's row. Go along it and pick the biggest number your game can hold without dipping under. For example, on a 144 Hz screen: if the game never drops below 50, use 48 with 3×. If it never drops below 40, use 36 with 4×. With Auto (match FPS) on, the rows for lower speeds work on your screen too: on a 144 Hz screen, 30 × 2 runs it at 60 Hz, and 45 × 2 runs it at 90 Hz, both perfect fits (as long as your screen offers those speeds).

Max FPS for each multiplier
Screen
60 Hz30× 2 = 6020too low, laggy15too low, laggy
90 Hz45× 2 = 9030× 3 = 9022too low, laggy
120 Hz60× 2 = 12040× 3 = 12030× 4 = 120
144 Hz72× 2 = 14448× 3 = 14436× 4 = 144
165 Hz82× 2 = 16455× 3 = 16541× 4 = 164

Real situations

What goes wrong, and the fix

"I picked 4×. It got worse."

144 Hz handheld · game holds 60 · 4×

60 × 4 = 240 frames a second for a screen that shows 144, so 96 a second have nowhere to go. It stutters every time you turn the camera, and the controls feel a beat late. The side menu flags this in red.

Fix: tap Set Max FPS to 36 in the warning and keep 4× (36 × 4 = 144), or set 48 and use 3×.

Before60 × 4 = 240
After36 × 4 = 144

"It's a 60 Hz phone, but 90 FPS sounds better."

60 Hz phone · game holds 45 · 2×

45 × 2 = 90, but the screen only shows 60. Instead of 90 FPS you get the stutter and lag of an overloaded screen. Also check your phone's display setting: a 120 Hz phone in battery-saver mode may be running at 60.

Fix: set Max FPS to 30 with 2× (30 × 2 = 60). Every refresh gets a new picture.

Before45 × 2 = 90
After30 × 2 = 60

"It's smooth, then it isn't."

120 Hz tablet · open world swings 38 to 60 · Max FPS 60 · 2×

In quiet spots the game hits 60, and 60 × 2 = 120 fits perfectly. Every time it dips, the gaps between bursts change size, so the smoothness comes and goes.

Fix: set Max FPS to 40 with 3× (40 × 3 = 120). The game can always hold 40, so the beat never changes.

Before38 to 60 × 2
After40 × 3 = 120

"The readout says 39 real, but I set 48."

144 Hz handheld · ran 50 with frame generation off · Max FPS 48 · 3×

Making frames takes power, and the game lost some speed when frame generation turned on. Now it's 39 × 3 = 117: gaps everywhere, and the game never reaches its cap.

Fix: lower Flow Scale first and see if the game gets back to 48. If it doesn't, set Max FPS to 36 with 4× (36 × 4 = 144).

Before39 × 3 = 117
After36 × 4 = 144

"20 × 4 is 80. Why does it feel awful?"

144 Hz handheld · game manages 20 · 4×

Frame generation smooths what you see, but it can't make the game respond faster. With only 20 real frames, each one is 50 ms apart, so the controls feel floaty. The made-up frames also have to guess across big jumps, so edges smear.

Fix: lower the game's resolution or graphics until it holds 30 or more, then multiply. For example, 36 × 4 = 144.

Before20 × 4 = 80
After lowering graphics36 × 4 = 144

Quick fixes

If something feels off

It stutters, especially when I turn the camera
You're over your screen's limit, or the base isn't steady. Check that Max FPS × multiplier is at or under your screen's Hz, then lower Max FPS until the game never dips under it.
The controls feel floaty or late
The base is too low (under 30), or you're over the limit. Get the base up by lowering the game's graphics, and keep the math at or under your screen's Hz.
Edges wobble around my character or the HUD
That's normal for made-up frames, and it gets worse at a low base or in very fast motion. Raise the base, or raise Flow Scale if your device has power to spare.
The readout shows fewer real frames than my Max FPS
The game can't keep up with frame generation running. Lower Flow Scale, then drop Max FPS a step.
The readout says "throttling"
Your device is hot and slowing itself down. Drop the multiplier or Max FPS a step, or give it a break.
I can't turn Limit FPS off
That's on purpose while LSFG Native or Win-FG Native runs. Turn frame generation off and your old setting comes back.
The screen blinked when I turned frame generation on
That's Auto (match FPS) switching your screen to fit your numbers. It happens once per change. Prefer the screen left alone? Turn Auto off in the side menu, and that game remembers.
The 2× / 3× / 4× buttons are greyed out, with a red message
Frame generation can't run with your current setup, and the message says why. Most often, LSFG Native needs a Renderer Driver with Vulkan 1.3: in the container's settings, set Renderer Driver to a Turnip driver, then relaunch the game.

Old engine vs new

LSFG Native vs the old lsfg-vk

Before 3.0.6, Bannerlator ran Lossless Scaling's frame generation through lsfg-vk. LSFG Native replaced it. Both use the frame generator from your Lossless.dll. What changed is where the made-up frames are made, and that decides whether you actually get to see them.

Every picture takes the same road: from the game, through Bannerlator's virtual display, to the compositor, which hands one picture to your screen each refresh.

Before 3.0.6

lsfg-vk

Made-up frames lost on the way
  1. The gamerunning in WineFrame generation happens here
  2. Virtual displayboth arrive about 1 ms apart
  3. Compositorshows the newest picture at each refresh, so the real frame replaces the made-up one before it's seen
  4. Your screenoften gets only the real frame

Frame counters could say 60 while your screen showed about 30.

3.0.6 and later

LSFG Native

What it makes, you see
  1. The gamerunning in Wine
  2. Virtual displayonly real frames travel this far
  3. Compositormakes the made-up frames, then lines them up one per refreshFrame generation happens here
  4. Your screenevery frame gets its own refresh

Measured on an Adreno 750: a game held at 30 shows about 120 on screen at 4×.

Side by side
lsfg-vk (before 3.0.6)LSFG Native (3.0.6 and later)
Where the made-up frames are madeInside the game. Wine loads lsfg-vk into it as a Vulkan layer.In Bannerlator's compositor, the last stop before your screen.
Do they reach your screen?Often not. Many were thrown away on the way.Yes. Each one gets its own screen refresh.
What the counters showCould count frames that never reached the screen.The side-menu readout shows real → shown, and "shown" is what actually reaches your screen.
Max FPSSwitched off while it ran, so nothing kept the game's beat steady.Stays on while it runs (30 if you never set one), so real frames arrive on a steady beat.
What it needsA game that draws with Vulkan (most do here, through DXVK or VKD3D). It ran on the game's Graphics Driver.The Vulkan renderer, and a Renderer Driver with Vulkan 1.3 (on older Adreno GPUs, pick a Turnip driver there).
Where to find itGone from the menu since 3.0.6. Containers and games still set to it run LSFG Native instead.Frame Generation → LSFG Native (Lossless Scaling).

What stayed the same

  • The same Lossless.dll. Nothing to re-import, and you still need to own Lossless Scaling.
  • The same controls. 2×, 3× and 4×, and Flow Scale, all changeable while you play.
  • About one frame of extra input delay. Every frame generator adds this, because it has to wait for the next real frame before it can fill the gap.
Why lsfg-vk was retired

We did get lsfg-vk's made-up frames to the screen in testing, but only by adding workarounds all along the road. LSFG Native avoids the problem by making its frames at the last stop, so it replaced lsfg-vk in 3.0.6. lsfg-vk's code is parked, not deleted.

Win-FG Native, the built-in engine, also makes its frames in the compositor, so everything on this page applies to it too.