protonscr

FSR4 Support - AGS

vkd3dclosed
HansKristian-Work/vkd3d-proton#2398 · opened 2025-03-14 by gylli251 · updated 2025-05-08 · 105 comments · github
Ggylli251 2025-03-14 github

Please describe your issue as accurately as possible. Include screenshots or videos if relevant
Using Optiscaler you can get fsr4 on many titles on windows, on linux it works for 3.1 but when i try to apply fsr4.0 the game/games crash. Note that it crashes on boot with default settings since it tries to load fsr4. i made the settings so i could apply it to see the crash happening in the logs. here is the issue on optiplexer github: https://github.com/cdozdil/OptiScaler/issues/285

The culprit seems to be this from proton logs:

7624.558:0128:0178:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Unsupported AGS magic instruction 0x29 (immediate 0).
7624.558:0128:0178:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed DXIL opcode 79.
7624.558:0128:0178:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed to emit instruction.
7624.558:0128:0178:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed to convert function.
7624.558:0128:0178:warn:vkd3d-proton:vkd3d_compile_shader_stage: Failed to compile shader, vkd3d result -3.
7624.558:0128:0178:warn:vkd3d-proton:d3d12_pipeline_state_init_compute: Failed to create Vulkan compute pipeline, hr 0x80070057.
Backtrace:

0x006ffff3fb1371 in d3d12core (+0x1d1371)
1 0x006ffff2c19f53 in amdxcffx64 (+0x39f53)
2 0x006ffff2c17724 in amdxcffx64 (+0x37724)
3 0x006ffff2bf73b7 in amdxcffx64 (+0x173b7)
4 0x006ffff2be1e71 in amdxcffx64 (+0x1e71)
5 0x006ffffbb80d0e in dxgi (+0x50d0e)

I'm guessing vkd3d does not support something that fsr4 tries to use?

somebody also made a issue on proton github page: https://github.com/ValveSoftware/Proton/issues/8519

steps to get OptiScaler to attempt loading fsr4

use latest nightly version
copy all the OptiScaler files to games exe location
rename OptiScaler.dll > dxgi.dll
you will need amdxc64.dll and amdxcffx64.dll in games exe location (can grab from windows after installing drivers)
Windows/System32/DriverStore/FileRepository/u0412790.inf_amd64_b0a9eb989e37c81c/B413137/amdxcffx64.dll
Windows/System32/DriverStore/FileRepository/u0412790.inf_amd64_b0a9eb989e37c81c/B413137/amdxc64.dll
set fsr4Update to true (if not detecting 9000 series gpu properly) in OptiScaler.ini
set WINEDLLOVERRIDES="dxgi.dll=n,b" in launch options

there is a FsrAgilitySDKUpgrade=true option in OptiScaler.ini which may or may not be needed on proton not entirely sure though, desc of FsrAgilitySDKUpgrade option (from ini)
Updates the DirectX 12 Agility SDK Enabling the use of FSR 4 on Windows 10 in older titles like Cyberpunk 2077 You MUST copy D3D12_Optiscaler folder next to games exe! true or false - Default (auto) is false

Software information

Name of the game, settings used etc.
god of war ragnarok
FSR 3.1
no frame generation

System information

  • GPU: 9070 XT
  • Driver: mesa-git-25.1.0_devel.202875.795706f3d67-1
  • Wine version: GE-Proton9-26
  • VKD3D-Proton version: not sure just the GE-Proton9-26

Log files

steam-2322010.log

optiscaler log if it helps:
OptiScaler.log

can provide further help/testing no problem.

Ddoitsujin maintainer 2025-03-14 github

The latest publicly available documentation for AMDAGS shader intrinsics ends at 0x20.

My guess is that they have a lot of proprietary instructions for WMMA and all sorts of other AI crap, but there's no useful way for us to support these when we cannot even know what any of these even do without significant reverse engineering efforts. Which isn't really within the scope of what we're doing here.

So yeah, TL;DR FSR4 is impossible to support until we get documentation.

Ooscarbg 2025-03-14 github

Asked for exposing it to AMD devs (on AGS project):
https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK/issues/55
Unrequested thoughts:
Smells like some “tensor core” opcodes much like the new cooperative vector NV Vulkan extension, also coming next month to DX Agility SDK..
Also FSR4 said using FP8 ops, and NV cooperative vector extension supports it.. so in theory once AGS new RDNA4 opcodes are exposed, might be easier to expose FSR4 under Nvidia until a KHR cooperative vector is available on AMD which might take uears ( just a guess..)

HHansKristian-Work maintainer 2025-03-14 github

It's interesting if AMD exposes FSR4 in D3D12 via magic AGS instructions. That would at least be a theoretical path to enable this on Proton, but ye. If it's using undocumented opcodes, we're not getting anywhere.

Ddoitsujin maintainer 2025-03-14 github

Yeah, it's kind of the "best case" for us actually because it means the whole thing isn't locked away entirely inside driver DLLs, and they might switch to an SM6.9+ path at some point in the future once the required opcodes actually land.

That is, assuming there's not another roadblock hiding behind that unsupported opcode. I might give this a go just stubbing things out at some point and see how far it can get.

HHansKristian-Work maintainer 2025-03-17 github

Not really. There are no helper calls for those opcodes, so it's unknown what the argument are, or how they are encoded.

HHansKristian-Work maintainer 2025-03-26 github

Was able to get an RGP capture showing WMMA instructions on Windows, so this might be enough to figure out the instructions somehow with enough effort ...

Ooscarbg 2025-03-27 github

interesting..
more unrequested thoughts:

1)nice to see RGP supports "decoding" these DXIL AGS extensions.. it would be interesting if RGP was truly open, as it will include the updated AGS headers somehow .. (https://github.com/GPUOpen-Tools/radeon_gpu_profiler)

2)if it's a FP8 WMMA instruction, VK doesn't have support for FP8 data in VK_KHR_cooperative_matrix ext.. altough might come soon, seeing latest Vulkan 311 release having a new VK_KHR_shader_bfloat16 ext, exposing bfloat16 format and adding support for cooperative matrix ops in this format..

so hope a VK_KHR_shader_fp8 extension is in the works..

also found interesting 2 new "unpublished" AMD VK exts in RGA release notes:
SPV_AMD_sparse_cooperative_matrix
SPV_AMD_int4_dot_product

(https://github.com/GPUOpen-Tools/radeon_gpu_analyzer/blob/master/documentation/RGA_RELEASE_NOTES.docx)..
so seems AMD is working on "sparse coop matrix" extension and an int4 dot product ext..

these two might be useful in case some future FSR iteration takes advantage of this..

Ddoitsujin maintainer 2025-03-27 github

1)nice to see RGP supports "decoding" these DXIL AGS extensions..

It doesn't, it shows hardware instructions.

It still doesn't tell us anything about how the DXIL instructions are encoded, but gives some info on what's supposed to come out of it.

Ggylli251 2025-03-27 github

Took a small session and set dummy stubs to see what instructions we are dealing with here is the complete list in order.

(0x29, 0x32, 0x2d, 0x28, 0x2a)

With all these dummy stubs it does not stop on "Unsupported AGS magic instruction" but makes the radv driver crash. can provide full logs if it could help.

8290.345:0124:016c:warn:seh:handle_syscall_fault backtrace: --- Exception 0xc0000005 at 0x70606f92348e: /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/vulkan/libvulkan_radeon.so + 0x12348e.
8290.345:0124:016c:trace:unwind:dwarf_virtual_unwind function 70606f92348e base 0x70606f922d00 cie 0x7060706bb810 len 14 id 0 version 1 aug 'zR' code_align 1 data_align -8 retaddr %rip

Next session il try to see what i get from RGP about these instructions and maybe try to reverse engineer but i have very limited experience with this kind of shader stuff.

HHansKristian-Work maintainer 2025-03-27 github

I'm looking at the DXIL fwiw, there's no need to duplicate that work. I also have the reference ISA from RGP.

HHansKristian-Work maintainer 2025-03-28 github

Mapped out the AGS opcodes now.

RRandy28CR 2025-03-30 github

Mapped out the AGS opcodes now.

In noob terms, what does this mean? Are we near to get FSR4 on Linux? 👀

HHansKristian-Work maintainer 2025-04-07 github

https://github.com/HansKristian-Work/vkd3d-proton/pull/2427 can be tested with FSR4 now. Maybe it will work, maybe it won't.

HHadrianneue 2025-04-07 github

[#2427](https://github.com/HansKristian-Work/vkd3d-proton/pull/2427) can be tested with FSR4 now. Maybe it will work, maybe it won't.

tried 2 games, no more dxil errors, cp2077 freezes, silent hill 2 renders but very incorrectly

Image

i'll test more and get some logs

Ggylli251 2025-04-07 github

Image

does not render correctly but doesn't crash!! :)

here is the log, i set vk3d3d to trace let me know if you want other log levels set.

steam-2322010.log

HHadrianneue 2025-04-07 github

[#2427](https://github.com/HansKristian-Work/vkd3d-proton/pull/2427) can be tested with FSR4 now. Maybe it will work, maybe it won't.

btw optiscaler is not necessary, just copying amdxc64.dll and amdxcffx64.dll from system32 already shows FSR4* override on whitelisted games by amd. seems like that only worked on hdz remastered it needs optiscaler, i was wrong

steam-2561580.zip

Image

tried getting a renderdoc capture but got this error

Image

Iintellq 2025-04-07 github

Don't know if I'm doing this correctly, but I've copied both d3d12.dll and d3d12core.dll to proton's lib64/wine/x86_64-windows

Then copy amdxc64.dll and amdxcffx64.dll to The Last of Us II folder.

After that, FSR 4.0.0 is available inside the launcher and ingame. However, if I choose it... insta crash.

ps: OptiScaler didn't detect FSR 4.0.0 no matter what I do, tested in 3 different games.

Great job nonetheless! :)

DDekoDX 2025-04-07 github

Is it possible we need the configuration value from amd software on windows?

UUklosk 2025-04-08 github

Don't know if I'm doing this correctly, but I've copied both d3d12.dll and d3d12core.dll to proton's lib64/wine/x86_64-windows

Then copy amdxc64.dll and amdxcffx64.dll to The Last of Us II folder.

After that, FSR 4.0.0 is available inside the launcher and ingame. However, if I choose it... insta crash.

ps: OptiScaler didn't detect FSR 4.0.0 no matter what I do, tested in 3 different games.

Great job nonetheless! :)

Any WINEDLLOVERRIDES?

I tried the same you did and only FSR 3.1 and XeSS are available.

DDekoDX 2025-04-09 github

Don't know if I'm doing this correctly, but I've copied both d3d12.dll and d3d12core.dll to proton's lib64/wine/x86_64-windows
Then copy amdxc64.dll and amdxcffx64.dll to The Last of Us II folder.
After that, FSR 4.0.0 is available inside the launcher and ingame. However, if I choose it... insta crash.
ps: OptiScaler didn't detect FSR 4.0.0 no matter what I do, tested in 3 different games.
Great job nonetheless! :)

Any WINEDLLOVERRIDES?

I tried the same you did and only FSR 3.1 and XeSS are available.

WINEDLLOVERRIDES="dxgi.dll,amdxc64.dl,amdxcffx64.dll=n,b"

Those make things reproducible for me. Tried using MH Wilds with PROTON_FORCE_NVAPI=1 PROTON_LOG=1 WINEDLLOVERRIDES="dxgi.dll,amdxc64.dl,dinput8.dll,amdxcffx64.dll=n,b" %command% and it works until fsr4 is enabled.

HHansKristian-Work maintainer 2025-04-09 github

Fixed some implementation bugs, and it should render correctly now ... hopefully.

UUklosk 2025-04-09 github

Don't know if I'm doing this correctly, but I've copied both d3d12.dll and d3d12core.dll to proton's lib64/wine/x86_64-windows
Then copy amdxc64.dll and amdxcffx64.dll to The Last of Us II folder.
After that, FSR 4.0.0 is available inside the launcher and ingame. However, if I choose it... insta crash.
ps: OptiScaler didn't detect FSR 4.0.0 no matter what I do, tested in 3 different games.
Great job nonetheless! :)

Any WINEDLLOVERRIDES?
I tried the same you did and only FSR 3.1 and XeSS are available.

WINEDLLOVERRIDES="dxgi.dll,amdxc64.dl,amdxcffx64.dll=n,b"

Those make things reproducible for me. Tried using MH Wilds with PROTON_FORCE_NVAPI=1 PROTON_LOG=1 WINEDLLOVERRIDES="dxgi.dll,amdxc64.dl,dinput8.dll,amdxcffx64.dll=n,b" %command% and it works until fsr4 is enabled.

I suppose you are talking about OptiScaler, I was quoting a user about FSR4 native support in The Last of Us Part 2.

Iintellq 2025-04-09 github

@HansKristian-Work I don't know if I'm doing this correctly, to test the last build...

  1. git checkout wmma-sandbox before compiling both x64 and x86 dlls
  2. Move them to proton's "vkd3d-proton" inside lib and lib64 folder, replacing both d3d12.dll and d3d12core.dll already there (seems correct, every new replacement all games recompile its shaders)
  3. If I start a game now, not a single one detects FSR 4.0.0 (no changes)
  4. If I copy amdxc64.dll and amdxcffx64.dll to The Last of Us II folder, it detects FSR 4.0.0 in its launcher, but crash If I open the game
  5. Any other game I copy these two dlls to the folder, insta crash if I try to open them

And I only found these two amd dlls (amdxc64.dll and amdxcffx64.dll) inside a driver store folder in my Windows installation. In system32 the only one available is amdxc64.dll (with a different size) and if I copy only this one, nothing happens.

What I'm doing wrong?

Ggylli251 2025-04-09 github

Image

steam-2322010.log

Still only rendering that top half but atleast its better now! :)

@HansKristian-Work i just noticed the right half is much better then the left part for some reason

Rryzendew 2025-04-09 github

Image

Iintellq 2025-04-09 github

@ryzendew can you give us a step by step? I'm only getting crashes (cyberpunk included)

Nnodscher 2025-04-09 github

https://github.com/nodscher/wine-tkg-git/actions/runs/14355726086

I've got this repo building proton-tkg with the correct vkd3d-proton branch. The version there gets everything to not crash and optiscaler to detect fsr4. (you can also fork it and get github actions to build you the fsync version)
You only need to copy the amdxcffx64.dll and amdxc64.dll next to the game-exe (where optiscaler and other dlls would be) after that. (No launch options are required for me)

It however still has the artifacting as described above. I can reproduce ryzendew's results, but I am quite certain that it's using fsr2 and optiscaler doesn't seem to work with that properly (at least in cyberpunk + linux)

I've got fsr2.1 selected in the settings, but optiscaler shows DLSS as input and the upscaler-frametime is frozen. Additionally after a restart of the game optiscaler says that there is no upscaler active when fsr 2.1 is active.

DDekoDX 2025-04-09 github

https://github.com/nodscher/wine-tkg-git/actions/runs/14355726086

I've got this repo building proton-tkg with the correct vkd3d-proton branch. The version there gets everything to not crash and optiscaler to detect fsr4. (you can also fork it and get github actions to build you the fsync version) You only need to copy the amdxcffx64.dll and amdxc64.dll next to the game-exe (where optiscaler and other dlls would be) after that. (No launch options are required for me)

It however still has the artifacting as described above. I can reproduce ryzendew's results, but I am quite certain that it's using fsr2 and optiscaler doesn't seem to work with that properly (at least in cyberpunk + linux)

I've got fsr2.1 selected in the settings, but optiscaler shows DLSS as input and the upscaler-frametime is frozen. Additionally after a restart of the game optiscaler says that there is no upscaler active when fsr 2.1 is active.

Are you sure you based this off of valve wine?

TTk-Glitch 2025-04-09 github

Image

steam-2322010.log

Still only rendering that top half but atleast its better now! :)

@HansKristian-Work i just noticed the right half is much better then the left part for some reason

From my testing, this happens with the B0 00 C3 edit to the dll. With B0 01 C3 you should get the whole image.

Ggylli251 2025-04-09 github

What DLL are you talking about? is this something on optiscaler side or vkd3d?
@Tk-Glitch

TTk-Glitch 2025-04-09 github

What DLL are you talking about? is this something on optiscaler side or vkd3d? @Tk-Glitch

Sorry I was evasive. I was talking about amdxcffx64.dll. However, since you have no idea what I'm talking about, that might actually be a useful information. Supposedly there are two models, either 1 or 0. 1 "works" with some caveats (ryzendew image), and 0 gives what you see. But considering the issues here and there with 1, maybe the key lies in getting 0 to work?
What do you think @HansKristian-Work ?

edit: The "0" path was found to be broken on native as well, so we can drop that theory. Someone is working on implementing amdxc64 to allow for running the correct path without hexediting amdxcffx64.

UUklosk 2025-04-09 github

Image

Could you please share more details?

  • mesa version (or amdvlk)
  • Proton version
  • vkd3d-proton build
  • amdxc64.dll and amdxcffx64.dll versions
  • OptiScaler version
  • Launch arguments if any

Thanks!

Iintellq 2025-04-10 github

@nodscher in Lutris, when I try to run any game using proton-tkg:

[umu.umu_run:802] INFO: umu-launcher version 1.2.6 (3.13.2 (main, Feb 5 2025, 08:05:21) [GCC 14.2.1 20250128])
[umu.umu_run:808] DEBUG: Connecting to '1.1.1.1'...
[umu.umu_run:724] DEBUG: PROTONPATH set, resolving its required runtime
[umu.main:102] ERROR: Failed to match '/home/pc3/.local/share/lutris/runners/proton/proton_tkg' with a container runtime
Traceback (most recent call last):
File "/home/pc3/.local/share/lutris/runtime/umu/umu-run/main.py", line 95, in
sys.exit(main())
~~~~^^
File "/home/pc3/.local/share/lutris/runtime/umu/umu-run/main.py", line 90, in main
return umu_run(args)
File "/home/pc3/.local/share/lutris/runtime/umu/umu-run/umu/umu_run.py", line 847, in umu_run
raise ValueError(err)
ValueError: Failed to match '/home/pc3/.local/share/lutris/runners/proton/proton_tkg' with a container runtime
Monitored process exited.
Initial process has exited (return code: 0)
All processes have quit
Exit with return code 0

Doesn't work with Steam either

Nnodscher 2025-04-10 github

@intellq

@nodscher in Lutris, when I try to run any game using proton-tkg:

[umu.umu_run:802] INFO: umu-launcher version 1.2.6 (3.13.2 (main, Feb 5 2025, 08:05:21) [GCC 14.2.1 20250128])
[umu.umu_run:808] DEBUG: Connecting to '1.1.1.1'...
[umu.umu_run:724] DEBUG: PROTONPATH set, resolving its required runtime
[umu.main:102] ERROR: Failed to match '/home/pc3/.local/share/lutris/runners/proton/proton_tkg' with a container runtime
Traceback (most recent call last):
File "/home/pc3/.local/share/lutris/runtime/umu/umu-run/main.py", line 95, in
sys.exit(main())

File "/home/pc3/.local/share/lutris/runtime/umu/umu-run/**main**.py", line 90, in main
return umu_run(args)
File "/home/pc3/.local/share/lutris/runtime/umu/umu-run/umu/umu_run.py", line 847, in umu_run
raise ValueError(err)
ValueError: Failed to match '/home/pc3/.local/share/lutris/runners/proton/proton_tkg' with a container runtime
Monitored process exited.
Initial process has exited (return code: 0)
All processes have quit
Exit with return code 0

Doesn't work with Steam either

I've also got this: https://github.com/nodscher/proton-ge-custom/actions/runs/14386097099, which should work witch umu-run. Some Games (like Hitman for me) just don't seem to start at all though.

Ppaulodiogomartins 2025-04-10 github

Hi Guys! im using HansKristian-Work/vkd3d-proton with Wine-tkg: https://github.com/nodscher/wine-tkg-git/actions/runs/14355726086 and Mesa-tkg-git with patch: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34382
Cant see Fsr4 on games supported or Optiscaler. im on rdna3 7800xt just wanted to test if fsr4 appears. any ideas?

Mmrdev023 2025-04-10 github

Hi Guys! im using HansKristian-Work/vkd3d-proton with Wine-tkg: https://github.com/nodscher/wine-tkg-git/actions/runs/14355726086 and Mesa-tkg-git with patch: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34382
Cant see Fsr4 on games supported or Optiscaler. im on rdna3 7800xt just wanted to test if fsr4 appears. any ideas?

FSR4 is not available officialy on older amd gpu card but only on RX 9000 series

I think https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34382 try to implement it. I heard about this on a YouTube video so I'm not sure if the information is true

Ppaulodiogomartins 2025-04-10 github

Hi Guys! im using HansKristian-Work/vkd3d-proton with Wine-tkg: https://github.com/nodscher/wine-tkg-git/actions/runs/14355726086 and Mesa-tkg-git with patch: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34382
Cant see Fsr4 on games supported or Optiscaler. im on rdna3 7800xt just wanted to test if fsr4 appears. any ideas?

FSR4 is not available officialy on older amd gpu card but only on RX 9000 series

I think https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34382 try to implement it. I heard about this on a YouTube video so I'm not sure if the information is true

I know its not officially supported, i saw the video too. I patched the mesa git, hoping to see something regarding fsr4 on rdna3

HHansKristian-Work maintainer 2025-04-11 github

There's no point in testing right now, it doesn't work correctly yet at all. Further testing won't give any additional information. The image quality is far below native results and that needs to be debugged first.

Rryzendew 2025-04-28 github

There's no point in testing right now, it doesn't work correctly yet at all. Further testing won't give any additional information. The image quality is far below native results and that needs to be debugged first.

let us know when to test again

Ggylli251 2025-04-28 github

https://github.com/Etaash-mathamsetty/wine-builds/releases/tag/fsr4
@HansKristian-Work is this not something thats working kinda correctly? as far as i can see if i use the correct dll i can select fsr4 and it looks atleast on par with frs3 if not better. using fp8.

Btw dont reccomend trying this unless you know what you are doing.

Rryzendew 2025-04-28 github

https://github.com/Etaash-mathamsetty/wine-builds/releases/tag/fsr4 @HansKristian-Work is this not something thats working kinda correctly? as far as i can see if i use the correct dll i can select fsr4 and it looks atleast on par with frs3 if not better. using fp8.

Btw dont reccomend trying this unless you know what you are doing.

mesa gitlab seems to be down so even if i wanted to test this on arch i can't

Rryzendew 2025-04-29 github

Image\ Oblivion Remake

Image Cyberpunk 2077

Image Dead island 2

Image Silent hill 2 remake

Image Stalker 2

Working so much better

https://github.com/Etaash-mathamsetty/wine-builds/releases/tag/fsr4 @HansKristian-Work is this not something thats working kinda correctly? as far as i can see if i use the correct dll i can select fsr4 and it looks atleast on par with frs3 if not better. using fp8.

Btw dont reccomend trying this unless you know what you are doing.

thanks

Iintellq 2025-04-30 github

I updated Proton-FSR4 fp8 version to 2025-04-29 release, and now fp8 is giving the same bad results as fp16. Like fp8 version is not working.

Exemple with Clair Obscur:

2025-05-15 fp8 version:
FSR3 = 95 fps
FSR4 = 90 fps

2025-05-29 fp8 version:
FSR3 = 95 fps
FSR4 = 65 fps

(I'm using mesa fp8 hack3)

Can someone give me a download link to the 2025-04-15 release? I deleted it and can't download it again (not available anymore)

Iintellq 2025-04-30 github

FSR 4.0.1
Image

FSR 3.1.3
Image

81 fps versus 136 fps... this didn't happen with proton fsr4 fp8 previous version.

I really appreciate if anyone can provide me a download link...

AAzyrion 2025-04-30 github

FSR 4.0.1 Image

FSR 3.1.3 Image

81 fps versus 136 fps... this didn't happen with proton fsr4 fp8 previous version.

I really appreciate if anyone can provide me a download link...

do you mean this version? also how do you make it work in the first place? CP2077 and other games crash no matter what I do

Iintellq 2025-04-30 github

do you mean this version?

This link is private, is it yours? I've asked for access.

also how do you make it work in the first place? CP2077 and other games crash no matter what I do

If you need extra help in any of these steps, let me know. I'm using arch linux.

Tested with FF XVI and The Last of Us Part II (both with Lutris) and Clair Obscur (Steam). All working fine, played Clair about 4 hours yesterday with FSR 4.0.1 and zero issues.

AAzyrion 2025-04-30 github

granted you access @intellq !
I did all the steps apart from the hack (no idea how so I'm using fp16 version) and I have extracted the proton fsr4 version in the heroic proton folder as this is where I have cp2077.
I'm using Nobara 41

Iintellq 2025-04-30 github

granted you access @intellq !

Google said this file violated the terms or something and didn't let me download.

Can you send it in Mediafire?

I did all the steps apart from the hack (no idea how so I'm using fp16 version) and I have extracted the proton fsr4 version in the heroic proton folder as this is where I have cp2077. I'm using Nobara 41

I'll test Cyberpunk and report later

EDIT -- fsr 3.1.3 vs 4.0.1
Image
Image

What is your gpu, azyrion?

AAzyrion 2025-04-30 github

I have a 9070XT using it with mesa 25.0.4 (on Nobara 41, kernel 6.14.3)

Also here links to the proton version @intellq :
mediafire link
new google drive link

Iintellq 2025-05-01 github

@Azyrion you are a lifesaver! As I suspected, just by swaping back Proton FSR4 fp8 to previous version (2025-04-15) boosted the fps immensely! This new fp8 version (2025-04-29) is completely broken, fp8 and fp16 are giving the same performance.

Clair Obscur: Expedition 33 now with FSR 4.0.1 @ Proton-FSR4-2025-04-15, jumping from 80 fps to 122!

Image

AAzyrion 2025-05-01 github

@Azyrion you are a lifesaver! As I suspected, just by swaping back Proton FSR4 fp8 to previous version (2025-04-15) boosted the fps immensely! This new fp8 version (2025-04-29) is completely broken, fp8 and fp16 are giving the same performance.

Clair Obscur: Expedition 33 now with FSR 4.0.1 @ Proton-FSR4-2025-04-15, jumping from 80 fps to 122!

Image

is there a visual difference between 2025-04-15 and 2025-04-29 version?

Iintellq 2025-05-01 github

is there a visual difference between 2025-04-15 and 2025-04-29 version?

At least not that I saw. According to the changelog, this version only adds FSR4 support for RDNA3.

I opened an issue there:
https://github.com/Etaash-mathamsetty/wine-builds/issues/3

WWiltonicol 2025-05-01 github

Is fsr4 now able to be enabled on rdna3?

Iintellq 2025-05-01 github

Is fsr4 now able to be enabled on rdna3?

v3 (4/29/25): updated vkd3d-proton -> RDNA3 now functional with some minor graphical glitches. Switched to xz compression so that it takes up less space when compressed

So, yes. I've read a 7900 XTX is 3x slower (or more) than a 9070 XT using FSR4. Cause of few AI cores or something.

Can't say about bugs and/or glitches...

Iintellq 2025-05-01 github

Proton FSR4 fp8 already fixed (2025-04-30 build).

@Etaash-mathamsetty is doing a great job :)

WWiltonicol 2025-05-01 github

I apologize for asking the question here. I have rdna3, I have followed the instructions (fp16, amd dll in the game folder, the game (Last Of Us 2) allows me to select FSR4, but the game crashes if I apply the setting). Did I do something wrong?

Ppio2398 2025-05-01 github

Some problem as @Wiltonicol.

*** stack smashing detected ***: terminated

015c:err:seh:call_stack_handlers invalid frame 000000010080B3D0 (000000007A5E2000-000000007A6E0000)

015c:err:seh:NtRaiseException Exception frame is not in stack limits => unable to dispatch exception.

0148:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFFFFFFFFFA, 000000000021FEB0

Tried with Stalker 2 without optiscaler and CyberPunk with optiscaler.

BBananaWorks07 2025-05-01 github

I think RDNA3 requires mesa-git (plus a PR maybe). It works on my machine with that configuration

SSaise-g 2025-05-01 github

do you mean this version?

This link is private, is it yours? I've asked for access.

also how do you make it work in the first place? CP2077 and other games crash no matter what I do

* Extracted amdxcffx64.dll from https://drivers.amd.com/drivers/amd-software-adrenalin-edition-25.4.1-win10-win11-apr22-rdna.exe and put it beside the game's .exe

* Compiled Mesa fp8 hack3 and made it OS default (not sure if it's mandatory)

* Extracted Proton FSR4 fp8 version in /home/[user]/.steam/steam/compatibilitytools.d/

* Selected that Proton inside Steam (it shows as "bleeding-edge-local")

* Used latest Optiscaler to make it work

If you need extra help in any of these steps, let me know. I'm using arch linux.

Tested with FF XVI and The Last of Us Part II (both with Lutris) and Clair Obscur (Steam). All working fine, played Clair about 4 hours yesterday with FSR 4.0.1 and zero issues.

Hi, sorry but I'm new to github but I can't get my setup to work.

I followed the instructions, on my fedora 42 install with mesa-git and cachyos kernel to try fsr4 on RDNA4.

The only thing I didn't do is compile Mesa fp8 hack3 because I don't really know how.

The games run fine with optiscaler and FSR3 but as soon as I add the amdxcffx64.dll to cyberpunk's folder it crashes.

Iintellq 2025-05-01 github

The only thing I didn't do is compile Mesa fp8 hack3 because I don't really know how.

It's not that difficult (edit: seeing the entire post now it's kinda difficult, but don't give up!)

  1. cd && git clone --recurse-submodules https://gitlab.freedesktop.org/DadSchoorse/mesa.git mesa-fp8 && cd mesa-fp8
  2. git checkout radv-float8-hack3
  3. meson setup build/ --prefix=/opt/mesa-fp8 -Dbuildtype=release
  4. ninja -C build
  5. sudo ninja -C build install

Pass 4 will (probably) throw a lot of errors because of missing packages. In arch linux, these were the ones misssing for me:
yay -S cbindgen rust-bindgen libclc python-mako llvm spirv-llvm-translator (yeah I don't use pacman)

After you correct all the missing ones, you have two options. Make this mesa fp8 system default (option 1), or keep Mesa stock as it is, and use Mesa fp8 only for the games you want FSR4 (option 2).

For option 1:
echo /opt/mesa-fp8/lib | sudo tee /etc/ld.so.conf.d/mesa.conf
sudo ldconfig
Put inside /etc/environment:
LIBGL_DRIVERS_PATH=/opt/mesa-fp8/lib/dri
VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json
VK_LAYER_PATH=/opt/mesa-fp8/share/vulkan/icd.d

This is for arch linux, some systems use "lib64" path instead. Reboot after the changes. Mesa fp8 is now your system default for ALL apps (except for 32-bit ones, don't know how to do it and don't care much)

For option 2:
If using Lutris, just set:
VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json
In system options / variables for every game

In Steam:
VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json %command%
In General / Start up option for every game

In both Lutris and Steam you obviously have to choose Proton FSR4 fp8 (bleeding-edge-local) as I mentioned in my previous post.

If all the steps is followed properly, you'll have:

  • Mesa FP8 hack3, version 25.2.0-devel (more updated than 25.0.4, the last stable)
  • Proton bleeding edge, also more updated than GE-Proton-27 (as far as I know)
  • FSR 4.0.1 with only ~10% loss (or less) when compared to FSR 3.1.3 (around the same loss as Windows!)

EDIT: In FFXVI, fsr 4.0.1 upgrade loses even less, 85 to 79 fps, only 7% :)

Careful, if you make Mesa fp8 system default and don't set it properly your DE won't even boot.
I recommend option 2 if you are not sure which one is better for you.

The games run fine with optiscaler and FSR3 but as soon as I add the amdxcffx64.dll to cyberpunk's folder it crashes.

Even with fp16 build?

SSaise-g 2025-05-01 github

Thank you very very much for all the instructions, I'll try them right now and I'll update!

Even with fp16 build?

Yes, I tried with fp16 and as soon as I load FSR4 the game crashes.

AAzyrion 2025-05-01 github

he basically has the same issue as me @intellq . I also tried FP16 as I had no idea to go about the mesa hack. Regardless which game I tried it crashes as soon as optiscaler loads FSR4. Without loading FSR4 optiscaler works normally.
Tried it with Guardian of the Galaxy, A Plague Tale: Requiem, Ghostrunner 2 and some other games in steam too. Same behavior as cp2077 in heroic.

BBananaWorks07 2025-05-01 github

You can also use mesa-tkg instead if you don't want to do all that manually (only on arch I think tho)

Lleeford 2025-05-01 github

I've had good success with the following:

Works in CP2077, Clair Obscur and HZD Remastered using FSR 4.0.1. When using FP16, the performance was much worse!

Steps to success

(On Fedora 42)

FSR4

  1. Download the latest AMD driver. I am using this one which has 4.0.1 inside: https://www.techpowerup.com/download/amd-radeon-graphics-drivers/
  2. Extract the FSR4 file from it: 7z e -r amd-software-adrenalin-edition-25.4.1-win10-win11-apr22-rdna.exe amdxcffx64.dll

Mesa

I do the mesa compile in a toolbox to avoid having a load of stuff on my base OS

  1. Install all the build dependencies
  2. Download the "hack" mesa branch: wget https://gitlab.freedesktop.org/DadSchoorse/mesa/-/archive/radv-float8-hack3/mesa-radv-float8-hack3.zip
  3. Extract the zip and go in folder: unzip mesa-radv-float8-hack3.zip && cd ./mesa-radv-float8-hack3
  4. Install build dependencies: sudo dnf builddep mesa
  5. Setup build: meson setup build64 --libdir lib64 --prefix $HOME/mesa-fp8
  6. Build/install: ninja -C build64 install

Proton

  1. Download the latest fp8 build: https://github.com/Etaash-mathamsetty/wine-builds/releases/tag/fsr4
  2. Extract it and put it in the folder with the other proton versions: /home/<user>/.steam/steam/compatibilitytools.d (change the user to your own)

OptiScaler

Game settings

In Steam ensure you have the following set (per game):

  • Compatibility: bleeding-edge-local
  • Launch Options: WINEDLLOVERRIDES=dxgi=n,b VK_DRIVER_FILES=/home/<user>/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json %command% (change the user to your own)

The launch options includes the flag required for OptiScaler to function and specifying the mesa-fp8 build

Hope this helps someone!

SSaise-g 2025-05-01 github

Ok so, I tried the following:

I installed CachyOS (I'm not skilled enough to install Arch, even with archinstall) tested cyberpunk with FSR3 Optiscaler and proton-cachyos (works just fine), then followed @intellq instructions on how to build and use mesa for cyberpunk only + latest fp8 build, but it doesn't even open just like it does on Fedora.

I then tried using mesa-tkg-git after enabling it in the chaotic-aur repos like suggested by @Etaash-mathamsetty , if I use the fp8 build the game opens and it crashes after the first logo, but for some reason, if I use proton-cachyos I can enable FSR4 but It's all glitched.

Image

I went back to fedora and followed @leeford instructions, I also used a toolbox to not introduce any variables and keep my install clean, but again no luck, it doesn't even run like before.

If I remove the launch options and use FSR3 on optiscaler the fp8 build does work and I can get in game, so I don't understand.

It's probably my fault but I can't understand what I'm doing wrong.

Lleeford 2025-05-01 github

Are you using the FP8 Proton build from @Etaash-mathamsetty ?

BBananaWorks07 2025-05-01 github

Ok so, I tried the following:

I installed CachyOS (I'm not skilled enough to install Arch, even with archinstall) tested cyberpunk with FSR3 Optiscaler and proton-cachyos (works just fine), then followed @intellq instructions on how to build and use mesa for cyberpunk only + latest fp8 build, but it doesn't even open just like it does on Fedora.

I then tried using mesa-tkg-git after enabling it in the chaotic-aur repos like suggested by @Etaash-mathamsetty , if I use the fp8 build the game opens and it crashes after the first logo, but for some reason, if I use proton-cachyos I can enable FSR4 but It's all glitched.

Image

I went back to fedora and followed @leeford instructions, I also used a toolbox to not introduce any variables and keep my install clean, but again no luck, it doesn't even run like before.

If I remove the launch options and use FSR3 on optiscaler the fp8 build does work and I can get in game, so I don't understand.

It's probably my fault but I can't understand what I'm doing wrong.

Did you add the patches from float8-hack3 branch? You have to compile it yourself you can't use a precompiled version as that probably doesn't have the patches. by mesa-tkg i meant this (https://github.com/Frogging-Family/mesa-git)

SSaise-g 2025-05-01 github

Are you using the FP8 Proton build from @Etaash-mathamsetty ?

Yes, I downloaded it each and every time I tried to be sure I wasn't using something outdated

Did you add the patches from float8-hack3 branch? You have to compile it yourself you can't use a precompiled version as that probably doesn't have the patches. by mesa-tkg i meant this (https://github.com/Frogging-Family/mesa-git)

My bad, I didn't, sorry.

Edit: I've got more luck with death stranding, it starts, I can get in game, I can enable FSR4 but only the top half of the screen can be seen, the rest is stuck to the same frame.

Image

Mmoontaincow 2025-05-01 github

The only thing I didn't do is compile Mesa fp8 hack3 because I don't really know how.

It's not that difficult (edit: seeing the entire post now it's kinda difficult, but don't give up!)

  1. cd && git clone --recurse-submodules https://gitlab.freedesktop.org/DadSchoorse/mesa.git mesa-fp8 && cd mesa-fp8
  2. git checkout radv-float8-hack3
  3. meson setup build/ --prefix=/opt/mesa-fp8 -Dbuildtype=release
  4. ninja -C build
  5. sudo ninja -C build install

Pass 4 will (probably) throw a lot of errors because of missing packages. In arch linux, these were the ones misssing for me: yay -S cbindgen rust-bindgen libclc python-mako llvm spirv-llvm-translator (yeah I don't use pacman)

After you correct all the missing ones, you have two options. Make this mesa fp8 system default (option 1), or keep Mesa stock as it is, and use Mesa fp8 only for the games you want FSR4 (option 2).

For option 1: echo /opt/mesa-fp8/lib | sudo tee /etc/ld.so.conf.d/mesa.conf sudo ldconfig Put inside /etc/environment: LIBGL_DRIVERS_PATH=/opt/mesa-fp8/lib/dri VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json VK_LAYER_PATH=/opt/mesa-fp8/share/vulkan/icd.d

This is for arch linux, some systems use "lib64" path instead. Reboot after the changes. Mesa fp8 is now your system default for ALL apps (except for 32-bit ones, don't know how to do it and don't care much)

For option 2: If using Lutris, just set: VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json In system options / variables for every game

In Steam: VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json %command% In General / Start up option for every game

In both Lutris and Steam you obviously have to choose Proton FSR4 fp8 (bleeding-edge-local) as I mentioned in my previous post.

If all the steps is followed properly, you'll have:

  • Mesa FP8 hack3, version 25.2.0-devel (more updated than 25.0.4, the last stable)
  • Proton bleeding edge, also more updated than GE-Proton-27 (as far as I know)
  • FSR 4.0.1 with only ~10% loss (or less) when compared to FSR 3.1.3 (around the same loss as Windows!)

EDIT: In FFXVI, fsr 4.0.1 upgrade loses even less, 85 to 79 fps, only 7% :)

Careful, if you make Mesa fp8 system default and don't set it properly your DE won't even boot. I recommend option 2 if you are not sure which one is better for you.

The games run fine with optiscaler and FSR3 but as soon as I add the amdxcffx64.dll to cyberpunk's folder it crashes.

Even with fp16 build?

Following your instructions for option 2:

1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Unsupported AGS magic instruction 0x29 (immediate 0). 1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed DXIL opcode 79. 1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed to emit instruction. 1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed to convert function.

This happens as soon as I switch the upscaler to FSR

Iintellq 2025-05-01 github

For those who can't make proton fsr4 works no matter what, I recommend to install EndeavourOS to test all of this in an arch linux distribution.

I'm starting to think is something related to kernel or linux-firmware versions of other distros.

Iintellq 2025-05-01 github

Did you add the patches from float8-hack3 branch? You have to compile it yourself you can't use a precompiled version as that probably doesn't have the patches. by mesa-tkg i meant this (https://github.com/Frogging-Family/mesa-git)

How to add these patches from float8-hack3 branch to mesa-tkg?

I saw I need to create a .mymesapatch but I have no idea how to do it...

Yyannhodiesne 2025-05-01 github

Made it work on Bazzite following these steps: https://github.com/HansKristian-Work/vkd3d-proton/issues/2398#issuecomment-2845201173
Compiling mesa was done inside a Fedora 42 distrobox to match the host version
I only tried enabling FSR4 in Clair Obscur: Expedition 33, but it works like a charm, even when running inside gamescope !

BBananaWorks07 2025-05-01 github

The only thing I didn't do is compile Mesa fp8 hack3 because I don't really know how.

It's not that difficult (edit: seeing the entire post now it's kinda difficult, but don't give up!)

  1. cd && git clone --recurse-submodules https://gitlab.freedesktop.org/DadSchoorse/mesa.git mesa-fp8 && cd mesa-fp8
  2. git checkout radv-float8-hack3
  3. meson setup build/ --prefix=/opt/mesa-fp8 -Dbuildtype=release
  4. ninja -C build
  5. sudo ninja -C build install

Pass 4 will (probably) throw a lot of errors because of missing packages. In arch linux, these were the ones misssing for me: yay -S cbindgen rust-bindgen libclc python-mako llvm spirv-llvm-translator (yeah I don't use pacman)

After you correct all the missing ones, you have two options. Make this mesa fp8 system default (option 1), or keep Mesa stock as it is, and use Mesa fp8 only for the games you want FSR4 (option 2).

For option 1: echo /opt/mesa-fp8/lib | sudo tee /etc/ld.so.conf.d/mesa.conf sudo ldconfig Put inside /etc/environment: LIBGL_DRIVERS_PATH=/opt/mesa-fp8/lib/dri VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json VK_LAYER_PATH=/opt/mesa-fp8/share/vulkan/icd.d

This is for arch linux, some systems use "lib64" path instead. Reboot after the changes. Mesa fp8 is now your system default for ALL apps (except for 32-bit ones, don't know how to do it and don't care much)

For option 2: If using Lutris, just set: VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json In system options / variables for every game

In Steam: VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json %command% In General / Start up option for every game

In both Lutris and Steam you obviously have to choose Proton FSR4 fp8 (bleeding-edge-local) as I mentioned in my previous post.

If all the steps is followed properly, you'll have:

  • Mesa FP8 hack3, version 25.2.0-devel (more updated than 25.0.4, the last stable)
  • Proton bleeding edge, also more updated than GE-Proton-27 (as far as I know)
  • FSR 4.0.1 with only ~10% loss (or less) when compared to FSR 3.1.3 (around the same loss as Windows!)

EDIT: In FFXVI, fsr 4.0.1 upgrade loses even less, 85 to 79 fps, only 7% :)

Careful, if you make Mesa fp8 system default and don't set it properly your DE won't even boot. I recommend option 2 if you are not sure which one is better for you.

The games run fine with optiscaler and FSR3 but as soon as I add the amdxcffx64.dll to cyberpunk's folder it crashes.

Even with fp16 build?

Following your instructions for option 2:

1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Unsupported AGS magic instruction 0x29 (immediate 0). 1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed DXIL opcode 79. 1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed to emit instruction. 1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed to convert function.

This happens as soon as I switch the upscaler to FSR

You aren't using the correct proton version

BBananaWorks07 2025-05-01 github

Did you add the patches from float8-hack3 branch? You have to compile it yourself you can't use a precompiled version as that probably doesn't have the patches. by mesa-tkg i meant this (https://github.com/Frogging-Family/mesa-git)

How to add these patches from float8-hack3 branch to mesa-tkg?

I saw I need to create a .mymesapatch but I have no idea how to do it...

You can edit customization.cfg to use a custom repo and branch instead of creating a patch file

Iintellq 2025-05-01 github

You can edit customization.cfg to use a custom repo and branch instead of creating a patch file

But this is not equivalent to just compile the branch from the custom repo myself, as I'm doing now?

BBananaWorks07 2025-05-01 github

You can edit customization.cfg to use a custom repo and branch instead of creating a patch file

But this is not equivalent to just compile the branch from the custom repo myself, as I'm doing now?

It is equivalent, I'm just suggesting an easier alternative since this will install this mesa version to your system and will automatically compile everything. There's much less room for error

Mmrdev023 2025-05-02 github

I've had good success with the following:

Works in CP2077, Clair Obscur and HZD Remastered using FSR 4.0.1. When using FP16, the performance was much worse!

Steps to success

(On Fedora 42)

FSR4

  1. Download the latest AMD driver. I am using this one which has 4.0.1 inside: https://www.techpowerup.com/download/amd-radeon-graphics-drivers/
  2. Extract the FSR4 file from it: 7z e -r amd-software-adrenalin-edition-25.4.1-win10-win11-apr22-rdna.exe amdxcffx64.dll

Mesa

I do the mesa compile in a toolbox to avoid having a load of stuff on my base OS

  1. Install all the build dependencies
  2. Download the "hack" mesa branch: wget https://gitlab.freedesktop.org/DadSchoorse/mesa/-/archive/radv-float8-hack3/mesa-radv-float8-hack3.zip
  3. Extract the zip and go in folder: unzip mesa-radv-float8-hack3.zip && cd ./mesa-radv-float8-hack3
  4. Install build dependencies: sudo dnf builddep mesa
  5. Setup build: meson setup build64 --libdir lib64 --prefix $HOME/mesa-fp8
  6. Build/install: ninja -C build64 install

Proton

  1. Download the latest fp8 build: https://github.com/Etaash-mathamsetty/wine-builds/releases/tag/fsr4
  2. Extract it and put it in the folder with the other proton versions: /home/<user>/.steam/steam/compatibilitytools.d (change the user to your own)

OptiScaler

Game settings

In Steam ensure you have the following set (per game):

  • Compatibility: bleeding-edge-local
  • Launch Options: WINEDLLOVERRIDES=dxgi=n,b VK_DRIVER_FILES=/home/<user>/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json %command% (change the user to your own)

The launch options includes the flag required for OptiScaler to function and specifying the mesa-fp8 build

Hope this helps someone!

Mesa fp8 is required also with an RX 9070XT ?
Im using amdvlk, I need also mesa fp8 ?

Mmoontaincow 2025-05-02 github

The only thing I didn't do is compile Mesa fp8 hack3 because I don't really know how.

It's not that difficult (edit: seeing the entire post now it's kinda difficult, but don't give up!)

  1. cd && git clone --recurse-submodules https://gitlab.freedesktop.org/DadSchoorse/mesa.git mesa-fp8 && cd mesa-fp8
  2. git checkout radv-float8-hack3
  3. meson setup build/ --prefix=/opt/mesa-fp8 -Dbuildtype=release
  4. ninja -C build
  5. sudo ninja -C build install

Pass 4 will (probably) throw a lot of errors because of missing packages. In arch linux, these were the ones misssing for me: yay -S cbindgen rust-bindgen libclc python-mako llvm spirv-llvm-translator (yeah I don't use pacman)
After you correct all the missing ones, you have two options. Make this mesa fp8 system default (option 1), or keep Mesa stock as it is, and use Mesa fp8 only for the games you want FSR4 (option 2).
For option 1: echo /opt/mesa-fp8/lib | sudo tee /etc/ld.so.conf.d/mesa.conf sudo ldconfig Put inside /etc/environment: LIBGL_DRIVERS_PATH=/opt/mesa-fp8/lib/dri VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json VK_LAYER_PATH=/opt/mesa-fp8/share/vulkan/icd.d
This is for arch linux, some systems use "lib64" path instead. Reboot after the changes. Mesa fp8 is now your system default for ALL apps (except for 32-bit ones, don't know how to do it and don't care much)
For option 2: If using Lutris, just set: VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json In system options / variables for every game
In Steam: VK_ICD_FILENAMES=/opt/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json %command% In General / Start up option for every game
In both Lutris and Steam you obviously have to choose Proton FSR4 fp8 (bleeding-edge-local) as I mentioned in my previous post.
If all the steps is followed properly, you'll have:

  • Mesa FP8 hack3, version 25.2.0-devel (more updated than 25.0.4, the last stable)
  • Proton bleeding edge, also more updated than GE-Proton-27 (as far as I know)
  • FSR 4.0.1 with only ~10% loss (or less) when compared to FSR 3.1.3 (around the same loss as Windows!)

EDIT: In FFXVI, fsr 4.0.1 upgrade loses even less, 85 to 79 fps, only 7% :)
Careful, if you make Mesa fp8 system default and don't set it properly your DE won't even boot. I recommend option 2 if you are not sure which one is better for you.

The games run fine with optiscaler and FSR3 but as soon as I add the amdxcffx64.dll to cyberpunk's folder it crashes.

Even with fp16 build?

Following your instructions for option 2:
1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Unsupported AGS magic instruction 0x29 (immediate 0). 1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed DXIL opcode 79. 1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed to emit instruction. 1085.557:00d0:01e4:err:vkd3d-proton:vkd3d_dxil_log_callback: dxil-spirv: Failed to convert function.
This happens as soon as I switch the upscaler to FSR

You aren't using the correct proton version

Thanks. I thought I was, but I guess it wasn't working correctly.

I'm using lutris and was selecting a custom wine executable under runner, which loaded fine and mangohud suggested it was using the correct version.
I placed your build in the expected location for lutris to detect it and picked it that way which worked.

Going from FSR3 to FSR4 looks great. I had some serious artifacts in silent hill 2 remake going from dlss.

I'll test more games later.

Lleeford 2025-05-02 github

I've had good success with the following:

Works in CP2077, Clair Obscur and HZD Remastered using FSR 4.0.1. When using FP16, the performance was much worse!

Steps to success

(On Fedora 42)

FSR4

  1. Download the latest AMD driver. I am using this one which has 4.0.1 inside: https://www.techpowerup.com/download/amd-radeon-graphics-drivers/
  2. Extract the FSR4 file from it: 7z e -r amd-software-adrenalin-edition-25.4.1-win10-win11-apr22-rdna.exe amdxcffx64.dll

Mesa

I do the mesa compile in a toolbox to avoid having a load of stuff on my base OS

  1. Install all the build dependencies
  2. Download the "hack" mesa branch: wget https://gitlab.freedesktop.org/DadSchoorse/mesa/-/archive/radv-float8-hack3/mesa-radv-float8-hack3.zip
  3. Extract the zip and go in folder: unzip mesa-radv-float8-hack3.zip && cd ./mesa-radv-float8-hack3
  4. Install build dependencies: sudo dnf builddep mesa
  5. Setup build: meson setup build64 --libdir lib64 --prefix $HOME/mesa-fp8
  6. Build/install: ninja -C build64 install

Proton

  1. Download the latest fp8 build: https://github.com/Etaash-mathamsetty/wine-builds/releases/tag/fsr4
  2. Extract it and put it in the folder with the other proton versions: /home/<user>/.steam/steam/compatibilitytools.d (change the user to your own)

OptiScaler

Game settings

In Steam ensure you have the following set (per game):

  • Compatibility: bleeding-edge-local
  • Launch Options: WINEDLLOVERRIDES=dxgi=n,b VK_DRIVER_FILES=/home/<user>/mesa-fp8/share/vulkan/icd.d/radeon_icd.x86_64.json %command% (change the user to your own)

The launch options includes the flag required for OptiScaler to function and specifying the mesa-fp8 build
Hope this helps someone!

Mesa fp8 is required also with an RX 9070XT ? Im using amdvlk, I need also mesa fp8 ?

It's not required, but if you default to the FP16 you will get much worse performance. Good question on AMDVLK, I haven't tried that!

BBananaWorks07 2025-05-02 github

AMDVLK probably won't work and it doesn't have good performance or compatibility anyway compared to radv lol

Iintellq 2025-05-02 github

When my 9070XT arrived I've installed Ubuntu just to test the official AMD driver for linux, that uses amdvlk.

Friends, it's bad. It's really bad. Don't waste your time :)

LLawstorant 2025-05-02 github

Haha Great Success!
Control + FSR4 + OptiFG with Hud Fix 1

Screenshot

Image

Works like a charm, thanks for your hard work! Funny thing is, Control crashes with FSR4 on Windows (from Optiscaler) but works fine on Linux. I honestly think that Linux compatibility layers are better than native windows dlls at this point :P

If anyone is on Arch or arch-based and wants to easily install the fp8 hask mesa, here's the modified mesa-git PKGBUILD: mesa-git-fp8-hack3.zip

Just extract, go into the folder and launch makepkg -sicC

CCryssness 2025-05-02 github

You guys are amazing! Working like a charm even on Assassin's Creed Shadows on Ubisoft Connect (Lutris)

Screenshot

Image

JJEB12345 2025-05-02 github

Made it work on Bazzite following these steps: [#2398 (comment)](https://github.com/HansKristian-Work/vkd3d-proton/issues/2398#issuecomment-2845201173) Compiling mesa was done inside a Fedora 42 distrobox to match the host version I only tried enabling FSR4 in Clair Obscur: Expedition 33, but it works like a charm, even when running inside gamescope !

I did exactly the same thing on Bazzite and tested in Clair Obscur: Expedition 33. Works great and the upscale looks better than FSR3.1.

Image

I have all game post processing settings turned off in the screenshot.
Ignore the nvngx warning at the bottom. I was using an old version of OptiScaler previously and forgot to remove the old ini config file.

AAzyrion 2025-05-02 github

tried out the steps here https://github.com/HansKristian-Work/vkd3d-proton/issues/2398#issuecomment-2845201173 and could make it work in some games now thanks @leeford ! But one thing I still don't understand is why cp2077 still has issues. I'm playing it through heroics launcher but when I put in the like this

Image

it just doesn't want to start at all. And I'm only declaring and not activating the variable there. And yes I did change the /user/ to actual name when I tried it. Through what are you all playing cp2077? Through Lutris? Or are you all playing the steam version?

Games that worked for me (heroic games use same setting that won't work with cp2077):
A Plague tale: Requiem (steam)

Image

Control Ultimate Edition (heroic)

Image

Ghostwire: Tokyo (heroic)

Image

Monster Hunter Wilds (steam, no optiscaler ui but it says it uses fsr4 in game settings)

Image

Valkyrie Elysium (steam)

Image

LLawstorant 2025-05-02 github

I think now that we have this confirmed, we can stop spamming here with screens :D

DDegenerationDX 2025-05-02 github

Excuse my ignorance, but since I've seen several videos on YouTube about a hack to use FSR4 in RNDA3 I've been following this post, could you clarify for me about all the tests I've seen in each of the posts, is it related to this or is it just the FSR4 support in the Linux and Optiscaler drivers?

thank you!

LLawstorant 2025-05-02 github

Works on RDNA3 but the performance is pretty bad. It's early days, it might get better if AMD cooks up something of a "FSR4 lite"

JJEB12345 2025-05-03 github

An update to my post. It seems the game is not stable with this combo of mesa/proton/optiscaler. It freezes anywhere from 5-30 min of game play. I am using stock setting on my 9070xt.

Sshilga 2025-05-03 github

An update to my post. It seems the game is not stable with this combo of mesa/proton/optiscaler. It freezes anywhere from 5-30 min of game play. I am using stock setting on my 9070xt.

I've played several hours without a crash or freeze the last couple of days using FSR4 through Optiscaler. It looks and runs incredible.
Manjaro using 6.15 RC4 kernel. The 6.15 kernel improved stability on it's own with 9070XT.

Lleeford 2025-05-03 github

An update to my post. It seems the game is not stable with this combo of mesa/proton/optiscaler. It freezes anywhere from 5-30 min of game play. I am using stock setting on my 9070xt.

Maybe a Bazzite issue, as played same game for about 4 hours last night with zero issues.

Is the game or the OS freezing?

Aagentgodzilla 2025-05-03 github

Haha Great Success! Control + FSR4 + OptiFG with Hud Fix 1

Screenshot
Works like a charm, thanks for your hard work! Funny thing is, Control crashes with FSR4 on Windows (from Optiscaler) but works fine on Linux. I honestly think that Linux compatibility layers are better than native windows dlls at this point :P

If anyone is on Arch or arch-based and wants to easily install the fp8 hask mesa, here's the modified mesa-git PKGBUILD: mesa-git-fp8-hack3.zip

Just extract, go into the folder and launch makepkg -sicC

This pkgbuild worked for me, thanks for this. Only thing was I had to set VK_DRIVER_FILES var to /usr/share/vulkan/icd.d/radeon_icd.x86_64.json instead of what original tutorial said, might be because I installed with paru instead of provided makepkg command

Also note the proton fsr4 package now has fp8 and fp16 combined, with enabling fp8 with DXIL_SPIRV_CONFIG="wmma_fp8_hack" variable

EDIT: After some reflection the VK_DRIVER_FILES env var probably isn't needed as it's installed as the driver for entire system rather than a random folder in home. Will update post when I can retest

EDiT2: can confirm I didnt need VK_DRIVER_FILES var set

JJEB12345 2025-05-04 github

An update to my post. It seems the game is not stable with this combo of mesa/proton/optiscaler. It freezes anywhere from 5-30 min of game play. I am using stock setting on my 9070xt.

Maybe a Bazzite issue, as played same game for about 4 hours last night with zero issues.

Is the game or the OS freezing?

When it was working, the game freezes and I can tab out to the desktop and force it closed. However, I updated Bazzite and now I can't get Expedition 33 to launch with the modifications to enable FSR4. Expedition 33 gives me a "fatal error" window from UE.

Iintellq 2025-05-04 github

When it was working, the game freezes and I can tab out to the desktop and force it closed. However, I updated Bazzite and now I can't get Expedition 33 to launch with the modifications to enable FSR4. Expedition 33 gives me a "fatal error" window from UE.

I just finished Clair Obscur with FSR4 all the time (4.0.1 version), not a single crash or glitch.

FSR4 already seems stable enough, It would be nice to see these fp8 modifications get to Mesa's main branch

Yyannhodiesne 2025-05-04 github

An update to my post. It seems the game is not stable with this combo of mesa/proton/optiscaler. It freezes anywhere from 5-30 min of game play. I am using stock setting on my 9070xt.

Maybe a Bazzite issue, as played same game for about 4 hours last night with zero issues.
Is the game or the OS freezing?

When it was working, the game freezes and I can tab out to the desktop and force it closed. However, I updated Bazzite and now I can't get Expedition 33 to launch with the modifications to enable FSR4. Expedition 33 gives me a "fatal error" window from UE.

Had the same "Fatal error" on launch, until I noticed the distrobox I used to build mesa was still on Fedora 41 whereas Bazzite hopped on Fedora 42 some time ago
Removing and creating a new distrobox based on Fedora 42, updating all its packages with sudo dnf upgrade --refresh, then building mesa fixed this issue for me

Jjrgiacone 2025-05-04 github

I'll have to check it against windows. Using KDCII, and 4.0.1 amd file, got arch on mainline working with about 1.33ms latency for upscaler, curious how this compares to windows and other games, but honestly so cool that this is working well. shout out to @Lawstorant for the package build. Interestingly enough, probably my CPU but no difference in framerate from performance up to quality, however the optiscaler recognized the upscaling changed multipliers

WWyrmWooer 2025-05-04 github

I did the installation on my fedora and it does seem to work in a few games. I however get this weird topscreen error:
no idea how to solve it, as it seems to only be a problem for LAD infinite wealth, and claire obscure
Image

Sshilga 2025-05-04 github

I did the installation on my fedora and it does seem to work in a few games. I however get this weird topscreen error:
no idea how to solve it, as it seems to only be a problem for LAD infinite wealth, and claire obscure
Image

Did you select DLSS in game as upscaler? I had the same effect while I enabled Optiscaler but XESS was still selected in game.

WWyrmWooer 2025-05-04 github

I did the installation on my fedora and it does seem to work in a few games. I however get this weird topscreen error:
no idea how to solve it, as it seems to only be a problem for LAD infinite wealth, and claire obscure
Image

Did you select DLSS in game as upscaler? I had the same effect while I enabled Optiscaler but XESS was still selected in game.

yep, it was dlss. With xess it's just black screen (no matter what upscale option i choose in optiscaler menu)

JJEB12345 2025-05-05 github

An update to my post. It seems the game is not stable with this combo of mesa/proton/optiscaler. It freezes anywhere from 5-30 min of game play. I am using stock setting on my 9070xt.

Maybe a Bazzite issue, as played same game for about 4 hours last night with zero issues.
Is the game or the OS freezing?

When it was working, the game freezes and I can tab out to the desktop and force it closed. However, I updated Bazzite and now I can't get Expedition 33 to launch with the modifications to enable FSR4. Expedition 33 gives me a "fatal error" window from UE.

Had the same "Fatal error" on launch, until I noticed the distrobox I used to build mesa was still on Fedora 41 whereas Bazzite hopped on Fedora 42 some time ago Removing and creating a new distrobox based on Fedora 42, updating all its packages with sudo dnf upgrade --refresh, then building mesa fixed this issue for me

Finally rebuilt mesa and it seems to have gotten me back to my previous state of COE33 running for about 20 min before it freezes. I am beginning to think it might be something else other than the FSR4 workaround.

I have tried CP2077 and Alan Wake 2. Both work just fine with no crashing issues for at least 30 min of game play. Oddly enough, gamescope works with COE33 and CP2077, but I can't get Alan Wake 2 to load with that pipeline.

Rryzendew 2025-05-06 github

Image

The last of us part II FSR4 works

CCryssness 2025-05-06 github

Tested on Spider Man 2 and Monster Hunter Wilds and FSR 4 works like a charm.

Screenshot

Image

Screenshot

Image

DDekoDX 2025-05-06 github

Large artifacts appear in satisfactory(directx 12 mode) but other than that I see no issues.

HHansKristian-Work maintainer 2025-05-08 github

This is more or less resolved now. We've done what we can for now.