NVIDIA / egl-wayland

The EGLStream-based Wayland external platform
MIT License
275 stars 44 forks source link

Incompatibility with rust wayland-client crate #34

Closed wez closed 2 months ago

wez commented 3 years ago

When trying to run wezterm under Wayland, EGL initialization fails with BAD_NATIVE_WINDOW.

Getting this under a debugger, it looks like this runtime check is the critical piece:

#1  wlEglIsWaylandWindowValid (window=window@entry=0x55555a44f740) at ../src/wayland-eglsurface.c:74
74          return WL_CHECK_INTERFACE_TYPE(surface, wl_surface_interface);

Poking around at the surface that was passed in:

>>> p surface
$5 = (struct wl_surface *) 0x555559938800
>>> p *(void**)surface
$8 = (void *) 0x555559904ea8 <wayland_client::protocol::wl_surface::wl_surface_interface>
>>> p *(struct wl_interface*)0x555559904ea8
$12 = {
  name = 0x555558d3994c "wl_surface",
  version = 4,
  method_count = 10,
  methods = 0x555559904d78 <wayland_client::protocol::wl_surface::wl_surface_requests>,
  event_count = 2,
  events = 0x555559904e78 <wayland_client::protocol::wl_surface::wl_surface_events>
}

And comparing with the wl_surface type that is checked against by this part of the macro:

https://github.com/NVIDIA/egl-wayland/blob/9c9c4c684983f7b0821f516f8821118170a785ea/include/wayland-eglutils.h#L60

>>> p &wl_surface_interface
$13 = (const struct wl_interface *) 0x7ffff7d4aa00 <wl_surface_interface>
>>> p wl_surface_interface
$14 = {
  name = 0x7ffff7d46a88 "wl_surface",
  version = 4,
  method_count = 10,
  methods = 0x7ffff7d4a540 <wl_surface_requests>,
  event_count = 2,
  events = 0x7ffff7d4a500 <wl_surface_events>
}

The interface appears to be compatible if the check were to perform a comparison of what's inside the wl_interface, even though the addresses are not identical.

Why aren't the addresses identical?

The rust client implementation employs code generation to produce most of its code; here's an example of the definition of that particular interface:

https://docs.rs/wayland-client/0.28.1/src/wayland_client/opt/rustwide/target/debug/build/wayland-client-fdd09ed62affdce6/out/wayland_api.rs.html#5885-5892

The rust client does, however, call out to the system libraries so that it should be comptible with EGL libraries. This same code runs fine when run against the nouveau driver.

So! Should NVIDIA/egl-wayland project be performing a deeper wl_interface comparison here to unblock this usage?

wez commented 3 years ago

this comment https://github.com/Smithay/wayland-rs/issues/374#issuecomment-778716363 suggests expanding the pointer check in the same way that libwayland's wl_interface_equal function works.

erik-kz commented 3 years ago

Thanks for the detailed report. I agree we should fall back to checking the interface name if the pointer check fails. The only tricky thing is that we try to be safe about dereferencing the pointer (currently by calling mincore), however we should be able to work something out.

niklaskorz commented 2 years ago

Thanks for the detailed report. I agree we should fall back to checking the interface name if the pointer check fails. The only tricky thing is that we try to be safe about dereferencing the pointer (currently by calling mincore), however we should be able to work something out.

As this is blocking all other Rust-based OpenGL applications I know (e.g., Alacritty or glutin-based applications in general), is there any progress on this @erik-kz ?

erik-kz commented 2 years ago

A fix is under internal code-review at NVIDIA, should be able to get pushed within the next few days. Apologies for the delay.

erik-kz commented 2 years ago

Should be fixed by https://github.com/NVIDIA/egl-wayland/commit/2eb4628d64a8297fb4c08aa796fdf33ff54a670f Again, sorry sorry sorry this took so damned long. Note that there are a few more changes to this library coming in the next few days, so I'm going to wait to those to land, but will bump the release as soon as they do.

colemickens commented 2 years ago

Has this shipped in the egl-wayland used in NVIDIA releases now?

cubanismo commented 2 years ago

I believe the first release to include this will be the 495 series beta release, due some time next week if all goes to plan.

VitalyAnkh commented 2 years ago

@cubanismo Hi! I have the 495.29.05 beta driver installed. When running wgpu's examples with Wayland, there are still errors:

RUST_LOG=info WINIT_UNIX_BACKEND=wayland WGPU_BACKEND=gl cargo run --example shadow
    Finished dev [unoptimized + debuginfo] target(s) in 0.12s
     Running `target/debug/examples/shadow`
[2021-10-18T21:44:39Z ERROR smithay_client_toolkit::window::concept_frame] No font could be found
[2021-10-18T21:44:39Z INFO  shadow::framework] Initializing the surface...
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl] Loading Wayland library to get the current display
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl] Loading X11 library to get the current display
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl] Using Wayland platform
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl] Enabling EGL debug output
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl] Display vendor "NVIDIA", version (1, 5)
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl]    EGL surface: +srgb
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl]    Trying native-render
[2021-10-18T21:44:39Z WARN  wgpu_hal::gles::egl] No config found!
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl]    Trying presentation
[2021-10-18T21:44:39Z WARN  wgpu_hal::gles::egl] EGL says it can present to the window but not natively. This has been confirmed to malfunction on Intel+NV laptops. Therefore, we disable presentation entirely for this platform
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl]    EGL context: +debug
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl]    EGL context: +robust access
[2021-10-18T21:44:39Z INFO  wgpu_hal::gles::egl]    EGL context: +surfaceless
[2021-10-18T21:44:39Z WARN  wgpu_hal::gles::egl] Re-initializing Gles context due to Wayland window
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::egl] Display vendor "NVIDIA", version (1, 5)
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::egl]    EGL surface: +srgb
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::egl]    Trying native-render
[2021-10-18T21:44:40Z WARN  wgpu_hal::gles::egl] No config found!
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::egl]    Trying presentation
[2021-10-18T21:44:40Z WARN  wgpu_hal::gles::egl] EGL says it can present to the window but not natively. This has been confirmed to malfunction on Intel+NV laptops. Therefore, we disable presentation entirely for this platform
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::egl]    EGL context: +debug
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::egl]    EGL context: +robust access
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::egl]    EGL context: +surfaceless
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::egl] Max label length: 256
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::egl] Enabling GLES debug output
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::adapter] Vendor: NVIDIA Corporation
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::adapter] Renderer: NVIDIA GeForce GTX 1060/PCIe/SSE2
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::adapter] Version: OpenGL ES 3.2 NVIDIA 495.29.05
[2021-10-18T21:44:40Z INFO  wgpu_hal::gles::adapter] SL version: OpenGL ES GLSL ES 3.20
[2021-10-18T21:44:40Z INFO  wgpu_core::instance] Adapter GL AdapterInfo { name: "NVIDIA GeForce GTX 1060/PCIe/SSE2", vendor: 4318, device: 0, device_type: DiscreteGpu, backend: Gl }
Using NVIDIA GeForce GTX 1060/PCIe/SSE2 (Gl)
[2021-10-18T21:44:40Z INFO  wgpu_core::device] configuring surface with SurfaceConfiguration { usage: RENDER_ATTACHMENT, format: Bgra8UnormSrgb, width: 800, height: 600, present_mode: Mailbox }
[2021-10-18T21:44:40Z WARN  wgpu_core::device] Surface does not support present mode: Mailbox, falling back to FIFO
[2021-10-18T21:44:40Z ERROR wgpu_hal::gles::egl] EGL 'eglGetConfigAttrib' code 0x3004: EGL_BAD_ATTRIBUTE error: In internal function: Additional INFO may be available

[2021-10-18T21:44:40Z WARN  wgpu_hal::gles::egl] Error in create_platform_window_surface: BadAttribute
thread 'main' panicked at 'Error in Surface::configure: invalid surface', wgpu/src/backend/direct.rs:204:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[2021-10-18T21:44:40Z INFO  wgpu_core::hub] Dropping Global
[2021-10-18T21:44:40Z INFO  wgpu_core::device] Destroying 0 command encoders
[2021-10-18T21:44:40Z WARN  calloop::sources::ping] [calloop] Failed to write a ping: Sys(EPIPE)

wgpu's code disables presentation for the platform because it detects something wrong with EGL support. If I edit the check, there are BAD_NATIVE_WINDOW errors appearing. Some discussions here.

And when running winit examples, the code didn't report errors but there are no windows visible on the screen, only icons on the desktop dock.

It seems that there is still incompatibility among the driver and rust wayland-client crate. Could Nvidia do more to improve this? Thanks!

erik-kz commented 2 years ago

Interesting, thanks for the report. The interface check that was behind the original issue should be fixed, so I suspect this has a different root-cause, but will definitely look into it. Re-opening the issue.

erik-kz commented 2 years ago

@VitalyAnkh can you confirm that you have the latest version of the egl-wayland library installed along with the 495 beta driver? Depending on your distribution it might be packaged separately.

I tried running the wgpu shadow example, and with the default vulkan back-end it worked as expected. If I set WGPU_BACKEND=gl I do get the "No suitable GPU adapters" error you mentioned in https://github.com/gfx-rs/wgpu/issues/1787#issuecomment-945001343 and if I hack the tier_max check as you did I instead get EGL_BAD_ATTRIBUTE from eglCreatePlatformWindowSurface. I'm not seeing any EGL_BAD_NATIVE_WINDOW errors, though.

The reason for the EGL_BAD_ATTRIBUTE error is that wgpu sets EGL_RENDER_BUFFER to EGL_SINGLE_BUFFER, which we reject in the validateSurfaceAttrib function in wayland-eglsurface.c. I'll look into whether this is expected and get back to you.

VitalyAnkh commented 2 years ago

@erik-kz Thanks! Really excited with your kind reply. I did install the lastest version of egl-wayland:

pacman -Q | rg egl-wayland
egl-wayland-git 1.1.9.r0.gcd0d19a-1

and latest Nvidia 495 driver:

pacman -Q | rg nvidia
lib32-nvidia-cg-toolkit 3.1-7
lib32-nvidia-utils-beta 495.44-1
lib32-opencl-nvidia-beta 495.44-1
nvidia-beta-dkms 495.44-1
nvidia-cg-toolkit 3.1-6
nvidia-utils-beta 495.44-1
opencl-nvidia-beta 495.44-1

and I can confirm the driver is running:

nvidia-smi
Wed Oct 27 11:23:47 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 495.44       Driver Version: 495.44       CUDA Version: 11.5     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
| N/A   34C    P3    17W /  N/A |   1876MiB /  6078MiB |     23%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1571      G   /usr/bin/gnome-shell              640MiB |
|    0   N/A  N/A      1816      G   ...developer-edition/firefox      354MiB |
|    0   N/A  N/A      1835      G   telegram-desktop                    1MiB |
|    0   N/A  N/A      2130      G   /usr/bin/Xwayland                 154MiB |
|    0   N/A  N/A      2744      G   ...AAAAAAAAA= --shared-files      138MiB |
|    0   N/A  N/A      5323      G   ...ef_log.txt --shared-files       93MiB |
|    0   N/A  N/A     11342      G   ...developer-edition/firefox        1MiB |
|    0   N/A  N/A     12133      G   ...developer-edition/firefox        1MiB |
|    0   N/A  N/A     30724      G   gnome-control-center                1MiB |
|    0   N/A  N/A     30757      G   /usr/bin/gjs                       27MiB |
|    0   N/A  N/A     30774      G   /usr/bin/gjs                        3MiB |
|    0   N/A  N/A     41362      G   ...AAAAAAAAA= --shared-files       86MiB |
+-----------------------------------------------------------------------------+

I pulled the latest code of wgpu and tried to run the shadow example with vulkan and wayland but still no success:

RUST_LOG=info WINIT_UNIX_BACKEND=wayland WGPU_BACKEND=vulkan cargo run --example shadow
    Finished dev [unoptimized + debuginfo] target(s) in 0.26s
     Running `target/debug/examples/shadow`
[2021-10-27T03:19:55Z ERROR smithay_client_toolkit::window::concept_frame] No font could be found
[2021-10-27T03:19:55Z INFO  shadow::framework] Initializing the surface...
[2021-10-27T03:19:55Z WARN  wgpu_hal::vulkan::instance] Unable to find layer: VK_LAYER_KHRONOS_validation
[2021-10-27T03:19:55Z ERROR wgpu_hal::vulkan::adapter] get_physical_device_surface_support: Initialization of a object has failed
thread 'main' panicked at 'No suitable GPU adapters found on the system!', wgpu/examples/shadow/../framework.rs:136:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[2021-10-27T03:19:55Z INFO  wgpu_core::hub] Dropping Global

I think this is an interesting point for you could run this example as expected. All I expect is running this example under wayland with vulkan/gl backend successfully. I don't know if it's my system's fault or something else.

If I set WGPU_BACKEND=gl I got the same "No suitable GPU adapters" error as you. After hacking the tier_max check I got the same results as you, no EGL_BAD_NATIVE_WINDOW any more, only EGL_BAD_ATTRIBUTE errors. This is the output after hacking the check:

RUST_LOG=info WINIT_UNIX_BACKEND=wayland WGPU_BACKEND=gl cargo run --example shadow
    Finished dev [unoptimized + debuginfo] target(s) in 0.19s
     Running `target/debug/examples/shadow`
[2021-10-27T03:48:12Z ERROR smithay_client_toolkit::window::concept_frame] No font could be found
[2021-10-27T03:48:12Z INFO  shadow::framework] Initializing the surface...
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl] Loading Wayland library to get the current display
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl] Loading X11 library to get the current display
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl] Using Wayland platform
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl] Enabling EGL debug output
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl] Display vendor "NVIDIA", version (1, 5)
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    EGL surface: +srgb
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    Trying native-render
[2021-10-27T03:48:12Z WARN  wgpu_hal::gles::egl] No config found!
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    Trying presentation
[2021-10-27T03:48:12Z WARN  wgpu_hal::gles::egl] EGL says it can present to the window but not natively. This has been confirmed to malfunction on Intel+NV laptops.
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    EGL context: +debug
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    EGL context: +robust access
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    EGL context: +surfaceless
[2021-10-27T03:48:12Z WARN  wgpu_hal::gles::egl] Re-initializing Gles context due to Wayland window
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl] Display vendor "NVIDIA", version (1, 5)
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    EGL surface: +srgb
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    Trying native-render
[2021-10-27T03:48:12Z WARN  wgpu_hal::gles::egl] No config found!
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    Trying presentation
[2021-10-27T03:48:12Z WARN  wgpu_hal::gles::egl] EGL says it can present to the window but not natively. This has been confirmed to malfunction on Intel+NV laptops.
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    EGL context: +debug
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    EGL context: +robust access
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl]    EGL context: +surfaceless
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl] Max label length: 256
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::egl] Enabling GLES debug output
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::adapter] Vendor: NVIDIA Corporation
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::adapter] Renderer: NVIDIA GeForce GTX 1060/PCIe/SSE2
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::adapter] Version: OpenGL ES 3.2 NVIDIA 495.44
[2021-10-27T03:48:12Z INFO  wgpu_hal::gles::adapter] SL version: OpenGL ES GLSL ES 3.20
[2021-10-27T03:48:12Z INFO  wgpu_core::instance] Adapter GL AdapterInfo { name: "NVIDIA GeForce GTX 1060/PCIe/SSE2", vendor: 4318, device: 0, device_type: DiscreteGpu, backend: Gl }
Using NVIDIA GeForce GTX 1060/PCIe/SSE2 (Gl)
[2021-10-27T03:48:12Z INFO  wgpu_core::device] configuring surface with SurfaceConfiguration { usage: RENDER_ATTACHMENT, format: Bgra8UnormSrgb, width: 800, height: 600, present_mode: Mailbox }
[2021-10-27T03:48:12Z WARN  wgpu_core::device] Surface does not support present mode: Mailbox, falling back to FIFO
[2021-10-27T03:48:12Z ERROR wgpu_hal::gles::egl] EGL 'eglGetConfigAttrib' code 0x3004: EGL_BAD_ATTRIBUTE error: In internal function: Additional INFO may be available

[2021-10-27T03:48:12Z WARN  wgpu_hal::gles::egl] Error in create_platform_window_surface: BadAttribute
thread 'main' panicked at 'Error in Surface::configure: invalid surface', wgpu/src/backend/direct.rs:204:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[2021-10-27T03:48:12Z INFO  wgpu_core::hub] Dropping Global
[2021-10-27T03:48:12Z INFO  wgpu_core::device] Destroying 0 command encoders
[2021-10-27T03:48:12Z WARN  calloop::sources::ping] [calloop] Failed to write a ping: Sys(EPIPE)

In conclusion, it's the best result I expect that nvidia driver supports vulkan under wayland with rust's wayland crate. I found it doesn't, but you tested without issues. I will try confirming if this is happening to others using nvidia 495 drivers users and wayland.

erik-kz commented 2 years ago

Can you check if the file /usr/lib/libnvidia-vulkan-producer.so is present on your system? I think the issue might be that the Arch Linux nvidia-utils package doesn't include it.

VitalyAnkh commented 2 years ago

@erik-kz It's true that the file /usr/lib/libnvidia-vulkan-producer.so is not present on my system. Should we help Arch Linux fix this? :smiley:

VitalyAnkh commented 2 years ago

I add the following line to the PKGBUILD of the AUR package nvidia-utils-beta:

    # vulkan
    install -D -m755 "libnvidia-vulkan-producer.so.${pkgver}" -t "${pkgdir}/usr/lib" 

then makepkg si, now the file /usr/lib/libnvidia-vulkan-producer.so is in my system now:

file /usr/lib/libnvidia-vulkan-producer.so.495.44 
/usr/lib/libnvidia-vulkan-producer.so.495.44: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=cf18a468bd12cd0f7b08251e845a569275717fd4, stripped

But running the wgpu example I still got errors:

RUST_LOG=info WINIT_UNIX_BACKEND=wayland WGPU_BACKEND=vulkan cargo run --example shadow
    Finished dev [unoptimized + debuginfo] target(s) in 0.20s
     Running `target/debug/examples/shadow`
[2021-10-27T17:02:44Z ERROR smithay_client_toolkit::window::concept_frame] No font could be found
[2021-10-27T17:02:44Z INFO  shadow::framework] Initializing the surface...
[2021-10-27T17:02:44Z WARN  wgpu_hal::vulkan::instance] Unable to find layer: VK_LAYER_KHRONOS_validation
[2021-10-27T17:02:45Z ERROR wgpu_hal::vulkan::adapter] get_physical_device_surface_support: Initialization of a object has failed
thread 'main' panicked at 'No suitable GPU adapters found on the system!', wgpu/examples/shadow/../framework.rs:136:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[2021-10-27T17:02:45Z INFO  wgpu_core::hub] Dropping Global

Besides, I can't build egl-wayland-git on my system now, so the latest commits of egl-wayland is not installed. When building I got this:

...
...
ninja: Entering directory `build'                                                                   
[13/25] Compiling C object src/libnvidia-egl-wayland.so.1.1.9.p/wayland-egldisplay.c.o
FAILED: src/libnvidia-egl-wayland.so.1.1.9.p/wayland-egldisplay.c.o 
ccache cc -Isrc/libnvidia-egl-wayland.so.1.1.9.p -Isrc -I../egl-wayland/src -I../egl-wayland/include -I../egl-wayland/wayland-egl -Iwayland-eglstream -Iwayland-drm -I/usr/include/EGL -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=gnu99 -Wall -Werror -fvisibility=hidden -DWL_HIDE_DEPRECATED -Wno-pedantic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -D_FORTIFY_SOURCE=2 -fPIC -pthread -MD -MQ src/libnvidia-egl-wayland.so.1.1.9.p/wayland-egldisplay.c.o -MF src/libnvidia-egl-wayland.so.1.1.9.p/wayland-egldisplay.c.o.d -o src/libnvidia-egl-wayland.so.1.1.9.p/wayland-egldisplay.c.o -c ../egl-wayland/src/wayland-egldisplay.c
../egl-wayland/src/wayland-egldisplay.c:32:10: fatal error: wayland-drm-client-protocol.h: No such file or directory
   32 | #include "wayland-drm-client-protocol.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[24/25] Compiling C object src/libnvidia-egl-wayland.so.1.1.9.p/wayland-eglsurface.c.o
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
    Aborting...
error: failed to build 'egl-wayland-git-1.1.8.r0.gce4c963-2': 
error: packages failed to build: egl-wayland-git-1.1.8.r0.gce4c963-2

Does this matter?

erik-kz commented 2 years ago

Dang it, the commit I pushed this morning broke the public build. Sorry about that. I'll get that fixed ASAP. As a work-around, you could add "git checkout 1.1.9" to the PKGBUILD.

Anyway, I filed https://bugs.archlinux.org/task/72560 for the Arch Linux package. issue Could you try running "ln -s /usr/lib/libnvidia-vulkan-producer.so.495.44 /usr/lib/libnvidia-vulkan-producer.so"? I think that symlink also needs to exist.

VitalyAnkh commented 2 years ago

Thanks! I add the symlink then the wgpu examples start running! But if the mouse hovers on them, the window runs very slowly and not responding sometimes. It seems not the driver's fault. Maybe rust's GUI library needs some improvements. Alacritty and some other rust GUI apps also experience input latency AFAIK. Anyway it worked! Thanks for your help!

benwah commented 4 months ago

Heads-up.

If you're using nvidia drivers on Debian, you may encounter:

$ cargo run --features wayland --example bloom_2d
    Finished dev [unoptimized + debuginfo] target(s) in 0.12s
     Running `target/debug/examples/bloom_2d`
2024-02-19T14:20:41.850376Z  INFO bevy_winit::system: Creating new window "App" (0v1)
2024-02-19T14:20:41.938182Z ERROR log: get_physical_device_surface_support: Initialization of an object has failed    
2024-02-19T14:20:41.958387Z  INFO bevy_render::renderer: AdapterInfo { name: "llvmpipe (LLVM 17.0.6, 256 bits)", vendor: 65541, device: 0, device_type: Cpu, driver: "llvmpipe", driver_info: "Mesa 23.3.5-1 (LLVM 17.0.6)", backend: Vulkan }
2024-02-19T14:20:42.397782Z  INFO bevy_diagnostic::system_information_diagnostics_plugin::internal: SystemInfo { os: "Linux  Debian GNU/Linux", kernel: "6.6.15-amd64", cpu: "AMD Ryzen 9 5900X 12-Core Processor", core_count: "12", memory: "62.7 GiB" }
2024-02-19T14:20:45.618080Z  INFO bevy_window::system: No windows are open, exiting
2024-02-19T14:20:45.620763Z  INFO bevy_winit::system: Closing window 0v1

This happened when I tried executing https://github.com/bevyengine/bevy examples.

This was also solved by the "symlink" solution above: https://github.com/NVIDIA/egl-wayland/issues/34#issuecomment-953176437

More specifically I ran:

sudo ln -s /usr/lib/x86_64-linux-gnu/nvidia/current/libnvidia-vulkan-producer.so.525.147.05 /usr/lib/libnvidia-vulkan-producer.so