X11 applications do not refresh in a timely fashion, resulting in screen corruption, when using custom xrandr scaling
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
xorg-server (Ubuntu) |
Triaged
|
Low
|
Unassigned |
Bug Description
Many X11 applications do not refresh in a timely fashion, and the window must be disturbed to achieve refresh. Typical disturbances causing refresh are: typing in the window, interacting with the mouse, focusing a different application, etc.
I have seen this behavior in:
* Firefox
* Electron apps (Slack, Keybase, Element, Discord)
* Zoom
* Possibly Emacs (see #1893969)
* Xournal
* VMware Player (both the host GUI and the guest screen)
I am attaching a video of this behavior in Firefox; you can see that when I close a tab, the tab that takes its place paints only partially, and even mousing with tooltip popups and typing in a text entry cause only partial corrections. Mousing away from the Firefox window to focus a window on a different display causes a complete repaint. (Mousing to another window on the _same_ display would also cause a repaint, it just so happens that I focused a window on a different display).
I can reproduce this problem with no compositor running, or with compton running.
This bug is trivial to reproduce and happens nearly constantly. I have trouble taking screen shots / videos of the behavior on this machine only because this is a workstation that I use for teaching a University course and much of the work that I do on it would disclose student information if shared. I will try to produce more evidence if required, but it requires some time to do so.
My desktop configuration is three displays. The displays are arranged in a horizontal row. The left and center monitors are external Full HD DisplayPort monitors, daisy chained, and the right monitor is the internal display on my laptop. The left display is DP-2-1, which is connected to the center monitor by a DisplayPort daisy chain. The center display is DP-2-8, which is connected to the laptop via DisplayPort over USB 3 (USB C). The right display is eDP-1. All three displays have a logical resolution of 3840x2160. The left and center displays are scaled to Full HD, and the eDP-1 runs at its native resolution. I use the following xrandr command to configure this:
HIX=3840
HIY=2160
HI=${HIX}x${HIY}
xrandr --fb $(($HIX * 3))x$HIY \
--output eDP-1 --auto --panning ${HI}+$(($HIX * 2))+0 \
--output DP-2-8 --auto --panning ${HI}+$HIX+0 \
--output DP-2-1 --auto --panning $HI+0+0 \
ProblemType: Bug
DistroRelease: Ubuntu 20.04
Package: xorg 1:7.7+19ubuntu14
ProcVersionSign
Uname: Linux 5.4.0-42-generic x86_64
ApportVersion: 2.20.11-0ubuntu27.8
Architecture: amd64
BootLog: Error: [Errno 13] Permission denied: '/var/log/boot.log'
CasperMD5CheckR
CompositorRunning: None
CurrentDesktop:
Date: Fri Oct 2 10:02:50 2020
DistUpgraded: 2020-06-21 15:36:52,619 DEBUG Running PostInstallScript: './xorg_
DistroCodename: focal
DistroVariant: ubuntu
DkmsStatus:
v4l2loopback, 0.12.3, 5.4.0-42-generic, x86_64: installed
v4l2loopback, 0.12.3, 5.4.0-47-generic, x86_64: installed
v4l2loopback, 0.12.3, 5.4.0-48-generic, x86_64: installed
DpkgLog:
ExtraDebuggingI
GraphicsCard:
Intel Corporation Device [8086:9bca] (rev 04) (prog-if 00 [VGA controller])
Subsystem: Dell Device [1028:0962]
MachineType: Dell Inc. XPS 13 7390
ProcKernelCmdLine: BOOT_IMAGE=
SourcePackage: xorg
Symptom: display
UpgradeStatus: Upgraded to focal on 2020-06-21 (102 days ago)
dmi.bios.date: 11/25/2019
dmi.bios.vendor: Dell Inc.
dmi.bios.version: 1.4.0
dmi.board.name: 0377MH
dmi.board.vendor: Dell Inc.
dmi.board.version: A00
dmi.chassis.type: 10
dmi.chassis.vendor: Dell Inc.
dmi.modalias: dmi:bvnDellInc.
dmi.product.family: XPS
dmi.product.name: XPS 13 7390
dmi.product.sku: 0962
dmi.sys.vendor: Dell Inc.
version.compiz: compiz N/A
version.libdrm2: libdrm2 2.4.101-2
version.
version.
version.
version.
version.
version.
version.
Thanks for the bug report. Please also report it to the Xorg developers at:
https:/ /gitlab. freedesktop. org/xorg/ xserver/ -/issues
and then tell us the new issue ID.