Idea: FSR 4 on GPUs AMD doesn't list (NVIDIA, Intel), as an opt-in test switch #1828
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot#1828
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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
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.