Gnome resizes framebuffer when playing fullscreen video over and over again (when using X11 fractional scaling)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
mutter (Ubuntu) |
Fix Released
|
High
|
Marco Trevisan (Treviño) |
Bug Description
When I play a video with mpv (or e.g. Firefox), it works just fine.
When this video is fullscreened (e.g. in mpv by pressing f), the screen quickly turns off, and switches resolution modes in such a rate the screen is unusable.
The native resolution of the screen is 1440p, but Xorg somehow increases the size to 3424x1926 for the fullscreen, then quickly switches back to 1440p, before increasing it again.
As soon as the video is de-fullscreened (by pressing f again in mpv, or esc in Firefox), the funny resolution switching stops and the system is usable again.
This also happens with the modesetting 2d-driver. This does not happen with Wayland.
This can be seen in the Xorg-log:
[ 20.215] (II) intel(0): EDID vendor "JDI", prod id 0
[ 20.215] (II) intel(0): Printing DDC gathered Modelines:
[ 20.215] (II) intel(0): Modeline "2560x1440"x0.0 245.12 2560 2608 2640 2720 1440 1443 1449 1502 +hsync -vsync (90.1 kHz eP)
[ 258.869] (II) intel(0): resizing framebuffer to 3424x1926
[ 258.905] (II) intel(0): switch to mode 2560x1440@60.0 on eDP1 using pipe 0, position (0, 0), rotation normal, reflection none
[ 268.955] (II) intel(0): resizing framebuffer to 2560x1440
[ 269.097] (II) intel(0): switch to mode 2560x1440@60.0 on eDP1 using pipe 0, position (0, 0), rotation normal, reflection none
[ 270.383] (II) intel(0): resizing framebuffer to 3424x1926
[ 270.400] (II) intel(0): switch to mode 2560x1440@60.0 on eDP1 using pipe 0, position (0, 0), rotation normal, reflection none
[ 271.852] (II) intel(0): resizing framebuffer to 2560x1440
[ 271.858] (II) intel(0): switch to mode 2560x1440@60.0 on eDP1 using pipe 0, position (0, 0), rotation normal, reflection none
[ 273.294] (II) intel(0): resizing framebuffer to 3424x1926
[ 273.314] (II) intel(0): switch to mode 2560x1440@60.0 on eDP1 using pipe 0, position (0, 0), rotation normal, reflection none
When the resolution is increased, the Kernel complains about the framebuffer size:
[ 269.830034] [drm] Reducing the compressed framebuffer size. This may lead to less power savings than a non-reduced-size. Try to increase stolen memory size if available in BIOS.
ProblemType: Bug
DistroRelease: Ubuntu 20.04
Package: xorg 1:7.7+19ubuntu13
ProcVersionSign
Uname: Linux 5.4.0-12-generic x86_64
ApportVersion: 2.20.11-0ubuntu16
Architecture: amd64
BootLog: Error: [Errno 13] Permission denied: '/var/log/boot.log'
CompositorRunning: None
CurrentDesktop: ubuntu:GNOME
Date: Thu Feb 6 00:00:07 2020
DistUpgraded: 2020-02-05 22:21:13,002 DEBUG Running PostInstallScript: './xorg_
DistroCodename: focal
DistroVariant: ubuntu
DpkgLog:
ExtraDebuggingI
GraphicsCard:
Intel Corporation UHD Graphics 620 [8086:5917] (rev 07) (prog-if 00 [VGA controller])
Subsystem: Lenovo UHD Graphics 620 [17aa:2259]
MachineType: LENOVO 20LES01W00
ProcKernelCmdLine: BOOT_IMAGE=
SourcePackage: xorg
UpgradeStatus: Upgraded to focal on 2020-02-05 (0 days ago)
dmi.bios.date: 11/27/2019
dmi.bios.vendor: LENOVO
dmi.bios.version: N25ET52W (1.38 )
dmi.board.
dmi.board.name: 20LES01W00
dmi.board.vendor: LENOVO
dmi.board.version: Not Defined
dmi.chassis.
dmi.chassis.type: 31
dmi.chassis.vendor: LENOVO
dmi.chassis.
dmi.modalias: dmi:bvnLENOVO:
dmi.product.family: ThinkPad X1 Yoga 3rd
dmi.product.name: 20LES01W00
dmi.product.sku: LENOVO_
dmi.product.
dmi.sys.vendor: LENOVO
version.compiz: compiz N/A
version.libdrm2: libdrm2 2.4.100-4
version.
version.
version.
version.
version.
version.
version.
description: | updated |
summary: |
Gnome resizes framebuffer when playing fullscreen video over and over - again + again (when using X11 fractional scaling) |
tags: | added: xrandr-scaling |
no longer affects: | mutter |
Changed in mutter (Ubuntu): | |
importance: | Undecided → High |
tags: | added: champagne rls-ff-incoming |
Changed in mutter (Ubuntu): | |
assignee: | nobody → Marco Trevisan (Treviño) (3v1n0) |
status: | Confirmed → Triaged |
tags: |
added: rls-ff-tracking removed: rls-ff-incoming |
Changed in mutter (Ubuntu): | |
status: | Triaged → Fix Committed |
It seems to be caused by fractional display scaling: The display is configured to use 150% scaling.
When the scaling is set to 100% (native DPI), mpv and Firefox can play the video in fullscreen without triggering the bug, everything fine just like it should be.
When the scaling is set to 200%, there's another bug: The player goes to fullscreen without flicker or framebuffer changes, but only plays the video in the upper left quarter of the screen. The other three quarters are not updated and keep the buffer data from the point where the fullscreen was invoked.