Hi,
I had this problem for a while now, once the screen saver detects computer has been idle for more than 5 minutes, it turns off my screen. Then, when I try to wake it up (by moving the mouse for example) there's this annoying flickering that is happening in the wallpaper and window borders.
The issue stops if I open a terminal and:
killall -q picom
picom -b
Or if I try to open an application that tries to screenshot or record the screen.
Arch Linux
~
❯ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
DP1 disconnected primary (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 290mm
1920x1080 60.00*+
1280x1024 75.02 60.02
1152x864 75.00
1024x768 75.03 60.00
800x600 75.00 60.32
640x480 75.00 59.94
720x400 70.08
HDMI2 disconnected (normal left inverted right x axis y axis)
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
❯ yay -Q | rg xf86-video
xf86-video-intel 1:2.99.917+914+ga511f22c-1
xf86-video-vesa 2.5.0-1
Had to install glxinfo (wasn't installed before)
❯ glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Intel Open Source Technology Center (0x8086)
Device: Mesa DRI Intel(R) HD Graphics 2000 (SNB GT1) (0x102)
Version: 20.3.2
Accelerated: yes
Video memory: 1536MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 3.3
Max compat profile version: 3.0
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.0
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 2000 (SNB GT1)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.3.2
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.0 Mesa 20.3.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 20.3.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
Using i3-gaps 4.19-1
I has been happening for a while now but not sure when started.
❯ picom --version
vgit-dac85
~
❯ yay -Q | rg picom
picom 8.2-1
# Backend to use: "xrender" or "glx".
# GLX backend is typically much faster but depends on a sane driver.
backend = "glx";
# GLX backend
glx-no-stencil = true;
# GLX backend: Copy unmodified regions from front buffer instead of redrawing them all.
# My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified,
# but a 20% increase when only 1/4 is.
# My tests on nouveau show terrible slowdown.
glx-copy-from-front = false;
# GLX backend: Use MESA_copy_sub_buffer to do partial screen update.
# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated.
# May break VSync and is not available on some drivers.
# Overrides --glx-copy-from-front.
glx-use-copysubbuffermesa = false;
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe).
# Recommended if it works.
glx-no-rebind-pixmap = false;
# GLX backend: GLX buffer swap method we assume.
# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1).
# undefined is the slowest and the safest, and the default value.
# copy is fastest, but may fail on some drivers,
# 2-6 are gradually slower but safer (6 is still faster than 0).
# Usually, double buffer means 2, triple buffer means 3.
# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers.
# Useless with --glx-use-copysubbuffermesa.
# Partially breaks --resize-damage.
# Defaults to undefined.
#glx-swap-method = "undefined";
# Shadows
shadow = false;
# Opacity
inactive-opacity = 1;
active-opacity = 1;
frame-opacity = 1;
inactive-opacity-override = false;
# Dim inactive windows. (0.0 - 1.0)
# inactive-dim = 0.2;
# Do not let dimness adjust based on window opacity.
# inactive-dim-fixed = true;
# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred.
# blur-background = true;
# Blur background of opaque windows with transparent frames as well.
# blur-background-frame = true;
# Do not let blur radius adjust based on window opacity.
blur-background-fixed = false;
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"class_g ?= 'xob'"
];
# Fading
# Fade windows during opacity changes.
fading = true;
# The time between steps in a fade in milliseconds. (default 10).
fade-delta = 4;
# Opacity change between steps while fading in. (default 0.028).
fade-in-step = 0.03;
# Opacity change between steps while fading out. (default 0.03).
fade-out-step = 0.03;
# Fade windows in/out when opening/closing
# no-fading-openclose = true;
# Specify a list of conditions of windows that should not be faded.
fade-exclude = [ ];
# Other
# Try to detect WM windows and mark them as active.
mark-wmwin-focused = true;
# Mark all non-WM but override-redirect windows active (e.g. menus).
mark-ovredir-focused = true;
# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events.
# Usually more reliable but depends on a EWMH-compliant WM.
use-ewmh-active-win = true;
# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on.
detect-rounded-corners = true;
# Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows.
# This prevents opacity being ignored for some apps.
# For example without this enabled my xfce4-notifyd is 100% opacity no matter what.
detect-client-opacity = true;
# Specify refresh rate of the screen.
# If not specified or 0, picom will try detecting this with X RandR extension.
refresh-rate = 0;
# Vertical synchronization: match the refresh rate of the monitor
vsync = true;
# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing.
# Reported to have no effect, though.
dbe = false;
# Limit picom to repaint at most once every 1 / refresh_rate second to boost performance.
# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already,
# unless you wish to specify a lower refresh rate than the actual value.
#sw-opti = true;
# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games.
# Known to cause flickering when redirecting/unredirecting windows.
unredir-if-possible = true;
# Specify a list of conditions of windows that should always be considered focused.
focus-exclude = [ ];
# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time.
detect-transient = true;
# Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time.
# WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too.
detect-client-leader = true;
# Window type settings
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;
};
fullscreen :
{
fade = true;
shadow = false;
opacity = 1;
focus = true;
};
dock:
{
shadow = false;
}
};
# XSync
# See: https://github.com/yshui/picom/commit/b18d46bcbdc35a3b5620d817dd46fbc76485c20d
# Use X Sync fence to sync clients' draw calls. Needed on nvidia-drivers with GLX backend for some users.
xrender-sync-fence = true;
Screen turns on without flickering
The wallpaper and borders around the windows start to flicker a lot.
Don't think it crashes but not sure how to capture additional info here.
Tried to record it or capture screenshot but the problem seems to be fixed once the recording app creates it's overlay on the entire screen
Any help will be appreciated, thank you!
Hi, Same here with small variations:
Archlinux 5.10.3
Intel i5, 10th generation
I usually have multi-monitor (2) but it happens with both eDP1 laptop monitor or in multi-monitor case.
drivers:
i3wm
vgit-dac85
8.2.1
# vim: filetype=conf
backend = "glx"
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
vsync = true;
unredir-if-possible = false;
Have no sort of flickering after turning screen on.
vsync off make it solved but that lead to tearing effectfeh to set the background in i3wm.I have the same problem, but I'm using ibhagwan's fork, the picom I have is a bit behind from the git version. I also have screen tear. Also, feh doesn't have to do anything here, I'm using sxiv and xwallpaper and still getting the same behavior as you. In my case it happens on a single monitor (cuz I'm in laptop). BUT, this happens on certain moments it goes off, not always, moreover, my workaround is to simply kill picom and start it again, still, quite annoying
Same story. Awesome/intel-modesetting. There artefacts after xscreensaver.
Back again, I installed this fork and can confirm behavior is still there, not always but its there. So it might come all the way from ibhagwan's fork
I just killing picom then starting it again. It works but temporary.
Yeh, I think the workaround would be a script that checks if laptop is asleep or something and when it its it kills and restarts picom
Hi, I'm facing the same with AMD Radeon HD 7670M.
A temporary fix I use is I hit F11 or Mod+F to make the window fullscreen which removes the artifacts.
Platform:
Linux archlinux 5.4.90-1-lts #1 SMP Sun, 17 Jan 2021 19:57:30 +0000 x86_64 GNU/Linux
Other Info
~
❯ pacman -Q | grep xf86-video
xf86-video-ati 1:19.1.0-2
~
❯ glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: X.Org (0x1002)
Device: AMD TURKS (DRM 2.50.0 / 5.4.90-1-lts, LLVM 11.0.1) (0x6840)
Version: 20.3.3
Accelerated: yes
Video memory: 1024MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 3.3
Max compat profile version: 3.1
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.1
Memory info (GL_ATI_meminfo):
VBO free memory - total: 1023 MB, largest block: 1023 MB
VBO free aux. memory - total: 1021 MB, largest block: 1021 MB
Texture free memory - total: 1023 MB, largest block: 1023 MB
Texture free aux. memory - total: 1021 MB, largest block: 1021 MB
Renderbuffer free memory - total: 1023 MB, largest block: 1023 MB
Renderbuffer free aux. memory - total: 1021 MB, largest block: 1021 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 1024 MB
Total available memory: 2045 MB
Currently available dedicated video memory: 1023 MB
OpenGL vendor string: X.Org
OpenGL renderer string: AMD TURKS (DRM 2.50.0 / 5.4.90-1-lts, LLVM 11.0.1)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.3.3
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.1 Mesa 20.3.3
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 20.3.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
md5-beabf07abf6e76cb99f56919ae73ee09
~
❯ pacman -Q | grep i3
i3-gaps 4.19-1
~
❯ picom --version
vgit-dac85
md5-a0ac030fb63c1672c7df78e9e00730a9
#################################
# GLX backend
#################################
backend = "glx";
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
vsync = true;
xrender-sync-fence = "true";
glx-swap-method = -1;
#################################
# Shadows
#################################
shadow = false;
shadow-radius = 5;
shadow-offset-x = -5;
shadow-offset-y = -5;
shadow-opacity = 0.2;
shadow-ignore-shaped = false;
#################################
# Opacity
#################################
#inactive-opacity = 1;
active-opacity = 1;
frame-opacity = 0.8;
inactive-opacity-override = false;
#blur-background = true;
#blur-background-frame = true;
#blur-background-fixed = true;
#blur-background-exclude = [
# "window_type = 'desktop'",
# "class_g = 'alacritty'"
#];
#blur-kern = "3x3box";
#blur-method = "dual_kawase";
#blur-strength = 10;
opacity-rule = [
"75:window_type = 'dock'",
"75:class_g = 'alacritty'"
];
#################################
# Fading
#################################
fading = false;
wintypes:
{
dock = { shadow = false; }
dnd = { shadow = false; }
popup_menu = { opacity = 1.0; }
dropdown_menu = { opacity = 1.0; }
}
Similar issue on Arch/DWM/xf86-video-amdgpu on two separate boxes. Only happens on resume after a monitor times out into a low power state. Spawning a window on each screen after resume seems to resolve this.
I have the same issue and it happens after sleep as point out in original issue.
vgit-dac85glxinfo:
name of display: :1
display: :1 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Intel (0x8086)
Device: Mesa Intel(R) Iris(R) Plus Graphics (ICL GT1.5) (0x8a5a)
Version: 20.3.4
Accelerated: yes
Video memory: 3072MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) Iris(R) Plus Graphics (ICL GT1.5)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.3.4
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.3.4
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.3.4
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
picom diagnostic:
**Version:** vgit-dac85
### Extensions:
* Shape: Yes
* XRandR: Yes
* Present: Present
### Misc:
* Use Overlay: No (Another compositor is already running)
* Config file used: /etc/xdg/picom.conf
### Drivers (inaccurate):
Intel
configuration:
# vim: filetype=conf
backend = "glx"
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
vsync = true;
unredir-if-possible = false;
inactive-dim = 0.05;
relevant i3 config parts:
exec feh --bg-scale /home/$uz/Pictures/Wallpaper
exec --no-startup-id picom --config /home/$uz/homerepo/picom/picom.conf
Remedies:
On my end I simply turned off blur and transparency and shadows, enabled round boarders, and called it a day.
same here: flickering after returning from screen saver
Ubuntu, awesome wm, Intel-mesa drivers,
killing picom and restarting resolves this.
Most helpful comment
Hi, Same here with small variations:
Platform
Archlinux 5.10.3
GPU, drivers, and screen setup
Intel i5, 10th generation
I usually have multi-monitor (2) but it happens with both eDP1 laptop monitor or in multi-monitor case.
drivers:
Environment
i3wm
picom version
vgit-dac85
8.2.1
Configuration:
Steps of reproduction
3 The i3status system tray also flickers separately which solves by a restart status bar
Expected behavior
Have no sort of flickering after turning screen on.
Other details
vsyncoff make it solved but that lead to tearing effectfehto set the background in i3wm.