[Feature request] Add better detection for FSR
For most game i see it detects all XESS and DLSS, but FSR doesn't get detected in most games Thank you!
There are games with FSR 3.1 that are not detected? Because only games with FSR 3.1 are in dll form and therefore are interchangeable.
Versions lower than 3.1 cannot be changed
Yep pretty much what @moi952 said.
On top of that it is also possible for developers to compile their own version of FSR 3.1 which is not in dll form that we are expecting.
In either of those cases we can't swap them anyway.
Can you list some games that you expect it to show so I can double check if they simply don't have it or if it is missing?
okay Black Myth Wukong
@vunhanky Black Myth: Wukong uses an older FSR 3.1 version that cannot be easily upgraded manually and lacks FG decoupling. Most of the latest PlayStation ports by Nixxes use the upgradeable version.
According to DLSS Swapper (1.1.7), none of my FSR games are swappable, including Nixxes ports (Ragnarok, Zero Dawn Remastered, etc). The FSR field displays "not found". I'm pretty sure some of them like Zero Dawn are supposed to be FSR 3.1.
Horizon Zero Dawn Remastered is swappable for me.
For me amd_fidelityfx_dx12.dll is in the root of the games folder. Clicking open folder button in DLSS Swapper should show it for you. I have the game installed via Steam. There is no amd_fidelityfx_vk.dll so DLSS Swapper will only show DLL on one part of FSR selector. Can you confirm your game is updated and the file exists?
I confirm this indeed. Yet the DLL doesn't appear in the GUI.
The only FSR 3.1 game that is detected on my config by DLSS Swapper is AC Shadows. For info, I'm running Windows 10.
Can you let me know the full path of the DLL listed in the comment above?
For my installation of HZD Remastered, the path would be:
D:\Games\Steam\steamapps\common\Horizon Zero Dawn Remastered\amd_fidelityfx_dx12.dll (v1.0.0.36752)
Not sure if this is relevant, but my GPU is a Radeon 6650 XT. I'm using DLSS libs through OptiScaler. Detecting and swapping DLSS/XeSS libraries works without any problem.
That is odd. The only thing that comes to mind is if the file isn't really there and is a symbolic link created by Optiscaler, but I don't think that's how it works.
Just to sanity check if you open D:\Games\Steam\steamapps\common\Horizon Zero Dawn Remastered\ in Windows Terminal and type dir if it is a powershell terminal or dir /a if it is a cmd prompt window. For amd_fidelityfx_dx12.dll does it say anything funky like
amd_fidelityfx_dx12.dll [some/other/path/amd_fidelityfx_dx12.dll]
or
amd_fidelityfx_dx12.dll -> some/other/path/amd_fidelityfx_dx12.dll
Something else to try is on the settings page change logging to verbose, restart DLSS Swapper, hit reload on the games page, and then go back to settings page to locate the latest log file to upload.
The AMD DLL is correctly listed in the game's folder when using the command line.
I've tried switching a few options on and off (allow untrusted, allow debug, only show downloaded DLLs) and refreshing the game's list each time. At some point, HZD finally started displaying the FSR 3.1 library! Not sure which option made the difference, since I reverted to my original settings (allow untrusted off, allow debug off, only show on) and the DLL now still appears in the game's profile. Maybe force-refreshing the list was enough.
Thanks anyway for your support!
That is all very odd and I'm not sure what is happening.
Did FSR get added to the game at some point or has it been there longer than you've had DLSS Swapper?
It should load games, load there files, and then cache that. Then in next launch use the cache and check if the known files are changed. But I guess if the game updates and adds FSR it might not detect it until a full refresh happens.
Edit: if that is the issue I could add a reload/refesh (or "check for DLLs" button on the game view page to force a full reload. User may be more likely to hit that than the full reload.
I will see what other fixes could happen though.
Horizon Remastered was released last October, with FSR 3.1 + framegen included (according to PS Blog).
At that time I was already using DLSS Swapper, although I seem to remember that FSR 3.1 detection/swapping was not implemented before v1.1.
Ah yes! That would play a huge part. I think if the game had DLSS vX.Y and we load it from cache and confirm that yes vX.Y is still there and is the same version it does not bother me checking for anything because it loaded from cache.
But if FSR vA.B or XeSS vC.D (or even DLSS FG vE.F) were added in an update they would be skipped.
There isn't much point doing a full scan for upscalers except the ones we know about as that is the same performance cost as doing all.
I think in the v1.1.7.1 update I can have a small workaround of per game full reload button on the individual game page. And then later in v1.2 (or v1.2.1) look into some method of detecting when things have likely changed (maybe monitor full executable file for last modified or something as we will be tracking main executable in v1.2 for DLSS Presets).
I have addd a reload button on the game page for v1.2. A more major detection system would likely benifit from improved loading such as what we could do when reading MFT (discussed in #143). I am closing this ticket for now as it has a workaround,if/when MFT reading is added I'll do my best to make this more automatic.