Skip to content

blur flickering on inactive windows #1528

Description

@illia-bobyr

Summary

Inactive windows periodically (roughly once per second) develop a strong, full-window blur/smear effect that builds up over ~1 second and then snaps instantly back to a sharp render. This happens with blur-background = false in the config.

Reproduces on both backend = "glx" (new/default backend) and backend = "egl".
I tried switching to --legacy-backends with glx or xr_glx_hybrid, but picom crashes within ~1 second with a flood of GLX_BAD_DRAWABLE X errors instead.
If I select backend = "xrender", then the issue disappears with the same config.

Environment

  • picom version: v12.5 (picom --version)
  • GPU: NVIDIA RTX 3080
  • NVIDIA driver version: 595.71.05
  • OS: Ubuntu 26.04
  • Display server: X11, session started via gdm-x-session
  • Window manager: xmonad, inside a GNOME session. GNOME/Mutter is not compositing, picom is the only active compositor.

Relevant picom.conf settings

backend = "glx"
vsync = false          # also tested true, see below
use-damage = true      # also tested false, no change
xrender-sync-fence = true
unredir-if-possible = true   # also tested false, no change
blur-background = false
blur-background-frame = false
fading = false
corner-radius = 0

Shadows/fading/blur are all either disabled or visually inert in this config, and none of them affect the bug.

Steps to reproduce

  1. Run picom with backend = "glx" (default new backend), config as above.
  2. Watch any inactive window for 10–20 seconds.
  3. Roughly once per second, the window's content develops a strong blur that peaks after about a second of buildup, then instantly reverts to a sharp, correct render.
  4. At the peak, text in the window is almost unreadable.

Expected behavior

With blur-background = false, inactive windows should render statically, with no blur or distortion at any point.

Things I've tried

  • Confirmed only one compositor is running - picom.
  • Confirmed blur-background / blur-background-frame are false to rule out the blur engine itself as the cause.
  • Tuned glx-specific options individually and in combination: vsync = true, glx-no-stencil = true, glx-no-rebind-pixmap = true, unredir-if-possible = false, use-damage = false (no-use-damage = true). None changed the behavior.
  • Switched to backend = "egl". Same periodic corruption as glx.
  • Switched to backend = "xrender". Issue completely resolved, no artifacts.
  • Ran with --legacy-backends and backend = "glx". This crashes within ~1 second, console flooded with hundreds of repeats of:
  [ 06/25/2026 16:57:19.993 x_handle_error WARN ] Stray X error: X error 160 GLX_BAD_DRAWABLE request 152 minor 11 serial 6629
  • Ran with --legacy-backends and backend = "x r_glx_hybrid" — same crash/error pattern as legacy glx.
  • Tried backend = "xr_glx_hybrid" without --legacy-backends — refuses to start:
  [ 06/25/2026 16:38:18.669 sanitize_options ERROR ] Backend "xr_glx_hybrid" is only available as part of the legacy backends.
  [ 06/25/2026 16:38:18.669 session_init FATAL ERROR ] Failed to get configuration, usually mean you have specified invalid options.
  [ 06/25/2026 16:38:18.669 main FATAL ERROR ] Failed to create new session.
  • Set AllowFlipping=0 via nvidia-settings. No change to the glx-backend artifact.
  • Set ForceFullCompositionPipeline=On via nvidia-settings --assign CurrentMetaMode="DPY-7: 5120x2160 @5120x2160 +0+0 {ViewPortIn=5120x2160, ViewPortOut=5120x2160+0+0, ForceFullCompositionPipeline=On}". No change.
  • Checked journalctl -b | grep -i glx. NVIDIA's GLX module (libglxserver_nvidia.so, 595.71.05) loads normally.

Addition information

`picom --backend glx --diagnostics`
❯ picom --backend glx --diagnostics
[ 06/25/2026 17:31:54.228 c2_parse_target WARN ] Type specifier is deprecated. Type "c" specified on target "_GTK_FRAME_EXTENTS" will be ignored, you can remove it.
[ 06/25/2026 17:31:54.228 c2_parse_target WARN ] Type specifier is deprecated. Type "c" specified on target "_GTK_FRAME_EXTENTS" will be ignored, you can remove it.
**Version:** v12.5

### Extensions:

* Shape: Yes
* RandR: Yes
* Present: Present

### Misc:

* Use Overlay: No

* Config file specified: None
* Config file used: /home/illia/.config/picom.conf

### Drivers (inaccurate):

NVIDIA

### Backend: glx

* Driver vendors:
 * GLX: NVIDIA Corporation
 * GL: NVIDIA Corporation
* GL renderer: NVIDIA GeForce RTX 3080/PCIe/SSE2
[ 06/25/2026 17:31:54.510 egl_init WARN ] The egl backend is still experimental, use with care.

### Backend: egl

* Driver vendors:
 * EGL: NVIDIA
 * GL: NVIDIA Corporation
* GL renderer: NVIDIA GeForce RTX 3080/PCIe/SSE2

glxinfo output: https://pastebin.com/iU2Bterg

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions