Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

types/wlr_linux_dmabuf_v1.c:526: feedback_compile: Assertion `table_len > 0' failed. #1218

Open
demanuPL opened this issue Mar 26, 2024 · 40 comments

Comments

@demanuPL
Copy link

demanuPL commented Mar 26, 2024

since update to 3.14.2 I'm facing this error every time I running something through gamescope, it crashes immediately. It worked fine with 3.13.16

Here is an example with vkcube:

No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
xdg_backend: Seat name:
xdg_backend: PreferredMetadata: Red: 0.64 0.33, Green: 0.3 0.6, Blue: 0.15 0.06, White: 0.3127 0.329, Max Luminance: 100 nits, Min Luminance: 0 nits, Max Full Frame Luminance: 100 nits
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
vulkan: selecting physical device 'AMD Radeon RX 570 Series (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
vulkan: supported DRM formats for sampling usage:
gamescope: types/wlr_linux_dmabuf_v1.c:526: feedback_compile: Assertion `table_len > 0' failed.

@denzerdhart
Copy link

denzerdhart commented Mar 27, 2024

I'm getting the same error with polaris card in nested mode, but embedded works fine.
Tested 82e3632
gamescope: ../gamescope/src/wayland_backend.cpp:1170: virtual void gamescope::CWaylandBackend::GetPreferredOutputFormat(VkFormat*, VkFormat*) const: Assertion `u8BitFormat != VK_FORMAT_UNDEFINED' failed.

sharkautarch added a commit to sharkautarch/gamescope that referenced this issue Mar 27, 2024
sharkautarch added a commit to sharkautarch/gamescope that referenced this issue Mar 27, 2024
@sharkautarch
Copy link

I'm getting the same error with polaris card in nested mode, but embedded works fine. Tested 82e3632 gamescope: ../gamescope/src/wayland_backend.cpp:1170: virtual void gamescope::CWaylandBackend::GetPreferredOutputFormat(VkFormat*, VkFormat*) const: Assertion `u8BitFormat != VK_FORMAT_UNDEFINED' failed.

Haven't tested this (besides making sure it compiles w/o errors), but see if this branch/fork I made works:
https://github.com/sharkautarch/gamescope/tree/format_modifier_issue_fix_attempt

(clone from my fork, and then do git checkout format_modifier_issue_fix_attempt)

@demanuPL
Copy link
Author

demanuPL commented Mar 27, 2024

Replying to #1218 (comment)

I've build it but it has error connecting to wayland:

`No CAP_SYS_NICE, falling back to regular-priority compute and threads.

Performance will be affected.

xdg_backend: libdecor: GTK cannot connect to Wayland compositor`

In DMESG:
[ 3454.113709] gamescope[25225]: segfault at 0 ip 00007f66dd383877 sp 00007ffe7231f970 error 4 in libdecor-0.so.0.200.0[7f66dd382000+3000] likely on CPU 5 (core 1, socket 0)

sharkautarch added a commit to sharkautarch/gamescope that referenced this issue Mar 27, 2024
@sharkautarch
Copy link

sharkautarch commented Mar 27, 2024

Replying to #1218 (comment)

Ok, I know there was another issue related to gamescope wayland backend having problems w/ libdecor
So I rebased my branch to remove all of the libdecor-related stuff
So try doing git pull and rebuilding and running gamescope again

@demanuPL
Copy link
Author

now testing it with vkcube I'm gettiing the same error as on generic one (I've checked branch and its correct)

./gamescope -- vkcube
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
xdg_backend: Seat name:
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
vulkan: selecting physical device 'AMD Radeon RX 570 Series (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
vulkan: supported DRM formats for sampling usage:
gamescope: types/wlr_linux_dmabuf_v1.c:526: feedback_compile: Assertion `table_len > 0' failed.

@sharkautarch
Copy link

sharkautarch commented Mar 28, 2024

Replying to #1218 (comment)

¯_(ツ)_/¯

@denzerdhart
Copy link

Replying to #1218 (comment)

¯_(ツ)_/¯

Tried your branch
./gamescope -- vkcube
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
xdg_backend: Seat name: seat0
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
vulkan: selecting physical device 'AMD Radeon RX 560 Series (RADV POLARIS11)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
vulkan: supported DRM formats for sampling usage:
vulkan: AR24 (0x34325241)
vulkan: XR24 (0x34325258)
vulkan: AB24 (0x34324241)
vulkan: XB24 (0x34324258)
vulkan: RG16 (0x36314752)
vulkan: NV12 (0x3231564E)
vulkan: AB4H (0x48344241)
vulkan: XB4H (0x48344258)
vulkan: AB48 (0x38344241)
vulkan: XB48 (0x38344258)
vulkan: AB30 (0x30334241)
vulkan: XB30 (0x30334258)
vulkan: AR30 (0x30335241)
vulkan: XR30 (0x30335258)
gamescope: ../src/wayland_backend.cpp:1021: virtual void gamescope::CWaylandBackend::GetPreferredOutputFormat(VkFormat*, VkFormat*) const: Assertion `u8BitFormat != VK_FORMAT_UNDEFINED' failed.

@misyltoad
Copy link
Collaborator

Your GPU is too old to support modifiers. I need to add a non-modifier fallback.

@italoghost
Copy link

italoghost commented Apr 13, 2024

I am having the same issue with the 3.14.3 version and the latest git:

gamescope -- glxgears

No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
vulkan: selecting physical device 'AMD Radeon RX 570 Series (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
xdg_backend: Seat name: seat0
vulkan: supported DRM formats for sampling usage:
gamescope: ../gamescope/src/wayland_backend.cpp:1280: virtual void gamescope::CWaylandBackend::GetPreferredOutputFormat(VkFormat*, VkFormat*) const: Assertion `u8BitFormat != VK_FORMAT_UNDEFINED' failed.
Abortado (imagem do núcleo gravada)

@ammgws
Copy link

ammgws commented Apr 13, 2024

Downgrading to 3.14.2 for now.
Bisected to 82e3632

To help people searching to find this issue:

3.14.2:

vulkan: selecting physical device 'AMD Radeon RX 570 Series (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
vulkan: supported DRM formats for sampling usage:
vulkan:   AR24 (0x34325241)
vulkan:   XR24 (0x34325258)
vulkan:   AB24 (0x34324241)
vulkan:   XB24 (0x34324258)
vulkan:   RG16 (0x36314752)
vulkan:   NV12 (0x3231564E)
vulkan:   AB4H (0x48344241)
vulkan:   XB4H (0x48344258)
vulkan:   AB48 (0x38344241)
vulkan:   XB48 (0x38344258)
vulkan:   AB30 (0x30334241)
vulkan:   XB30 (0x30334258)
vulkan:   AR30 (0x30335241)
vulkan:   XR30 (0x30335258)

after 82e3632 :

vulkan: selecting physical device 'AMD Radeon RX 570 Series (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
xdg_backend: Seat name: seat0
vulkan: supported DRM formats for sampling usage:
gamescope: ../gamescope/src/wayland_backend.cpp:1276: virtual void gamescope::CWaylandBackend::GetPreferredOutputFormat(VkFormat*, VkFormat*) const: Assertion `u8BitFormat != VK_FORMAT_UNDEFINED' failed.
fish: Job 1, 'gamescope --nested-width 1920 -…' terminated by signal SIGABRT (Abort)

@misyltoad
Copy link
Collaborator

Does latest git work for you?

4ca3986 should hopefully fix it.

@Martinligabue
Copy link

I cloned the project, did the checkout of that commit and built the binary, but I still get this:

vulkan: selecting physical device 'AMD Radeon RX 480 Graphics (RADV POLARIS10)': queue family 1 (general queuefamily 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
xdg_backend: Seat name:
vulkan: supported DRM formats for sampling usage:
gamescope: types/wlr_linux_dmabuf_v1.c:532: feedback_compile: Assertion `table_len > 0' failed.
fish: Job 1, './build/src/gamescope vkcube' terminated by signal SIGABRT (Abort)

@ammgws
Copy link

ammgws commented May 20, 2024

Does latest git work for you?

4ca3986 should hopefully fix it.

That commit works for me:

>build/src/gamescope vkcube               (4ca39865)|BISECTING|3.9s|22:16:51
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
vulkan: selecting physical device 'AMD Radeon RX 570 Series (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
xdg_backend: Seat name: seat0
vulkan: supported DRM formats for sampling usage:
vulkan:   AR24 (0x34325241)
vulkan:   XR24 (0x34325258)
vulkan:   AB24 (0x34324241)
vulkan:   XB24 (0x34324258)
vulkan:   RG16 (0x36314752)
vulkan:   NV12 (0x3231564E)
vulkan:   AB4H (0x48344241)
vulkan:   XB4H (0x48344258)
vulkan:   AB48 (0x38344241)
vulkan:   XB48 (0x38344258)
vulkan:   AB30 (0x30334241)
vulkan:   XB30 (0x30334258)
vulkan:   AR30 (0x30335241)
vulkan:   XR30 (0x30335258)
...

@Martinligabue
Copy link

I'll attach the entire terminal log, in case I got something wrong during compile or during the switch to that 4ca3986:
gamescope build with branch.txt

@denzerdhart
Copy link

denzerdhart commented May 20, 2024

Does latest git work for you?

4ca3986 should hopefully fix it.

Thanks! Nested works on my old rx560, tried embedded - didn't work

@atamax
Copy link

atamax commented May 22, 2024

Archlinux with KDE Plasma Version: 6.0.4
Kernel Version: 6.9.1-2-cachyos (64-bit)
CPU: Intel Xeon E3-1230 V2
Graphics Processor: AMD Radeon RX 470 Graphics

Installed gamescope from AUR via the package gamescope-git which got commit 932a7bb

Still getting this with gamescope vkcube:

vulkan: selecting physical device 'AMD Radeon RX 470 Graphics (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
xdg_backend: Seat name: 
vulkan: supported DRM formats for sampling usage:
gamescope: types/wlr_linux_dmabuf_v1.c:532: feedback_compile: Assertion 'table_len > 0' failed.
Aborted (core dumped)

While running it via TTY bash login shell with gamescope vkcube:

vulkan: selecting physical device 'AMD Radeon RX 470 Graphics (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
wlserver: [libseat] [libseat/backend/seatd.c:64] Could not connect to socket /run/seatd.sock: No such file or directory
wlserver: [libseat] [libseat/libseat.c:76] Backend 'seatd' failed to open seat, skipping
wlserver: [libseat] [libseat/libseat.c:73] Seat opened with backend 'logind'
wlserver: [backend/session/session.c:108] Successfully loaded libseat session
drm: opening DRM node '/dev/dri/card0'
drm: Connector DVI-D-1 -> HWP - HP x20LED
drm: [colorimetry]: EDID with colorimetry detected. Using it
drm: [colorimetry]: r 0.630859 0.348633
drm: [colorimetry]: g 0.340820 0.622070
drm: [colorimetry]: b 0.152344 0.057617
drm: [colorimetry]: w 0.313477 0.329102
drm: Connector DVI-D-1 -> HWP - HP x20LED
drm: [colorimetry]: EDID with colorimetry detected. Using it
drm: [colorimetry]: r 0.630859 0.348633
drm: [colorimetry]: g 0.340820 0.622070
drm: [colorimetry]: b 0.152344 0.057617
drm: [colorimetry]: w 0.313477 0.329102
drm: Connectors:
drm:   DVI-D-1 (connected)
drm:   HDMI-A-2 (disconnected)
drm:   HDMI-A-1 (disconnected)
drm:   DP-2 (disconnected)
drm:   DP-1 (disconnected)
drm: selecting connector DVI-D-1
drm: selecting mode 1600x900@60Hz
vulkan: supported DRM formats for sampling usage:
vulkan:   AR24 (0x34325241)
vulkan:   XR24 (0x34325258)
vulkan:   AB24 (0x34324241)
vulkan:   XB24 (0x34324258)
vulkan:   RG16 (0x36314752)
vulkan:   NV12 (0x3231564E)
vulkan:   AB4H (0x48344241)
vulkan:   XB4H (0x48344258)
vulkan:   AB48 (0x38344241)
vulkan:   XB48 (0x38344258)
vulkan:   AB30 (0x30334241)
vulkan:   XB30 (0x30334258)
vulkan:   AR30 (0x30335241)
vulkan:   XR30 (0x30335258)
drm: drmModeAddFB2 failed: Invalid argument
drm: drmModeAddFB2 failed: Invalid argument
drm: drmModeAddFB2 failed: Invalid argument
drm: drmModeAddFB2 failed: Invalid argument
wlserver: Using explicit sync when available
wlserver: Running compositor on wayland display 'gamescope-0'
wlserver: [backend/headless/backend.c:17] Starting headless backend
wlserver: [backend/libinput/backend.c:88] Starting libinput backend
wlserver: [backend/libinput/events.c:69] Adding Power Button [0:1]
wlserver: [backend/libinput/events.c:69] Adding Power Button [0:1]
wlserver: [backend/libinput/events.c:69] Adding TTGK Technology Co.,Ltd CX31993 384Khz HIFI AUDIO Consumer Control [13058:13157]
wlserver: [backend/libinput/events.c:69] Adding USB Gaming Mouse [1241:64607]
wlserver: [backend/libinput/events.c:69] Adding USB Gaming Mouse [1241:64607]
wlserver: [backend/libinput/events.c:69] Adding USB Gaming Mouse Consumer Control [1241:64607]
wlserver: [backend/libinput/events.c:69] Adding SINO WEALTH Keyboard [9610:42]
wlserver: [backend/libinput/events.c:69] Adding SINO WEALTH Keyboard Mouse [9610:42]
wlserver: [backend/libinput/events.c:69] Adding SINO WEALTH Keyboard System Control [9610:42]
wlserver: [backend/libinput/events.c:69] Adding SINO WEALTH Keyboard Consumer Control [9610:42]
wlserver: [backend/libinput/events.c:69] Adding SINO WEALTH Keyboard [9610:42]
wlserver: [backend/libinput/backend.c:127] libinput successfully initialized
wlserver: Successfully initialized libei for input emulation!
wlserver: [xwayland/sockets.c:64] Failed to bind socket @/tmp/.X11-unix/X0: Address already in use
wlserver: [xwayland/server.c:107] Starting Xwayland on :2
wlserver: [types/wlr_compositor.c:771] New wlr_surface 0x5f721ce1f310 (res 0x5f721d0a4850)
wlserver: [xwayland/server.c:272] Xserver is ready
pipewire: stream state changed: connecting
pipewire: stream state changed: paused
pipewire: stream available on node ID: 83
xwm: Embedded, no cursor set. Using left_ptr by default.
vblank: Using timerfd.
drm: drmModeAddFB2 failed: Invalid argument
drm: drmModeAddFB2 failed: Invalid argument
drm: drmModeAddFB2 failed: Invalid argument
drm: drmModeAddFB2 failed: Invalid argument
pipewire: renegotiating stream params (size: 1600x900)
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
Selected GPU 0: AMD Radeon RX 470 Graphics (RADV POLARIS10), type: DiscreteGpu
[Gamescope WSI] Creating Gamescope surface: xid: 0x400000
[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL.
wlserver: [types/wlr_compositor.c:771] New wlr_surface 0x5f721cce8270 (res 0x5f721cfb1570)
wlserver: [types/wlr_compositor.c:771] New wlr_surface 0x5f721cd50410 (res 0x5f721d05bd90)
[Gamescope WSI] Made gamescope surface for xid: 0x400000
[Gamescope WSI] Surface state:
  steam app id:                  0
  window xid:                    0x400000
  wayland surface res id:        5
  layer client flags:            0x0
  server hdr output enabled:     false
  hdr formats exposed to client: false
[Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1.
drm: drmModeAddFB2 failed: Invalid argument
xwm: got the same buffer committed twice, ignoring.
xwm: We failed our modeset and have no mode to fall back to! (Initial modeset failed?): Invalid argument
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported maximum keycode 708, clipping.
>                   X11 cannot support keycodes above 255.
> Warning:          Could not resolve keysym XF86KbdInputAssistPrevgrou
> Warning:          Could not resolve keysym XF86KbdInputAssistNextgrou
Errors from xkbcomp are not fatal to the X server

Downgrading back to 3.14.2 works for me without error.

@HanabishiRecca
Copy link

4ca3986 should hopefully fix it.

Funny enough, even eliminating 82e3632 change completely does not fix the issue.

I.e. applying

diff --git a/src/wayland_backend.cpp b/src/wayland_backend.cpp
index c5b33cf..2fcb1ff 100644
--- a/src/wayland_backend.cpp
+++ b/src/wayland_backend.cpp
@@ -1273,22 +1273,8 @@ namespace gamescope
 
     void CWaylandBackend::GetPreferredOutputFormat( VkFormat *pPrimaryPlaneFormat, VkFormat *pOverlayPlaneFormat ) const
     {
-        VkFormat u8BitFormat = VK_FORMAT_UNDEFINED;
-        if ( SupportsFormat( DRM_FORMAT_ARGB8888 ) )
-            u8BitFormat = VK_FORMAT_B8G8R8A8_UNORM;
-        else if ( SupportsFormat( DRM_FORMAT_ABGR8888 ) )
-            u8BitFormat = VK_FORMAT_R8G8B8A8_UNORM;
-
-        VkFormat u10BitFormat = VK_FORMAT_UNDEFINED;
-        if ( SupportsFormat( DRM_FORMAT_ABGR2101010 ) )
-            u10BitFormat = VK_FORMAT_A2B10G10R10_UNORM_PACK32;
-        else if ( SupportsFormat( DRM_FORMAT_ARGB2101010 ) )
-            u10BitFormat = VK_FORMAT_A2R10G10B10_UNORM_PACK32;
-
-        assert( u8BitFormat != VK_FORMAT_UNDEFINED );
-
-        *pPrimaryPlaneFormat = u10BitFormat != VK_FORMAT_UNDEFINED ? u10BitFormat : u8BitFormat;
-        *pOverlayPlaneFormat = u8BitFormat;
+        *pPrimaryPlaneFormat = VK_FORMAT_A2B10G10R10_UNORM_PACK32;
+        *pOverlayPlaneFormat = VK_FORMAT_B8G8R8A8_UNORM;
     }
 
     bool CWaylandBackend::ValidPhysicalDevice( VkPhysicalDevice pVkPhysicalDevice ) const

Still produces the same result for me

vulkan: selecting physical device 'AMD Radeon RX 580 Series (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
xdg_backend: Seat name: 
vulkan: supported DRM formats for sampling usage:
gamescope: types/wlr_linux_dmabuf_v1.c:532: feedback_compile: Assertion `table_len > 0' failed.

@HanabishiRecca
Copy link

HanabishiRecca commented May 22, 2024

Well, ditching the Wayland backed and switching back to SDL backend (as it was in 3.14.2) works for me.

diff --git a/src/main.cpp b/src/main.cpp
index 88c4c7c..972b2ab 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -762,7 +762,7 @@ int main(int argc, char **argv)
 	if ( eCurrentBackend == gamescope::GamescopeBackend::Auto )
 	{
 		if ( g_pOriginalWaylandDisplay != NULL )
-			eCurrentBackend = gamescope::GamescopeBackend::Wayland;
+			eCurrentBackend = gamescope::GamescopeBackend::SDL;
 		else if ( g_pOriginalDisplay != NULL )
 			eCurrentBackend = gamescope::GamescopeBackend::SDL;
 		else

Although, it's a dirty solution. Users should not need to patch the source to do that. We need a CLI option to explicitly set the backend.
Something like --backend=auto|drm|sdl|openvr|headless|wayland to represent the enum

enum GamescopeBackend
{
Auto,
DRM,
SDL,
OpenVR,
Headless,
Wayland,
};

Presumably, also deprecate existing --headless and --openvr.

@atamax
Copy link

atamax commented May 22, 2024

Well, ditching the Wayland backed and switching back to SDL backend (as it was in 3.14.2) works for me.

Worked for me too, here is the output of `gamescope vkcube' after using your patch on the commit 932a7bb:

ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
vulkan: selecting physical device 'AMD Radeon RX 470 Graphics (RADV POLARIS10)': queue family 1 (general queue family 0)
vulkan: physical device does not support DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
vulkan: supported DRM formats for sampling usage:
vulkan:   AR24 (0x34325241)
vulkan:   XR24 (0x34325258)
vulkan:   AB24 (0x34324241)
vulkan:   XB24 (0x34324258)
vulkan:   RG16 (0x36314752)
vulkan:   NV12 (0x3231564E)
vulkan:   AB4H (0x48344241)
vulkan:   XB4H (0x48344258)
vulkan:   AB48 (0x38344241)
vulkan:   XB48 (0x38344258)
vulkan:   AB30 (0x30334241)
vulkan:   XB30 (0x30334258)
vulkan:   AR30 (0x30335241)
vulkan:   XR30 (0x30335258)
vulkan: Creating Gamescope nested swapchain with format 64 and colorspace 0
wlserver: Using explicit sync when available
wlserver: Running compositor on wayland display 'gamescope-0'
wlserver: [backend/headless/backend.c:17] Starting headless backend
xkbcommon: ERROR: Unrecognized RMLVO variant "qwerty" was ignored
wlserver: Successfully initialized libei for input emulation!
wlserver: [xwayland/sockets.c:64] Failed to bind socket @/tmp/.X11-unix/X0: Address already in use
wlserver: [xwayland/server.c:107] Starting Xwayland on :2
wlserver: [types/wlr_compositor.c:771] New wlr_surface 0x58c766a11100 (res 0x58c7669ecb90)
wlserver: [xwayland/server.c:272] Xserver is ready
pipewire: stream state changed: connecting
pipewire: stream state changed: paused
pipewire: stream available on node ID: 79
vblank: Using timerfd.
vulkan: Creating Gamescope nested swapchain with format 64 and colorspace 0
pipewire: renegotiating stream params (size: 1280x720)
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
Selected GPU 0: AMD Radeon RX 470 Graphics (RADV POLARIS10), type: DiscreteGpu
[Gamescope WSI] Creating Gamescope surface: xid: 0x400000
[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL.
wlserver: [types/wlr_compositor.c:771] New wlr_surface 0x58c7669c4c00 (res 0x58c7669ed640)
[Gamescope WSI] Made gamescope surface for xid: 0x400000
[Gamescope WSI] Surface state:
  steam app id:                  0
  window xid:                    0x400000
  wayland surface res id:        5
  layer client flags:            0x0
  server hdr output enabled:     false
  hdr formats exposed to client: false
[Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1.
wlserver: [types/wlr_compositor.c:771] New wlr_surface 0x58c7669c22f0 (res 0x58c7669ed760)
xwm: got the same buffer committed twice, ignoring.
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported maximum keycode 708, clipping.
>                   X11 cannot support keycodes above 255.
> Warning:          Could not resolve keysym XF86KbdInputAssistPrevgrou
> Warning:          Could not resolve keysym XF86KbdInputAssistNextgrou
Errors from xkbcomp are not fatal to the X server
[Gamescope WSI] Creating swapchain for xid: 0x400000 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: true
[Gamescope WSI] Created swapchain for xid: 0x400000 - imageCount: 3
[Gamescope WSI] Swapchain recieved new refresh cycle: 16.67ms
vulkan: Creating Gamescope nested swapchain with format 64 and colorspace 0
pipewire: renegotiating stream params (size: 1600x900)
vulkan: Creating Gamescope nested swapchain with format 64 and colorspace 0
pipewire: renegotiating stream params (size: 1280x720)
gamescope: Received Terminated signal, forwarding to child!
gamescope: Received Terminated signal, attempting shutdown!
gamescope: children shut down!

@HanabishiRecca
Copy link

I made a PR with new CLI option. #1321
It makes possible to select the backend on the fly, e.g. set --backend=sdl as a workaround in our case.

@demanuPL
Copy link
Author

demanuPL commented Jun 5, 2024

using --backend=sdl works for me

@Martinligabue
Copy link

this is fixed for me too when explicitly setting sdl, it would be nice if backend=auto would detect the card and set it automatically to sdl with these cards

@b-
Copy link

b- commented Jun 15, 2024

this is fixed for me too when explicitly setting sdl, it would be nice if backend=auto would detect the card and set it automatically to sdl with these cards

Something like this, and/or maybe also detecting such an issue and falling back to SDL instead of throwing a segfault. Is that possible?

korewaChino added a commit to korewaChino/gamescope that referenced this issue Aug 20, 2024
…to` is used.

This works around ValveSoftware#1218 by making use of the new backend option added in ValveSoftware#1321,
but adds a check to automatically fall back to the SDL backend if the current
GPU does not support Vulkan DRM modifiers.
korewaChino added a commit to korewaChino/gamescope that referenced this issue Aug 20, 2024
…to` is used.

This works around ValveSoftware#1218 by making use of the new backend option added in ValveSoftware#1321,
but adds a check to automatically fall back to the SDL backend if the current
GPU does not support Vulkan DRM modifiers.
@slynobody
Copy link

slynobody commented Sep 4, 2024

are there plans to get the wayland-backend (or drm) on polaris-gpus (without modifiers and without doing the workaround with the sdl-backend)?

@misyltoad
Copy link
Collaborator

I do not have a polaris GPU to look into this with. I have tested on other devices without modifiers and forced them off and it seems to work fine, so I don't know what the issue is.

The only thing I can think is that UsesModifiers is returning true when it should not. It might be worth trying to force that off and seeing what changes.

Other than that, it really just needs someone with a Polaris GPU to go and actually debug the issue.

@HanabishiRecca
Copy link

it really just needs someone with a Polaris GPU to go and actually debug the issue.

Sure. What exactly we need to debug?

@txt231
Copy link

txt231 commented Sep 16, 2024

Had a look at this and it seems like forcing UsesModifiers to return false fixes it.

Seems like CWaylandBackend::Wayland_Modifier gets called 2 times for each format, one with ulModifier as 0xffffffffffffff (DRM_FORMAT_MOD_INVALID) and one as 0. Where the 0 one gets added to m_FormatModifiers and makes UsesModifiers return true.

This makes this check return from the function, and sampledDRMFormats in turn becomes empty.

Running this on kwin if that makes any diffrence.

Test log
[gamescope] [Info]  console: gamescope version 3.15.9-1-gcc28cd7 (gcc 14.1.1)
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: NV16 (0x3631564E) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: NV16 (0x3631564E) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YU24 (0x34325559) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YU24 (0x34325559) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YVU9 (0x39555659) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YVU9 (0x39555659) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XB30 (0x30334258) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XB30 (0x30334258) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XB24 (0x34324258) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XB24 (0x34324258) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y410 (0x30313459) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y410 (0x30313459) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YU11 (0x31315559) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YU11 (0x31315559) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AR15 (0x35315241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AR15 (0x35315241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y416 (0x36313459) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y416 (0x36313459) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: UYVY (0x59565955) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: UYVY (0x59565955) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: GR32 (0x32335247) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: GR32 (0x32335247) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YUYV (0x56595559) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YUYV (0x56595559) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y212 (0x32313259) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y212 (0x32313259) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: R8 (0x20203852) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: R8 (0x20203852) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AR30 (0x30335241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AR30 (0x30335241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB12 (0x32314241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB12 (0x32314241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YV16 (0x36315659) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YV16 (0x36315659) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YU12 (0x32315559) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YU12 (0x32315559) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: VYUY (0x59555956) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: VYUY (0x59555956) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: NV21 (0x3132564E) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: NV21 (0x3132564E) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: GR88 (0x38385247) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: GR88 (0x38385247) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XR30 (0x30335258) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XR30 (0x30335258) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AR12 (0x32315241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AR12 (0x32315241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YV12 (0x32315659) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YV12 (0x32315659) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y412 (0x32313459) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y412 (0x32313459) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: NV12 (0x3231564E) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB48 (0x38344241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB48 (0x38344241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AR24 (0x34325241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AR24 (0x34325241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YVYU (0x55595659) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YVYU (0x55595659) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: P030 (0x30333050) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: P030 (0x30333050) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB4H (0x48344241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB4H (0x48344241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: P010 (0x30313050) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: P010 (0x30313050) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YU16 (0x36315559) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YU16 (0x36315559) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y216 (0x36313259) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y216 (0x36313259) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: R16 (0x20363152) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: R16 (0x20363152) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XB4H (0x48344258) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XB4H (0x48344258) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XYUV (0x56555958) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XYUV (0x56555958) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XB48 (0x38344258) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XB48 (0x38344258) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YUV9 (0x39565559) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YUV9 (0x39565559) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AYUV (0x56555941) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AYUV (0x56555941) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XR24 (0x34325258) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: XR24 (0x34325258) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YV24 (0x34325659) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YV24 (0x34325659) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB15 (0x35314241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB15 (0x35314241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YV11 (0x31315659) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: YV11 (0x31315659) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB24 (0x34324241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB24 (0x34324241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: P016 (0x36313050) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: P016 (0x36313050) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB30 (0x30334241) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: AB30 (0x30334241) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y210 (0x30313259) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: Y210 (0x30313259) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: P012 (0x32313050) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: P012 (0x32313050) 0
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: RG16 (0x36314752) ffffffffffffff
[gamescope] [Info]  xdg_backend: WaylandBackend::Wayland_Modifier: RG16 (0x36314752) 0
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
[gamescope] [Info]  vulkan: selecting physical device 'AMD Radeon RX 480 Graphics (RADV POLARIS10)': queue family 1 (general queue family 0)
[gamescope] [Info]  vulkan: physical device does not support DRM format modifiers
[gamescope] [Info]  wlserver: [backend/headless/backend.c:67] Creating headless backend
[gamescope] [Info]  xdg_backend: Seat name: 
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x34325241) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x34325241) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x34325258) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x34325258) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x34324241) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x34324241) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x34324258) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x34324258) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x36314752) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x3231564e) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x48344241) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x48344258) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x38344241) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x38344258) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x30334241) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x30334258) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x30335241) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM modifiers for drmFormat (0x30335258) does not contain DRM_FORMAT_MOD_INVALID:
[gamescope] [Info]  vulkan:      0x0
[gamescope] [Info]  vulkan: supported DRM formats for sampling usage (0):
gamescope: types/wlr_linux_dmabuf_v1.c:532: feedback_compile: Assertion `table_len > 0' failed.
[1]    271151 IOT instruction (core dumped)  ./build/src/gamescope -- vkcube

@misyltoad
Copy link
Collaborator

What hardware are you using? And can you send the output of drm_info?

@misyltoad
Copy link
Collaborator

I pushed some stuff to master that might help, can you give it a try?

@HanabishiRecca
Copy link

HanabishiRecca commented Sep 16, 2024

I pushed some stuff to master that might help, can you give it a try?

Wayland backend works now! But SDL backend crashes instead lol.

@txt231
Copy link

txt231 commented Sep 16, 2024

Tried the changes, and seems to work pefectly for Wayland backend.

As mentioned above it doesnt seem to work for sdl. I believe the reason for this is other backends return an empty span for supported modifiers while the new changes in backend.h checks if it contains invalid, without a check for UsesModifiers?
Making backends like SDL return a span with DRM_FORMAT_MOD_INVALID for GetSupportedModifiers seems to work, but unsure of other implications.
Changing this line to if ( GetBackend()->UsesModifiers() && !GetBackend()->SupportsFormat( drmFormat ) ) also seems to fix it.

Hardware info

CPU: amd 3700x
GPU: Radeon RX 480
Kernel: 6.9.10-zen1-1-zen
Kwin: 6.1.3-1
Plasma: 6.1.3-1

I have 3 screens connected and running, and a fourth screen with a forced EDID through kernel parameter which is turned off.
Connector 0: DP to VGA | forced edid
Connector 1: DP to DVI | vertical monitor
Connector 2: DP to DVI
Connector 3: HDMI

drm_info
Node: /dev/dri/card1
├───Driver: amdgpu (AMD GPU) version 3.57.0 (20150101)
│   ├───DRM_CLIENT_CAP_STEREO_3D supported
│   ├───DRM_CLIENT_CAP_UNIVERSAL_PLANES supported
│   ├───DRM_CLIENT_CAP_ATOMIC supported
│   ├───DRM_CLIENT_CAP_ASPECT_RATIO supported
│   ├───DRM_CLIENT_CAP_WRITEBACK_CONNECTORS supported
│   ├───DRM_CAP_DUMB_BUFFER = 1
│   ├───DRM_CAP_VBLANK_HIGH_CRTC = 1
│   ├───DRM_CAP_DUMB_PREFERRED_DEPTH = 24
│   ├───DRM_CAP_DUMB_PREFER_SHADOW = 1
│   ├───DRM_CAP_PRIME = 3
│   ├───DRM_CAP_TIMESTAMP_MONOTONIC = 1
│   ├───DRM_CAP_ASYNC_PAGE_FLIP = 1
│   ├───DRM_CAP_CURSOR_WIDTH = 128
│   ├───DRM_CAP_CURSOR_HEIGHT = 128
│   ├───DRM_CAP_ADDFB2_MODIFIERS = 0
│   ├───DRM_CAP_PAGE_FLIP_TARGET = 0
│   ├───DRM_CAP_CRTC_IN_VBLANK_EVENT = 1
│   ├───DRM_CAP_SYNCOBJ = 1
│   └───DRM_CAP_SYNCOBJ_TIMELINE = 1
├───Device: PCI 1002:67df Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590]
│   └───Available nodes: primary, render
├───Framebuffer size
│   ├───Width: [0, 16384]
│   └───Height: [0, 16384]
├───Connectors
│   ├───Connector 0
│   │   ├───Object ID: 76
│   │   ├───Type: DisplayPort
│   │   ├───Status: connected
│   │   ├───Physical size: 380x290 mm
│   │   ├───Subpixel: unknown
│   │   ├───Encoders: {0}
│   │   ├───Modes
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   └───[email protected] driver nhsync nvsync 
│   │   └───Properties
│   │       ├───"EDID" (immutable): blob = 82
│   │       ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│   │       ├───"link-status": enum {Good, Bad} = Good
│   │       ├───"non-desktop" (immutable): range [0, 1] = 0
│   │       ├───"TILE" (immutable): blob = 0
│   │       ├───"CRTC_ID" (atomic): object CRTC = 59
│   │       ├───"scaling mode": enum {None, Full, Center, Full aspect} = None
│   │       ├───"underscan": enum {off, on, auto} = off
│   │       ├───"underscan hborder": range [0, 128] = 0
│   │       ├───"underscan vborder": range [0, 128] = 0
│   │       ├───"max bpc": range [8, 16] = 16
│   │       ├───"Colorspace": enum {Default, BT709_YCC, opRGB, BT2020_RGB, BT2020_YCC} = Default
│   │       ├───"HDR_OUTPUT_METADATA": blob = 0
│   │       ├───"vrr_capable" (immutable): range [0, 1] = 0
│   │       └───"subconnector" (immutable): enum {Unknown, VGA, DVI-D, HDMI, DP, Wireless, Native} = VGA
│   ├───Connector 1
│   │   ├───Object ID: 83
│   │   ├───Type: DisplayPort
│   │   ├───Status: connected
│   │   ├───Physical size: 520x330 mm
│   │   ├───Subpixel: unknown
│   │   ├───Encoders: {1}
│   │   ├───Modes
│   │   │   ├───[email protected] preferred driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   └───[email protected] driver nhsync pvsync 
│   │   └───Properties
│   │       ├───"EDID" (immutable): blob = 88
│   │       ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│   │       ├───"link-status": enum {Good, Bad} = Good
│   │       ├───"non-desktop" (immutable): range [0, 1] = 0
│   │       ├───"TILE" (immutable): blob = 0
│   │       ├───"CRTC_ID" (atomic): object CRTC = 62
│   │       ├───"scaling mode": enum {None, Full, Center, Full aspect} = None
│   │       ├───"underscan": enum {off, on, auto} = off
│   │       ├───"underscan hborder": range [0, 128] = 0
│   │       ├───"underscan vborder": range [0, 128] = 0
│   │       ├───"max bpc": range [8, 16] = 16
│   │       ├───"Colorspace": enum {Default, BT709_YCC, opRGB, BT2020_RGB, BT2020_YCC} = Default
│   │       ├───"HDR_OUTPUT_METADATA": blob = 0
│   │       ├───"vrr_capable" (immutable): range [0, 1] = 0
│   │       └───"subconnector" (immutable): enum {Unknown, VGA, DVI-D, HDMI, DP, Wireless, Native} = HDMI
│   ├───Connector 2
│   │   ├───Object ID: 89
│   │   ├───Type: DisplayPort
│   │   ├───Status: connected
│   │   ├───Physical size: 550x340 mm
│   │   ├───Subpixel: unknown
│   │   ├───Encoders: {2}
│   │   ├───Modes
│   │   │   ├───[email protected] preferred driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] nhsync pvsync 
│   │   │   ├───[email protected] driver phsync nvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver phsync pvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   ├───[email protected] driver nhsync nvsync 
│   │   │   └───[email protected] driver nhsync pvsync 
│   │   └───Properties
│   │       ├───"EDID" (immutable): blob = 94
│   │       ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│   │       ├───"link-status": enum {Good, Bad} = Good
│   │       ├───"non-desktop" (immutable): range [0, 1] = 0
│   │       ├───"TILE" (immutable): blob = 0
│   │       ├───"CRTC_ID" (atomic): object CRTC = 65
│   │       ├───"scaling mode": enum {None, Full, Center, Full aspect} = None
│   │       ├───"underscan": enum {off, on, auto} = off
│   │       ├───"underscan hborder": range [0, 128] = 0
│   │       ├───"underscan vborder": range [0, 128] = 0
│   │       ├───"max bpc": range [8, 16] = 16
│   │       ├───"Colorspace": enum {Default, BT709_YCC, opRGB, BT2020_RGB, BT2020_YCC} = Default
│   │       ├───"HDR_OUTPUT_METADATA": blob = 0
│   │       ├───"vrr_capable" (immutable): range [0, 1] = 0
│   │       └───"subconnector" (immutable): enum {Unknown, VGA, DVI-D, HDMI, DP, Wireless, Native} = HDMI
│   └───Connector 3
│       ├───Object ID: 95
│       ├───Type: HDMI-A
│       ├───Status: connected
│       ├───Physical size: 600x340 mm
│       ├───Subpixel: unknown
│       ├───Encoders: {3}
│       ├───Modes
│       │   ├───[email protected] preferred driver phsync pvsync 
│       │   ├───[email protected] driver phsync pvsync 16:9 
│       │   ├───[email protected] driver phsync pvsync 16:9 
│       │   ├───[email protected] driver phsync pvsync 16:9 
│       │   ├───[email protected] driver phsync nvsync 
│       │   ├───[email protected] driver phsync nvsync 
│       │   ├───[email protected] driver phsync pvsync 
│       │   ├───[email protected] driver phsync pvsync 
│       │   ├───[email protected] driver phsync nvsync 
│       │   ├───[email protected] driver phsync nvsync 
│       │   ├───[email protected] nhsync pvsync 
│       │   ├───[email protected] driver phsync pvsync 
│       │   ├───[email protected] driver phsync pvsync 16:9 
│       │   ├───[email protected] driver phsync pvsync 16:9 
│       │   ├───[email protected] driver phsync pvsync 16:9 
│       │   ├───[email protected] driver nhsync nvsync 
│       │   ├───[email protected] driver phsync pvsync 
│       │   ├───[email protected] driver nhsync nvsync 16:9 
│       │   ├───[email protected] driver nhsync nvsync 4:3 
│       │   ├───[email protected] driver nhsync nvsync 16:9 
│       │   ├───[email protected] driver nhsync nvsync 
│       │   ├───[email protected] driver nhsync nvsync 16:9 
│       │   ├───[email protected] driver nhsync nvsync 4:3 
│       │   ├───[email protected] driver nhsync nvsync 
│       │   └───[email protected] driver nhsync nvsync 4:3 
│       └───Properties
│           ├───"EDID" (immutable): blob = 101
│           ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│           ├───"link-status": enum {Good, Bad} = Good
│           ├───"non-desktop" (immutable): range [0, 1] = 0
│           ├───"TILE" (immutable): blob = 0
│           ├───"CRTC_ID" (atomic): object CRTC = 68
│           ├───"scaling mode": enum {None, Full, Center, Full aspect} = None
│           ├───"underscan": enum {off, on, auto} = off
│           ├───"underscan hborder": range [0, 128] = 0
│           ├───"underscan vborder": range [0, 128] = 0
│           ├───"max bpc": range [8, 16] = 16
│           ├───"content type": enum {No Data, Graphics, Photo, Cinema, Game} = Graphics
│           ├───"Colorspace": enum {Default, BT709_YCC, opRGB, BT2020_RGB, BT2020_YCC} = Default
│           ├───"HDR_OUTPUT_METADATA": blob = 0
│           └───"vrr_capable" (immutable): range [0, 1] = 0
├───Encoders
│   ├───Encoder 0
│   │   ├───Object ID: 75
│   │   ├───Type: TMDS
│   │   ├───CRTCS: {0, 1, 2, 3, 4, 5}
│   │   └───Clones: {0}
│   ├───Encoder 1
│   │   ├───Object ID: 81
│   │   ├───Type: TMDS
│   │   ├───CRTCS: {0, 1, 2, 3, 4, 5}
│   │   └───Clones: {1}
│   ├───Encoder 2
│   │   ├───Object ID: 87
│   │   ├───Type: TMDS
│   │   ├───CRTCS: {0, 1, 2, 3, 4, 5}
│   │   └───Clones: {2}
│   ├───Encoder 3
│   │   ├───Object ID: 93
│   │   ├───Type: TMDS
│   │   ├───CRTCS: {0, 1, 2, 3, 4, 5}
│   │   └───Clones: {3}
│   ├───Encoder 4
│   │   ├───Object ID: 100
│   │   ├───Type: DP MST
│   │   ├───CRTCS: {0, 1, 2, 3, 4, 5}
│   │   └───Clones: {4}
│   ├───Encoder 5
│   │   ├───Object ID: 102
│   │   ├───Type: DP MST
│   │   ├───CRTCS: {0, 1, 2, 3, 4, 5}
│   │   └───Clones: {5}
│   ├───Encoder 6
│   │   ├───Object ID: 103
│   │   ├───Type: DP MST
│   │   ├───CRTCS: {0, 1, 2, 3, 4, 5}
│   │   └───Clones: {6}
│   ├───Encoder 7
│   │   ├───Object ID: 104
│   │   ├───Type: DP MST
│   │   ├───CRTCS: {0, 1, 2, 3, 4, 5}
│   │   └───Clones: {7}
│   ├───Encoder 8
│   │   ├───Object ID: 105
│   │   ├───Type: DP MST
│   │   ├───CRTCS: {0, 1, 2, 3, 4, 5}
│   │   └───Clones: {8}
│   └───Encoder 9
│       ├───Object ID: 106
│       ├───Type: DP MST
│       ├───CRTCS: {0, 1, 2, 3, 4, 5}
│       └───Clones: {9}
├───CRTCs
│   ├───CRTC 0
│   │   ├───Object ID: 59
│   │   ├───Legacy info
│   │   │   ├───Mode: [email protected] driver phsync pvsync 
│   │   │   └───Gamma size: 256
│   │   └───Properties
│   │       ├───"ACTIVE" (atomic): range [0, 1] = 1
│   │       ├───"MODE_ID" (atomic): blob = 109
│   │       │   └───[email protected] driver phsync pvsync 
│   │       ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│   │       ├───"VRR_ENABLED": range [0, 1] = 0
│   │       ├───"CTM": blob = 0
│   │       ├───"GAMMA_LUT": blob = 112
│   │       └───"GAMMA_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 4096
│   ├───CRTC 1
│   │   ├───Object ID: 62
│   │   ├───Legacy info
│   │   │   ├───Mode: [email protected] preferred driver phsync nvsync 
│   │   │   └───Gamma size: 256
│   │   └───Properties
│   │       ├───"ACTIVE" (atomic): range [0, 1] = 1
│   │       ├───"MODE_ID" (atomic): blob = 111
│   │       │   └───[email protected] preferred driver phsync nvsync 
│   │       ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│   │       ├───"VRR_ENABLED": range [0, 1] = 0
│   │       ├───"CTM": blob = 0
│   │       ├───"GAMMA_LUT": blob = 114
│   │       └───"GAMMA_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 4096
│   ├───CRTC 2
│   │   ├───Object ID: 65
│   │   ├───Legacy info
│   │   │   ├───Mode: [email protected] preferred driver phsync nvsync 
│   │   │   └───Gamma size: 256
│   │   └───Properties
│   │       ├───"ACTIVE" (atomic): range [0, 1] = 1
│   │       ├───"MODE_ID" (atomic): blob = 119
│   │       │   └───[email protected] preferred driver phsync nvsync 
│   │       ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│   │       ├───"VRR_ENABLED": range [0, 1] = 0
│   │       ├───"CTM": blob = 0
│   │       ├───"GAMMA_LUT": blob = 122
│   │       └───"GAMMA_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 4096
│   ├───CRTC 3
│   │   ├───Object ID: 68
│   │   ├───Legacy info
│   │   │   ├───Mode: [email protected] preferred driver phsync pvsync 
│   │   │   └───Gamma size: 256
│   │   └───Properties
│   │       ├───"ACTIVE" (atomic): range [0, 1] = 1
│   │       ├───"MODE_ID" (atomic): blob = 121
│   │       │   └───[email protected] preferred driver phsync pvsync 
│   │       ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│   │       ├───"VRR_ENABLED": range [0, 1] = 0
│   │       ├───"CTM": blob = 0
│   │       ├───"GAMMA_LUT": blob = 116
│   │       └───"GAMMA_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 4096
│   ├───CRTC 4
│   │   ├───Object ID: 71
│   │   ├───Legacy info
│   │   │   └───Gamma size: 256
│   │   └───Properties
│   │       ├───"ACTIVE" (atomic): range [0, 1] = 0
│   │       ├───"MODE_ID" (atomic): blob = 0
│   │       ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│   │       ├───"VRR_ENABLED": range [0, 1] = 0
│   │       ├───"CTM": blob = 0
│   │       ├───"GAMMA_LUT": blob = 113
│   │       └───"GAMMA_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 4096
│   └───CRTC 5
│       ├───Object ID: 74
│       ├───Legacy info
│       │   └───Gamma size: 256
│       └───Properties
│           ├───"ACTIVE" (atomic): range [0, 1] = 0
│           ├───"MODE_ID" (atomic): blob = 0
│           ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│           ├───"VRR_ENABLED": range [0, 1] = 0
│           ├───"CTM": blob = 0
│           ├───"GAMMA_LUT": blob = 117
│           └───"GAMMA_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 4096
└───Planes
    ├───Plane 0
    │   ├───Object ID: 39
    │   ├───CRTCs: {5}
    │   ├───Legacy info
    │   │   ├───FB ID: 0
    │   │   └───Formats:
    │   │       ├───XRGB8888 (0x34325258)
    │   │       ├───ARGB8888 (0x34325241)
    │   │       ├───RGBA8888 (0x34324152)
    │   │       ├───XRGB2101010 (0x30335258)
    │   │       ├───XBGR2101010 (0x30334258)
    │   │       ├───ARGB2101010 (0x30335241)
    │   │       ├───ABGR2101010 (0x30334241)
    │   │       ├───XRGB16161616 (0x38345258)
    │   │       ├───XBGR16161616 (0x38344258)
    │   │       ├───ARGB16161616 (0x38345241)
    │   │       ├───ABGR16161616 (0x38344241)
    │   │       ├───XBGR8888 (0x34324258)
    │   │       ├───ABGR8888 (0x34324241)
    │   │       ├───RGB565 (0x36314752)
    │   │       ├───XRGB16161616F (0x48345258)
    │   │       ├───ARGB16161616F (0x48345241)
    │   │       ├───XBGR16161616F (0x48344258)
    │   │       └───ABGR16161616F (0x48344241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary
    │       ├───"FB_ID" (atomic): object framebuffer = 0
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 0
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"zpos" (immutable): range [0, 0] = 0
    │       └───"rotation": bitmask {rotate-0, rotate-90, rotate-180, rotate-270} = (rotate-0)
    ├───Plane 1
    │   ├───Object ID: 42
    │   ├───CRTCs: {4}
    │   ├───Legacy info
    │   │   ├───FB ID: 0
    │   │   └───Formats:
    │   │       ├───XRGB8888 (0x34325258)
    │   │       ├───ARGB8888 (0x34325241)
    │   │       ├───RGBA8888 (0x34324152)
    │   │       ├───XRGB2101010 (0x30335258)
    │   │       ├───XBGR2101010 (0x30334258)
    │   │       ├───ARGB2101010 (0x30335241)
    │   │       ├───ABGR2101010 (0x30334241)
    │   │       ├───XRGB16161616 (0x38345258)
    │   │       ├───XBGR16161616 (0x38344258)
    │   │       ├───ARGB16161616 (0x38345241)
    │   │       ├───ABGR16161616 (0x38344241)
    │   │       ├───XBGR8888 (0x34324258)
    │   │       ├───ABGR8888 (0x34324241)
    │   │       ├───RGB565 (0x36314752)
    │   │       ├───XRGB16161616F (0x48345258)
    │   │       ├───ARGB16161616F (0x48345241)
    │   │       ├───XBGR16161616F (0x48344258)
    │   │       └───ABGR16161616F (0x48344241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary
    │       ├───"FB_ID" (atomic): object framebuffer = 0
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 0
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"zpos" (immutable): range [0, 0] = 0
    │       └───"rotation": bitmask {rotate-0, rotate-90, rotate-180, rotate-270} = (rotate-0)
    ├───Plane 2
    │   ├───Object ID: 45
    │   ├───CRTCs: {3}
    │   ├───Legacy info
    │   │   ├───FB ID: 120
    │   │   │   ├───Object ID: 120
    │   │   │   ├───Size: 1920x1080
    │   │   │   ├───Format: XRGB8888 (0x34325258)
    │   │   │   └───Planes:
    │   │   │       └───Plane 0: offset = 0, pitch = 8192 bytes
    │   │   └───Formats:
    │   │       ├───XRGB8888 (0x34325258)
    │   │       ├───ARGB8888 (0x34325241)
    │   │       ├───RGBA8888 (0x34324152)
    │   │       ├───XRGB2101010 (0x30335258)
    │   │       ├───XBGR2101010 (0x30334258)
    │   │       ├───ARGB2101010 (0x30335241)
    │   │       ├───ABGR2101010 (0x30334241)
    │   │       ├───XRGB16161616 (0x38345258)
    │   │       ├───XBGR16161616 (0x38344258)
    │   │       ├───ARGB16161616 (0x38345241)
    │   │       ├───ABGR16161616 (0x38344241)
    │   │       ├───XBGR8888 (0x34324258)
    │   │       ├───ABGR8888 (0x34324241)
    │   │       ├───RGB565 (0x36314752)
    │   │       ├───XRGB16161616F (0x48345258)
    │   │       ├───ARGB16161616F (0x48345241)
    │   │       ├───XBGR16161616F (0x48344258)
    │   │       └───ABGR16161616F (0x48344241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary
    │       ├───"FB_ID" (atomic): object framebuffer = 120
    │       │   ├───Object ID: 120
    │       │   ├───Size: 1920x1080
    │       │   ├───Format: XRGB8888 (0x34325258)
    │       │   └───Planes:
    │       │       └───Plane 0: offset = 0, pitch = 8192 bytes
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 68
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 1920
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 1080
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 1920
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 1080
    │       ├───"zpos" (immutable): range [0, 0] = 0
    │       └───"rotation": bitmask {rotate-0, rotate-90, rotate-180, rotate-270} = (rotate-0)
    ├───Plane 3
    │   ├───Object ID: 48
    │   ├───CRTCs: {2}
    │   ├───Legacy info
    │   │   ├───FB ID: 126
    │   │   │   ├───Object ID: 126
    │   │   │   ├───Size: 1920x1200
    │   │   │   ├───Format: XRGB8888 (0x34325258)
    │   │   │   └───Planes:
    │   │   │       └───Plane 0: offset = 0, pitch = 8192 bytes
    │   │   └───Formats:
    │   │       ├───XRGB8888 (0x34325258)
    │   │       ├───ARGB8888 (0x34325241)
    │   │       ├───RGBA8888 (0x34324152)
    │   │       ├───XRGB2101010 (0x30335258)
    │   │       ├───XBGR2101010 (0x30334258)
    │   │       ├───ARGB2101010 (0x30335241)
    │   │       ├───ABGR2101010 (0x30334241)
    │   │       ├───XRGB16161616 (0x38345258)
    │   │       ├───XBGR16161616 (0x38344258)
    │   │       ├───ARGB16161616 (0x38345241)
    │   │       ├───ABGR16161616 (0x38344241)
    │   │       ├───XBGR8888 (0x34324258)
    │   │       ├───ABGR8888 (0x34324241)
    │   │       ├───RGB565 (0x36314752)
    │   │       ├───XRGB16161616F (0x48345258)
    │   │       ├───ARGB16161616F (0x48345241)
    │   │       ├───XBGR16161616F (0x48344258)
    │   │       └───ABGR16161616F (0x48344241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary
    │       ├───"FB_ID" (atomic): object framebuffer = 126
    │       │   ├───Object ID: 126
    │       │   ├───Size: 1920x1200
    │       │   ├───Format: XRGB8888 (0x34325258)
    │       │   └───Planes:
    │       │       └───Plane 0: offset = 0, pitch = 8192 bytes
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 65
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 1920
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 1200
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 1920
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 1200
    │       ├───"zpos" (immutable): range [0, 0] = 0
    │       └───"rotation": bitmask {rotate-0, rotate-90, rotate-180, rotate-270} = (rotate-0)
    ├───Plane 4
    │   ├───Object ID: 51
    │   ├───CRTCs: {1}
    │   ├───Legacy info
    │   │   ├───FB ID: 115
    │   │   │   ├───Object ID: 115
    │   │   │   ├───Size: 1920x1200
    │   │   │   ├───Format: XRGB8888 (0x34325258)
    │   │   │   └───Planes:
    │   │   │       └───Plane 0: offset = 0, pitch = 8192 bytes
    │   │   └───Formats:
    │   │       ├───XRGB8888 (0x34325258)
    │   │       ├───ARGB8888 (0x34325241)
    │   │       ├───RGBA8888 (0x34324152)
    │   │       ├───XRGB2101010 (0x30335258)
    │   │       ├───XBGR2101010 (0x30334258)
    │   │       ├───ARGB2101010 (0x30335241)
    │   │       ├───ABGR2101010 (0x30334241)
    │   │       ├───XRGB16161616 (0x38345258)
    │   │       ├───XBGR16161616 (0x38344258)
    │   │       ├───ARGB16161616 (0x38345241)
    │   │       ├───ABGR16161616 (0x38344241)
    │   │       ├───XBGR8888 (0x34324258)
    │   │       ├───ABGR8888 (0x34324241)
    │   │       ├───RGB565 (0x36314752)
    │   │       ├───XRGB16161616F (0x48345258)
    │   │       ├───ARGB16161616F (0x48345241)
    │   │       ├───XBGR16161616F (0x48344258)
    │   │       └───ABGR16161616F (0x48344241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary
    │       ├───"FB_ID" (atomic): object framebuffer = 115
    │       │   ├───Object ID: 115
    │       │   ├───Size: 1920x1200
    │       │   ├───Format: XRGB8888 (0x34325258)
    │       │   └───Planes:
    │       │       └───Plane 0: offset = 0, pitch = 8192 bytes
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 62
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 1920
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 1200
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 1920
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 1200
    │       ├───"zpos" (immutable): range [0, 0] = 0
    │       └───"rotation": bitmask {rotate-0, rotate-90, rotate-180, rotate-270} = (rotate-0)
    ├───Plane 5
    │   ├───Object ID: 54
    │   ├───CRTCs: {0}
    │   ├───Legacy info
    │   │   ├───FB ID: 110
    │   │   │   ├───Object ID: 110
    │   │   │   ├───Size: 1600x1200
    │   │   │   ├───Format: XRGB8888 (0x34325258)
    │   │   │   └───Planes:
    │   │   │       └───Plane 0: offset = 0, pitch = 7168 bytes
    │   │   └───Formats:
    │   │       ├───XRGB8888 (0x34325258)
    │   │       ├───ARGB8888 (0x34325241)
    │   │       ├───RGBA8888 (0x34324152)
    │   │       ├───XRGB2101010 (0x30335258)
    │   │       ├───XBGR2101010 (0x30334258)
    │   │       ├───ARGB2101010 (0x30335241)
    │   │       ├───ABGR2101010 (0x30334241)
    │   │       ├───XRGB16161616 (0x38345258)
    │   │       ├───XBGR16161616 (0x38344258)
    │   │       ├───ARGB16161616 (0x38345241)
    │   │       ├───ABGR16161616 (0x38344241)
    │   │       ├───XBGR8888 (0x34324258)
    │   │       ├───ABGR8888 (0x34324241)
    │   │       ├───RGB565 (0x36314752)
    │   │       ├───XRGB16161616F (0x48345258)
    │   │       ├───ARGB16161616F (0x48345241)
    │   │       ├───XBGR16161616F (0x48344258)
    │   │       └───ABGR16161616F (0x48344241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary
    │       ├───"FB_ID" (atomic): object framebuffer = 110
    │       │   ├───Object ID: 110
    │       │   ├───Size: 1600x1200
    │       │   ├───Format: XRGB8888 (0x34325258)
    │       │   └───Planes:
    │       │       └───Plane 0: offset = 0, pitch = 7168 bytes
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 59
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 1600
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 1200
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 1600
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 1200
    │       ├───"zpos" (immutable): range [0, 0] = 0
    │       └───"rotation": bitmask {rotate-0, rotate-90, rotate-180, rotate-270} = (rotate-0)
    ├───Plane 6
    │   ├───Object ID: 57
    │   ├───CRTCs: {0}
    │   ├───Legacy info
    │   │   ├───FB ID: 0
    │   │   └───Formats:
    │   │       └───ARGB8888 (0x34325241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Cursor
    │       ├───"FB_ID" (atomic): object framebuffer = 0
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 0
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
    │       └───"zpos" (immutable): range [UINT8_MAX, UINT8_MAX] = 255
    ├───Plane 7
    │   ├───Object ID: 60
    │   ├───CRTCs: {1}
    │   ├───Legacy info
    │   │   ├───FB ID: 0
    │   │   └───Formats:
    │   │       └───ARGB8888 (0x34325241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Cursor
    │       ├───"FB_ID" (atomic): object framebuffer = 0
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 0
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
    │       └───"zpos" (immutable): range [UINT8_MAX, UINT8_MAX] = 255
    ├───Plane 8
    │   ├───Object ID: 63
    │   ├───CRTCs: {2}
    │   ├───Legacy info
    │   │   ├───FB ID: 0
    │   │   └───Formats:
    │   │       └───ARGB8888 (0x34325241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Cursor
    │       ├───"FB_ID" (atomic): object framebuffer = 0
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 0
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
    │       └───"zpos" (immutable): range [UINT8_MAX, UINT8_MAX] = 255
    ├───Plane 9
    │   ├───Object ID: 66
    │   ├───CRTCs: {3}
    │   ├───Legacy info
    │   │   ├───FB ID: 0
    │   │   └───Formats:
    │   │       └───ARGB8888 (0x34325241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Cursor
    │       ├───"FB_ID" (atomic): object framebuffer = 0
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 0
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
    │       └───"zpos" (immutable): range [UINT8_MAX, UINT8_MAX] = 255
    ├───Plane 10
    │   ├───Object ID: 69
    │   ├───CRTCs: {4}
    │   ├───Legacy info
    │   │   ├───FB ID: 0
    │   │   └───Formats:
    │   │       └───ARGB8888 (0x34325241)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Cursor
    │       ├───"FB_ID" (atomic): object framebuffer = 0
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 0
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
    │       └───"zpos" (immutable): range [UINT8_MAX, UINT8_MAX] = 255
    └───Plane 11
        ├───Object ID: 72
        ├───CRTCs: {5}
        ├───Legacy info
        │   ├───FB ID: 0
        │   └───Formats:
        │       └───ARGB8888 (0x34325241)
        └───Properties
            ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Cursor
            ├───"FB_ID" (atomic): object framebuffer = 0
            ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
            ├───"CRTC_ID" (atomic): object CRTC = 0
            ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
            ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
            ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
            ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
            ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
            ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
            ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
            ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
            └───"zpos" (immutable): range [UINT8_MAX, UINT8_MAX] = 255

Backend wayland log
[gamescope] [Info]  console: gamescope version 3.15.9-1-gcc28cd7 (gcc 14.1.1)
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
[gamescope] [Info]  xdg_backend: Modifier: XR30 (0x30335258) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XR30 (0x30335258) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YU24 (0x34325559) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YU24 (0x34325559) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AR30 (0x30335241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AR30 (0x30335241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: R16 (0x20363152) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: R16 (0x20363152) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YV16 (0x36315659) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YV16 (0x36315659) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: P010 (0x30313050) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: P010 (0x30313050) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: NV16 (0x3631564E) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: NV16 (0x3631564E) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y410 (0x30313459) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y410 (0x30313459) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y212 (0x32313259) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y212 (0x32313259) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YV24 (0x34325659) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YV24 (0x34325659) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB4H (0x48344241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB4H (0x48344241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XB4H (0x48344258) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XB4H (0x48344258) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YVU9 (0x39555659) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YVU9 (0x39555659) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AR12 (0x32315241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AR12 (0x32315241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YUYV (0x56595559) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YUYV (0x56595559) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y210 (0x30313259) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y210 (0x30313259) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YUV9 (0x39565559) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YUV9 (0x39565559) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB24 (0x34324241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB24 (0x34324241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XYUV (0x56555958) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XYUV (0x56555958) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: P030 (0x30333050) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: P030 (0x30333050) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YVYU (0x55595659) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YVYU (0x55595659) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YU16 (0x36315559) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YU16 (0x36315559) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YV11 (0x31315659) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YV11 (0x31315659) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YV12 (0x32315659) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YV12 (0x32315659) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AR24 (0x34325241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AR24 (0x34325241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XB24 (0x34324258) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XB24 (0x34324258) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XB48 (0x38344258) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XB48 (0x38344258) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: UYVY (0x59565955) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: UYVY (0x59565955) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AYUV (0x56555941) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AYUV (0x56555941) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y216 (0x36313259) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y216 (0x36313259) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB15 (0x35314241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB15 (0x35314241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y412 (0x32313459) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y412 (0x32313459) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XR24 (0x34325258) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XR24 (0x34325258) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: GR88 (0x38385247) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: GR88 (0x38385247) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: NV12 (0x3231564E) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: GR32 (0x32335247) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: GR32 (0x32335247) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YU11 (0x31315559) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YU11 (0x31315559) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: R8 (0x20203852) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: R8 (0x20203852) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB30 (0x30334241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB30 (0x30334241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB48 (0x38344241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB48 (0x38344241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: RG16 (0x36314752) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: RG16 (0x36314752) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: NV21 (0x3132564E) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: NV21 (0x3132564E) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: P012 (0x32313050) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: P012 (0x32313050) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XB30 (0x30334258) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: XB30 (0x30334258) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y416 (0x36313459) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: Y416 (0x36313459) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YU12 (0x32315559) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: YU12 (0x32315559) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB12 (0x32314241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AB12 (0x32314241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: P016 (0x36313050) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: P016 (0x36313050) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AR15 (0x35315241) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: AR15 (0x35315241) 0 (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: VYUY (0x59555956) ffffffffffffff (Invalid)
[gamescope] [Info]  xdg_backend: Modifier: VYUY (0x59555956) 0 (Invalid)
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
[gamescope] [Info]  vulkan: selecting physical device 'AMD Radeon RX 480 Graphics (RADV POLARIS10)': queue family 1 (general queue family 0)
[gamescope] [Info]  vulkan: physical device does not support DRM format modifiers
[gamescope] [Info]  wlserver: [backend/headless/backend.c:67] Creating headless backend
[gamescope] [Info]  xdg_backend: Seat name: 
[gamescope] [Info]  vulkan: supported DRM formats for sampling usage:
[gamescope] [Info]  vulkan:   AR24 (0x34325241)
[gamescope] [Info]  vulkan:   XR24 (0x34325258)
[gamescope] [Info]  vulkan:   AB24 (0x34324241)
[gamescope] [Info]  vulkan:   XB24 (0x34324258)
[gamescope] [Info]  vulkan:   RG16 (0x36314752)
[gamescope] [Info]  vulkan:   AB4H (0x48344241)
[gamescope] [Info]  vulkan:   XB4H (0x48344258)
[gamescope] [Info]  vulkan:   AB48 (0x38344241)
[gamescope] [Info]  vulkan:   XB48 (0x38344258)
[gamescope] [Info]  vulkan:   AB30 (0x30334241)
[gamescope] [Info]  vulkan:   XB30 (0x30334258)
[gamescope] [Info]  vulkan:   AR30 (0x30335241)
[gamescope] [Info]  vulkan:   XR30 (0x30335258)
[gamescope] [Info]  wlserver: Using explicit sync when available
[gamescope] [Info]  wlserver: Running compositor on wayland display 'gamescope-0'
[gamescope] [Info]  wlserver: [backend/headless/backend.c:17] Starting headless backend
[gamescope] [Info]  wlserver: Successfully initialized libei for input emulation!
[gamescope] [Error] wlserver: [xwayland/sockets.c:64] Failed to bind socket @/tmp/.X11-unix/X0: Address already in use
[gamescope] [Info]  wlserver: [xwayland/server.c:107] Starting Xwayland on :2
[gamescope] [Info]  pipewire: stream state changed: connecting
[gamescope] [Info]  pipewire: stream state changed: paused
[gamescope] [Info]  pipewire: stream available on node ID: 93
[gamescope] [Info]  xwm: Embedded, no cursor set. Using left_ptr by default.
[gamescope] [Info]  vblank: Using timerfd.
[gamescope] [Info]  xdg_backend: PreferredMetadata: Red: 0.64 0.33, Green: 0.3 0.6, Blue: 0.15 0.06, White: 0.3127 0.329, Max Luminance: 200 nits, Min Luminance: 0 nits, Max Full Frame Luminance: 200 nits
[gamescope] [Info]  edid: Patching res 800x1280 -> 1280x720
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_xwayland_wait_ready overridden by environment.
Selected GPU 0: AMD Radeon RX 480 Graphics (RADV POLARIS10), type: DiscreteGpu
[Gamescope WSI] Creating Gamescope surface: xid: 0x400000
[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL.
[Gamescope WSI] Made gamescope surface for xid: 0x400000
[Gamescope WSI] Surface state:
  steam app id:                  0
  window xid:                    0x400000
  wayland surface res id:        5
  layer client flags:            0x0
  server hdr output enabled:     false
  hdr formats exposed to client: false
[Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1.
[gamescope] [Warn]  xwm: got the same buffer committed twice, ignoring.
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported maximum keycode 708, clipping.
>                   X11 cannot support keycodes above 255.
> Warning:          Could not resolve keysym XF86KbdInputAssistPrevgrou
> Warning:          Could not resolve keysym XF86KbdInputAssistNextgrou
Errors from xkbcomp are not fatal to the X server
[Gamescope WSI] Creating swapchain for xid: 0x400000 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: true
[Gamescope WSI] Created swapchain for xid: 0x400000 - imageCount: 3
[gamescope] [Info]  xdg_backend: Changed refresh to: 59.950hz
[Gamescope WSI] Swapchain recieved new refresh cycle: 16.67ms
[Gamescope WSI] Swapchain recieved new refresh cycle: 16.68ms
^C[gamescopereaper] [Info]  reaper: Parent of gamescopereaper was killed. Killing children.
[gamescope] [Info]  launch: Primary child shut down!

Backend SDL log
[gamescope] [Info]  console: gamescope version 3.15.9-1-gcc28cd7 (gcc 14.1.1)
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
[gamescope] [Info]  vulkan: selecting physical device 'AMD Radeon RX 480 Graphics (RADV POLARIS10)': queue family 1 (general queue family 0)
[gamescope] [Info]  vulkan: physical device does not support DRM format modifiers
[gamescope] [Info]  wlserver: [backend/headless/backend.c:67] Creating headless backend
[gamescope] [Info]  vulkan: supported DRM formats for sampling usage:
[gamescope] [Info]  vulkan: Creating Gamescope nested swapchain with format 64 and colorspace 0
gamescope: types/wlr_linux_dmabuf_v1.c:532: feedback_compile: Assertion `table_len > 0' failed.
[1]    5706 IOT instruction (core dumped)  ./build/src/gamescope --backend=sdl -- vkcube

@awsms
Copy link

awsms commented Sep 19, 2024

Mh I'm now having that error, which I didn't before.
strace:

write(2, "gamescope: types/wlr_linux_dmabu"..., 96gamescope: types/wlr_linux_dmabuf_v1.c:532: feedback_compile: Assertion `table_len > 0' failed.
) = 96
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x79d286a01000
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
gettid()                                = 1352856
getpid()                                = 1352856
tgkill(1352856, 1352856, SIGABRT)       = 0
--- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=1352856, si_uid=1000} ---
+++ killed by SIGABRT (core dumped) +++
fish: Job 1, 'strace gamescope' terminated by signal SIGABRT (Abort)

I've installed gamescope with the gamescope-git AUR package (current version is from the latest commit to this date, d87f6d9). I'm not on Wayland.

I pushed some stuff to master that might help, can you give it a try?

Wayland backend works now! But SDL backend crashes instead lol.

damn 🤣

edit: the 3 recent commits didn't change a thing

you can build from 7a27374, last commit that works on X, which broke with 0110109

@sharkautarch
Copy link

@awsms @misyltoad
I can confirm myself that commit 0110109 is causing this assert fail for me too, and reverting it fixes it
I think that somehow that commit is causing this loop starting here: sharkautarch@0110109#diff-0ca179f8adb820354aba0b6a063350f9e32689950ead39e8bbeca021fa8ba0e0R2777 to not process modifiers correctly, which then latter triggers the assert in wlserver_init()
Also, seems like the modifiers listed w/ vulkan: supported DRM formats for sampling usage: is empty on nested X11 due to that commit...

@MaxandreOgeret
Copy link

MaxandreOgeret commented Sep 23, 2024

Issue occurs for me on commit gddf0d76, with and without --backend=sdl and with both AMD Radeon 780M and AMD Radeon RX 7700S GPUs.

$ DRI_PRIME=1 gamescope vkcube              
[gamescope] [Info]  console: gamescope version 3.15.9-8-gddf0d76 (gcc 14.2.0)
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
Your Wayland compositor does NOT support wp_presentation/presentation-time which is required for VK_KHR_present_wait and VK_KHR_present_id.
Please complain to your compositor vendor for support. Falling back to X11 window with less accurate present wait.
[gamescope] [Error] xdg_backend: Couldn't create Wayland objects.
[gamescope] [Info]  vulkan: selecting physical device 'AMD Radeon RX 7700S (RADV NAVI33)': queue family 1 (general queue family 0)
[gamescope] [Info]  vulkan: physical device supports DRM format modifiers
[gamescope] [Info]  wlserver: [backend/headless/backend.c:67] Creating headless backend
[gamescope] [Info]  vulkan: supported DRM formats for sampling usage:
[gamescope] [Info]  vulkan: Creating Gamescope nested swapchain with format 44 and colorspace 0
gamescope: types/wlr_linux_dmabuf_v1.c:532: feedback_compile: Assertion `table_len > 0' failed.
[1]    163677 IOT instruction (core dumped)  DRI_PRIME=1 gamescope vkcube
$ DRI_PRIME=1 gamescope --backend=sdl vkcube
[gamescope] [Info]  console: gamescope version 3.15.9-8-gddf0d76 (gcc 14.2.0)
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
Your Wayland compositor does NOT support wp_presentation/presentation-time which is required for VK_KHR_present_wait and VK_KHR_present_id.
Please complain to your compositor vendor for support. Falling back to X11 window with less accurate present wait.
[gamescope] [Info]  vulkan: selecting physical device 'AMD Radeon RX 7700S (RADV NAVI33)': queue family 1 (general queue family 0)
[gamescope] [Info]  vulkan: physical device supports DRM format modifiers
[gamescope] [Info]  wlserver: [backend/headless/backend.c:67] Creating headless backend
[gamescope] [Info]  vulkan: supported DRM formats for sampling usage:
[gamescope] [Info]  vulkan: Creating Gamescope nested swapchain with format 44 and colorspace 0
gamescope: types/wlr_linux_dmabuf_v1.c:532: feedback_compile: Assertion `table_len > 0' failed.
[1]    163836 IOT instruction (core dumped)  DRI_PRIME=1 gamescope --backend=sdl vkcube

@awsms
Copy link

awsms commented Sep 24, 2024

@MaxandreOgeret it's commit ddf0d76. Gamescope is broken since 0110109, read my previous post

@korewaChino
Copy link

korewaChino commented Oct 4, 2024

Can confirm, 0110109 works in Wayland on my RX580. SDL backend also works along with this patch.

ProjectSynchro added a commit to ProjectSynchro/copr-gamescope-git that referenced this issue Oct 5, 2024
ProjectSynchro added a commit to ProjectSynchro/copr-gamescope-git that referenced this issue Oct 5, 2024
@awsms
Copy link

awsms commented Oct 13, 2024

Still broken as of 06a6225 BTW

@HanabishiRecca
Copy link

Of course, because #1548 is still not merged.

@LethalManBoob
Copy link

Still an issue on X11

@awsms
Copy link

awsms commented Nov 20, 2024

Still an issue on X11

see :

Of course, because #1548 is still not merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests