Wow. I think I’m wrong on how the Proton amdxc64.dll shim works. I believe that it actually targets the amd_fidelityfx_upscaler_dx12.dll file directly.
$ lsof -t /home/user/.wine/drive_c/windows/system32/amdxc64.dll
28435
$ lsof -p 28435 | grep amd
wineserve 28435 user 1034r REG 0,53 67088 2103137 /home/user/.wine/drive_c/windows/system32/amdxc64.dll
wineserve 28435 user 1251r REG 0,53 13138192 2101778 /home/user/titan_quest_ii/TQ2/Binaries/Win64/amd_fidelityfx_upscaler_dx12.dll
wineserve 28435 user 1253r REG 0,53 1090832 2101777 /home/user/titan_quest_ii/TQ2/Binaries/Win64/amd_fidelityfx_framegeneration_dx12.dll
Of note, amdxcffx64.dll is not loaded.
Looks like I need to do some more testing.
Baffling, looking at the strings inside the Proton amdxc64.dll shows that it wants to use and looks for amdxcffx64.dll (which means that it should be possible to load this pre-release 4.1.0 DLL). However, the FSR4 upgrade is enabled for me when I don’t even have the amdxcffx64.dll present. I only need to use the vkd3d-proton DLLs from proton-cachyos and the requisite RDNA3 envvar.
Yep, it never loads:
0024:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\amdxc64.dll" at 00006FFFF5D40000: builtin
21213.598:0020:0024:info:vkd3d-proton:d3d12_device_init_vendor_hacks: Loaded amdxc64.dll successfully.
[...]
21213.604:0020:0024:info:vkd3d-proton:vkd3d_compute_shader_interface_key: Using DXIL_SPIRV_CONFIG = wmma_rdna3_workaround
[...]
0024:trace:loaddll:build_module Loaded L"G:\\home\\user\\titan_quest_ii\\TQ2\\Binaries\\Win64\\amd_fidelityfx_upscaler_dx12.dll" at 00006FFFF5070000: native
0024:trace:loaddll:build_module Loaded L"G:\\home\\user\\titan_quest_ii\\TQ2\\Binaries\\Win64\\amd_fidelityfx_framegeneration_dx12.dll" at 00006FFFF4F50000: native
And yet… the FSR4 upgrade works. Weird.
So, apparently, there is a fall-back path that performs the “FSR4 upgrade” using the upscaler DLL and there must be another toggle required to load amdxcffx64.dll.
I’ll need to slog through the vkd3d-proton and amdxc64.dll code. But maybe I’ll just install Proton and debug from there. Could be another Proton DLL or SO that gets used to orchestrate all this jazz with the amdxcffx64.dll that isn’t shipped with Wine.
UPDATE:
Solved it. You just need to add envvar FSR4_UPGRADE=1 to load the amdxcffx64.dll. Otherwise it falls back to the upscaler DLL. Which is actually a nice behavior to have when testing.
