phkaeser / wlmaker

Wayland Maker - A Wayland compositor inspired by Window Maker
Apache License 2.0
150 stars 5 forks source link

Cannot start wlmaker: Failed to query DRI3 DRM FD #94

Open StarFire75 opened 3 months ago

StarFire75 commented 3 months ago

Hello World,

I have built wlmaker according to the build instructions (latest main from github: 3f0f599537a4c98860fbf39a15d715042a2d3529), but I cannot start it:

andy@shannara:~$ LD_LIBRARY_PATH="${HOME}/.local/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)" \
PKG_CONFIG_PATH="${HOME}/.local/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/pkgconfig/:${HOME}/.local/share/pkgconfig/" \
${HOME}/.local/bin/wlmaker
2024-08-04 13:34:01.531 (INFO) src/config.c:278 Failed bs_file_resolve_path(~/.wlmaker.plist, 0x7fff78395b10): errno(2): No such file or directory
2024-08-04 13:34:01.531 (INFO) src/config.c:291 No configuration file found, using embedded default.
2024-08-04 13:34:01.531 (INFO) src/config.c:312 Failed bs_file_resolve_path(~/.wlmaker-state.plist, 0x7fff78395b10): errno(2): No such file or directory
2024-08-04 13:34:01.531 (INFO) src/config.c:325 No state file found, using embedded default.
2024-08-04 13:34:01.531 (INFO) backend/x11/backend.c:396 Creating X11 backend
2024-08-04 13:34:01.532 (INFO) backend/x11/backend.c:483 X11 does not support shared pixmaps
2024-08-04 13:34:01.533 (ERROR) backend/x11/backend.c:612 Failed to query DRI3 DRM FD
2024-08-04 13:34:01.533 (ERROR) src/server.c:143 Failed wlr_backend_autocreate()

Unfortunately, there is no additional debug output:

andy@shannara:~$ LD_LIBRARY_PATH="${HOME}/.local/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)" \
PKG_CONFIG_PATH="${HOME}/.local/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/pkgconfig/:${HOME}/.local/share/pkgconfig/" \
${HOME}/.local/bin/wlmaker --log_level=DEBUG
2024-08-04 13:39:20.397 (INFO) src/config.c:278 Failed bs_file_resolve_path(~/.wlmaker.plist, 0x7ffc68591480): errno(2): No such file or directory
2024-08-04 13:39:20.397 (INFO) src/config.c:291 No configuration file found, using embedded default.
2024-08-04 13:39:20.397 (INFO) src/config.c:312 Failed bs_file_resolve_path(~/.wlmaker-state.plist, 0x7ffc68591480): errno(2): No such file or directory
2024-08-04 13:39:20.397 (INFO) src/config.c:325 No state file found, using embedded default.
2024-08-04 13:39:20.397 (INFO) backend/x11/backend.c:396 Creating X11 backend
2024-08-04 13:39:20.398 (INFO) backend/x11/backend.c:483 X11 does not support shared pixmaps
2024-08-04 13:39:20.399 (ERROR) backend/x11/backend.c:612 Failed to query DRI3 DRM FD
2024-08-04 13:39:20.399 (ERROR) src/server.c:143 Failed wlr_backend_autocreate()

There is also no change, if I change the renderer:

andy@shannara:~$ set WLR_RENDERER=pixman
andy@shannara:~$ LD_LIBRARY_PATH="${HOME}/.local/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)" PKG_CONFIG_PATH="${HOME}/.local/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/pkgconfig/:${HOME}/.local/share/pkgconfig/" ${HOME}/.local/bin/wlmaker --log_level=DEBUG
2024-08-04 13:41:41.153 (INFO) src/config.c:278 Failed bs_file_resolve_path(~/.wlmaker.plist, 0x7fffa6ac66f0): errno(2): No such file or directory
2024-08-04 13:41:41.153 (INFO) src/config.c:291 No configuration file found, using embedded default.
2024-08-04 13:41:41.153 (INFO) src/config.c:312 Failed bs_file_resolve_path(~/.wlmaker-state.plist, 0x7fffa6ac66f0): errno(2): No such file or directory
2024-08-04 13:41:41.153 (INFO) src/config.c:325 No state file found, using embedded default.
2024-08-04 13:41:41.154 (INFO) backend/x11/backend.c:396 Creating X11 backend
2024-08-04 13:41:41.154 (INFO) backend/x11/backend.c:483 X11 does not support shared pixmaps
2024-08-04 13:41:41.155 (ERROR) backend/x11/backend.c:612 Failed to query DRI3 DRM FD
2024-08-04 13:41:41.155 (ERROR) src/server.c:143 Failed wlr_backend_autocreate()

I have also tried to install the wlmaker Debian package, but the same error appears:

andy@shannara:~$ which wlmaker
/usr/bin/wlmaker
andy@shannara:~$ wlmaker
2024-08-04 13:44:43.886 (INFO) src/config.c:307 Failed bs_file_resolve_path(~/.wlmaker.plist, 0x7ffd386feb30): errno(2): No such file or directory
2024-08-04 13:44:43.886 (INFO) src/config.c:320 No configuration file found, using embedded default.
2024-08-04 13:44:43.886 (INFO) src/config.c:341 Failed bs_file_resolve_path(~/.wlmaker-state.plist, 0x7ffd386feb30): errno(2): No such file or directory
2024-08-04 13:44:43.886 (INFO) src/config.c:354 No state file found, using embedded default.
2024-08-04 13:44:43.886 (INFO) backend/x11/backend.c:396 Creating X11 backend
2024-08-04 13:44:43.887 (INFO) backend/x11/backend.c:483 X11 does not support shared pixmaps
2024-08-04 13:44:43.888 (ERROR) backend/x11/backend.c:612 Failed to query DRI3 DRM FD
2024-08-04 13:44:43.888 (ERROR) src/server.c:143 Failed wlr_backend_autocreate()

If I try to run it from a Linux terminal, I get a slightly different error message:

2024-08-04 13:51:11.746 (INFO) src/config.c:278 Failed bs_file_resolve_path(~/.wlmaker.plist, 0x7ffe1830a7b0): errno(2): No such file or directory
2024-08-04 13:51:11.747 (INFO) src/config.c:291 No configuration file found, using embedded default.
2024-08-04 13:51:11.747 (INFO) src/config.c:312 Failed bs_file_resolve_path(~/.wlmaker-state.plist, 0x7ffe1830a7b0): errno(2): No such file or directory
2024-08-04 13:51:11.747 (INFO) src/config.c:325 No state file found, using embedded default.
2024-08-04 13:51:11.747 (INFO) libseat] [libseat/libseat.c:73 Seat opened with backend 'seatd'
2024-08-04 13:51:11.747 (INFO) libseat] [libseat/backend/seatd.c:212 Enabling seat
2024-08-04 13:51:11.747 (INFO) backend/session/session.c:109 Successfully loaded libseat session
2024-08-04 13:51:11.747 (ERROR) backend/backend.c:210 Found 0 GPUs, cannot create backend
2024-08-04 13:51:11.747 (ERROR) backend/backend.c:376 Failed to open any DRM device
2024-08-04 13:51:11.750 (ERROR) src/server.c:143 Failed wlr_backend_autocreate()

The "Found 0 GPUs" is confusing (Civilization VI says the same), because I have:

andy@shannara:~# nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 3060 (UUID: GPU-04c1fa48-fbc9-2067-88cb-606b0b8a91c0)

I run the whole thing with strace, the output is attached as file.

What do I do wrong? How can I fix that?

Best regards - Andreas trace.log

phkaeser commented 3 months ago

From some references -- this might be an issue with the nVidia driver, DRM and wlroots, not playing well with each other.

Looks like sway (https://swaywm.org/) has a --unsupported-gpu flag. Would need to look into what this changes, and if/whether to enable a similar workaround. (pending work on wlmaker side => explore that flag, behaviour and if/whether to do the same)

Two questions for @StarFire75:

StarFire75 commented 3 months ago

nVidia Driver: NVIDIA dlloader X Driver 535.183.01 Sun May 12 19:35:37 UTC 2024

I use the drivers that come with Debian Sid

phkaeser commented 3 months ago

@StarFire75 -- reading wlroots source code, the behaviour of the X11 driver appears to have changed when it cannot query dri3 DRM FD (with https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/325d8438147ebba6b9756e0d9d2b720c1ced351a).

I updated all dependencies to that version here: https://github.com/phkaeser/wlmaker/tree/nvidia

Can you try a fresh install & build from that branch? From reading the code, it might work. (IIRC, this will also request you to install latest meson)

EDIT: Hm, I had a compile version mess locally. Updating to wlroots-0.18 also comes with non-trivial API changes. Will take a bit to update.

phkaeser commented 3 months ago

Updates to wlroots-0.18 are done -- PTAL from that branch.

phkaeser commented 1 month ago

With #107, support for wlroots-0.18 has been merged to the main branch. Also, the build instructions have gotten updated.

To verify: Please use the version from main (https://github.com/phkaeser/wlmaker). The build instructions for Debian Bookworm describe how to build with wlroots-0.18 from source.

Once you find some time, please follow that to verify. Thanks!

StarFire75 commented 1 month ago

It still does not start, but the error message has changed:

2024-09-15 14:56:16.627 (INFO) src/config.c:280 Failed bs_file_resolve_path(~/.wlmaker.plist, 0x7ffc3c6db550): errno(2): No such file or directory
2024-09-15 14:56:16.627 (INFO) src/config.c:293 No configuration file found, using embedded default.
2024-09-15 14:56:16.627 (INFO) src/config.c:314 Failed bs_file_resolve_path(~/.wlmaker-state.plist, 0x7ffc3c6db550): errno(2): No such file or directory
2024-09-15 14:56:16.627 (INFO) src/config.c:327 No state file found, using embedded default.
2024-09-15 14:56:16.627 (INFO) backend/x11/backend.c:400 Creating X11 backend
2024-09-15 14:56:16.627 (INFO) backend/x11/backend.c:487 X11 does not support shared pixmaps
2024-09-15 14:56:16.628 (ERROR) backend/x11/backend.c:264 Failed to open DRI3
2024-09-15 14:56:16.628 (ERROR) backend/x11/backend.c:615 Failed to query DRI3 DRM FD
2024-09-15 14:56:16.628 (INFO) backend/x11/backend.c:616 Disabling DMA-BUF support
2024-09-15 14:56:16.630 (INFO) render/pixman/renderer.c:328 Creating pixman renderer
2024-09-15 14:56:16.633 (INFO) backend/x11/backend.c:164 Starting X11 backend
2024-09-15 14:56:16.635 (ERROR) types/output/render.c:24 output backend and allocator buffer capabilities don't match
2024-09-15 14:56:16.635 (ERROR) src/output.c:130 Failed wlr_output_init_renderer() on X11-1
2024-09-15 14:56:16.635 (INFO) src/output.c:209 Destroy output X11-1
2024-09-15 14:56:16.635 (INFO) src/server.c:620 Failed wlmaker_output_create for server 0x5605d3a4e1f0
2024-09-15 14:56:16.635 (ERROR) src/wlmaker.c:365 No outputs available!

I also tried ot set WLR_RENDERER=pixman, but that not work either which is no surprise as it tries to set up a pixman renderer itself