swaywm / sway

i3-compatible Wayland compositor
https://swaywm.org
MIT License
14.16k stars 1.08k forks source link

Fullscreen applications not rendered on external monitor on a 2x AMD system with Vulkan renderer #8206

Open lpaulino07 opened 1 month ago

lpaulino07 commented 1 month ago
lpaulino07 commented 1 month ago

Turns out that this is only happening on external monitor (this is a laptop, and monitor is connected through a mini-DP to DP cable). Changed title of this issue.

emersion commented 1 month ago

Does it work with the GLES2 renderer?

lpaulino07 commented 1 month ago

Just tried with WLR_RENDERER=gles2 and it still happens, but I get this instead:

00:00:35.397 [INFO] [sway/commands.c:260] Handling command 'fullscreen'
00:00:35.397 [DEBUG] [sway/ipc-server.c:326] Sending window::fullscreen_mode event
00:00:35.397 [DEBUG] [sway/tree/arrange.c:262] Usable area for ws: 1920x1020@0,30
00:00:35.397 [DEBUG] [sway/tree/arrange.c:296] Arranging workspace '2' at 1920.000000, 30.000000
00:00:35.397 [DEBUG] [sway/desktop/transaction.c:787] Transaction 0x5ca46e6410f0 committing with 2 instructions
00:00:35.402 [DEBUG] [wlr] [render/gles2/renderer.c:158] Created GL FBO for buffer 1920x1080
00:00:35.403 [DEBUG] [sway/desktop/transaction.c:873] Transaction 0x5ca46e6410f0 is ready
00:00:35.403 [DEBUG] [sway/desktop/transaction.c:683] Applying transaction 0x5ca46e6410f0
00:00:35.405 [DEBUG] [wlr] [types/scene/wlr_scene.c:1843] Direct scan-out enabled
00:00:35.405 [ERROR] [wlr] [EGL] command: eglCreateImageKHR, error: EGL_BAD_MATCH (0x3009), message: "createImageFromDmaBufs failed"
00:00:35.405 [ERROR] [wlr] [render/egl.c:778] eglCreateImageKHR failed
00:00:35.405 [ERROR] [wlr] [backend/drm/renderer.c:88] Failed to import source buffer into multi-GPU renderer
00:00:35.408 [DEBUG] [wlr] [render/gles2/renderer.c:158] Created GL FBO for buffer 1920x1080
00:00:35.408 [ERROR] [wlr] [EGL] command: eglCreateImageKHR, error: EGL_BAD_MATCH (0x3009), message: "createImageFromDmaBufs failed"
00:00:35.408 [ERROR] [wlr] [render/egl.c:778] eglCreateImageKHR failed
00:00:35.408 [ERROR] [wlr] [backend/drm/renderer.c:88] Failed to import source buffer into multi-GPU renderer

I also just realized that it seems to be app dependent (with both vulkan and GLES2), since I tried using Firefox and noticed that I was able to make it go fullscreen. I tested with some of the apps that I have installed in case that helps.

Something really strange that I noticed while testing these apps is that if I have OBS Studio open and capturing the display, all of the apps will magically start working in fullscreen. Not sure what's the relation but it seems like I can straight up work around the issue by just having OBS Studio open, and the errors don't show up in the logs anymore. Instead, I get these 4 lines being spammed in the log while OBS is capturing the display:

00:19:03.386 [DEBUG] [wlr] [types/output/render.c:146] Enabling direct scan-out on output 'DP-1' (locks: 0)
00:19:03.386 [DEBUG] [wlr] [types/output/cursor.c:54] Enabling hardware cursors on output 'DP-1' (locks: 0)
00:19:03.387 [DEBUG] [wlr] [types/output/render.c:146] Disabling direct scan-out on output 'DP-1' (locks: 1)
00:19:03.388 [DEBUG] [wlr] [types/output/cursor.c:54] Disabling hardware cursors on output 'DP-1' (locks: 1)