AMD FSR 4.1 (collaboration branch) #828

Closed
madebyjordan wants to merge 7 commits from amd/fsr4 into main
madebyjordan commented 2026-11-08 22:43:12 +00:00 (Migrated from github.com)

Adds AMD FSR 4.1 in place of OoT's own upscale: steadier edges and less shimmer. Opt-in from the Insert menu, off by default. Windows, and Linux with a Vulkan FSR 4 library.

Builds on #850 (DLSS), which builds on #849. The new commits are 040a9ab, 211585a and N3oTraX's Linux support (merged as bb87ae2).

How it works

  • Uses #850's colour, depth and camera motion. FSR is a second backend; DLSS wins if both are on.
  • Moves the 3D by a sub-pixel amount each frame, the jitter FSR needs to rebuild detail. The game draws without one.
  • AMD's two signed DLLs load at run time from beside hookshot.exe. Only AMD's MIT headers are added; no AMD binaries.
  • The Resolution row sets the input size: 75% = Quality, 50% = Performance, 100% = anti-aliasing only.

Tested

  • RX 6700 XT (RDNA 2), Windows: FSR 4.1.2, 1536x864 to 2048x1152.
  • RX 7900 XTX (RDNA 3), Linux (N3oTraX): FSR 4.1.1 INT8 at 3416x1440 and 5120x2160, no crash or device loss. It used a third-party Vulkan FSR 4 library (fsr4-vk); none is included here.
  • No errors and no fallbacks to the game's upscale. FSR kept its history the whole session.
  • Looks right: no edge flicker or haze stripes, which the same code had on the Lichii emulator.
  • tests/run_all.py: 94 passed, including the new test_fsr_jitter.py. The 3 failures also fail on #850's head on this PC.

Not yet

  • Frame-rate cost, other AMD cards, Resolution 100%.
  • Characters that move on their own have no motion vectors, so they may trail (same as #850).

Using it

Put amd_fidelityfx_loader_vk.dll and amd_fidelityfx_upscaler_vk.dll (FidelityFX SDK 2.4, signedbin) beside bin\hookshot.exe, then turn on Insert → Graphics → AMD FSR 4.1. On Linux, put a Vulkan FSR 4 library (amd_fidelityfx_upscaler_vk.so) beside the game instead. Overrides: RX_FSR4=0/1, RX_FSR4_DIR, RX_FSR4_JITTER=0.

#577 uses the same AMD API for FSR 4 at native resolution; the vendored headers are identical, so either can land first. #821/#822 take a different route (FSR 3.1 compiled from AMD's source code).

Linux support by @N3oTraX (from #857). Ported from my FSR 4.1 work on Lichii (madebyjordan/Lichii-Hyrule). AI-assisted (Claude Code).

🤖 Generated with Claude Code

Adds **AMD FSR 4.1** in place of OoT's own upscale: steadier edges and less shimmer. Opt-in from the Insert menu, off by default. Windows, and Linux with a Vulkan FSR 4 library. > **Builds on #850** (DLSS), which builds on #849. The new commits are `040a9ab`, `211585a` and N3oTraX's Linux support (merged as `bb87ae2`). ### How it works - Uses #850's colour, depth and camera motion. FSR is a second backend; DLSS wins if both are on. - Moves the 3D by a sub-pixel amount each frame, the jitter FSR needs to rebuild detail. The game draws without one. - AMD's two signed DLLs load at run time from beside `hookshot.exe`. Only AMD's MIT headers are added; no AMD binaries. - The **Resolution** row sets the input size: 75% = Quality, 50% = Performance, 100% = anti-aliasing only. ### Tested - **RX 6700 XT** (RDNA 2), Windows: FSR 4.1.2, 1536x864 to 2048x1152. - **RX 7900 XTX** (RDNA 3), Linux (N3oTraX): FSR 4.1.1 INT8 at 3416x1440 and 5120x2160, no crash or device loss. It used a third-party Vulkan FSR 4 library ([fsr4-vk](https://github.com/Astyyyyy/fsr4-vk)); none is included here. - No errors and no fallbacks to the game's upscale. FSR kept its history the whole session. - Looks right: no edge flicker or haze stripes, which the same code had on the Lichii emulator. - `tests/run_all.py`: 94 passed, including the new `test_fsr_jitter.py`. The 3 failures also fail on #850's head on this PC. ### Not yet - Frame-rate cost, other AMD cards, Resolution 100%. - Characters that move on their own have no motion vectors, so they may trail (same as #850). ### Using it Put `amd_fidelityfx_loader_vk.dll` and `amd_fidelityfx_upscaler_vk.dll` (FidelityFX SDK 2.4, `signedbin`) beside `bin\hookshot.exe`, then turn on **Insert → Graphics → AMD FSR 4.1**. On Linux, put a Vulkan FSR 4 library (`amd_fidelityfx_upscaler_vk.so`) beside the game instead. Overrides: `RX_FSR4=0/1`, `RX_FSR4_DIR`, `RX_FSR4_JITTER=0`. ### Related #577 uses the same AMD API for FSR 4 at native resolution; the vendored headers are identical, so either can land first. #821/#822 take a different route (FSR 3.1 compiled from AMD's source code). Linux support by @N3oTraX (from #857). Ported from my FSR 4.1 work on Lichii ([madebyjordan/Lichii-Hyrule](https://github.com/madebyjordan/Lichii-Hyrule)). AI-assisted (Claude Code). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
NotRexed commented 2026-11-09 05:30:29 +00:00 (Migrated from github.com)

Thank you! This is still stacked on #818, which was closed and split into #849 (merged) and #850. Closing to keep the queue clear — please rebase on current main and reopen; thanks! (Onto main, or onto #850 once it is back.)

Thank you! This is still stacked on #818, which was closed and split into #849 (merged) and #850. Closing to keep the queue clear — please rebase on current main and reopen; thanks! (Onto main, or onto #850 once it is back.)
madebyjordan commented 2026-11-09 05:43:27 +00:00 (Migrated from github.com)

Rebased onto current main. GitHub won't let me reopen this one, so it continues in #1008. #850 is closed too, so it now carries #850's DLSS commit unchanged (BlueHeisenberg's, credited), since FSR builds on its colour, depth and motion code. Merges cleanly; build and tests pass.

Rebased onto current main. GitHub won't let me reopen this one, so it continues in #1008. #850 is closed too, so it now carries #850's DLSS commit unchanged (BlueHeisenberg's, credited), since FSR builds on its colour, depth and motion code. Merges cleanly; build and tests pass.
Commenting is not possible because the repository is archived.
No description provided.