Lower FPS when moving to a new area. #2780

Open
opened 2026-11-12 13:38:09 +00:00 by github-sync · 9 comments
Owner

@Ekamnoor opened on GitHub · 2026-11-12 12:41 UTC · original

Hookshot version

2.1.0 rc.3-256

What kind of problem

Low fps or stutter

What happened

So i found out why i was getting low FPS , like if i move from one area to another eg:- Hyrule Fields getting 60 fps to Castle town i only get 35 to 40 fps , but if i relauch the game while being in town i get 55 ro 60 fps and no mater how long i play if i stay in same area the fps will be good but if i go into other area the fps will be less. This also happens when moving between town and castle and also between deku tree and forest , so it happens everytime you move between areas,

Where in the game

Any area if you move between them

How often

Every time

Graphics card and driver version

RTX 4080 laptop 12gb vram 175w on latest driver

CPU, RAM and operating system

i9 14900hx, 32 gb ram , windows 11

Changes from the defaults

my vram budget is 7.5gb , res 1440p , ultra wide on 16:9 , aniso filtering 16x. frame gen 2x, DLSS preset M on balanced.

Other software hooked into the game

No, nothing hooked in

hookshot_log.txt

Screenshots or video

No response

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.
> [@Ekamnoor](https://github.com/Ekamnoor) opened on GitHub · 2026-11-12 12:41 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780) ### Hookshot version 2.1.0 rc.3-256 ### What kind of problem Low fps or stutter ### What happened So i found out why i was getting low FPS , like if i move from one area to another eg:- Hyrule Fields getting 60 fps to Castle town i only get 35 to 40 fps , but if i relauch the game while being in town i get 55 ro 60 fps and no mater how long i play if i stay in same area the fps will be good but if i go into other area the fps will be less. This also happens when moving between town and castle and also between deku tree and forest , so it happens everytime you move between areas, ### Where in the game Any area if you move between them ### How often Every time ### Graphics card and driver version RTX 4080 laptop 12gb vram 175w on latest driver ### CPU, RAM and operating system i9 14900hx, 32 gb ram , windows 11 ### Changes from the defaults my vram budget is 7.5gb , res 1440p , ultra wide on 16:9 , aniso filtering 16x. frame gen 2x, DLSS preset M on balanced. ### Other software hooked into the game No, nothing hooked in ### hookshot_log.txt <!-- Failed to upload "hookshot_log.txt" --> ### Screenshots or video _No response_ ### 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:2780 -->
Author
Owner

@danny7860 commented on GitHub · 2026-11-12 12:43 UTC · original

getting the exact same issue, 80 fps at first, then dips in a new area

> [@danny7860](https://github.com/danny7860) commented on GitHub · 2026-11-12 12:43 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780#issuecomment-6823937530) getting the exact same issue, 80 fps at first, then dips in a new area <!-- github-sync:c:6823937530 -->
Author
Owner

@sequeirayeslin commented on GitHub · 2026-11-12 12:52 UTC · original

exact same issue, if they could just fix this, the port would be almost perfectly playable

> [@sequeirayeslin](https://github.com/sequeirayeslin) commented on GitHub · 2026-11-12 12:52 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780#issuecomment-6824134659) exact same issue, if they could just fix this, the port would be almost perfectly playable <!-- github-sync:c:6824134659 -->
Author
Owner

@sp1wn3-gif commented on GitHub · 2026-11-12 12:59 UTC · original

When I move between certain areas that have a loading screen between them, the framerate drops to about half of normal and stays there for the rest of the session. I can reproduce this by travelling from Hyrule Field to Kakariko Village. Once the loading screen finishes, performance stays at the lower framerate until I restart the game, and restarting fixes it.

It doesn’t happen on every transition. Moving from Goron City to the outer area, for example, doesn’t cause the drop. On the affected routes fps stays at roughly 50% of normal until I restart.

> [@sp1wn3-gif](https://github.com/sp1wn3-gif) commented on GitHub · 2026-11-12 12:59 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780#issuecomment-6824272282) When I move between certain areas that have a loading screen between them, the framerate drops to about half of normal and stays there for the rest of the session. I can reproduce this by travelling from Hyrule Field to Kakariko Village. Once the loading screen finishes, performance stays at the lower framerate until I restart the game, and restarting fixes it. It doesn’t happen on every transition. Moving from Goron City to the outer area, for example, doesn’t cause the drop. On the affected routes fps stays at roughly 50% of normal until I restart. <!-- github-sync:c:6824272282 -->
Author
Owner

@JeremiasSanMartin commented on GitHub · 2026-11-12 13:24 UTC · original

When I move between certain areas that have a loading screen between them, the framerate drops to about half of normal and stays there for the rest of the session. I can reproduce this by travelling from Hyrule Field to Kakariko Village. Once the loading screen finishes, performance stays at the lower framerate until I restart the game, and restarting fixes it.

It doesn’t happen on every transition. Moving from Goron City to the outer area, for example, doesn’t cause the drop. On the affected routes fps stays at roughly 50% of normal until I restart.

this is exactly what happends to me too

> [@JeremiasSanMartin](https://github.com/JeremiasSanMartin) commented on GitHub · 2026-11-12 13:24 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780#issuecomment-6824849154) > When I move between certain areas that have a loading screen between them, the framerate drops to about half of normal and stays there for the rest of the session. I can reproduce this by travelling from Hyrule Field to Kakariko Village. Once the loading screen finishes, performance stays at the lower framerate until I restart the game, and restarting fixes it. > > It doesn’t happen on every transition. Moving from Goron City to the outer area, for example, doesn’t cause the drop. On the affected routes fps stays at roughly 50% of normal until I restart. this is exactly what happends to me too <!-- github-sync:c:6824849154 -->
Author
Owner

@blushOFF commented on GitHub · 2026-11-12 13:34 UTC · original

A controlled repro on an 8 GB card, smaller than the reports here but every time.

Setup: Windows 11, RTX 3070 8 GB, i7-14700KF. main at 0ec31ff6, built from source. Output 2048x1152, RX_VK_WB_MAX_KB=1024, RX_VK_IMAGE_PREALLOC=0 (because of #2690). A copy of a Kokiri Forest save. The debug teleport, then 20 s standing with a slow camera turn, fps from the log.

Test: Lake Hylia alone (load the save, teleport straight there), against Lake Hylia at the end of a tour (Kokiri, Hyrule Field, Kakariko, the Market, the castle, the Lost Woods, Sacred Forest Meadow, then the lake). A fresh start for each run, alternated.

run lake alone lake after 7 areas
1 57.8 53.9
2 57.3 50.7
3 58.9 56.1
mean 58.0 53.6

What the log shows at the lake, alone against after the tour:

  • The replay's submit (about 10-13 ms a frame) and the GPU time (about 8-10 ms a frame) are about the same either way. So the scene itself is not heavier.
  • Imported guest memory doubles: imports: 42-50 live (about 2.1 GB) alone, 112-115 live (about 4.2 GB) after the tour. It is the one counter that differs in every pair.
  • The waits for GPU results the game reads back (readbacks of GPU results) were longer after the tour in 2 of 3 pairs (0.48-0.55 ms each against 0.10-0.15), not in the third.
  • VRAM stayed within the allowance (6.2-6.7 GB of 6.8-7.0), with 0 "VRAM full" and 0 device lost.

An earlier run of 3 full tours (26 areas) gave the lake 49.0 / 49.1 / 54.2 as the 8th area. So on this card the drop is about 4-9 fps, not half. I have not found what the extra imports cost yet. I can share the logs.

> [@blushOFF](https://github.com/blushOFF) commented on GitHub · 2026-11-12 13:34 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780#issuecomment-6825057585) A controlled repro on an 8 GB card, smaller than the reports here but every time. **Setup:** Windows 11, RTX 3070 8 GB, i7-14700KF. `main` at 0ec31ff6, built from source. Output 2048x1152, `RX_VK_WB_MAX_KB=1024`, `RX_VK_IMAGE_PREALLOC=0` (because of #2690). A copy of a Kokiri Forest save. The debug teleport, then 20 s standing with a slow camera turn, fps from the log. **Test:** Lake Hylia alone (load the save, teleport straight there), against Lake Hylia at the end of a tour (Kokiri, Hyrule Field, Kakariko, the Market, the castle, the Lost Woods, Sacred Forest Meadow, then the lake). A fresh start for each run, alternated. | run | lake alone | lake after 7 areas | |---|---|---| | 1 | 57.8 | 53.9 | | 2 | 57.3 | 50.7 | | 3 | 58.9 | 56.1 | | mean | 58.0 | 53.6 | What the log shows at the lake, alone against after the tour: - The replay's submit (about 10-13 ms a frame) and the GPU time (about 8-10 ms a frame) are about the same either way. So the scene itself is not heavier. - Imported guest memory doubles: `imports: 42-50 live (about 2.1 GB)` alone, `112-115 live (about 4.2 GB)` after the tour. It is the one counter that differs in every pair. - The waits for GPU results the game reads back (`readbacks of GPU results`) were longer after the tour in 2 of 3 pairs (0.48-0.55 ms each against 0.10-0.15), not in the third. - VRAM stayed within the allowance (6.2-6.7 GB of 6.8-7.0), with 0 "VRAM full" and 0 device lost. An earlier run of 3 full tours (26 areas) gave the lake 49.0 / 49.1 / 54.2 as the 8th area. So on this card the drop is about 4-9 fps, not half. I have not found what the extra imports cost yet. I can share the logs. <!-- github-sync:c:6825057585 -->
Author
Owner

@Ekamnoor commented on GitHub · 2026-11-12 13:38 UTC · original

I found something new if i turn dlss off it fixes it and it remains fixed even if i turn it on back again in same session, until i go in new area then i have to repeat it again.

> [@Ekamnoor](https://github.com/Ekamnoor) commented on GitHub · 2026-11-12 13:38 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780#issuecomment-6825146329) I found something new if i turn dlss off it fixes it and it remains fixed even if i turn it on back again in same session, until i go in new area then i have to repeat it again. <!-- github-sync:c:6825146329 -->
Author
Owner

@blushOFF commented on GitHub · 2026-11-12 14:34 UTC · original

Follow-up, same setup: the drop stays when the lake is measured 120 s after the teleport instead of 22 s (alone 59.3 / 59.0, after the 7 areas 54.2 / 56.2). So it is not a short settling period.

A diagnostic build (log only, not a fix) counted the pages the CPU wrote that the submit-time capture takes, on the thread that takes most of them, at the lake:

  • alone: about 1,500 pages a submit, in 42 mirrored pools (about 2.0 GB);
  • after the tour: 2,100-3,200 pages a submit, in 93-96 mirrored pools (about 3.7 GB).

So after other areas, more of the game's pools stay mirrored, and the game's writes into them each frame are captured and copied, which the scene alone does not need. I have not yet found why those pools stay mirrored after their area.

> [@blushOFF](https://github.com/blushOFF) commented on GitHub · 2026-11-12 14:34 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780#issuecomment-6826509903) Follow-up, same setup: the drop stays when the lake is measured 120 s after the teleport instead of 22 s (alone 59.3 / 59.0, after the 7 areas 54.2 / 56.2). So it is not a short settling period. A diagnostic build (log only, not a fix) counted the pages the CPU wrote that the submit-time capture takes, on the thread that takes most of them, at the lake: - alone: about 1,500 pages a submit, in 42 mirrored pools (about 2.0 GB); - after the tour: 2,100-3,200 pages a submit, in 93-96 mirrored pools (about 3.7 GB). So after other areas, more of the game's pools stay mirrored, and the game's writes into them each frame are captured and copied, which the scene alone does not need. I have not yet found why those pools stay mirrored after their area. <!-- github-sync:c:6826509903 -->
Author
Owner

@igormaozao commented on GitHub · 2026-11-12 14:41 UTC · original

Just to confirm I got the same problem using v2.1.0

I was playing normally at Koriki forest, then I moved to Deku Tree and finished the dungeon normally, when I got back to Kokiri Forest the FPS was really bad, then I saved and closed the game, then reopened and everything was normal.

> [@igormaozao](https://github.com/igormaozao) commented on GitHub · 2026-11-12 14:41 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780#issuecomment-6826691679) Just to confirm I got the same problem using v2.1.0 I was playing normally at Koriki forest, then I moved to Deku Tree and finished the dungeon normally, when I got back to Kokiri Forest the FPS was really bad, then I saved and closed the game, then reopened and everything was normal. <!-- github-sync:c:6826691679 -->
Author
Owner

@mooki000 commented on GitHub · 2026-11-12 18:36 UTC · original

Short version for players: main now contains two fixes from today (#2825 and #2826) that release memory the game was holding on to after an area change, which is the most likely cause of this drop. In my runs the pressure after the change is clearly lower with them, but not gone, and I cannot yet say the drop is fixed. If you can, try the next nightly and tell us whether it still happens. One more thing I found on the way: switching DLSS off and on again silently changes Balanced from 58% to 50% render resolution, so the "toggle fixes it" trick also lowers the resolution.

The details, for the developers here:

Linux, RTX 4090 24 GB, NVIDIA 615.78.08, i9-13900K; one windowless run each on e2057b2b and 262f5614, with logging-only instrumentation.

Thanks @Ekamnoor for the toggle clue, @blushOFF for showing that the extra capture work persists, and @klikso for #2825/#2826.

I used Hyrule Field → Market through a loading screen, DLSS M/Balanced at 1440p, the 7.5-GB menu setting and a 7000-MiB renderer allowance. This caps renderer policy, not the card's physical memory; frame generation is inactive windowless.

  • Before those merges, two mirrors stayed 224/160 MiB although their live coverage fell to 42.82/97.75 MiB. Neither a short nor a long DLSS toggle shrank them.
  • Newer main actually trimmed 224→48 and 152→104 MiB, before any toggle: two trims, 224 MiB returned. The smaller mirrors stayed through both toggles.
  • Complete 600-present Market blocks before the toggle had 2828–3650 budget retirements on the older commit, versus 1260–2222 on the newer one. The pressure trail is smaller, not gone.

The toggle is not doing #2825's trimming by another route:

  • Short Off keeps the DLSS feature and working images, but resets temporal history/failure state and sampler selection (gpu/vk/vk_menu.cpp:1965–1969, vk_temporal.cpp:753–761 at the older pin).
  • Beyond 120 unused texture frames, Off also releases the feature and working images/buffers; a loading screen deliberately keeps them while DLSS remains selected (vk_temporal.cpp:634–658, 764–785). Neither path directly resets mirrors, the texture budget or pipeline/program caches.
  • In both runs, Balanced 58% became 50% after switching to the game's own upscaler and back. I restored Balanced explicitly; otherwise off/on changes the workload as well (upscaler_rows.h:36,48–51,87–98).

This is not an isolated PR or FPS comparison: newer main also changes preallocation placement and mirror chunk size, its cold first arrival had incomplete geometry, and the last phase reached 48.29 one-minute system load. Recurring Market interval peaks remained. There was no fresh-Market restart control, real 8-GB heap or active frame-generation test, so I cannot say the reported persistent FPS drop is fixed.

On a build containing #2825/#2826, the useful follow-up is whether the persistent drop still occurs, how long DLSS was off, and what the Render resolution row shows after it returns.

> [@mooki000](https://github.com/mooki000) commented on GitHub · 2026-11-12 18:36 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2780#issuecomment-6832527827) **Short version for players:** main now contains two fixes from today (#2825 and #2826) that release memory the game was holding on to after an area change, which is the most likely cause of this drop. In my runs the pressure after the change is clearly lower with them, but not gone, and I cannot yet say the drop is fixed. If you can, try the next nightly and tell us whether it still happens. One more thing I found on the way: switching DLSS off and on again silently changes Balanced from 58% to 50% render resolution, so the "toggle fixes it" trick also lowers the resolution. The details, for the developers here: Linux, RTX 4090 24 GB, NVIDIA 615.78.08, i9-13900K; one windowless run each on [`e2057b2b`](https://git.magicbean.dev/MagicBeanDev/Hookshot/commit/e2057b2b4d00c948529d40dfc2c2215bea6053f4) and [`262f5614`](https://git.magicbean.dev/MagicBeanDev/Hookshot/commit/262f561402da0a3338ca52776706df1fb0a3f23e), with logging-only instrumentation. Thanks @Ekamnoor for the toggle clue, @blushOFF for showing that the extra capture work persists, and @klikso for #2825/#2826. I used Hyrule Field → Market through a loading screen, DLSS M/Balanced at 1440p, the 7.5-GB menu setting and a 7000-MiB renderer allowance. This caps renderer policy, not the card's physical memory; frame generation is inactive windowless. - Before those merges, two mirrors stayed 224/160 MiB although their live coverage fell to 42.82/97.75 MiB. Neither a short nor a long DLSS toggle shrank them. - Newer main actually trimmed 224→48 and 152→104 MiB, before any toggle: two trims, 224 MiB returned. The smaller mirrors stayed through both toggles. - Complete 600-present Market blocks before the toggle had 2828–3650 budget retirements on the older commit, versus 1260–2222 on the newer one. The pressure trail is smaller, not gone. The toggle is not doing #2825's trimming by another route: - Short Off keeps the DLSS feature and working images, but resets temporal history/failure state and sampler selection (`gpu/vk/vk_menu.cpp:1965–1969`, `vk_temporal.cpp:753–761` at the older pin). - Beyond 120 unused texture frames, Off also releases the feature and working images/buffers; a loading screen deliberately keeps them while DLSS remains selected ([`vk_temporal.cpp:634–658`](https://git.magicbean.dev/MagicBeanDev/Hookshot/src/commit/e2057b2b4d00c948529d40dfc2c2215bea6053f4/gpu/vk/vk_temporal.cpp#L634-L658), `764–785`). Neither path directly resets mirrors, the texture budget or pipeline/program caches. - In both runs, Balanced 58% became 50% after switching to the game's own upscaler and back. I restored Balanced explicitly; otherwise off/on changes the workload as well (`upscaler_rows.h:36,48–51,87–98`). This is not an isolated PR or FPS comparison: newer main also changes preallocation placement and mirror chunk size, its cold first arrival had incomplete geometry, and the last phase reached 48.29 one-minute system load. Recurring Market interval peaks remained. There was no fresh-Market restart control, real 8-GB heap or active frame-generation test, so I cannot say the reported persistent FPS drop is fixed. On a build containing #2825/#2826, the useful follow-up is whether the persistent drop still occurs, how long DLSS was off, and what the Render resolution row shows after it returns. <!-- github-sync:c:6832527827 -->
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#2780
No description provided.