• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

Trying to make CP2077 hit 165fps.

ChadD

Supreme [H]ardness
Joined
Feb 8, 2016
Messages
7,542
Just a silly post thought I would share my last few days dumb testing.
I have been trying to get CP2077 to average my monitor refresh (165hz) without dropping any GFX settings from the base I'm starting with.
To be realistic FSR3 Balanced and FG.
3600x 5700xt.... getting a little long in the tooth. Trying to squeeze out the frames is probably more fun then just buying some new parts. lol
I haven't touched any graphics settings since my first testing to see how high I get things and still be in a range of hitting my target with tweaks. I set my graphics settings to a point where things I think still look pretty good but still have a legit shot to hit 165 average fps. I have been tweaking DXVK/MESA settings and testing various kernels and kernel flags.
I settled on 2560x1440 High Textures. Graphic settings a mix of high and medium a couple with higher performance impact set to low.

First run base... standard CachyOS bore, no tweaks on my end. Pretty standard Heroic launcher install of CP77 from GOG.
Texture High / custom mix high-medium 2560x1440 FSR 3.1 Balanced FG
Average 138.98
Min FPS 109.43
Max FPS 186.60

Tuning of Environment variables; ones that have seemed to improve performance on my setup.
MESA_VK_ENABLE_SUBMIT_THREAD=1
RADV_PERFTEST=nircache
RADV_PERFTEST=localbos
RADV_PERFTEST=sam [the sam force may be a placebo on my part... it should be on by default]

BORE compiled kernel
Texture High / custom mix high-medium 2560x1440 FSR 3.1 Balanced FG
Average 150.85
Min 126.52
Max 182.04

LAVD scheduler basic --performance toggle. [after a lot of tweaking actually not super happy with performance of LAVD at least with CP]
scx_lavd --performance
Texture High / custom mix high-medium 2560x1440 FSR 3.1 Balanced FG
Average 142.19
Min FPS 110.85
Max FPS 185.30

scx_rusty [after multiple tests of tweaks to rusty so far not finding much extra performance]
Texture High / custom mix high-medium 2560x1440 FSR 3.1 Balanced FG
Average 146.93
Min FPS 112.19
Max FPS 183.86

A pick 2 load balancing scheduler aimed at server workloads that doesn't get a lot of attention. Surprisingly nice 1% low numbers overall a nice option for games you want to smooth out. For anyone with more complicated CPUs this one might not be as good... its a simpler scheduler.
scx_p2dq
Texture High / custom mix high-medium 2560x1440 FSR 3.1 Balanced FG
Average 147.06
Min FPS 117.69
Max FPS 183.84

[-r enable direct sched CPU freq control, Enable tasks to run beyond their timeslice, Scheduling min slice duration set to 10ms from 100ms default any lower regresses performance]
scx_p2dq -r 0 --keep-running --min-slice-us 10
Texture High / custom mix high-medium 2560x1440 FSR 3.1 Balanced FG
Average 148.57
Min FPS 119.26
Max FPS 185.44

scx_p2dq --disable-kthreads-local
Average 151.89
Min FPS 120.44
Max FPS 187.49

scx_p2dq --dsq-shift 128
Average 153.68
Min FPS 124.21
Max FPS 188.98

scx_p2dq --init-dsq-index 1
Average 154.71
Min FPS 124.44
Max FPS 189.65

Current Environment Variables BORE-LTO [so far my best result. Still about 10fps short. Probably going to have to bite the bullet and find a graphic setting to drop one notch. Going to see what more I can tweak first maybe see if I can't at least get another frame or two before I go that route.] Screen shot is this config.
Average 155.97
Min 129.39
Max 188.04
 

Attachments

  • Screenshot_20250626_032548_Bore_lto_launcharg.png
    Screenshot_20250626_032548_Bore_lto_launcharg.png
    1.7 MB · Views: 0
Are you using proton-cachyos? Also, could you test the same with the following environment variables?

PROTON_ENABLE_WAYLAND=1 #for testing with Wayland
PROTON_ENABLE_HDR=1 #only needed if you want to test HDR when Wayland is enabled
 
Are you using proton-cachyos? Also, could you test the same with the following environment variables?

PROTON_ENABLE_WAYLAND=1 #for testing with Wayland
PROTON_ENABLE_HDR=1 #only needed if you want to test HDR when Wayland is enabled
Yes using cachy proton.
I am on Wayland yes. Not using HDR though, although I guess I could force it might have to use game scope though I think. Right now trying to find a bit more frames.
I got P2DQ up to 157.39 with a ton of tuning.... its not as consistent as bore though. Over 3 runs I got a slightly lower 157 and then the run in the middle was 155... probably just some oddness.
Going to go back to Bore, and start tweaking some mesa Settings. I am oh so close to that 165 now though, fighting the urge to just go into the settings and turn volumetric fog down a step. lol
 

Attachments

  • Screenshot_20250626_123030_p2dq.png
    Screenshot_20250626_123030_p2dq.png
    1.5 MB · Views: 0
You don't need gamescope for HDR. It'll work with the environment variable I provided.
 
  • Like
Reactions: ChadD
like this
You don't need gamescope for HDR. It'll work with the environment variable I provided.
Well I wasn't able to get HDR to enable with the proton flags.
I was able to enable HDR via gamescope.
For sure some loss in performacne that I would assume is 100% gamescope as I lost about the same performance earlier today testing gamescope without HDR.
For what its worth same game settings. Gamescope on full res with mouse capture (won't launch without it) and HDR enableed HDR10 PQ mode.
Average 144.46
Min 120.68
Max 173.41
 
Alright after a day of running tests. (I was doing other things all day honest) I think I maxed it out there.
156-157 average seems to be about the max. Any other things I tried to goose either regressed what I gained or was margin of Error. I can force P2DQ to basically match Bore compiled LTO. With a string of odd settings that probably won't translate to anything but the 3600x. It was fun though tweaking slice timings and finding the best possible numbers.

After all the messing around trying to preserve my settings were I had them... I set
Max Dynamic Details down to medium (had it at high)
Local Shadow Mesh down to medium
Local Shadow Quality down to medium

Bore-LTO
Average 163.76
Min 137.15
Max 194.70

AND I'm done.
2560x1440 FSR 3 Balanced Frame Gen High textures. Begrudgingly reduced some more stuff to Medium settings (didn't have to drop anything low or disable contact shadows or the facial geometry settings at least)
Scheduler P2DQ (tuned for 3600x)
scx_p2dq --dsq-shift 128 --init-dsq-index 1 --min-slice-us 10 --dumb-queues 2 --autoslice --interactive-ratio 90 --dispatch-lb-busy 10
Environment Variables;
RADV_PERFTEST=Sam,localbos,nircache MESA_VK_ENABLE_SUBMIT_THREAD=1 RADV_FORCE_VRS=2x2 MESA_VK_WSI_PRESENT_MODE=fifo
Average 165.93
Min 137.11
Max 196.79

I'll stop driving myself crazy now. Until the next batch of scheduler updates I guess then I'll probably try again to get to 165 with a few more things flipped to high.
 

Attachments

  • Screenshot_20250626_180150_p2dq_165.png
    Screenshot_20250626_180150_p2dq_165.png
    1.5 MB · Views: 0
I forgot to mention that HDR works with mesa-git (25.2.x) & proton-cachyos or proton-ge-custom.
 
  • Like
Reactions: ChadD
like this
Well after more tinkering then is healthy. These are my final settings... and I really don't think I could do anything more on my end. Unless some new add to MESA/RADV or Proton comes along anyway.

Average 166.70
Min 140.72
Max 197.41

scx_p2dq --dsq-shift 53 --init-dsq-index 1 --min-slice-us 7 --dumb-queues 2 --autoslice --interactive-ratio 83 --dispatch-lb-busy 13

The advantage to these settings... is I am pretty sure my CPU is being FULLY utilized by CP.
The disadvantage.... not only will it not let background processes suck horsepower, it will starve them.
As an example with these settings, it will shave a good 20% off your shader compile time when Steam re compile. However if you try and tab away your machine will be a slide show. BUT I did squeeze out a couple more FPS. haha
 

Attachments

  • Screenshot_20250628_024406_P2Dq_167.png
    Screenshot_20250628_024406_P2Dq_167.png
    1.5 MB · Views: 0
1200p (16:10) FTW, a great compromise between 1080p and 1440p (16:9). The extra screen height comes in handy considering I also use this PC for work, and I'm running 2 x identical 1200p displays.

Here's my results on an RTX 4070S running virtually all settings maxed out as well as full path based ray tracing with DLSS 4 (Performance) and Frame Gen enabled. No tweaks to the OS whatsoever. Very interesting considering we're both running 6C/12T processors:

CP2077 Wayland benchmark.jpg
 
Did you uninstall the 3 different big booba mods?

Sorry, just wanted to let you know I'm reading thru this with interest?
 
  • Like
Reactions: ChadD
like this
1200p (16:10) FTW, a great compromise between 1080p and 1440p (16:9). The extra screen height comes in handy considering I also use this PC for work, and I'm running 2 x identical 1200p displays.

Here's my results on an RTX 4070S running virtually all settings maxed out as well as full path based ray tracing with DLSS 4 (Performance) and Frame Gen enabled. No tweaks to the OS whatsoever. Very interesting considering we're both running 6C/12T processors:

View attachment 739735
Give my P2DQ settings a go and see if your numbers look any different at all... and if the loss of multi tasking performance isn't too painful. Nice thing about sched_ext is you can flip it on and off in userspace. No reboots no kernel rebuilds. Just flip it on game then flip it off.
 
Give my P2DQ settings a go and see if your numbers look any different at all... and if the loss of multi tasking performance isn't too painful. Nice thing about sched_ext is you can flip it on and off in userspace. No reboots no kernel rebuilds. Just flip it on game then flip it off.

Your gonna have to tell me how to do this like I'm 12. Once on, how do I flip it off? ;)

I'm running KDE Neon 6.4.1, kernel 6.11.0-29-generic.
 
Last edited:
Your gonna have to tell me how to do this like I'm 12. Once on, how do I flip it off? ;)

I'm running KDE Neon 6.4.1, kernel 6.11.0-29-generic.
Cachys kernel is already compiled with sched-ext support.
https://wiki.cachyos.org/configuration/sched-ext/

Your kernel needs to be compiled with sched-ext. I am not sure if the generic Ubuntu kernel is or isn't these days. I would assume its not.

https://ubuntu.com/blog/crafting-new-linux-schedulers-with-sched-ext-rust-and-ubuntu
This Ubuntu blog has a link to a PPA with a SCX ubuntu kernel... I have no idea if that is current or maintained. Check it out. Alternatively you could compile your kernel with SCX support.

The schedulers are tunable, and also experimental. That is part of the fun though you can turn them on and off with out swapping kernels or even rebooting. So you can flip one on and tweak settings. Want a super responsive setup you can drop the thread time slice on most of them, want to let things that start get all the horsepower and not share you can increase slice time. Tons of potential tweaks. I don't think people are going to be crazy like me and test minuet settings changes. But you can. :) I can also see that some of these would be nice if you swap what your doing on your machine a lot. You can favor server workloads one second and click boom your in CPU hog game mode, or to settings aimed at low power use. The default Linux EEVDF scheduler is really good, and BORE is basically EEVDF with a burst director. The scx schedulers though are all very interesting, and getting updates constantly. LAVD is very promising for non homologous CPUs like the Ryzen x3d stuff. A few of the projects are good at being core aware. I know EEVDF is pretty good with things like the dual CCD x3d chips, good enough that disabeling threads doesn't make much sense. LAVD could potentially make that even better, as it can hyper favor the CCD with cache and relegate non interactive workloads to the other CCD completely.
https://github.com/sched-ext/scx/releases
 
Cachys kernel is already compiled with sched-ext support.
https://wiki.cachyos.org/configuration/sched-ext/

Your kernel needs to be compiled with sched-ext. I am not sure if the generic Ubuntu kernel is or isn't these days. I would assume its not.

https://ubuntu.com/blog/crafting-new-linux-schedulers-with-sched-ext-rust-and-ubuntu
This Ubuntu blog has a link to a PPA with a SCX ubuntu kernel... I have no idea if that is current or maintained. Check it out. Alternatively you could compile your kernel with SCX support.

The schedulers are tunable, and also experimental. That is part of the fun though you can turn them on and off with out swapping kernels or even rebooting. So you can flip one on and tweak settings. Want a super responsive setup you can drop the thread time slice on most of them, want to let things that start get all the horsepower and not share you can increase slice time. Tons of potential tweaks. I don't think people are going to be crazy like me and test minuet settings changes. But you can. :) I can also see that some of these would be nice if you swap what your doing on your machine a lot. You can favor server workloads one second and click boom your in CPU hog game mode, or to settings aimed at low power use. The default Linux EEVDF scheduler is really good, and BORE is basically EEVDF with a burst director. The scx schedulers though are all very interesting, and getting updates constantly. LAVD is very promising for non homologous CPUs like the Ryzen x3d stuff. A few of the projects are good at being core aware. I know EEVDF is pretty good with things like the dual CCD x3d chips, good enough that disabeling threads doesn't make much sense. LAVD could potentially make that even better, as it can hyper favor the CCD with cache and relegate non interactive workloads to the other CCD completely.
https://github.com/sched-ext/scx/releases
I think I'll give it a miss, performance is more than adequate as it is. Very interesting however..
 
Back
Top