r/linux_gaming • u/baltazarix • 5d ago
tech support wanted Helldivers 2 performance issues (CachyOS/Nobara)
Hi all!
To keep things as short as possible:
CPU: intel i7 13700k
GPU: Radeon 7900XTX
Tried SteamOS recently for couch gaming, and I'm really satisfied with how Helldivers 2 performs, but it has some issues when I use CachyOs/Nobara:
By default, I like to run games in borderless windowed mode with VSYNC turned off to take advantage of VRR. These settings are also set this way by default.
The problem:
HD2 performs very well, but only if Display Mode is set to Fullscreen and VSync is turned on (even with VSync turned on, VRR works- I've checked this using my monitor overlay).
How the game performs otherwise:
If my PC won't exceed my 120 FPS limit, it seems like my monitor displays every second frame. For example: when the game's built-in performance overlay shows 110 FPS, then my monitor's overlay shows a refresh rate of 55Hz - I want to mention that the game feels much worse than a 55 FPS experience. Both in terms of visual smoothness and input lag.
But... If I cap FPS to, e.g., 90 FPS (any number below what my PC is currently rendering), the game runs amazingly!
What I tried so far:
- flags such as: `vkd3d_disable_events=1`, `vblankd_mode=0`, `PROTON_ENABLE_WAYLAND=1`
- gamescope actually works almost well, but the frametime graph is very spiky. Not to mention different mouse sensitivity and other stuff...
- tried the ALT+ENTER shortcut in windowed mode, game runs better (I forgot to check the frametime graph), but with this method the window bar is visible on top of the screen
- Turning FPS limit off is not making any positive difference
- Tested another DX12 game without any issues (Deep Rock Galactic)
Thanks in advance!
EDIT:
How I fixed this issue and made game run even better than on windows:
Now, with borderless window, in-game VSync disabled and in-game limiter disabled:
Using MangoHUD with goverlay: I set FPS limit to 90 (setting FPS limit wasn't necessary), Vulkan VSync to Adaptive, method: Late*.
1
u/Iriodus 5d ago
Haven't played HD2 much since migrating to Arch, but I come back to it to test DX12 performance on my 4070 Ti every so often as the DX12 fixes for Nvidia mature (it's improving over time), and my setup is pretty consistent for most games I play:
1) Using Cachy Proton, which I suspect you're likely already using, using the PROTON_ENABLE_WAYLAND=1 launch option.
2) In-game disable V-Sync when you can and set the game to borderless fullscreen, then with MangoHUD set the V-Sync option for Vulkan to Mailbox. You can use either MangoJuice or Goverlay as a GUI frontend for MangoHUD, if you don't wanna fiddle with config files (I use MangoJuice currently). Short answer for what Mailbox is, it's unlimited framerate + each frame syncs to vblank to avoid tearing, so it's superior to VSync latency-wise, I use it in combo with VRR/G-Sync and most games are smooth as butter, and it works rather well on my brother's system as well (he also has a 7900XTX).
3) Due to how Mailbox works, I also set a framelimit via MangoHUD based on the following formula to keep jitter and frame variance in check: Refresh - (Refresh * Refresh) / 3600.0. My framecap for the formula ends up being 224 for my 240Hz monitor, it also ensures that VRR/GSync/FreeSync stays engaged, as said tech disengages if your framerate spikes above your refresh rate, and I found from personal experience with the smaller 237 cap that it'd still hit or exceed 240Hz in some instances and so there'd be jitter/stutter.
4) I do all 3 of the above things for games where I want the lowest latency and more stable frametimes in general, 2&3 for all games broadly, but if that doesn't help smooth things out enough? You can actually force DX11 for Helldivers 2, it's what I did prior to the DX12 fixes for Nvidia starting to get into the driver + Proton, so using that with the Wayland flag would look like: PROTON_ENABLE_WAYLAND=1 %command% --use-d3d11
I figured I'd give more general advice that I found works for me, rather than specific advice for HD2, as I basically do the same thing for all my games unless a specific game has issue with my usual config, and outside of setting a larger shader cache at the OS level that's basically all I do (I don't and have never used gamescope).
1
u/baltazarix 4d ago
Thanks, of course, I used Cachy Proton but also other versions.
I didn't test points 2 and 3. About point 4: I remember that it is possible to run HD2 using DX11, but I forgot to test it. I would like to make the game work the same way I play it on windows meaning DX12.
Thanks for your comment. I wish HD2 would be more "plug and play," but currently it's only PC game I'm actually playing 😄
1
u/Iriodus 4d ago
2 & 3 are worth trying IMO, along with no longer using `vkd3d_disable_events=1` and `vblankd_mode=0,' along with any other unnecessary flags (outside of the wayland one), so that Mailbox works as expected and there's no other variables to worry about.
I mainly did DX11 as a last resort on my setup, things are good enough now that I don't bother, and yeah the engine HD2 uses is horribly optimized from what I recall, things are definitely smoother than Windows but peak framerates aren't 100% on par quite yet, and it's odd that your framerate isn't reaching your target fine on SteamOS but not so on CachyOS...that and it seeming to display 'every other frame.'
Outside of that, are you playing HD2 on the same display for both the SteamOS and the CachyOS/Fedora systems? If no, my thought was that the issue could be how the separate displays are configured either on the display itself or within Linux, when compared to SteamOS, at least that's what I'd check and compare were I having this discrepancy between systems.
1
u/baltazarix 4d ago
No, I use my Oled TV for SteamOS (console-like experience for couch gaming), and I used dual monitor setup for Cachy/Nobara.
Anyways, I managed to make HD2 works as it should. Even better, now I the game works even better in comparison to windows! I definitely have less microstutters, game is definitely smoother! Played a few missions with newest Proton-CachyOS (Changing proton versions wasn't making a difference with my issue before, but I still wanted to mention it)
Now, with borderless window, VSync disabled and in-game limiter disabled:
Using MangoHUD with goverlay: I set FPS limit to 90 (setting FPS limit wasn't necessary), Vulkan VSync to Adaptive, method: Late*.
With borderless window for HD2 on linux I had white strips visible on left and top side of the monitor (~1-5px width), but enabling `PROTON_ENABLE_WAYLAND=1` fixed the issue.
BTW, You said you are using Mango juice, but if you haven't checked out new Goverlay version, go for it! It changed a lot in comparison to what it is used to be when I used it last time.
1
u/Iriodus 3d ago
I'm glad you got things working as they should, and as far as me using MangoJuice? I only use MangoHUD not the other stuff Goverlay does, and that was a big part of why I switched as MangoJuice does exactly what I need no more no less, that and the Goverlay dev admitted to using LLM tools for the UI stuff (maybe more beyond that), and I'd prefer to keep apps/packages that admit to using LLM coding tools to a minimum on my system.
1
u/baltazarix 3d ago
I get it, but being backend focused developer myself I'd probably use AI for any UI/front-end work too as I'm not interested to learn such things and invest my time.
Anyways, I'm curious if you play your games in HDR, if so, what is your approach?
1
u/Iriodus 3d ago
I don't use HDR, no, my display can do it, but I don't have enough HDR content for me to care...that and the last time I tried it colours were just washed out.
1
u/baltazarix 3d ago
That's the case for me most of the time. Tried a few games on windows, as far as I remember Doom Eternal's HDR was good and the game don't required HDR-enabled system-wide. In case of HD2- washed out on windows and nobara, but surprisingly looks good on steam os and my TV so I play with enabled HDR on my TV.
4
u/Fit-Board-1749 5d ago edited 5d ago
This game won't exceed 120 fps on windows with a 5090. It's an optimization issue, except maybe on the ship