Idea: FSR 4 on GPUs AMD doesn't list (NVIDIA, Intel), as an opt-in test switch #1828

Closed
opened 2026-11-10 17:44:44 +00:00 by roblesleo · 1 comment
roblesleo commented 2026-11-10 17:44:44 +00:00 (Migrated from github.com)

The idea

Now that #1008 is in: AMD's FSR SDK 2.4 runtime offers no FSR 4 on NVIDIA or Intel GPUs, but its INT8 models do run there. On an RTX 3060 Laptop, INT8 Lite upscaled 960x540 to 1920x1080 for over a thousand frames without a failure (#1469, now closed).

The runtime picks the model by asking each model class IsSupported. Answering yes for one model means pointing that vtable slot at our own function in the loaded DLL. The file on disk is not changed. Following @hckrman101's review of #1469, I'd propose this only with these safeguards:

the hook applies only when amd_fidelityfx_upscaler_vk.dll's SHA-256 matches the pinned 4.1.2 file; any other DLL is left alone;
nothing is hooked unless asked: AMD's own choice stays the default;
it is asked for by an environment variable only (RX_VK_FSR4_MODEL=lite / int8), as a test switch, with no menu row unless you want one;
INT8 models only: no FP8 on hardware without FP8.
Would you accept that as a PR, given that it patches AMD's signed runtime in memory? If not, no problem: it can stay in my fork.

Anything else

No response

### The idea Now that #1008 is in: AMD's FSR SDK 2.4 runtime offers no FSR 4 on NVIDIA or Intel GPUs, but its INT8 models do run there. On an RTX 3060 Laptop, INT8 Lite upscaled 960x540 to 1920x1080 for over a thousand frames without a failure (#1469, now closed). The runtime picks the model by asking each model class IsSupported. Answering yes for one model means pointing that vtable slot at our own function in the loaded DLL. The file on disk is not changed. Following @hckrman101's review of #1469, I'd propose this only with these safeguards: the hook applies only when amd_fidelityfx_upscaler_vk.dll's SHA-256 matches the pinned 4.1.2 file; any other DLL is left alone; nothing is hooked unless asked: AMD's own choice stays the default; it is asked for by an environment variable only (RX_VK_FSR4_MODEL=lite / int8), as a test switch, with no menu row unless you want one; INT8 models only: no FP8 on hardware without FP8. Would you accept that as a PR, given that it patches AMD's signed runtime in memory? If not, no problem: it can stay in my fork. ### Anything else _No response_
NotRexed commented 2026-11-11 21:24:00 +00:00 (Migrated from github.com)

Thanks for the report. Reports of the same problem are now collected in #1007, which lists this one with your details and links back here, so one fix closes them together and the open list stays readable. Follow #1007 for the fix, and add new details there (or here). If this turns out to be a separate problem it will be reopened.

Thanks for the report. Reports of the same problem are now collected in #1007, which lists this one with your details and links back here, so one fix closes them together and the open list stays readable. Follow #1007 for the fix, and add new details there (or here). If this turns out to be a separate problem it will be reopened.
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#1828
No description provided.