Flickering checker-board using amdgpu laptop with external display and marco

I’ve tried to find a cause for this but failed so far.

I have an external monitor connected via an HDMI->DVI cable. It works correctly at resolutions lower than its maximum, and at maximum resolution when in a vertical orientation, and when placed “above” or “below” the laptop output (diagrams below). However, when placed to the “left” or “right” of the laptop output both displays end up with a flickering checker-board pattern, e.g.:

(The top “slice” of the screens display correctly)

It’s not a “new” issue, I’ve been putting up with it for a while by running the external display at a lower resolution.

I have tried setting “high” manually as per https://wiki.archlinux.org/index.php/AMDGPU#Screen_artifacts_and_frequency_problem , same end result.

I have tried a different cable.

The monitor and cable works correctly on another laptop (running nvidia).

There is no BIOS update for the system, different kernels give the same result, everything is current with Arch as of 2020-08-14T23:00:00Z.

It feels like this is a limitation on the horizontal resolution or virtual screen size:

Doesn’t work:
image

Works:
image

Works:
image

Works:
image

Doesn’t work:
image

Works:
image

So - yeah. Any ideas?

inxi -Fxxxz --no-host
System:    Kernel: 5.8.1-zen1-1-zen x86_64 bits: 64 compiler: N/A Desktop: MATE 1.24.1 info: mate-panel wm: marco 1.24.1 
           dm: LightDM 1.30.0 Distro: Arch Linux 
Machine:   Type: Laptop System: ASUSTeK product: GL702ZC v: 1.0 serial: <filter> 
           Mobo: ASUSTeK model: GL702ZC v: 1.0 serial: <filter> UEFI: American Megatrends v: GL702ZC.306 date: 07/05/2019 
Battery:   ID-1: BAT0 charge: 9.3 Wh condition: 9.3/74.2 Wh (13%) volts: 15.4/15.4 model: ASUSTeK ASUS Battery type: Li-ion 
           serial: N/A status: Not charging cycles: 8 
CPU:       Topology: 8-Core model: AMD Ryzen 7 1700 bits: 64 type: MT MCP arch: Zen rev: 1 L2 cache: 4096 KiB 
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm bogomips: 95804 
           Speed: 1365 MHz min/max: 1550/3000 MHz boost: enabled Core speeds (MHz): 1: 1354 2: 1328 3: 1374 4: 1371 5: 1374 
           6: 1375 7: 1374 8: 1374 9: 1548 10: 2105 11: 1332 12: 1332 13: 1339 14: 1328 15: 1374 16: 1374 
Graphics:  Device-1: Advanced Micro Devices [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] vendor: ASUSTeK 
           driver: amdgpu v: kernel bus ID: 0c:00.0 chip ID: 1002:67df 
           Device-2: Realtek USB2.0 HD UVC WebCam type: USB driver: uvcvideo bus ID: 1-8:2 chip ID: 0bda:57fa serial: <filter> 
           Display: x11 server: X.org 1.20.8 compositor: marco v: 1.24.1 driver: amdgpu resolution: <xdpyinfo missing> 
           Message: Unable to show advanced data. Required tool glxinfo missing. 
Audio:     Device-1: AMD Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] vendor: ASUSTeK driver: snd_hda_intel 
           v: kernel bus ID: 0c:00.1 chip ID: 1002:aaf0 
           Device-2: Advanced Micro Devices [AMD] Family 17h HD Audio vendor: ASUSTeK driver: snd_hda_intel v: kernel 
           bus ID: 12:00.3 chip ID: 1022:1457 
           Device-3: GYROCOM C&C Fiio E10 type: USB driver: hid-generic,snd-usb-audio,usbhid bus ID: 3-1.4:6 
           chip ID: 1852:7022 
           Sound Server: ALSA v: k5.8.1-zen1-1-zen 
Network:   Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: ASUSTeK driver: r8169 v: kernel port: e000 
           bus ID: 06:00.0 chip ID: 10ec:8168 
           IF: enp6s0 state: up speed: 1000 Mbps duplex: full mac: <filter> 
           Device-2: Realtek RTL8822BE 802.11a/b/g/n/ac WiFi adapter vendor: AzureWave driver: rtw_8822be v: N/A port: d000 
           bus ID: 07:00.0 chip ID: 10ec:b822 
           IF: wlp7s0 state: down mac: <filter> 
Drives:    Local Storage: total: 1.14 TiB used: 434.75 GiB (37.2%) 
           ID-1: /dev/sda vendor: Seagate model: ST1000LM049-2GH172 size: 931.51 GiB speed: 6.0 Gb/s rotation: 7200 rpm 
           serial: <filter> rev: SDM1 scheme: GPT 
           ID-2: /dev/sdb vendor: SanDisk model: SD8SN8U256G1002 size: 238.47 GiB speed: 6.0 Gb/s serial: <filter> rev: 1002 
           scheme: GPT 
RAID:      Device-1: tank type: zfs status: ONLINE raid: no-raid size: 888.00 GiB free: 487.00 GiB allocated: 401.00 GiB 
           Components: online: N/A 
Partition: ID-1: / size: 40.00 GiB used: 12.16 GiB (30.4%) fs: btrfs dev: /dev/sdb4 
           ID-2: /boot size: 975.9 MiB used: 334.4 MiB (34.3%) fs: ext4 dev: /dev/sdb2 
           ID-3: /home size: 459.89 GiB used: 1.04 GiB (0.2%) fs: zfs raid: tank/home 
Swap:      ID-1: swap-1 type: partition size: 40.00 GiB used: 0 KiB (0.0%) priority: -2 dev: /dev/sda1 
Sensors:   System Temperatures: cpu: 62.5 C mobo: N/A gpu: amdgpu temp: 63 C 
           Fan Speeds (RPM): N/A 
Info:      Processes: 500 Uptime: 41m Memory: 31.30 GiB used: 5.82 GiB (18.6%) Init: systemd v: 246 Compilers: gcc: 10.1.0 
           clang: 10.0.1 Packages: pacman: 1832 Shell: Zsh v: 5.8 running in: terminator inxi: 3.1.05

I’m having a similar artefact on both my external displays (hdmi and mini display port), but the pieces of the “board” are black and white and create a horizontal stripe. It appears occasionally for a very short time. Sometime I don’t see it all the evening, sometimes twice a minute. On 5.7.6 kernel it would appear very often. On 5.8.x the issue is bearable, but still present.

[edit] Different appearance may be caused by the fact, that 99% of the time I use sway/Wayland.

Running xvidtune on the AMDgpu system shows the exact same current modeline. Only this time the screen flickers constantly and just the top ~13% of the screen is somewhat visible, every line below is unstable, interlaced, corrupted.

from: https://bugs.freedesktop.org/show_bug.cgi?id=96868
reads like exactly your issue

1 Like

It also looks like it might be a marco issue:

Disabling marco’s software compositing-manager fixes the display issue, and running with picom doesn’t reintroduce the issue.

OK, I switched to metacity and the issue has “fixed” itself, so this is a marco bug.

metacity itself works fine and is nice and snappy, but wow is window resizing laggy. :grimacing:

1 Like

Yeah, resizing is not metacity finest point, as i remember from Deepin 15.8 as well :sweat_smile:

1 Like

Heh, I was just looking at that bug report… :joy:

After trying a few different options, I eventually configured picom --experimental-backends correctly and it’s now far snappier than marco was before with its software compositing (no compositing is still the most responsive option, but lack of shadows and transparency is a step too far for me for normal use). Even things like scrolling the forum in Firefox is more responsive.

picom.conf
backend = "glx";
use-damage = true;
glx-no-stencil = true;
glx-copy-from-front = false;
# glx-use-copysubbuffermesa = true;
# glx-no-rebind-pixmap = true;
#glx-swap-method = "undefined";
shadow = true;
shadow-radius = 20;
shadow-offset-x = -20;
shadow-offset-y = -18;
shadow-opacity = 0.3;
# shadow-red = 0.0;
# shadow-green = 0.0;
# shadow-blue = 0.0;
shadow-exclude = [
    "! name~=''",
    "name = 'Notification'",
    "name = 'Plank'",
    "name = 'Docky'",
    "name = 'Kupfer'",
    "name = 'xfce4-notifyd'",
    "name = 'cpt_frame_window'",
    "name *= 'VLC'",
    "name *= 'compton'",
    "name *= 'picom'",
    "name *= 'Chromium'",
    "name *= 'Chrome'",
    "class_g = 'Firefox' && window_type = 'utility'",
    "class_g = 'FirefoxNightly' && window_type = 'utility'",
    "class_g = 'Nightly' && window_type = 'utility'",
    "class_g = 'Tor Browser' && window_type = 'utility'",
    "class_g = 'TelegramDesktop' && argb",
    "class_g = 'Conky'",
    "class_g = 'Kupfer'",
    "class_g = 'Synapse'",
    "class_g ?= 'Notify-osd'",
    "class_g ?= 'Cairo-dock'",
    "class_g ?= 'Xfce4-notifyd'",
    "class_g ?= 'Xfce4-power-manager'",
    "_GTK_FRAME_EXTENTS@:c",
    "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
];
shadow-ignore-shaped = false;
nactive-opacity = 1;
active-opacity = 1;
frame-opacity = 1;
inactive-opacity-override = false;
# inactive-dim = 0.2;
blur: {
    method = "box";
    strength = 10;
}
blur-background = true;
# blur-kern = "3x3box";
# blur-background-frame = true;
blur-background-fixed = false;
blur-background-exclude = [
    "window_type = 'dock'",
    "window_type = 'desktop'"
];
fading = false;
fade-delta = 4;
fade-in-step = 0.03;
fade-out-step = 0.03;
no-fading-openclose = true;
fade-exclude = [ ];

mark-wmwin-focused = true;
mark-ovredir-focused = true;
#use-ewmh-active-win = true;
detect-rounded-corners = true;
detect-client-opacity = true;
refresh-rate = 0;
vsync = false;
dbe = false;
unredir-if-possible = false;
focus-exclude = [ "class_g = 'Cairo-clock'" ];
detect-transient = true;
detect-client-leader = true;
wintypes:
{
    tooltip =
    {
        # fade: Fade the particular type of windows.
        fade = true;
        # shadow: Give those windows shadow
        shadow = false;
        # opacity: Default opacity for the type of windows.
        opacity = 0.85;
        # focus: Whether to always consider windows of this type focused.
        focus = true;
    };
};
xrender-sync-fence = true;

Hopefully the bug will be fixed at some point, but it needs some input on what’s needed and where to start with debugging.

1 Like