Distribution
Linux Mint 22.3 (Zena), Cinnamon edition
Package version
Muffin v6.6.3, Cinnamon v6.6.9
Graphics hardware in use
NVIDIA GeForce GTX 1050 Ti, proprietary driver v580.173.02, X11 session. Display under test: ASUS ROG Strix XG27ACMES, 2560x1440 at up to 240 Hz, connected via DisplayPort (VRR capable, not on NVIDIA's validated G-SYNC Compatible list)
Frequency
Always
Bug description
With org.cinnamon.muffin unredirect-fullscreen-windows set to true (verified with dconf read, including after a full reboot), fullscreen applications are still being composited. I verified this with the NVIDIA Graphics API Visual Indicator (enabled via ShowGraphicsVisualIndicator), which always shows BLIT - VSYNC ON for a fullscreen Vulkan client running under Cinnamon. Since the client never flips, G-SYNC/VRR can never engage.
The compositor is the only variable: replacing the WM in the same X session with openbox --replace and running the exact same command immediately shows FLIP in the indicator, and VRR physically engages. The monitor's own OSD refresh rate counter follows the application frame rate (100 FPS in my test) instead of staying pinned at the panel's maximum 240 Hz.
To rule out the usual suspects, all of the following were true during every run under Cinnamon:
- Only one monitor active, with the X screen framebuffer resized to match it exactly (
xrandr --fb 2560x1440), so the fullscreen window covers the entire X screen, which the NVIDIA driver requires for flipping. My normal setup is dual monitor, but the bug reproduces with a single one.
Allow G-SYNC on monitor not validated as G-SYNC Compatible applied, and DisplayVRREnabled=1 for the display under test confirmed with nvidia-settings -q during the tests (immediately before and after the main runs).
Force Composition Pipeline and Force Full Composition Pipeline both off, no /etc/X11/xorg.conf, stock driver install.
- Reproduced with two different builds of the same client: Flatpak mpv v0.41.0 (
--vo=gpu-next, Vulkan) and the distro mpv v0.37.0 forced to Vulkan (--gpu-api=vulkan). Same BLIT result in both, so it is not a Flatpak sandbox issue.
- No overlays or notifications on top of the window.
Steps to reproduce
- Run
gsettings set org.cinnamon.muffin unredirect-fullscreen-windows true, then reboot (restarting Cinnamon only gives the same result).
- Enable the driver indicator:
nvidia-settings --assign ShowGraphicsVisualIndicator=1
- Set single monitor geometry:
xrandr --fb 2560x1440 --output HDMI-0 --off --output DP-0 --pos 0x0 (adjust output names). Then re-apply the Allow G-SYNC on monitor not validated as G-SYNC Compatible checkbox in nvidia-settings, because changing the metamode clears it.
- Run a fullscreen Vulkan client, for example:
mpv --fs --no-audio --vo=gpu-next --gpu-api=vulkan "av://lavfi:testsrc2=size=2560x1440:rate=100" (use --vo=gpu --gpu-api=vulkan on builds without gpu-next)
- Read the indicator overlay in the corner of the video.
Expected behavior
The fullscreen window gets unredirected, the indicator shows FLIP, and G-SYNC can engage.
Additional information
This is related to #701 and #715, but it is a different case: there is no Wine involved, and the client is a Vulkan application, which according to the discussion in #715 is not affected by the 1x1 child window problem that PR works around. In this configuration, fullscreen unredirection simply never happens.
Distribution
Linux Mint 22.3 (Zena), Cinnamon edition
Package version
Muffin v6.6.3, Cinnamon v6.6.9
Graphics hardware in use
NVIDIA GeForce GTX 1050 Ti, proprietary driver v580.173.02, X11 session. Display under test: ASUS ROG Strix XG27ACMES, 2560x1440 at up to 240 Hz, connected via DisplayPort (VRR capable, not on NVIDIA's validated G-SYNC Compatible list)
Frequency
Always
Bug description
With
org.cinnamon.muffinunredirect-fullscreen-windowsset totrue(verified withdconf read, including after a full reboot), fullscreen applications are still being composited. I verified this with the NVIDIA Graphics API Visual Indicator (enabled viaShowGraphicsVisualIndicator), which always showsBLIT - VSYNC ONfor a fullscreen Vulkan client running under Cinnamon. Since the client never flips, G-SYNC/VRR can never engage.The compositor is the only variable: replacing the WM in the same X session with
openbox --replaceand running the exact same command immediately showsFLIPin the indicator, and VRR physically engages. The monitor's own OSD refresh rate counter follows the application frame rate (100 FPS in my test) instead of staying pinned at the panel's maximum 240 Hz.To rule out the usual suspects, all of the following were true during every run under Cinnamon:
xrandr --fb 2560x1440), so the fullscreen window covers the entire X screen, which the NVIDIA driver requires for flipping. My normal setup is dual monitor, but the bug reproduces with a single one.Allow G-SYNC on monitor not validated as G-SYNC Compatibleapplied, andDisplayVRREnabled=1for the display under test confirmed withnvidia-settings -qduring the tests (immediately before and after the main runs).Force Composition PipelineandForce Full Composition Pipelineboth off, no/etc/X11/xorg.conf, stock driver install.--vo=gpu-next, Vulkan) and the distro mpv v0.37.0 forced to Vulkan (--gpu-api=vulkan). SameBLITresult in both, so it is not a Flatpak sandbox issue.Steps to reproduce
gsettings set org.cinnamon.muffin unredirect-fullscreen-windows true, then reboot (restarting Cinnamon only gives the same result).nvidia-settings --assign ShowGraphicsVisualIndicator=1xrandr --fb 2560x1440 --output HDMI-0 --off --output DP-0 --pos 0x0(adjust output names). Then re-apply theAllow G-SYNC on monitor not validated as G-SYNC Compatiblecheckbox innvidia-settings, because changing the metamode clears it.mpv --fs --no-audio --vo=gpu-next --gpu-api=vulkan "av://lavfi:testsrc2=size=2560x1440:rate=100"(use--vo=gpu --gpu-api=vulkanon builds withoutgpu-next)Expected behavior
The fullscreen window gets unredirected, the indicator shows
FLIP, and G-SYNC can engage.Additional information
This is related to #701 and #715, but it is a different case: there is no Wine involved, and the client is a Vulkan application, which according to the discussion in #715 is not affected by the 1x1 child window problem that PR works around. In this configuration, fullscreen unredirection simply never happens.