QAM menu refresh rate control not working
Since last update I’m not able to change the refresh rate on my steam deck anymore. FPS lock seems to work but the screen stays locked at 90fps.
Made an ad-hoc video showcasing the issue. This persists through all games. Rebooting or shutting down and booting back up does not solve the issue. Inslag can’t configure the refresh rate in settings.
168 Replies
Rolling back bazzite solved the issue for now
Interestingly; SAGE engine games (Battle for Middle Earth / CnC 3 / Red Alert 3) seem to run with WAY better frametimes while the refresh rate can't be changed. Normally (and when rolled back) the games hitch a lot and become unplayable after a while and should be played through desktop mode for normal performance.
I'm not knowledgeable at all about these systems, but I do think it's really interesting that there's a difference
Might it be some form of issue with the vsync that is linked with the configurable refresh rate instead of having a static refresh rate only?
Is anyone else experiencing this bug on Steam Deck?
not able to reproduce this for most of my titles, but a few flatpaks have this problem
if you can, enable vsync in doom and tell me if the frame limiter works as expected
if it does I'll poke around that
one thing to note, frame limiter is done with a vulkan WSI layer
for opengl apps, it's a patch in Mesa
but flatpak uses it's own copy of mesa which will not have that patch
so that may be what you're experiencing here
Vsync doesn’t change anything. The limiter works fine, it’s just that the screen doesn’t change refresh rate. Normally the screen goes black and comes back at the configured refresh rate. Right now steam gaming mode is having the refresh rate of the deck fixed at 90hz
ok, that I'm definitely not able to reproduce
can you
rpm-ostree status | fpaste
for me?Sure, let me grab my deck and I’ll post the results in a few minutes
https://paste.centos.org/view/546e7d11
hmm
I'm on the same image as you and I'm getting correct behavior
is there any flash at all?
or just..none?
Yeah just none
When I roll back bazzite it works as intended (but manual GPU is broken, no slider appears, this does work in the new version)
So it has to be one of the new packages that causes this. But I really wouldn’t know which one. And seeing it work on your end makes me even more confused
guh
ok, there's another update coming out later tonight hopefully
I'll ping you when that's out and we can re-test
if it still happens, doing this a bunch
and then switching to desktop and doing
sudo dmesg | fpaste
would be helpful potentiallyThanks! Is there a way to roll back to the 240705 version after tonight’s update? Just in case it isn’t fixed
Or should I roll back before updating
rpm-ostree rebase <url>:20240705
or you can roll back and pin
so it's kept
get the url with rpm-ostree status
Idk if it helps but here’s my current sudo dmesg:
Https://paste.centos.org/view/d00d1c86
Https://paste.centos.org/view/0e29ee9f
Still happening after the latest update sadly
Maybe I should wipe the deck and reinstall the OS? Not looking forward to recreating my symlinks so citra keeps working 🤣
if you need to rollback
bazzite-rollback-helper rebase 40-stable-20240705
you can see other available images by doing bazzite-rollback-helper list
If you want to resume regular updates in the future: bazzite-rollback-helper rebase stable
Reinstalled Bazzite, wiped the entire disk. Now stuck at this screen
Wiped disk means I wiped it in the installer to start fresh. First boot did correctly go into desktop mode. Did the portal stuff, logged into steam and this is what rebooting gets me 😅
Okay so I waited an hour before posting this, and OF COURSE something happens right after I post
Weirdly enough I wasn’t able to get into TTY during this screen tho
Okay, after this reinstall the refresh changer IS working!!
Good stuff
How bizarre
Very glad it's working though
Yeah exact same software
Glad as well! Manual gpu clock now also works
And now time to play some Balatro 😁
Would this also be similar to why the slider isn't working on other devices like Legion go and GPD? The slider moves but no changes happen with the frame limiter and refresh rate
I no issues with the slider on the Legion Go
make sure you're up to date
I’ll double check when I get home but the fps limiter did nothing for me last time I checked. Same on GPD win mini
ChimeraOS had an update that should fix the refresh rate slider. It should work once it merges with Bazzite.
what
GitHub
feat(GPD): Add custom refresh rates for GPD Win 4 and Win Max 2 by ...
This enables the unified refresh rate limiter for the GPD Win 4 and WM2
note, i'm still investigating other supported refresh rates for the Win 4, so far it looks like 40,44,45,60 all work on t...
neither of those are the Win Mini
and we got them before chimera
that's our very own Aru asking to merge that
Sorry. I kept thinking the win 4 for some reason. XD
He told me in the GPD Discord that it was applied to Chimera, but was not sure about Bazzite.
He only linked me to the Chimera build.
Soooo I updated again this morning and it stopped working again 😦
And this new; after rollback it still does not work
Rolling back to 20240705 now
Aaaand yeah on 20240705 it works again
Super weird
I don’t understand why the rollback to yesterdays version, which worked, didn’t work now.
I have the same issue on my Oled Deck.
I noticed when I disable the frame limit and lower the refresh rate even of 1Hz, framerate tends to be limited to 45fps.
Yes, same behaviour here. Still super weird that a fresh install works fine until updated and then the latest version to work is 20240705
Still can't reproduce this
I am on today's build
Really bizarre
I’ll update to todays build to check it out. But how would I even figure out what the issue is? It’s like the GameScope session doesn’t recognize the adjustable refresh rate or something
Still broken 😦
I’ll reinstall bazzite again completely and see if it starts working again. Really don’t understand how an update affects things though
Maybe I should try deck as a username ?
Well after a quick rebase to stable it’s now locked to 53fps and 90hz. I’ll do a complete reinstall and try it once more. But I guess I won’t be updating anytime soon if it works
Okay now the installer won’t show the gui, just a black screen 😂 idk man
Ah it was on TTY6
But frozen. Man
I'm not, that can help with decky plugins but gamescope doesn't care
Aight. Well I’m trying to get anaconda to boot correctly right now. It works in non-safe graphics mode but of course the scaling is off then. Otherwise it freezes. Am redownloading the image right now
Also tried flashing with balena instead of using Ventoy but it just throws errors while opening the iso. So hopefully it’s just a corrupt download
Really hope the gamescope bug isn’t an upstream thing affecting specifically 1TB OLED models or something. But can’t imagine why
Am going to try to install without having the deck connected to an external monitor as a next try. Gut feeling it might grab some settings from there to mess up stuff, don’t have evidence at all though. Wish I took more computer classes lol
Okay so the installer does start correctly when the deck is attached to an external monitor
Which is exactly what I don’t want to do right now 😅
Okay after all this trouble I’m on the latest version and it works
Won’t be updating lol
OMG it broke again after rebooting
Until I made a video to prove it. What the hell
GPU clock also got stuck at 200mhz for a bit. But toggling manual gpu solved that
@matt_schwartz
which panel manufacturer are people having issues with? sdc, boe or both? you can check in the Steam system settings under Model/Serial Numbers
im pretty sure its just sdc panels with this issue, my boe oled panel seems to still be fine on my own setup.
without a device in hand or someone who knows how to bisect theres not much i can do here i think
boe and sdc panels have different timings for drm in https://github.com/ValveSoftware/gamescope/blob/37cc4d368b3804215b9b4bb2719a3ac2b64cf2e6/src/modegen.cpp#L279 but these havent changed since launch
GitHub
gamescope/src/modegen.cpp at 37cc4d368b3804215b9b4bb2719a3ac2b64cf2...
SteamOS session compositing window manager. Contribute to ValveSoftware/gamescope development by creating an account on GitHub.
my guess is either a: sdc panels get picked up as boe panels and accidentally get the wrong timings, or b: its a kernel regression thats hardware specific
I'll check the screen manufacturer once I get home
ive found a separate issue on my oled deck but it does not match the behavior (from what i can see at least) of your most recent clip
Where exactly can I see the manufacturer info? I can get a serial number but nothing about model
Model/Serial Numbers button in the gamescope-session System settings menu within steam
Okay I should read better. Was looking at KDE settings
It’s a Samsung display
Issue did come back just now. Didn’t update anything just booted the deck up
So it doesn’t change anymore but gamescope thinks it actually does and starts showing great framepacing ad well, while it of course stutters heavily
Another bug; when having manual gpu clock enabled and then clicking restore defaults it puts the gpu clock on 200mhz
okay you keep changing variables that is making this difficult to pinpoint
in one clip you have frame limiting disabled, in the most recent you dont
https://github.com/ValveSoftware/gamescope/issues/1425 ive found a separate issue specifically with the disable frame limiting option which also matches https://github.com/ValveSoftware/SteamOS/issues/1521
GitHub
"Disable Frame Limiter" toggle only works in gamescope-session if e...
Matches: ValveSoftware/SteamOS#1521 except it happens off of SteamOS as well and I've found some additional breadcrumbs. The "Disable Frame Limiter" toggle on the right side menu of g...
GitHub
Disabling frame rate limit doesn't work in SteamOS 3.6 · Issue #152...
Your system information Steam client version: 1716072097 SteamOS version: 3.6.3 Opted into Steam client beta?: Yes Opted into SteamOS beta?: Yes Have you checked for updates in Settings > System...
so you could be running into different issues here
The refresh rate doesn’t change wether I have disable frame limiter enabled or not
20240705 is the last version where it consequently does work for me. Rolling back always seems to fix it, but even one version up has this issue for me
ive really got no clue then, sorry. cant repro this on my own boe panel unit at all. unified slider seems to always work while the old slider has the issue i just linked, thats it.
Thanks for looking anyway. I also don’t have a clue. Since it worked on this version fine this afternoon and stopped working after a shutdown and cold boot randomly
Guess I’m just going to stick to 20240705 for the time being
Probably something in gamescope detecting wrong hardware or something. Don’t know exactly which packages got updated, but trying to rollback to 20240706 now to see if it actually is that version where it breaks. I’ll let you know in a bit. Maybe that’ll make it a bit easier to look for issues idk. After that I’m sticking to the older version for a bit and hoping it fixes itself in due time
Okay 20240706 does actually still work. Interestingly the manual gpu clock toggle is broken here (but easily managed through powertools)
Going to try 20240707 next. Since I posted the issue on the 10th maybe I actually confused version numbers for when this showed up
Okay officially broken on 20240707
And this version also introduces the bug where reset defaults puts manual gpu clock on 200mhz
If I had to guess it’s probably introduced in one of these gamescope updates
Also might be of interest; I don’t experience the “disable frame limiter” bug as described in the issue thread on this build
Gamescope session =/= Gamescope fwiw
Gamescope and Gamescope-libs are standalone and form the basis of Gamescope-session
Maybe Kyle changed something in -plus or -Steam that could be relevant though, I don’t know
That’s interesting to know, thanks. I just looked at the list of changes and thought these would be the most likely candidates
Anything short of valve sending me an SDC unit or me coughing up the money to buy yet another steam deck oled, there are a couple issues that are out of my hands to deal with tbh. this may unfortunately be one of them unless I find a way to repro on a BOE panel deck
the few things I did were to be 1:1 with valve
Ultimately the software is still based on valves stuff right?
chimera's session is a little off OOTB
even still
yeah, we build gamescope straight from valve's repo on github
gamescope-session has no panel specific differences outside of mura correction
which is called for both panels, just only does something for SDC
Yeah so I’d imagine steamos having the same issue if it gets pushed onto main or something
theoretically, yes
It’s nice to learn a bit more about this stuff. I don’t really want to try multiple os’es to compare the existence of this issue though. Well I would but don’t have the time for it sadly, would be interesting to see if it happens on Nobara and SteamOS as well and on which version of certain software. In an ideal world lol.
I’ll stick to 20240706 for the time being and just try updating weekly or so. I’ll post here when it seems to be fixed permanently (even after reboots).
Maybe QAM related or something, but I’m guessing the QAM stuff for deck is also Valves stuff? I do remember having a broken manual gpu toggle on steamos main channel as well before I switched to Bazzite
yep, GPU toggle is also working for me though, that one is a pretty standard sysfs interface in the kernel
it was broken for a brief moment around the launch of 3.5
so if you're testing older builds that may be what you're seeing
Don’t know which version 20240706 uses when compared to steamos but it’s the same behaviour. Never had the behaviour 20240707 and up gives me on steamos though, where (only when toggle is enabled) resetting to defaults in the QAM forces gpu clock to 200mhz. If you also don’t experience that on the BOE version maybe the bug might be related.
always interesting to be on the newest versions and see what happens
Had the toggle issue on steamos 3.6 though
Was looking at commits around the 5th of July and noticed 3ca09c5. Is that one already implemented in 20240705? I don’t know how to check that out
GitHub
drm: Separate BOE and SDC OLED Deck panel valid refresh rates by ma...
OLED Decks with BOE panels seem to struggle with a few different specific modesets (51hz/55hz/65hz) that SDC panels have no issues with. To work around this, let's make use of Gamescope rec...
this change really shouldn't cause an issue, the if for SDC/BOE was already there
it's just a 2nd array for BOE with a couple less options
You can try pulling the patch I guess, I don’t think anyone ever tries to set those refresh rates anyway so they probably won’t notice the issue
Yeah just figured out it’s already implemented in the still working version. Looking at the commits for July 7th to see if there’s anything interesting there. I see commit 900f62c but can’t really see any connection there either
that one was an addition in the first place
took it out because it was causing a crash on gamescope exit
How would I pull a patch from a current version? If I want to tinker around a bit
but it was meant to fix another gamescope crash
you'd have to build it from the .spec locally
and place in /usr/local/bin
Alright, seems I’ll be studying up on how to do some of this stuff to mess around with it next week then. Would be awesome if I could stumble on whatever caused the issue. Don’t really see anything in the commits for July 7th that makes sense for the issue though, so probably not all that useful 😅
You can also compile and point towards to that binary by launching gamescope-session via TTY with all the launch options for Steam and Gamescope
I think that should work, right?
my Gamescope testing is far more primitive, I just full send it into /usr and then reinstall Gamescope and Gamescope-libs when I’m done testing but that’s not going to go well at all on atomic fedora like bazzite
yup
can be done w/
sudo rpm-ostree usroverlay
at least until you rebootthat should be good enough for Gamescope, I don’t think this issue requires rebooting to test.
switching to desktop or back to game mode is enough for most issues I’ve found
as long as the Gamescope-session ends cleanly
I’ll try some of this out over the next week. Don’t have any experience doing this stuff but learning is doing.
If I’m reading stuff correctly and can assume that if there’s no mention of updates in the commits there hasn’t been any changes to gamescope between version 20240706 and 20240707 then the issue wouldn’t have anything to do with gamescope right? If I’m assuming correctly
in your working build, try
rpm -qa gamescope
and send the output hereGamescope-100.3.14.23-11.bazzite.x86_64
Current stable is 3.14.24
Could be there too
Yeah I’m on the 20240706 build since that’s the last version without issues for me.
Can I update just gamescope without doing anything else to see if it causes the issue?
If you download the RPM from copr you can extract it and copy it in place via usroverlay
Is there a specific one for the bazzite version?
Thanks! Downloaded both the libs and normale rpm files
Okay I copied the files with usroverlay but -qa gamescope still reports the older version.
I’m probably missing something obvious here
Okay yeah when I just type gamescope -? To make it show itself with an invalid option it shows the new version.
So as long as I don’t reboot the new version is used right?
Okay think I did something wrong. In gaming mode the manual gpu toggle is still not working and changing refresh is still working perfectly. Don’t know how I can check the version being used inside of gaming mode.
But if it’s actually using the new version, both the gpu toggle and refresh aren’t linked to gamescope
Are you sure you’re following the same exact process for testing refresh rate changing? ie, if you toggled anything when testing before try toggling it again
gpu slider is probably unrelated to Gamescope regardless
Yeah doing the exact same thing as before
cool, just making sure 👍
Interestingly, even though gpu slider is broken; when enabling it and then pressing reset defaults the gpu clock reverts to 200mhz just as in the newer builds. It doesn’t stick there though
Gotta say though; after a bazzite reinstall things seem to work fine for a bit as well but start breaking after a reboot, so can’t say anything for sure still. But it does seem to show good behaviour
Okay the gpu toggle thing seemed to be a fluke. Everything is doing the exact same thing as on the (for me) functioning build
So this would mean that the newer gamescope version isn’t to blame right? At least the files I’ve changed now
Yoooooo I think I found something
I installed the latest build of gamescope-session-plus from your /bazzite copr and now it stopped working
Can you send me your gamescope logs?
How can I get the logs? Will for sure send them
Will be in your home directory but invisible, .gamescope-stdout.log and .gamescope-cmd.log
.log.old is one previous to your last session, .log is the most recent
These are all my files
Incl old
Okay guys. I think I pinpointed the issue
It’s the Mura compensation
@Sterophonick I am going to poopsenders.com right now
please tell me we have Joshua's address
you are actually fucking kidding me
GitLab
gamescope/gamescope-session · master · evlaV / jupiter-PKGBUILD · G...
Steam Deck (SteamOS 3.x) source code public mirror. 🪞 Sourced from Valve's latest official (main) source packages.
^ this is called in main and in released builds of gamescope rn
ITS THE MURA COMPENSATION THAT LEADS TO THE FUNYN REFRESH RATE THAT DIES???
that would explain why BOE units are unaffected as well
it skips that step
It’s this commit that made me check it out
Because it looked like it forces 45 or 90hz. Which is always 90hz on the deck
I’m actually going to update to stable right now to see if it holds up with a complete non-tinkered system
One of you can report this one, I think they’re done listening to me for deck issues 🐸
Thanks to the relentless mosquitos lol, sleep is impossible so I just kept looking 😂
if that works for you I'll do a build of
:testing
with my latest gamescope-session (just cleaned it up for upstreaming purposes)
and no mura package installed
so those lines do nothingI think the issue is the export steam display refresh line right?
no, that just tells Steam that the range of valid rates is between 45 and 90
absolutely required
just comment the 3 galileo-mura lines above it and let us know if your issue goes away
Well happy accident I suppose. Rebasing to stable right now
I wonder if we have the same number of hardware planes as the steamos kernel right now :thonk: I have to check and see if they upstreamed the extra plane for DCN301
since the mura correction gets added as an additional zpos layer
Yeah they did upstream it https://gitlab.freedesktop.org/agd5f/linux/-/commit/24b9e4c175f485e07551dfdfba160e73f7bfb3c8
GitLab
drm/amd/display: Enable 3 plane for DCN 3.01 (24b9e4c1) · Commits ·...
Steam Deck/Gamescope wants to take advantage of more planes which is possible on VanGogh but was not previously exposed. Cc: Harry Wentland Cc: Melissa Wen Cc: Simon Ser...
The lines aren’t in the file anymore
looks good
But behaviour is the same; mura comp enabled breaks refresh
Disabled works fine
awesome, thank you for finding this
I'll pull the package for now until we figure this out
No problem, I’m happy with this as well, can finally update again 😁
same update that adds that should show that gamescope-session was reverted
that's just because I cleaned up the git history
so it's on a lower commit number now
easier to upstream ~20 commits than 50+
Alright, so if I understand correctly; now mura comp is disabled by default instead of enabled?
package is missing so it won't run anything
so, no mura comp
zero change to gamescope-session
Awesome
So I’m golden now
Removed the package but the behaviour does not change.
Lol okay even more interesting;
With the package removed and mura compensation enabled, the blacks are raised so the oled screen does NOT turn off.
Disabling mura compensation in developer options also fixes this
Let me shoot another video
Okay video proved to be to difficult for the way discord records. Here’s a photo of mura enabled without the package
how'd you remove the package?
I used this command
can't remove a package we include in the image
when testing is built (there's some churn rn)
you can update to it to do a real test
And photo with mura disabled in developer settings
Hard to capture on camera but easy to see in real life. Oh well, at least the fix is known now
Ah okay so probably had raised blacks all along then but didn’t notice it because I played in daytime
yeah, mura correction was broken at OLED launch
shout out to valve yet again
they fixed it recently, evidently broke it a different way
Lol I’ve been playing with raised blacks all this time then
And I claim to be a die-hard OLED fan
Go figure
it's wonderful hardware, easily the best display on a handheld still
but man am I glad I got the BOE
even if it has 2 less valid refresh rates than yours
😆
I thought CEMU was bugged when I played in 16:9 and the bars weren’t completely black. But now I realize it’s this issue
It’s so dumb it’s funny lol
Eh the LE isn’t for sale in the Netherlands. I think it never has been
I’ll make do with the slightly grainy Samsung display 😝
It’s actually on par with the Nintendo switch OLED on that front. But way more uniform
I feel bad for the OLED owners who don’t yet know about this and are playing with broken refreshes and raised blacks. But I feel happy for me. I can stop tinkering and just play 🥳. Think I’ll take a well earned nap first though
Are you sure the package hasn’t been removed? I’m getting this message when running ujust update
yep
Or does this just mean the override has been overridden
old rpm-ostree funny business
Googling this stuff has been a blast tho
Late reply, had a few busy weeks. But can confirm everything works fine now, with the added bonus of no raised blacks 🙂