Skip to content

Fullscreen windows are not unredirected on NVIDIA X11 even with unredirect-fullscreen-windows enabled, preventing G-SYNC/VRR #847

Description

@Tedpac

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

  1. Run gsettings set org.cinnamon.muffin unredirect-fullscreen-windows true, then reboot (restarting Cinnamon only gives the same result).
  2. Enable the driver indicator: nvidia-settings --assign ShowGraphicsVisualIndicator=1
  3. 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.
  4. 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)
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions