FSR4 on RDNA3 with Proton-CachyOS – env vars, 4.0.0 vs 4.0.2, and where the DLLs are cached

I’m on:

CachyOS, fully updated

RX 7900 XTX (RDNA3)

Using Proton-CachyOS as the compatibility tool for Steam games

Games that already offer FSR 3.1 / FSR4 in-game

CachyOS / Proton-CachyOS add some extra env vars for FSR4:

PROTON_FSR4_UPGRADE – generic FSR4 “upgrade to latest version” flag (aimed at RDNA4)

PROTON_FSR4_RDNA3_UPGRADE – RDNA3 helper that does the same thing, but also applies RDNA3-specific workaround settings and uses a different default DLL (4.0.0).

Official docs + articles basically say:

On RDNA3, use PROTON_FSR4_RDNA3_UPGRADE to enable FSR4, and it will download the library and set the necessary variables automatically.

That part matches what I see.

RDNA3: basic FSR4 enable (FSR 4.0.0)

For RDNA3, this is the simple working config for me:

PROTON_FSR4_RDNA3_UPGRADE=1 PROTON_FSR4_INDICATOR=1 %command%

What it does in practice:

PROTON_FSR4_RDNA3_UPGRADE=1

Downloads an FSR4 DLL,

Enables the RDNA3 WMMA workaround path,

Uses an RDNA3-optimized FSR4 4.0.0 by default (this is explicitly mentioned in Proton-CachyOS’ README).

PROTON_FSR4_INDICATOR=1

Shows the FSR4 watermark in the corner, so you can verify it’s actually active.

Once you’re happy that FSR4 is working, you can remove PROTON_FSR4_INDICATOR=1 if you don’t want the overlay.

This setup lines up with what the CachyOS wiki and third-party guides say for RDNA3: just set PROTON_FSR4_RDNA3_UPGRADE=1.

Where the FSR4 DLLs actually live

After enabling FSR4 on a few games, I checked my files and found:

~/.cache/protonfixes/upscalers
amdxcffx64_v4.0.0_…dll
amdxcffx64_v4.0.2_…dll

Proton-CachyOS release notes say:

Updated PROTON_(DLSS|XESS|FSR4|FSR3)_UPGRADE cache to hold the compressed archives instead of the extracted DLLs. If you want to remove the old files, delete ~/.cache/protonfixes/upscalers directory.

So a few important points:

~/.cache/protonfixes/upscalers/ is a user-wide cache, not per game.

It can hold multiple versions of the FSR4 DLL:

amdxcffx64_v4.0.0_… (FSR 4.0.0)

amdxcffx64_v4.0.2_… (FSR 4.0.2)

Any game using Proton-CachyOS with the FSR4 envs will reuse these cached files when upgrading FSR 3.1 → FSR4.

If something gets messy and you want to “start clean”, you can delete that cache:

rm -rf ~/.cache/protonfixes/upscalers

Next time you run a game with FSR4 enabled, Proton-CachyOS will re-download whatever it needs.

RDNA3 quirk: getting 4.0.2 to actually appear

By default, RDNA3 helper uses 4.0.0, which is the recommended version for RDNA3 in several guides because newer builds tend to be heavier.

If you want to specifically test FSR4 4.0.2 on RDNA3, you can set:

PROTON_FSR4_RDNA3_UPGRADE=4.0.2 PROTON_FSR4_INDICATOR=1 %command%

However, on my system there’s a small gotcha:

When I tried PROTON_FSR4_RDNA3_UPGRADE=4.0.2 without ever having used =1 before,
I didn’t see the 4.0.2 DLL show up in ~/.cache/protonfixes/upscalers, and the game didn’t seem to change.

After I had already run a game once with:

PROTON_FSR4_RDNA3_UPGRADE=1 %command%

(which downloaded the 4.0.0 DLL),
then switching to:

PROTON_FSR4_RDNA3_UPGRADE=4.0.2 %command%

finally produced an amdxcffx64_v4.0.2_…dll file and visible behavior consistent with FSR4 4.0.2.

So in practice on my RDNA3 setup it felt like:

Step 1: run once with PROTON_FSR4_RDNA3_UPGRADE=1 → ensures the basic FSR4 path is set up and 4.0.0 is cached.

Step 2: then switch to PROTON_FSR4_RDNA3_UPGRADE=4.0.2 → 4.0.2 appears in the cache and is used.

I’m not claiming this is “by design” – it might just be a small implementation quirk – but if someone sets =4.0.2 directly and nothing happens, doing one run with =1 first seems to help.

Tiny note for RDNA4 users

For completeness: on RDNA4 the official, documented way is to use the generic env var:

PROTON_FSR4_UPGRADE=1 %command%

This tells Proton-CachyOS to automatically download the latest FSR4 DLL and upgrade FSR 3.1 games to FSR4 on RDNA4 GPUs.

For RDNA3, the recommended path is PROTON_FSR4_RDNA3_UPGRADE as shown above.

Why I’m posting this

There are already a few threads and comments along the lines of:

“PROTON_FSR4_RDNA3_UPGRADE=1 not working”

“PROTON_FSR4_UPGRADE=1 does nothing on my system”

A lot of the confusion seems to come from:

not knowing that the DLLs are cached under ~/.cache/protonfixes/upscalers/, and

not being sure how PROTON_FSR4_RDNA3_UPGRADE behaves on RDNA3 with different values.

So if you’re on RDNA3 and want a quick mental model:

Start with:

PROTON_FSR4_RDNA3_UPGRADE=1 PROTON_FSR4_INDICATOR=1 %command%

to get a stable FSR4 4.0.0 baseline.

If you’re curious, try later:

PROTON_FSR4_RDNA3_UPGRADE=4.0.2 PROTON_FSR4_INDICATOR=1 %command%

and compare image quality / performance, especially if your cache already contains both 4.0.0 and 4.0.2 DLLs.

If any devs or other users see behavior different from this, it would be great to have more data points so the docs can be clarified even further.

Interesting write-up. Thanks!

Thx @furbacca for your detailed explanation! :+1:
It’s helping me in better understanding the functionality of these upscaer-upgrades.
Now S.T.A.L.K.E.R. 2 runs with FSR4 v4.0.2. :smiling_face_with_sunglasses:

I guess the version of fsr4 for rdna3 is the emulated FP8.
though, on windows I use the INT8 version and it generally gives better performances at a very minor quality decrease.
is there a way to use the int8 version instead of emulated FP8 using the proton variable method? (I could do it with optiscaler, but multiplayer games tend to lock me out when I do it)

i made a script to help with all of this

i got fed up with Lutris not passing all my env strings to Steam/Proton and it was a hassle to input all the time or edit Lutris config.

Hi, is this still the case? Does PROTON_FSR4_RDNA3_UPGRADE=1 use the emulated version or not the INT8? Have you found a way how to use the INT8 without need of Optiscaler? Thank you.

EDIT:

I’ve tested two scenarios in one game:

PROTON_FSR4_INDICATOR=1
PROTON_FSR4_RDNA3_UPGRADE=1

MLSR UPSCALE WMMA
BUILD TIME: FEB 6 2025 07:17:42
GIT BRANCH BUILD BY CI GIT COMMIT: D2A4CF94
COLORSCALE: NON-LINIAR
Performance: 87 FPS.

PROTON_FSR4_INDICATOR=1
PROTON_FSR4_RDNA3_UPGRADE=0
Overwrote the amd_fidelityfx_dx12.dll with the compiled INT8 FSR4 version in game folder.

MLSR UPSCALE V07-18
BUILD TIME: SEP 12 2025 22:53:19
GIT BRANCH COMMIT:
COLORSCALE: LINIAR
Performance: 90 FPS.

Is the PROTON_FSR4_RDNA3_UPGRADE actually the emulated FP8? The performance difference seems to be minimal. I’m running 7900 XTX.

Can using FSR4 on RDNA3 damage my hardware?

Well, not directly.
I noticed a significantly higher GPU usage (~60% FSR3, ~99% FSR4) on my 7900GRE. This obviously results in much higher power consumption (140ish W → 220ish W) and higher temps and what not.

So, if your card, powersupply, airflow, cooling can’t handle the higher power demand, load and/or temps there is nothing to worry about.

If not, well throw a dice what dies 1st.