Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.
Admin message
Equinix is shutting down its operations with us on April 30, 2025. They have graciously supported us for almost 5 years, but all good things come to an end.
Given the time frame, it's going to be hard to make a smooth transition of the cluster to somewhere else (TBD). Please expect in the next months some hiccups in the service and probably at least a full week of downtime to transfer gitlab to a different place.
All help is appreciated.
Samsung Q70A TV blanks for a moment when switching vrr on and off
This issue hasn't had any activity since 2022-10-11. The AMD driver stack changes rapidly and contains lots of shared code across products so it's possible that it has already been fixed. Please upgrade to a current stable kernel and userspace stack and try again. If you still experience this issue with the latest driver stack, please capture relevant logging and open a new issue referring back to this one.
To add some information that I just noticed while testing it again, the TV only puts "FreeSync" next to the display mode description while the VRR_ENABLED property is set to 1. So this is effectively the same issue as intel#7542, amdgpu just doesn't require the ALLOW_MODESET flag to be set to switch between the modes.
With DisplayPort, this is dealt with by always enabling VRR, and only allowing the refresh rate to change when the property is set to 1. I think the same should be done with FreeSync over HDMI
@Zamundaaa Is enabling VRR from KDE display settings enough to trigger the blanking on the specified Samsung monitor ? I assume you're testing on wayland?
Is it repro'ing with just the Samsung monitor connector or do you need multiple monitors connected ?
Switching the setting between Never and Always on Wayland is enough, yes. Or set it to Automatic, then KWin sets VRR_ENABLED to 1 when there's only one fullscreen app visible, and to 0 otherwise.
I've had this happen with only the TV connected, and with another monitor connected too.
Lately on kernel 6.5.9 it's also blanking for me whenever VRR is disabled completely (adaptive sync setting Never), it only works correctly when I leave it always on. I haven't had time to debug that or test other kernels yet but it might be related.
Thanks Xaver. I can repro the issue on RX6xxx series. Its not seen on RX7xxx series.
@Lawstorant, switching vrr on/off wouldn't trigger an MCLK switch. Which issue are you referring to ?
EDIT
Not seeing blanking on RX7xxx series was because we didnt not get any commit that toggles VRR from userspace, so that part mentioned above can be ignored.
@aaurabin There's an issue where MCLK management is not working correctly for resolutions/refresh rates which have their vblank too short for a MCLK switch. It causes intermittent blanking and flicker. Basically, MCLK should be fixed with 4K @ 120 Hz, but it isn't. See #2967, #2966
For me, just toggling VRR in settigs is not enough as mutter is not actually entering VRR mode.
You need a fullscreen application for it to toggle VRR mode and that's when it blanks for a second. Same thing happens when mutter disables VRR after closing fullscreen application. Tv blanks and then reports no Freesync signal.
This always happens, regardless of monitor configuration.
I think, one possible solution would be always sending VRR signal to the sink (like it's done with DisplayPort). No need for a mode change (even if such mode change shouldn't happen to only trigger vrr/freesync)
Enabling Adaptive Sync by switching from Never > Always causes the TV display to go blank (black) for the mode switch. Same with Always > Never.
With Never > Automatic, then when starting/stopping a game on the TV display, the display also goes blank for the mode switch.
Bonus: Also with kernels 6.6 and 6.5.9+, with Adaptive Sync set to Automatic, when exiting a game, the TV display does not restore correctly to the desktop (mode switch without VRR active), instead the TV displays shows Mode Not Supported and starts to switch between going blank / Mode Not Supported.
Driver is working as expected (sending infoframe, vrr enabling sequence, etc) and the limitation of sink device requires it to blank during toggling of VRR. Since this is a issue with the sink (monitor specific), there isnt anything we can do on driver side to fix the blanking. The same behavior is seen on Windows driver as well.
You can fix that in the driver by doing the same thing amdgpu already does for DisplayPort: The VRR_ENABLED property should not decide the mode on the wire, that should always have VRR enabled. All the property should do is to change the refresh rate behavior.
@Zamundaaa We do not do any special mode handling for DP Freesync vs HDMI Freesync.
The part that is different is how we enable Freesync on these two protocols. DP spec mandates that VRR transition should be seamless. This is done by setting an "Ignore MSA" bit.
For HDMI, since this is not part of the spec, we parse the freesync capability (only parsing in DMCUB) and sends an "Info Packet" that asks to enable freesync to the HDMI sink. There is no timing change involved.
At this point, its up to the sink to do what it needs to enable VRR. VRR transition commits are not a full modeset on amdgpu, whether DP or HDMI.
sorry, I assumed this was the same situation as with Intel's initial VRR implementation. Would the workaround still be feasible though? Leaving FreeSync always enabled and "simulating" full refresh rate in the kernel when VRR_ENABLED is zero?
For Plasma 6 it should be relatively easy to implement this in KWin instead of the kernel too, but I'm not sure about other compositors.
Leaving Freesync enabled by default just for HDMI would be a policy change. According to LDD book, kernel should refrain from forcing a policy - it should just provide the mechanism and let userspace decide the policy. So I think it makes sense to do this in Plasma.
But there might be some caveats. For example, Xorg does not support Freesync on multiple displays, and probably never will.
fair enough. There's one more important detail about this though: If changing the property is likely to cause artifacts like the display blanking, the driver is supposed to require ALLOW_MODESET flag for atomic commits that do this, which is something that doesn't work with existing compositors (including KWin 5.27 and current git master)
I agree, we should make VRR transitions on HDMI require ALLOW_MODESET since this is a shortcoming in the spec. Sad part is, most of the HDMI display are okay without requiring a full modeset.
Do you think this would break the freesync functionality for a lot of people? Doing the right thing as per API contract here is going make some people upset I'm afraid.
I can't really judge how many are using FreeSync over HDMI, but I think it would be fine to wait a bit with doing the right thing, until compositors can handle this situation better. I should be able to get it in for Plasma 6 (to be released in February) and maybe backport a patch to 5.27 that simply allows modesets for VRR_ENABLED changes. Idk about wlroots though... @emersion what do you think?
It's unfortunate that VRR changes will needlessly require ALLOW_MODESET. Another way would be to have a list of "bad" screens in the kernel and only force ALLOW_MODESET for these.
Sway should handle this just fine at the moment, because we only switch VRR during modesets. However, there are use-cases for toggling VRR on-demand, e.g. when fullscreening a game. Doing a modeset there is a no-go.
Thanks for your suggestion @emersion - It appears to be the least invasive option for end users. Either way, we'll need plasma to be able to handle VRR transition with and without ALLOW_MODESET. So we'll wait for plasma 6 compatibility for now. We'll look into it when its ready.
@Zamundaaa Hey, I got your point and sorry for pushing. Yes, I think striving to be compliant is the way to go, especially when there could be other avenues of circumventing these issues. I'm already proposing a solution to the gnome developers (copying VRR behavior from Windows/Consoles). VRR Always enabled with framerate pegged to max when there's no fullscreen actor to determine the variable part. This would mean the driver could be fully compliant and we wouldn't ever have issues with blanking etc. as the driver would not be triggerd to do any sort of changes.
Seems to be the best way to handle this
Just to make sure. On laptops, PSR isn't affected by Freesync being turned on? Fixed MCLK is basically only determined by the size of vblank with the highest refresh rate, so if it's maxed out without VRR, it will be with VRR as well (confirmed by my tests).
Regarding my "Mode Not Supported" issue above, with firmware files and patch from #2466 (comment 2158528) the issue is gone, VRR set to automatic works as intended.
I have tried with the kernel compiled from linux-6.6.y and applying the patch and updated firmware files. Also with just the kernel from 6.6.y, no patch and updated firmware files.
With kernels 6.5.8 and 6.5.10 with the updated firmware the issue is still present.
Still randomly seeing "Mode Not Supported" or TV blanking, even with the patched kernel and newer firmware files. Unfortunately I cannot reliably reproduce it, so it seems like a race condition maybe.
I am using the "Automatic" setting for Adaptive Sync in Display Settings and for example with Steam Big Picture mode, start a game, TV goes blank to enable VRR, play, exit game, sometimes getting TV blanking and then "Mode not supported" on TV.
This happens even when /sys/class/drm/card0/device/power_dpm_force_performance_level is set to HIGH and and MEM freq is at max.
Update: Only happens when running TV with 4k @ 120Hz.
Do you have the logs when this happens? Can you confirm whether the TV is going back to Game mode when exiting game and back to desktop ? Its possible that TV goes back to regular mode, and that does not support YUV420 mode, which is required for 4k120.
Nothing logged in kernel log during this. If you mean drm debug logs, which kernel params please?
With 4K @ 120, VRR Automatic, enabling VRR works but then when closing a game, the TV goes into blanking and keeps doing that until I either turn it off or change resolution for it. Or it goes a few cycles and then shows "Mode not supported".
Regarding game mode on the TV that is always ON, configured in TV settings.