picom icon indicating copy to clipboard operation
picom copied to clipboard

when use multiple monitors picom make second monitor display black

Open BingCoke opened this issue 2 years ago • 20 comments

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%) .

BingCoke avatar Feb 21 '23 01:02 BingCoke

what picom's version you're on? and how multiple monitors are configured?

absolutelynothelix avatar Feb 21 '23 13:02 absolutelynothelix

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/

image

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

BingCoke avatar Feb 21 '23 14:02 BingCoke

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?

BingCoke avatar Feb 22 '23 05:02 BingCoke

that reminds me of the #1017... does this happen if you start picom as:

  1. picom --config=/dev/null --backend=glx;
  2. picom --config=/dev/null --backend=egl?

absolutelynothelix avatar Feb 22 '23 08:02 absolutelynothelix

that reminds me of the #1017... does this happen if you start picom as:

  1. picom --config=/dev/null --backend=glx;
  2. 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.

BingCoke avatar Feb 22 '23 11:02 BingCoke

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.

absolutelynothelix avatar Feb 22 '23 19:02 absolutelynothelix

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?

tryone144 avatar Feb 22 '23 20:02 tryone144

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?

  1. yes.I can see mouse only.
  2. Only,the eDP-1 is fine.

there is something interesting.when i set monitor with this, HDMI-1 will show content.(superimpose them together) image

> 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

BingCoke avatar Feb 23 '23 05:02 BingCoke

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.

itsdawei avatar Mar 07 '23 07:03 itsdawei

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.

absolutelynothelix avatar Mar 07 '23 07:03 absolutelynothelix

@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

tryone144 avatar Mar 10 '23 16:03 tryone144

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

itsdawei avatar Mar 16 '23 03:03 itsdawei

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)

Agh42 avatar Jun 28 '23 08:06 Agh42

Can confirm that solution above ^ worked like a charm Thank you so much!

Kamyil avatar Nov 16 '23 15:11 Kamyil

this should have been solved by #1002

ping me if the problem is still there.

yshui avatar Dec 22 '23 11:12 yshui

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 avatar Oct 14 '24 00:10 Lisoveliy

@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?

yshui avatar Oct 14 '24 09:10 yshui

Ok, I recorded some logs and tried to change work mode of driver to only NVIDIA Экранны здымак з 2024-10-14 17-19-32

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.

Lisoveliy avatar Oct 14 '24 14:10 Lisoveliy

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?

yshui avatar Oct 14 '24 14:10 yshui

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

Lisoveliy avatar Oct 14 '24 17:10 Lisoveliy

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:

  1. disabling the PageFlip modesetting driver's option (preferred);
  2. LIBGL_DRI3_DISABLE=1.

nothing can be done about this in picom.

closing as resolved.

absolutelynothelix avatar Nov 01 '24 20:11 absolutelynothelix

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;

mprytula avatar Mar 03 '25 12:03 mprytula