Smithay / smithay

A smithy for rusty wayland compositors
MIT License
1.76k stars 152 forks source link

`DrmDevice::new` with disable_connectors = true causes vrr_capable property to get stuck at 0 #1368

Open YaLTeR opened 4 months ago

YaLTeR commented 4 months ago

Still unclear if this is an AMDGPU issue or Smithay issue or what. I have a Lenovo Legion 7 Gen 7 AMD with FreeSync Premium that is supposed to work on the internal display. The vrr_capable property is 1 on:

However, if a Smithay DrmDevice is created with disable_connectors = true, then the vrr_capable property for the internal display connector resets to 0 and never comes back to 1. This situation remains consistent across VT switches back and forth, and also if starting sway with eDP disabled and enabling afterwards.

I also have a HDMI screen plugged in which always has vrr_capable = 1, and another DP screen which always has vrr_capable = 0. It's just the internal laptop panel on eDP which has this problem.

drm_info of sway and niri, the only difference seems to be the vrr_capable property value on the internal connector:

DRM debug dmesg of starting niri with disable_connectors = false (vrr_capable = 1) and disable_connectors = true (vrr_capable = 0):

The EDID from /sys/class/drm/ is the same between vrr_capable 0 and 1 starts.

Fedora 39, kernel-6.7.9-200.fc39.x86_64, mesa-dri-drivers-23.3.6-1.fc39.x86_64

YaLTeR commented 4 months ago

Just noticed that sleep-resume while niri is running switches the vrr_capable property to 1. And a subsequent VT switch back and forth brings the property back to 0 (I guess due to the call to reset_state()).

YaLTeR commented 4 months ago

It's also possible to switch VRR on in sway and switch VT back to niri, which results in a combination of vrr_capable = 0 and VRR_ENABLED = 1. Unfortunately, on this laptop screen it doesn't seem to do anything (and neither it does in sway).

YaLTeR commented 3 months ago

Some new developments (Fedora 40, kernel-6.8.4-300, mesa-dri-drivers-24.0.4-1):