when use multiple monitors picom make second monitor display black
platform archlinux
GPU, drivers, and screen setup
name of display: :0 display: :0 screen: 0 direct rendering: Yes Extended renderer info (GLX_MESA_query_renderer): Vendor: Intel (0x8086) Device: Mesa Intel(R) Graphics (ADL GT2) (0x46a6) Version: 22.3.4 Accelerated: yes Video memory: 15702MB 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) Graphics (ADL GT2) OpenGL core profile version string: 4.6 (Core Profile) Mesa 22.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 22.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 22.3.4 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
Environment
use dwm
detail
when i use second monitor picom make second screen black.I can see mouse only. But when I use obs to capture screen's display , obs can display the screen of the second monitor. Everything going fine when i kill picom.
I tried use this when use startx
export LIBGL_DRI3_DISABLE=1
it can fix question but picom will use cpu too many(about 30%) .
what picom's version you're on? and how multiple monitors are configured?
what picom's version you're on? and how multiple monitors are configured?
version is vgit-b700a, I use this package https://archlinux.org/packages/community/x86_64/picom/

I use xrandr to set multiple monitors
xrandr --output eDP-1 --primary --mode 2048x1152 --pos 1920x0 --rotate normal --output HDMI-1 --mode 1920x1080 --pos 0x0 --rotate normal --output DP-1 --off --output DP-2 --off --output DP-3 --off --output DP-4 --off
i may find the problem.I use backend is glx. When I use xrender, everything is fine .except blur. So how can I use blur in 'xrender' or use glx and fix problem?
that reminds me of the #1017... does this happen if you start picom as:
picom --config=/dev/null --backend=glx;picom --config=/dev/null --backend=egl?
that reminds me of the #1017... does this happen if you start picom as:
picom --config=/dev/null --backend=glx;picom --config=/dev/null --backend=egl?
yes! One screen is fine, the other one is black(I can see mouse only), Moreover,I killed picom and made screen freeze When i use glx and egl. Just xrender will make everything fine.
unfortunately, i don't have a second monitor to test and i can't reproduce this playing with xrandr no matter how hard i try.
Okay, so xrender works fine for you but the gl backends show one screen completely black, even if you've set a wallpaper and have windows on that screen? Which of your screens is the one affected? The external HDMI-1 one? Can you please post the complete output of xrandr? Does the same happen when you run picom with the --legacy-backends option?
Okay, so xrender works fine for you but the gl backends show one screen completely black, even if you've set a wallpaper and have windows on that screen? Which of your screens is the one affected? The external HDMI-1 one? Can you please post the complete output of
xrandr? Does the same happen when you run picom with the--legacy-backendsoption?
- yes.I can see mouse only.
- Only,the eDP-1 is fine.
there is something interesting.when i set monitor with this, HDMI-1 will show content.(superimpose them together)
> xrandr
Screen 0: minimum 320 x 200, current 3968 x 1152, maximum 16384 x 16384
eDP-1 connected 2048x1152+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
2560x1440 60.01 + 59.95 48.01
1920x1440 60.00
1856x1392 60.01
1792x1344 60.01
2048x1152 59.90* 59.91
1920x1200 59.88 59.95
1920x1080 59.96 59.93
1600x1200 60.00
1680x1050 59.95 59.88
1400x1050 59.98
1600x900 59.99 59.94 59.95 59.82
1280x1024 60.02
1400x900 59.96 59.88
1280x960 60.00
1440x810 60.00 59.97
1368x768 59.88 59.85
1280x800 59.99 59.97 59.81 59.91
1280x720 60.00 59.99 59.86 59.74
1024x768 60.04 60.00
960x720 60.00
928x696 60.05
896x672 60.01
1024x576 59.95 59.96 59.90 59.82
960x600 59.93 60.00
960x540 59.96 59.99 59.63 59.82
800x600 60.00 60.32 56.25
840x525 60.01 59.88
864x486 59.92 59.57
700x525 59.98
800x450 59.95 59.82
640x512 60.02
700x450 59.96 59.88
640x480 60.00 59.94
720x405 59.51 58.99
684x384 59.88 59.85
640x400 59.88 59.98
640x360 59.86 59.83 59.84 59.32
512x384 60.00
512x288 60.00 59.92
480x270 59.63 59.82
400x300 60.32 56.34
432x243 59.92 59.57
320x240 60.05
360x202 59.51 59.13
320x180 59.84 59.32
HDMI-1 connected primary 1920x1080+2048+36 (normal left inverted right x axis y axis) 527mm x 293mm
1920x1080 60.00*+ 75.00 50.00 59.94
1920x1080i 60.00 50.00 59.94
1680x1050 59.88
1600x900 60.00
1280x1024 75.02 60.02
1440x900 74.98 59.90
1366x768 59.79
1280x800 59.91
1152x864 75.00
1280x768 59.87
1280x720 60.00 50.00 59.94
1024x768 75.03 70.07 60.00
800x600 72.19 75.00 60.32
720x576 50.00
720x480 60.00 59.94
640x480 75.00 72.81 66.67 60.00 59.94
720x400 70.08
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)
5.The same happened when I run picom with the --legacy-backends option
I had the same issue. It took me a very long time to figure out that Picom was causing this.
- I want to add that changing the resolution and back on the second monitor will make the second monitor render while blacking out the built-in monitor.
- Seems like WM dependent bug as I was able to reproduce this is both Qtile and Xmonad.
- Killing picom also freezes up everything and I need to reboot.
- Same problem occurs on both HDMI and DP connection.
- I am also running Mesa Intel(R) Graphics.
fortunately, i have a laptop with an intel's igpu and a hdmi port, an hdmi cable and a monitor to test. unfortunately, i can't test this configuration anytime soon due to relocation. but if this issue won't be fixed, i'll give it a try.
@BingCoke and @itsdawei do you have access to the Xserver, picom, and/or system logs after the crash? Do they contain any error messages? This might be an intel specific (driver) bug. I am in a similar position right now as I can't test on intel integrated graphics as well. :disappointed: @itsdawei which version of the driver do you use?
Just to clarify further: This only blacks out a single monitor (seemingly the one with the most recent resolution change is shown). Does this also happen if both monitors partially overlap on the virtual screen and not only completely contain one in the other like in the screenshot above?
EDIT:
cannot reproduce this myself using vgit-cee12 with picom --config /dev/null --backend glx using the internal and external screen with my laptop and different combinations of screen resolution, positions (overlapping / non-overlapping), and refresh rates...
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Intel (0x8086)
Device: Mesa Intel(R) HD Graphics 5500 (BDW GT2) (0x1616)
Version: 22.3.6
Accelerated: yes
Video memory: 7845MB
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) HD Graphics 5500 (BDW GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 22.3.6
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 22.3.6
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 22.3.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
I can no longer reproduce the error. Perhaps @BingCoke can try to reproduce it. Now when I run picom, the windows on my second monitor disappears, but when I hover my mouse over it it reappears. Everything seems to be working from there.
Output of picom --diagnostics:
**Version:** vgit-b700a
### Extensions:
* Shape: Yes
* XRandR: Yes
* Present: Present
### Misc:
* Use Overlay: Yes
* Config file used: /etc/xdg/picom.conf
### Drivers (inaccurate):
modesetting
### Backend: glx
* Driver vendors:
* GLX: Mesa Project and SGI
* GL: Intel
* GL renderer: Mesa Intel(R) Graphics (ADL GT2)
* Accelerated: 1
### Backend: egl
* Driver vendors:
* EGL: Mesa Project
* EGL driver: iris
* GL: Intel
* GL renderer: Mesa Intel(R) Graphics (ADL GT2)
Output of glxinfo -B:
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Intel (0x8086)
Device: Mesa Intel(R) Graphics (ADL GT2) (0x46a6)
Version: 22.3.6
Accelerated: yes
Video memory: 15698MB
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) Graphics (ADL GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 22.3.6
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 22.3.6
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 22.3.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
I had the same problem on my Dell XPS 13 9320 - the cursor would show on my 2nd and 3rd screen, but not any windows. Switching to tty1 and back (ctrl-alt-F1) made the windows appear - they disappear as soon as I move the mouse cursor.
I solved the problem by switching from backend=glx to backend=xrender in .config/picom.conf.
I'm on arch (i3-variant) 253.4-1 with picom version "vgit-b700a".
Output from lshw:
*-display
description: VGA compatible controller
product: Raptor Lake-P [Iris Xe Graphics]
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
logical name: /dev/fb0
version: 04
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom fb
configuration: depth=32 driver=i915 latency=0 mode=1920x1200 visual=truecolor xres=1920 yres=1200
resources: iomemory:600-5ff iomemory:400-3ff irq:185 memory:603d000000-603dffffff memory:4000000000-400fffffff ioport:3000(size=64) memory:c0000-dffff memory:4010000000-4016ffffff memory:4020000000-40ffffffff
Output from picom --diagnostics:
**Version:** vgit-b700a
### Extensions:
* Shape: Yes
* XRandR: Yes
* Present: Present
### Misc:
* Use Overlay: No
(Another compositor is already running)
* Config file used: /home/user/.config/picom.conf
### Drivers (inaccurate):
modesetting
### Backend: glx
* Driver vendors:
* GLX: Mesa Project and SGI
* GL: Intel
* GL renderer: Mesa Intel(R) Graphics (RPL-P)
* Accelerated: 1
### Backend: egl
* Driver vendors:
* EGL: Mesa Project
* EGL driver: iris
* GL: Intel
* GL renderer: Mesa Intel(R) Graphics (RPL-P)
Can confirm that solution above ^ worked like a charm Thank you so much!
this should have been solved by #1002
ping me if the problem is still there.
Hello. I think problem is still there. My environment:
System:
Kernel: 6.8.0-45-generic arch: x86_64 bits: 64 compiler: gcc v: 13.2.0 clocksource: tsc
Desktop: bspwm v: 0.9.10 with: polybar vt: 7 dm: LightDM v: 1.30.0 Distro: Linux Mint 22 Wilma
base: Ubuntu 24.04 noble
Machine:
Type: Laptop System: HP product: Victus by HP Gaming Laptop 15-fa0xxx v: N/A
Mobo: HP model: 8A4F v: 37.56
CPU:
Info: 8-core (4-mt/4-st) model: 12th Gen Intel Core i5-12450H bits: 64 type: MST AMCP
smt: enabled arch: Alder Lake rev: 3 cache: L1: 704 KiB L2: 7 MiB L3: 12 MiB
Graphics:
Device-1: Intel Alder Lake-P GT1 [UHD Graphics] vendor: Hewlett-Packard driver: i915 v: kernel
arch: Gen-12.2 ports: active: DP-1,eDP-1 empty: DP-2,DP-3,DP-4 bus-ID: 00:02.0 chip-ID: 8086:46a3
class-ID: 0300
Device-2: NVIDIA GA107M [GeForce RTX 3050 Ti Mobile] vendor: Hewlett-Packard driver: nvidia
v: 550.107.02 arch: Ampere pcie: speed: 16 GT/s lanes: 8 ports: active: none empty: HDMI-A-1
bus-ID: 01:00.0 chip-ID: 10de:25a0 class-ID: 0300
Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.6 driver: X:
loaded: modesetting,nvidia unloaded: fbdev,nouveau,vesa dri: iris gpu: i915 display-ID: :0
screens: 1
Screen-1: 0 s-res: 3600x1080 s-dpi: 97 s-size: 946x284mm (37.24x11.18") s-diag: 988mm (38.89")
Monitor-1: DP-1 pos: primary,right model: Samsung SyncMaster serial: <filter> res: 1680x1050
hz: 60 dpi: 90 size: 474x296mm (18.66x11.65") diag: 559mm (22") modes: max: 1680x1050
min: 720x400
Monitor-2: eDP-1 pos: left model: BOE Display 0x094d res: 1920x1080 dpi: 142
size: 344x194mm (13.54x7.64") diag: 395mm (15.5") modes: 1920x1080
API: EGL v: 1.5 hw: drv: intel iris drv: nvidia platforms: device: 0 drv: nvidia device: 2
drv: iris device: 3 drv: swrast gbm: drv: nvidia surfaceless: drv: nvidia x11: drv: iris
inactive: wayland,device-1
API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 24.0.9-0ubuntu0.2 glx-v: 1.4
direct-render: yes renderer: Mesa Intel Graphics (ADL GT2) device-ID: 8086:46a3
➜ src ./picom --version
v12.2
(latest release builded from source)
I use nvidia-driver-550 instead nouveau.
In my situation, the behavior is very similar and switching backend to xrender instead glx helps to resolve problem (But other problems appear, such as the lack of normal transparency at the corners, ugly rounding of windows).
But after some time my second screen also becomes black and switching to tty and back decide situation on some time.
I recorded a video with this behavior: https://disk.yandex.ru/i/aVu2KYzpGFJGbQ
Also when I try to interact with space on black screen monitor in logs of picom I see some errors like DAMAGE_BAD_DAMAGE from X. Sry, Now i can't catch this logs because kill of picom crashing WM (but I think it's fine, in normal behavior you doesn't need to kill composer)).But if you need them, I can try to provide it.
@Lisoveliy you can redirect logs to a file, there is also the --log-file= option.
i suspect this is some kind of driver problem. are there any commonalities among people having this problem :thinking:
hmm, looks like everybody is using an intel GPU?
Ok, I recorded some logs and tried to change work mode of driver to only NVIDIA
In this mode picom working perfectly and after kill of picom WM continue to work so I think this issue appears only when intel GPU is used.
Here is some logs with NVIDIA On-Demand(Intel GPU on default) where problems exists picom.log (advice: grep with word 'damage' and 'DAMAGE')
And NVIDIA Perfomance Mode(Only Nvidia GPU) where problem not appears picom-nvidia.log
P.S> Sorry if my English is hard to read. I am not a native speaker.
ok, so this could be a intel issue, or maybe this is a gpu offloading (i.e. PRIME) issue? are the others in this thread also using a intel+nvidia setup?
ok, so this could be a intel issue, or maybe this is a gpu offloading (i.e. PRIME) issue? are the others in this thread also using a intel+nvidia setup?
I can try test picom only with intel GPU to make sure it's a gpu offloading issue a little bit later
thanks to @XoDefender the issue was tracked down to a bug in the intel's i915 driver triggered by a combination of particular gpus and the modesetting driver.
the proper fix is updating the kernel to at least 6.9 where the underlying bug is fixed. if it's not possible to update the kernel, available workarounds are:
- disabling the
PageFlipmodesetting driver's option (preferred); LIBGL_DRI3_DISABLE=1.
nothing can be done about this in picom.
closing as resolved.
To guys from 2025, who still meet this problem. Don't use xrender as a backend(it dfoesn't have fancy blur methods). I've tried vsync + experimental-backends option and now it works as it supposed.
experimental-backends = true;
backend = "glx";
vsync = true;
