V-Sync Auto picks FIFO for DLSS Frame Gen at 3x/4x when its runtime makes only 1 frame, so the game is held at refresh / multiplier #2695

Closed
opened 2026-11-12 07:27:36 +00:00 by github-sync · 1 comment
Owner

@jabbaxipil opened on GitHub · 2026-11-12 06:40 UTC · original

Hookshot version

v2.1.0-rc.3-237-g6be69c79 (the code involved is the same on main today: dlss_fg_runs, swapchain_dlssg)

What kind of problem

Low fps or stutter

What happened

With Frame generation 4x, "Frame generation by" Auto and V-Sync Auto, the game holds exactly 36 fps on a 144 Hz display, with the cap at 144 and also with Uncapped. The GPU spends about 4 ms a frame, so it isn't GPU-bound.

The log shows DLSS-G isn't making the frames:

vk: DLSS Frame Gen (NGX): 3 made frames asked, but its runtime makes 1 at most (an older libnvidia-ngx-dlssg.so?): the renderer's own makes them
vk: DLSS Frame Gen (NGX): of the last 600 presents 0 made by DLSS-G ...

but the swapchain is still made for DLSS-G:

vk: V-Sync Auto with DLSS Frame Generation at 4x: FIFO

Shown frames are also bunched:

vk: frame interpolation: 0 frames shown on time, 720 late (over 2 ms); shown apart: <7 ms 540, 7-9 0, 9-12 0, 12-17 0, 17-25 60, over 25 120

In the code, fg_fifo = vsync == 0 && swapchain_dlssg() (gpu/vk/vk_main.cpp), and swapchain_dlssg() follows dlss_fg_runs() (gpu/vk/vk_dlss.cpp). That checks the request, DLSS_OK and start_failed, but not the count > g.most (too_many) fallback, so the swapchain stays FIFO while the renderer's own generator makes the frames. The comment above fg_fifo says the renderer's own frame generation should keep Auto's mailbox.

At 2x, where the runtime does make the frame, it works as intended: DLSS-G makes 600 of 600 and the game runs at 46 to 58 fps on the same PC.

Where in the game

Anywhere; measured standing still in Hyrule Field and Kokiri Forest.

How often

Every time

Graphics card and driver version

RTX 4070, NVIDIA 615.71.09; DLSS-G runtime libnvidia-ngx-dlssg.so.310.9.16

CPU, RAM and operating system

Ryzen 7 5800X3D, 62 GB, Ubuntu 26.04.1 (kernel 7.0), GNOME Wayland, 2560x1440 at 144 Hz

Changes from the defaults

Frame generation 4x, frame rate cap 144 (also tried Uncapped), DLSS, NVIDIA Reflex on. hookshot_env.txt: RX_VK_PARALLEL=4

Other software hooked into the game

No, nothing hooked in

hookshot_log.txt

Relevant lines quoted above; full log on request.

Before you send it

  • I'm on the newest release, or the problem is still there on it.
  • I searched the open issues for this problem.
  • I'm not attaching game files, keys, hookshot.exe, the .bin caches or saves.
> [@jabbaxipil](https://github.com/jabbaxipil) opened on GitHub · 2026-11-12 06:40 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2695) ### Hookshot version `v2.1.0-rc.3-237-g6be69c79` (the code involved is the same on `main` today: `dlss_fg_runs`, `swapchain_dlssg`) ### What kind of problem Low fps or stutter ### What happened With Frame generation 4x, "Frame generation by" Auto and V-Sync Auto, the game holds exactly 36 fps on a 144 Hz display, with the cap at 144 and also with Uncapped. The GPU spends about 4 ms a frame, so it isn't GPU-bound. The log shows DLSS-G isn't making the frames: ``` vk: DLSS Frame Gen (NGX): 3 made frames asked, but its runtime makes 1 at most (an older libnvidia-ngx-dlssg.so?): the renderer's own makes them vk: DLSS Frame Gen (NGX): of the last 600 presents 0 made by DLSS-G ... ``` but the swapchain is still made for DLSS-G: ``` vk: V-Sync Auto with DLSS Frame Generation at 4x: FIFO ``` Shown frames are also bunched: ``` vk: frame interpolation: 0 frames shown on time, 720 late (over 2 ms); shown apart: <7 ms 540, 7-9 0, 9-12 0, 12-17 0, 17-25 60, over 25 120 ``` In the code, `fg_fifo = vsync == 0 && swapchain_dlssg()` (`gpu/vk/vk_main.cpp`), and `swapchain_dlssg()` follows `dlss_fg_runs()` (`gpu/vk/vk_dlss.cpp`). That checks the request, `DLSS_OK` and `start_failed`, but not the `count > g.most` (`too_many`) fallback, so the swapchain stays FIFO while the renderer's own generator makes the frames. The comment above `fg_fifo` says the renderer's own frame generation should keep Auto's mailbox. At 2x, where the runtime does make the frame, it works as intended: DLSS-G makes 600 of 600 and the game runs at 46 to 58 fps on the same PC. ### Where in the game Anywhere; measured standing still in Hyrule Field and Kokiri Forest. ### How often Every time ### Graphics card and driver version RTX 4070, NVIDIA 615.71.09; DLSS-G runtime `libnvidia-ngx-dlssg.so.310.9.16` ### CPU, RAM and operating system Ryzen 7 5800X3D, 62 GB, Ubuntu 26.04.1 (kernel 7.0), GNOME Wayland, 2560x1440 at 144 Hz ### Changes from the defaults Frame generation 4x, frame rate cap 144 (also tried Uncapped), DLSS, NVIDIA Reflex on. `hookshot_env.txt`: `RX_VK_PARALLEL=4` ### Other software hooked into the game No, nothing hooked in ### hookshot_log.txt Relevant lines quoted above; full log on request. ### Before you send it - [x] I'm on the newest release, or the problem is still there on it. - [x] I searched the open issues for this problem. - [x] I'm not attaching game files, keys, hookshot.exe, the .bin caches or saves. <!-- github-sync:item:2695 -->
Author
Owner

@hckrman101 commented on GitHub · 2026-11-12 07:03 UTC · original

Claiming this

> [@hckrman101](https://github.com/hckrman101) commented on GitHub · 2026-11-12 07:03 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2695#issuecomment-6817119644) Claiming this <!-- github-sync:c:6817119644 -->
Commenting is not possible because the repository is archived.
No milestone
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Hookshot#2695
No description provided.