NVIDIA (495) on sway tutorial + questions (Arch-based distros)

I’m working on the NVIDIA driver + installation for NixOS. Can someone help me understand validation steps for confirming that EGL, EGL+Wayland, and various scenarios involving GBM are all working properly?

The following steps have taken place:

  1. Upgrade to latest 495 stable driver.
  2. Ensure that /etc/egl/egl_external_platform.d/15_nvidia_gbm.json is installed next to 10_nvidia_wayland.json.
  3. Ensure that nvidia-drm_gbm.so is in a configured mesa gbm search path and is a symlink to libnvidia-allocator.so.495.44.
  4. Launch sway with the appropriate env args.
  5. (edit: also, patch wlroots/sway around the RGB check)

While I have nvidia-sway (see below) working, with Sway running, I still experience:

  1. flickering
  2. Steam does not launch
  3. eglinfo only partially works, the “wayland platform” and “x11 platform” sections still fail

Questions:

  1. What should I expect to see from eglinfo?
  2. Have I missed any key steps here to getting nvidia->gbm->sway->egl to work?
  3. What other steps can I take to ensure that the nvidia driver is mostly installed correctly for NixOS users? (For example, until I noticed recently we weren’t even putting the egl_external_platform.d files in the right place.)
$ cat $(which nvidia-sway)

env \
  GBM_BACKEND=nvidia-drm \
  __GLX_VENDOR_LIBRARY_NAME=nvidia \
  WLR_NO_HARDWARE_CURSORS=1 \
    sway --unsupported-gpu -d &>/tmp/sway.log
$ steam
# ......clip....
Xlib:  extension "GLX" missing on display ":0".
Loaded SDL version 2.0.17-6846613
OpenGL GLX extension not supported by display
OpenGL GLX extension not supported by displaysrc/steamUI/Main.cpp (409) : Assertion Failed: Fatal Error: OpenGL GLX extension not supported by display
src/steamUI/Main.cpp (409) : Assertion Failed: Fatal Error: OpenGL GLX extension not supported by display
❯ readlink -f /proc/$(pgrep Xway)/exe         
/nix/store/w4112mcw4k33csvf6ky7sxh634cd5pm4-xwayland-21.1.2.901/bin/Xwayland

# note, version 21.1.2.901 aka the rc-for-21.1.3
# which I think is new enough to support nvidia/GLX scenarios...

^^ (note, how can I confirm Xwayland is built appropriately?)

$ eglinfo

EGL client extensions string:
    EGL_EXT_platform_base EGL_EXT_device_base
    EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions
    EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11
    EGL_EXT_platform_device EGL_KHR_platform_wayland
    EGL_EXT_platform_wayland EGL_KHR_platform_gbm EGL_MESA_platform_gbm

GBM platform:
EGL API version: 1.5
EGL vendor string: NVIDIA
EGL version string: 1.5
EGL client APIs: OpenGL_ES OpenGL
EGL extensions string:
    EGL_EXT_buffer_age EGL_EXT_client_sync
    EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import
    EGL_EXT_image_dma_buf_import_modifiers EGL_MESA_image_dma_buf_export
    EGL_EXT_output_base EGL_EXT_output_drm EGL_EXT_protected_content
    EGL_EXT_stream_consumer_egloutput EGL_EXT_stream_acquire_mode
    EGL_EXT_sync_reuse EGL_IMG_context_priority EGL_KHR_config_attribs
    EGL_KHR_create_context_no_error EGL_KHR_context_flush_control
    EGL_KHR_create_context EGL_KHR_fence_sync
    EGL_KHR_get_all_proc_addresses EGL_KHR_partial_update
    EGL_KHR_swap_buffers_with_damage EGL_KHR_no_config_context
    EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image
    EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
    EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base
    EGL_KHR_reusable_sync EGL_KHR_stream EGL_KHR_stream_attrib
    EGL_KHR_stream_consumer_gltexture EGL_KHR_stream_cross_process_fd
    EGL_KHR_stream_fifo EGL_KHR_stream_producer_eglsurface
    EGL_KHR_surfaceless_context EGL_KHR_wait_sync EGL_NV_nvrm_fence_sync
    EGL_NV_quadruple_buffer EGL_NV_stream_consumer_eglimage
    EGL_NV_stream_cross_display EGL_NV_stream_cross_object
    EGL_NV_stream_cross_process EGL_NV_stream_cross_system
    EGL_NV_stream_dma EGL_NV_stream_flush EGL_NV_stream_metadata
    EGL_NV_stream_remote EGL_NV_stream_reset EGL_NV_stream_socket
    EGL_NV_stream_socket_inet EGL_NV_stream_socket_unix
    EGL_NV_stream_sync EGL_NV_stream_fifo_next
    EGL_NV_stream_fifo_synchronous EGL_NV_stream_consumer_gltexture_yuv
    EGL_NV_stream_attrib EGL_NV_stream_origin EGL_NV_system_time
    EGL_NV_output_drm_flip_event EGL_NV_triple_buffer
    EGL_NV_robustness_video_memory_purge EGL_WL_bind_wayland_display
    EGL_WL_wayland_eglstream
Configurations:
     bf lv colorbuffer dp st  ms    vis   cav bi  renderable  supported
  id sz  l  r  g  b  a th cl ns b    id   eat nd gl es es2 vg surfaces 
---------------------------------------------------------------------
0x01 32  0  8  8  8  8 24  8  0 0 0x34325241--         y  y  y     win,pb,str
0x02 32  0  8  8  8  8 24  0  0 0 0x34325241--         y  y  y     win,pb,str
0x03 32  0  8  8  8  8  0  8  0 0 0x34325241--         y  y  y     win,pb,str
0x04 32  0  8  8  8  8  0  0  0 0 0x34325241--         y  y  y     win,pb,str
0x05 32  0  8  8  8  8 24  8  2 1 0x34325241--         y  y  y     win,pb,str
0x06 32  0  8  8  8  8 24  0  2 1 0x34325241--         y  y  y     win,pb,str
0x07 32  0  8  8  8  8  0  8  2 1 0x34325241--         y  y  y     win,pb,str
0x08 32  0  8  8  8  8  0  0  2 1 0x34325241--         y  y  y     win,pb,str
0x09 32  0  8  8  8  8 24  8  4 1 0x34325241--         y  y  y     win,pb,str
0x0a 32  0  8  8  8  8 24  8  4 1 0x34325241--         y  y  y     win,pb,str
0x0b 32  0  8  8  8  8 24  0  4 1 0x34325241--         y  y  y     win,pb,str
0x0c 32  0  8  8  8  8 24  0  4 1 0x34325241--         y  y  y     win,pb,str
0x0d 32  0  8  8  8  8  0  8  4 1 0x34325241--         y  y  y     win,pb,str
0x0e 32  0  8  8  8  8  0  8  4 1 0x34325241--         y  y  y     win,pb,str
0x0f 32  0  8  8  8  8  0  0  4 1 0x34325241--         y  y  y     win,pb,str
0x10 32  0  8  8  8  8  0  0  4 1 0x34325241--         y  y  y     win,pb,str
0x11 32  0  8  8  8  8 24  8  8 1 0x34325241--         y  y  y     win,pb,str
0x12 32  0  8  8  8  8 24  0  8 1 0x34325241--         y  y  y     win,pb,str
0x13 32  0  8  8  8  8  0  8  8 1 0x34325241--         y  y  y     win,pb,str
0x14 32  0  8  8  8  8  0  0  8 1 0x34325241--         y  y  y     win,pb,str
0x15 24  0  8  8  8  0 24  8  0 0 0x34325258--         y  y  y     win,pb,str
0x16 24  0  8  8  8  0 24  0  0 0 0x34325258--         y  y  y     win,pb,str
0x17 24  0  8  8  8  0  0  8  0 0 0x34325258--         y  y  y     win,pb,str
0x18 24  0  8  8  8  0  0  0  0 0 0x34325258--         y  y  y     win,pb,str
0x19 24  0  8  8  8  0 24  8  2 1 0x34325258--         y  y  y     win,pb,str
0x1a 24  0  8  8  8  0 24  0  2 1 0x34325258--         y  y  y     win,pb,str
0x1b 24  0  8  8  8  0  0  8  2 1 0x34325258--         y  y  y     win,pb,str
0x1c 24  0  8  8  8  0  0  0  2 1 0x34325258--         y  y  y     win,pb,str
0x1d 24  0  8  8  8  0 24  8  4 1 0x34325258--         y  y  y     win,pb,str
0x1e 24  0  8  8  8  0 24  8  4 1 0x34325258--         y  y  y     win,pb,str
0x1f 24  0  8  8  8  0 24  0  4 1 0x34325258--         y  y  y     win,pb,str
0x20 24  0  8  8  8  0 24  0  4 1 0x34325258--         y  y  y     win,pb,str
0x21 24  0  8  8  8  0  0  8  4 1 0x34325258--         y  y  y     win,pb,str
0x22 24  0  8  8  8  0  0  8  4 1 0x34325258--         y  y  y     win,pb,str
0x23 24  0  8  8  8  0  0  0  4 1 0x34325258--         y  y  y     win,pb,str
0x24 24  0  8  8  8  0  0  0  4 1 0x34325258--         y  y  y     win,pb,str
0x25 24  0  8  8  8  0 24  8  8 1 0x34325258--         y  y  y     win,pb,str
0x26 24  0  8  8  8  0 24  0  8 1 0x34325258--         y  y  y     win,pb,str
0x27 24  0  8  8  8  0  0  8  8 1 0x34325258--         y  y  y     win,pb,str
0x28 24  0  8  8  8  0  0  0  8 1 0x34325258--         y  y  y     win,pb,str
0x29 16  0  5  6  5  0 24  8  0 0 0x36314752--         y  y  y     win,pb,str
0x2a 16  0  5  6  5  0 24  0  0 0 0x36314752--         y  y  y     win,pb,str
0x2b 16  0  5  6  5  0 16  0  0 0 0x36314752--         y  y  y     win,pb,str
0x2c 16  0  5  6  5  0  0  8  0 0 0x36314752--         y  y  y     win,pb,str
0x2d 16  0  5  6  5  0  0  0  0 0 0x36314752--         y  y  y     win,pb,str
0x2e 16  0  5  6  5  0 24  8  2 1 0x36314752--         y  y  y     win,pb,str
0x2f 16  0  5  6  5  0 24  0  2 1 0x36314752--         y  y  y     win,pb,str
0x30 16  0  5  6  5  0 16  0  2 1 0x36314752--         y  y  y     win,pb,str
0x31 16  0  5  6  5  0  0  8  2 1 0x36314752--         y  y  y     win,pb,str
0x32 16  0  5  6  5  0  0  0  2 1 0x36314752--         y  y  y     win,pb,str
0x33 16  0  5  6  5  0 24  8  4 1 0x36314752--         y  y  y     win,pb,str
0x34 16  0  5  6  5  0 24  8  4 1 0x36314752--         y  y  y     win,pb,str
0x35 16  0  5  6  5  0 24  0  4 1 0x36314752--         y  y  y     win,pb,str
0x36 16  0  5  6  5  0 24  0  4 1 0x36314752--         y  y  y     win,pb,str
0x37 16  0  5  6  5  0 16  0  4 1 0x36314752--         y  y  y     win,pb,str
0x38 16  0  5  6  5  0 16  0  4 1 0x36314752--         y  y  y     win,pb,str
0x39 16  0  5  6  5  0  0  8  4 1 0x36314752--         y  y  y     win,pb,str
0x3a 16  0  5  6  5  0  0  8  4 1 0x36314752--         y  y  y     win,pb,str
0x3b 16  0  5  6  5  0  0  0  4 1 0x36314752--         y  y  y     win,pb,str
0x3c 16  0  5  6  5  0  0  0  4 1 0x36314752--         y  y  y     win,pb,str
0x3d 16  0  5  6  5  0 24  8  8 1 0x36314752--         y  y  y     win,pb,str
0x3e 16  0  5  6  5  0 24  0  8 1 0x36314752--         y  y  y     win,pb,str
0x3f 16  0  5  6  5  0 16  0  8 1 0x36314752--         y  y  y     win,pb,str
0x40 16  0  5  6  5  0  0  8  8 1 0x36314752--         y  y  y     win,pb,str
0x41 16  0  5  6  5  0  0  0  8 1 0x36314752--         y  y  y     win,pb,str

Wayland platform:
eglinfo: eglInitialize failed

X11 platform:
eglinfo: eglInitialize failed

Device platform:
EGL API version: 1.5
EGL vendor string: NVIDIA
EGL version string: 1.5
EGL client APIs: OpenGL_ES OpenGL
EGL extensions string:
    EGL_EXT_buffer_age EGL_EXT_client_sync
    EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import
    EGL_EXT_image_dma_buf_import_modifiers EGL_MESA_image_dma_buf_export
    EGL_EXT_output_base EGL_EXT_output_drm EGL_EXT_protected_content
    EGL_EXT_stream_consumer_egloutput EGL_EXT_stream_acquire_mode
    EGL_EXT_sync_reuse EGL_IMG_context_priority EGL_KHR_config_attribs
    EGL_KHR_create_context_no_error EGL_KHR_context_flush_control
    EGL_KHR_create_context EGL_KHR_fence_sync
    EGL_KHR_get_all_proc_addresses EGL_KHR_partial_update
    EGL_KHR_swap_buffers_with_damage EGL_KHR_no_config_context
    EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image
    EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
    EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base
    EGL_KHR_reusable_sync EGL_KHR_stream EGL_KHR_stream_attrib
    EGL_KHR_stream_consumer_gltexture EGL_KHR_stream_cross_process_fd
    EGL_KHR_stream_fifo EGL_KHR_stream_producer_eglsurface
    EGL_KHR_surfaceless_context EGL_KHR_wait_sync EGL_NV_nvrm_fence_sync
    EGL_NV_quadruple_buffer EGL_NV_stream_consumer_eglimage
    EGL_NV_stream_cross_display EGL_NV_stream_cross_object
    EGL_NV_stream_cross_process EGL_NV_stream_cross_system
    EGL_NV_stream_dma EGL_NV_stream_flush EGL_NV_stream_metadata
    EGL_NV_stream_remote EGL_NV_stream_reset EGL_NV_stream_socket
    EGL_NV_stream_socket_inet EGL_NV_stream_socket_unix
    EGL_NV_stream_sync EGL_NV_stream_fifo_next
    EGL_NV_stream_fifo_synchronous EGL_NV_stream_consumer_gltexture_yuv
    EGL_NV_stream_attrib EGL_NV_stream_origin EGL_NV_system_time
    EGL_NV_output_drm_flip_event EGL_NV_triple_buffer
    EGL_NV_robustness_video_memory_purge EGL_WL_bind_wayland_display
    EGL_WL_wayland_eglstream
Configurations:
     bf lv colorbuffer dp st  ms    vis   cav bi  renderable  supported
  id sz  l  r  g  b  a th cl ns b    id   eat nd gl es es2 vg surfaces 
---------------------------------------------------------------------
0x01 32  0  8  8  8  8 24  8  0 0 0x00--         y  y  y     pb,str
0x02 32  0  8  8  8  8 24  0  0 0 0x00--         y  y  y     pb,str
0x03 32  0  8  8  8  8  0  8  0 0 0x00--         y  y  y     pb,str
0x04 32  0  8  8  8  8  0  0  0 0 0x00--         y  y  y     pb,str
0x05 32  0  8  8  8  8 24  8  2 1 0x00--         y  y  y     pb,str
0x06 32  0  8  8  8  8 24  0  2 1 0x00--         y  y  y     pb,str
0x07 32  0  8  8  8  8  0  8  2 1 0x00--         y  y  y     pb,str
0x08 32  0  8  8  8  8  0  0  2 1 0x00--         y  y  y     pb,str
0x09 32  0  8  8  8  8 24  8  4 1 0x00--         y  y  y     pb,str
0x0a 32  0  8  8  8  8 24  8  4 1 0x00--         y  y  y     pb,str
0x0b 32  0  8  8  8  8 24  0  4 1 0x00--         y  y  y     pb,str
0x0c 32  0  8  8  8  8 24  0  4 1 0x00--         y  y  y     pb,str
0x0d 32  0  8  8  8  8  0  8  4 1 0x00--         y  y  y     pb,str
0x0e 32  0  8  8  8  8  0  8  4 1 0x00--         y  y  y     pb,str
0x0f 32  0  8  8  8  8  0  0  4 1 0x00--         y  y  y     pb,str
0x10 32  0  8  8  8  8  0  0  4 1 0x00--         y  y  y     pb,str
0x11 32  0  8  8  8  8 24  8  8 1 0x00--         y  y  y     pb,str
0x12 32  0  8  8  8  8 24  0  8 1 0x00--         y  y  y     pb,str
0x13 32  0  8  8  8  8  0  8  8 1 0x00--         y  y  y     pb,str
0x14 32  0  8  8  8  8  0  0  8 1 0x00--         y  y  y     pb,str
0x15 24  0  8  8  8  0 24  8  0 0 0x00--         y  y  y     pb,str
0x16 24  0  8  8  8  0 24  0  0 0 0x00--         y  y  y     pb,str
0x17 24  0  8  8  8  0  0  8  0 0 0x00--         y  y  y     pb,str
0x18 24  0  8  8  8  0  0  0  0 0 0x00--         y  y  y     pb,str
0x19 24  0  8  8  8  0 24  8  2 1 0x00--         y  y  y     pb,str
0x1a 24  0  8  8  8  0 24  0  2 1 0x00--         y  y  y     pb,str
0x1b 24  0  8  8  8  0  0  8  2 1 0x00--         y  y  y     pb,str
0x1c 24  0  8  8  8  0  0  0  2 1 0x00--         y  y  y     pb,str
0x1d 24  0  8  8  8  0 24  8  4 1 0x00--         y  y  y     pb,str
0x1e 24  0  8  8  8  0 24  8  4 1 0x00--         y  y  y     pb,str
0x1f 24  0  8  8  8  0 24  0  4 1 0x00--         y  y  y     pb,str
0x20 24  0  8  8  8  0 24  0  4 1 0x00--         y  y  y     pb,str
0x21 24  0  8  8  8  0  0  8  4 1 0x00--         y  y  y     pb,str
0x22 24  0  8  8  8  0  0  8  4 1 0x00--         y  y  y     pb,str
0x23 24  0  8  8  8  0  0  0  4 1 0x00--         y  y  y     pb,str
0x24 24  0  8  8  8  0  0  0  4 1 0x00--         y  y  y     pb,str
0x25 24  0  8  8  8  0 24  8  8 1 0x00--         y  y  y     pb,str
0x26 24  0  8  8  8  0 24  0  8 1 0x00--         y  y  y     pb,str
0x27 24  0  8  8  8  0  0  8  8 1 0x00--         y  y  y     pb,str
0x28 24  0  8  8  8  0  0  0  8 1 0x00--         y  y  y     pb,str
0x29 16  0  5  6  5  0 24  8  0 0 0x00--         y  y  y     pb,str
0x2a 16  0  5  6  5  0 24  0  0 0 0x00--         y  y  y     pb,str
0x2b 16  0  5  6  5  0 16  0  0 0 0x00--         y  y  y     pb,str
0x2c 16  0  5  6  5  0  0  8  0 0 0x00--         y  y  y     pb,str
0x2d 16  0  5  6  5  0  0  0  0 0 0x00--         y  y  y     pb,str
0x2e 16  0  5  6  5  0 24  8  2 1 0x00--         y  y  y     pb,str
0x2f 16  0  5  6  5  0 24  0  2 1 0x00--         y  y  y     pb,str
0x30 16  0  5  6  5  0 16  0  2 1 0x00--         y  y  y     pb,str
0x31 16  0  5  6  5  0  0  8  2 1 0x00--         y  y  y     pb,str
0x32 16  0  5  6  5  0  0  0  2 1 0x00--         y  y  y     pb,str
0x33 16  0  5  6  5  0 24  8  4 1 0x00--         y  y  y     pb,str
0x34 16  0  5  6  5  0 24  8  4 1 0x00--         y  y  y     pb,str
0x35 16  0  5  6  5  0 24  0  4 1 0x00--         y  y  y     pb,str
0x36 16  0  5  6  5  0 24  0  4 1 0x00--         y  y  y     pb,str
0x37 16  0  5  6  5  0 16  0  4 1 0x00--         y  y  y     pb,str
0x38 16  0  5  6  5  0 16  0  4 1 0x00--         y  y  y     pb,str
0x39 16  0  5  6  5  0  0  8  4 1 0x00--         y  y  y     pb,str
0x3a 16  0  5  6  5  0  0  8  4 1 0x00--         y  y  y     pb,str
0x3b 16  0  5  6  5  0  0  0  4 1 0x00--         y  y  y     pb,str
0x3c 16  0  5  6  5  0  0  0  4 1 0x00--         y  y  y     pb,str
0x3d 16  0  5  6  5  0 24  8  8 1 0x00--         y  y  y     pb,str
0x3e 16  0  5  6  5  0 24  0  8 1 0x00--         y  y  y     pb,str
0x3f 16  0  5  6  5  0 16  0  8 1 0x00--         y  y  y     pb,str
0x40 16  0  5  6  5  0  0  8  8 1 0x00--         y  y  y     pb,str
0x41 16  0  5  6  5  0  0  0  8 1 0x00--         y  y  y     pb,str

The important parts of sway startup:

❯ cat /tmp/sway.log
00:00:00.000 [INFO] [sway/main.c:340] Sway version 1.6
00:00:00.000 [INFO] [sway/main.c:341] wlroots version 0.15.0
00:00:00.002 [INFO] [sway/main.c:120] Linux porty 5.14.15 #1-NixOS SMP Wed Oct 27 07:59:56 UTC 2021 x86_64 GNU/Linux
00:00:00.002 [INFO] [sway/main.c:136] Contents of /etc/os-release:
00:00:00.002 [INFO] [sway/main.c:120] NAME=NixOS
00:00:00.002 [INFO] [sway/main.c:120] ID=nixos
00:00:00.002 [INFO] [sway/main.c:120] VERSION="21.11 (Porcupine)"
00:00:00.002 [INFO] [sway/main.c:120] VERSION_CODENAME=porcupine
00:00:00.002 [INFO] [sway/main.c:120] VERSION_ID="21.11"
00:00:00.002 [INFO] [sway/main.c:120] BUILD_ID="21.11.20211105.dirty"
00:00:00.002 [INFO] [sway/main.c:120] PRETTY_NAME="NixOS 21.11 (Porcupine)"
00:00:00.002 [INFO] [sway/main.c:120] LOGO="nix-snowflake"
00:00:00.002 [INFO] [sway/main.c:120] HOME_URL="https://nixos.org/"
00:00:00.002 [INFO] [sway/main.c:120] DOCUMENTATION_URL="https://nixos.org/learn.html"
00:00:00.002 [INFO] [sway/main.c:120] SUPPORT_URL="https://nixos.org/community.html"
00:00:00.002 [INFO] [sway/main.c:120] BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
00:00:00.002 [INFO] [sway/main.c:108] LD_LIBRARY_PATH=/nix/store/sfhvcpjqmn5gn1i45lkfwq58j3w6a0ya-pipewire-0.3.39-jack/lib
00:00:00.002 [INFO] [sway/main.c:108] LD_PRELOAD=
00:00:00.002 [INFO] [sway/main.c:108] PATH=/run/wrappers/bin:/home/cole/.nix-profile/bin:/etc/profiles/per-user/cole/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/home/cole/.config/zsh/plugins/powerlevel10k-config:/home/cole/.config/zsh/plugins/powerlevel10k:/home/cole/.config/zsh/plugins/zsh-fast-syntax-highlighting
00:00:00.002 [INFO] [sway/main.c:108] SWAYSOCK=
00:00:00.002 [ERROR] [sway/main.c:62] !!! Proprietary Nvidia drivers are in use !!!
00:00:00.002 [DEBUG] [sway/server.c:49] Preparing Wayland server initialization
00:00:00.002 [INFO] [wlr] [libseat] [libseat/backend/seatd.c:80] Could not connect to socket /run/seatd.sock: No such file or directory
00:00:00.002 [INFO] [wlr] [libseat] [libseat/libseat.c:76] Backend 'seatd' failed to open seat, skipping
00:00:00.004 [INFO] [wlr] [libseat] [libseat/libseat.c:73] Seat opened with backend 'logind'
00:00:00.004 [INFO] [wlr] [backend/session/session.c:110] Successfully loaded libseat session
00:00:00.005 [INFO] [wlr] [backend/backend.c:300] Found 1 GPUs
00:00:00.005 [INFO] [wlr] [backend/drm/backend.c:172] Initializing DRM backend for /dev/dri/card0 (nvidia-drm)
00:00:00.005 [DEBUG] [wlr] [backend/drm/drm.c:85] Using atomic DRM interface
00:00:00.005 [DEBUG] [wlr] [backend/drm/drm.c:98] ADDFB2 modifiers supported
00:00:00.005 [INFO] [wlr] [backend/drm/drm.c:260] Found 4 DRM CRTCs
00:00:00.005 [INFO] [wlr] [backend/drm/drm.c:187] Found 12 DRM planes
00:00:00.008 [INFO] [wlr] [render/egl.c:170] Supported EGL client extensions: EGL_EXT_platform_base EGL_EXT_device_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_EXT_platform_device EGL_KHR_platform_wayland EGL_EXT_platform_wayland EGL_KHR_platform_gbm EGL_MESA_platform_gbm
00:00:00.008 [DEBUG] [wlr] [render/egl.c:379] EGL_EXT_device_enumeration not supported
00:00:00.015 [INFO] [wlr] [render/egl.c:319] Supported EGL display extensions: EGL_EXT_buffer_age EGL_EXT_client_sync EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_MESA_image_dma_buf_export EGL_EXT_output_base EGL_EXT_output_drm EGL_EXT_protected_content EGL_EXT_stream_consumer_egloutput EGL_EXT_stream_acquire_mode EGL_EXT_sync_reuse EGL_IMG_context_priority EGL_KHR_config_attribs EGL_KHR_create_context_no_error EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_partial_update EGL_KHR_swap_buffers_with_damage EGL_KHR_no_config_context EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_reusable_sync EGL_KHR_stream EGL_KHR_stream_attrib EGL_KHR_stream_consumer_gltexture EGL_KHR_stream_cross_process_fd EGL_KHR_stream_fifo EGL_KHR_stream_producer_eglsurface EGL_KHR_surfaceless_context EGL_KHR_wait_sync EGL_NV_nvrm_fence_sync EGL_NV_quadruple_buffer EGL_NV_stream_consumer_eglimage EGL_NV_stream_cross_display EGL_NV_stream_cross_object EGL_NV_stream_cross_process EGL_NV_stream_cross_system EGL_NV_stream_dma EGL_NV_stream_flush EGL_NV_stream_metadata EGL_NV_stream_remote EGL_NV_stream_reset EGL_NV_stream_socket EGL_NV_stream_socket_inet EGL_NV_stream_socket_unix EGL_NV_stream_sync EGL_NV_stream_fifo_next EGL_NV_stream_fifo_synchronous EGL_NV_stream_consumer_gltexture_yuv EGL_NV_stream_attrib EGL_NV_stream_origin EGL_NV_system_time EGL_NV_output_drm_flip_event EGL_NV_triple_buffer EGL_NV_robustness_video_memory_purge EGL_WL_bind_wayland_display EGL_WL_wayland_eglstream
00:00:00.015 [INFO] [wlr] [render/egl.c:323] Using EGL 1.5
00:00:00.015 [INFO] [wlr] [render/egl.c:324] EGL vendor: NVIDIA
00:00:00.015 [DEBUG] [wlr] [render/egl.c:150] Supported DMA-BUF formats: AB24 XB24 R8   RG88 UYVY AB4H AR24 AS24 XS24 XR24 RG16 AR30 R101 R100 AB30 B101 B100 YU12 NV12 NV21 NV16 NV24 P010 P210 P012 HD01 UHD0 
00:00:00.015 [DEBUG] [wlr] [render/egl.c:151] EGL DMA-BUF format modifiers supported
Failed to establish dbus connection00:00:00.016 [DEBUG] [wlr] [render/egl.c:367] Obtained high priority context
00:00:00.016 [DEBUG] [wlr] [render/egl.c:489] Using EGL_PLATFORM_GBM_KHR
00:00:00.035 [INFO] [wlr] [render/gles2/renderer.c:732] Creating GLES2 renderer
00:00:00.035 [INFO] [wlr] [render/gles2/renderer.c:733] Using OpenGL ES 3.2 NVIDIA 495.44
00:00:00.035 [INFO] [wlr] [render/gles2/renderer.c:734] GL vendor: NVIDIA Corporation
00:00:00.035 [INFO] [wlr] [render/gles2/renderer.c:735] GL renderer: NVIDIA GeForce RTX 3080/PCIe/SSE2
00:00:00.035 [INFO] [wlr] [render/gles2/renderer.c:736] Supported GLES2 extensions: GL_EXT_base_instance GL_EXT_blend_func_extended GL_EXT_blend_minmax GL_EXT_buffer_storage GL_EXT_clear_texture GL_EXT_clip_control GL_EXT_clip_cull_distance GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_conservative_depth GL_EXT_copy_image GL_EXT_depth_clamp GL_EXT_debug_label GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex GL_EXT_EGL_image_array GL_EXT_EGL_image_storage GL_EXT_EGL_image_external_wrap_modes GL_EXT_float_blend GL_EXT_frag_depth GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_EXT_gpu_shader5 GL_EXT_map_buffer_range GL_EXT_multi_draw_indirect GL_EXT_multisample_compatibility GL_EXT_multisampled_render_to_texture GL_EXT_multisampled_render_to_texture2 GL_EXT_multiview_texture_multisample GL_EXT_multiview_timer_query GL_EXT_occlusion_query_boolean GL_EXT_polygon_offset_clamp GL_EXT_post_depth_coverage GL_EXT_primitive_bounding_box GL_EXT_raster_multisample GL_EXT_render_snorm GL_EXT_robustness GL_EXT_separate_shader_objects GL_EXT_shader_group_vote GL_EXT_shader_implicit_conversions GL_EXT_shader_integer_mix GL_EXT_shader_io_blocks GL_EXT_shader_non_constant_global_initializers GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_sparse_texture GL_EXT_sparse_texture2 GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_tessellation_point_size GL_EXT_tessellation_shader GL_EXT_texture_border_clamp GL_EXT_texture_buffer GL_EXT_texture_compression_bptc GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map_array GL_EXT_texture_filter_anisotropic GL_EXT_texture_filter_minmax GL_EXT_texture_format_BGRA8888 GL_EXT_texture_mirror_clamp_to_edge GL_EXT_texture_norm16 GL_EXT_texture_query_lod GL_EXT_texture_rg GL_EXT_texture_shadow_lod GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_decode GL_EXT_texture_storage GL_EXT_texture_view GL_EXT_draw_transform_feedback GL_EXT_unpack_subimage GL_EXT_window_rectangles GL_KHR_context_flush_control GL_KHR_debug GL_EXT_memory_object GL_EXT_memory_object_fd GL_NV_memory_object_sparse GL_KHR_parallel_shader_compile GL_KHR_no_error GL_KHR_robust_buffer_access_behavior GL_KHR_robustness GL_EXT_semaphore GL_EXT_semaphore_fd GL_NV_timeline_semaphore GL_KHR_shader_subgroup GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_sliced_3d GL_KHR_texture_compression_astc_hdr GL_NV_bgr GL_NV_bindless_texture GL_NV_blend_equation_advanced GL_NV_blend_equation_advanced_coherent GL_NVX_blend_equation_advanced_multi_draw_buffers GL_NV_blend_minmax_factor GL_NV_clip_space_w_scaling GL_NV_compute_shader_derivatives GL_NV_conditional_render GL_NV_conservative_raster GL_NV_conservative_raster_pre_snap_triangles GL_NV_copy_buffer GL_NV_copy_image GL_NV_draw_buffers GL_NV_draw_instanced GL_NV_draw_texture GL_NV_draw_vulkan_image GL_NV_EGL_stream_consumer_external GL_NV_explicit_attrib_location GL_NV_fbo_color_attachments GL_NV_fill_rectangle GL_NV_fragment_coverage_to_color GL_NV_fragment_shader_barycentric GL_NV_fragment_shader_interlock GL_NV_framebuffer_blit GL_NV_framebuffer_mixed_samples GL_NV_framebuffer_multisample GL_NV_generate_mipmap_sRGB GL_NV_geometry_shader_passthrough GL_NV_instanced_arrays GL_NV_internalformat_sample_query GL_NV_gpu_shader5 GL_NV_image_formats GL_NV_memory_attachment GL_NV_mesh_shader GL_NV_occlusion_query_samples GL_NV_non_square_matrices GL_NV_pack_subimage GL_NV_packed_float GL_NV_packed_float_linear GL_NV_path_rendering GL_NV_path_rendering_shared_edge GL_NV_pixel_buffer_object GL_NV_polygon_mode GL_NV_primitive_shading_rate GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_NV_representative_fragment_test GL_NV_sample_locations GL_NV_sample_mask_override_coverage GL_NV_scissor_exclusive GL_NV_shader_atomic_fp16_vector GL_NV_shader_noperspective_interpolation GL_NV_shader_subgroup_partitioned GL_NV_shader_texture_footprint GL_NV_shading_rate_image GL_NV_shadow_samplers_array GL_NV_shadow_samplers_cube GL_NV_sRGB_formats GL_NV_stereo_view_rendering GL_NV_texture_array GL_NV_texture_barrier GL_NV_texture_border_clamp GL_NV_texture_compression_latc GL_NV_texture_compression_s3tc GL_NV_texture_compression_s3tc_update GL_NV_texture_dirty_tile_map GL_NV_timer_query GL_NV_viewport_array GL_NV_viewport_array2 GL_NV_viewport_swizzle GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_compressed_ETC1_RGB8_texture GL_EXT_compressed_ETC1_RGB8_sub_texture GL_OES_depth24 GL_OES_depth32 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_copy_image GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex GL_OES_texture_border_clamp GL_OES_tessellation_point_size GL_OES_tessellation_shader GL_OES_texture_buffer GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_gpu_shader5 GL_OES_shader_io_blocks GL_OES_texture_view GL_OES_primitive_bounding_box GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_sample_shading GL_OES_sample_variables GL_OES_shader_image_atomic GL_OES_shader_multisample_interpolation GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_cube_map_array GL_OES_texture_npot GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_OES_vertex_array_object GL_OES_vertex_half_float GL_OES_viewport_array GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_ANDROID_extension_pack_es31a 
00:00:00.048 [DEBUG] [wlr] [render/allocator/allocator.c:97] Trying to create gbm allocator
00:00:00.048 [DEBUG] [wlr] [render/allocator/allocator.c:38] drmModeCreateLease failed, falling back to plain open
00:00:00.048 [DEBUG] [wlr] [render/allocator/gbm.c:194] Created GBM allocator with backend nvidia
00:00:00.048 [DEBUG] [wlr] [render/allocator/gbm.c:197] Using DRM node /dev/dri/renderD128
00:00:00.048 [INFO] [sway/main.c:390] Starting sway version 1.6
00:00:00.048 [DEBUG] [sway/server.c:74] Initializing Wayland server
00:00:00.048 [INFO] [wlr] [render/wlr_renderer.c:238] Cannot get renderer DRM FD, disabling wl_drm
00:00:00.048 [DEBUG] [wlr] [types/wlr_idle.c:247] idle manager created
00:00:00.048 [DEBUG] [wlr] [types/wlr_drm_lease_v1.c:627] Creating wlr_drm_lease_device_v1 for /dev/dri/card0
00:00:00.048 [INFO] [wlr] [backend/noop/backend.c:59] Creating noop backend
00:00:00.048 [DEBUG] [wlr] [types/output/output.c:366] WLR_NO_HARDWARE_CURSORS set, forcing software cursors
00:00:00.048 [INFO] [wlr] [backend/headless/backend.c:219] Creating headless backend with parent renderer
00:00:00.048 [ERROR] [wlr] [backend/headless/backend.c:230] Failed to get DRM device FD from parent renderer

edit: ignore the versions in the log file, I don’t patch that out in my overlay that runs tip of tree builds apparently.

This lack of support for VDPAU is only on XWayland apps or also on Wayland native apps? I’m having some trouble activating video hardware acceleration on native apps such as Firefox.

VDPAU is completely unavailable on Wayland at the moment. NVENC/NVDEC are available but they’re not available in any browser.

2 Likes

Thanks for the reply! Has NVIDIA confirmed it’s something they are working on or we just have to cross fingers?

I don’t think Nvidia has said anything about developing VDPAU for Wayland yet :/

This user seems to be doing some work on this front but nothing from Nvidia themselves yet. Hopefully we see some action soon now that they’ve given us GBM at least.

I’m also noticing a lot of flickering on Sway with the new GBM support. Any idea how to fix it? I searched the Internet and found some solutions that did not work for me. Mostly it appears when I scroll or switch between apps. Or when a lot of stuff happens on the screen.

I tried so far:
WLR_DRM_NO_ATOMIC=1

disabling VRR
__GL_VRR_ALLOWED=0
__GL_GSYNC_ALLOWED=0

Nothing helped :/
Beside the flickering it runs awesome and I really appreciate having Sway again!

1 Like

Problem about external monitors on prime machines (HP zbook studio) is still there with beta 510…

Could someone create a sway-nvidia fork (and possibly a package in AUR) where we could have the current, best GBM config for the latest version of the proprietary NVIDIA driver? The ‘installation guide’ (GRUB config, env vars, etc) would be nice too.

Or if there already is one, could someone point me to it please?

Currently, everybody uses so many different configs that no one really knows which are working the best. A Git repo would be nice to keep it all in one place.

I’d create one, but this is my first time with NVIDIA GPU, first time with Arch Linux, and I never contributed to anything related to GPUs. :)

1 Like

Given the current state of the Nvidia GBM driver, which doesn’t play well with the original wlroots, I’d still recommend sticking to the wlroots-eglstreams project for now. Uninstall sway and wlroots, then install it (and sway-git) with yay wlroots-eglstreams-git. The author keeps this branch pretty up-to-date with the original wlroots and I have found it much more stable than trying to use GBM for now.

1 Like

Had anyone managed to fix ‘argb8888 && xrgb8888’? I cant get any logs out of sway and this is all i have, running 510-39-01.

sway-git and wlroots-git don’t have the error for me

Currently the two linux distros i use are Void and Gentoo. I dont think i cam do that but will it be the same as building from master?

I built from source on github!

after installing arch and all the necessary -git stuff, and 510 driver

Xwayland sucks. i will go back to regular X, thanks for your help.

I’m loving Sway on Nvidia so far! Multiple monitors work great, there’s no screen tearing when scrolling on Firefox, resizing apps is fast, and games run wonderfully.

However, I’m running into major issues with every Electron app I run, and some XWayland ones such as xeyes. There are countless artifacts, including z-fighting, flickering, and weird redrawing issues.
I did notice all Element apps seem to run in XWayland (despite me setting the Ozone flags in ~/.config/electron-flags.conf), but forcing Wayland through directly passing the arguments --enable-features=UseOzonePlatform --ozone-platform=wayland to the program (Element Desktop as an example) does not seem to fix the rendering issues.

Here’s an example of the redrawing issues that occur with xeyes:

Has anyone else encountered these issues? Is there a current workaround? It’s pretty much the only thing keeping me from switching to it fully.

Maybe be helpful, Arch installing of Sway together to Gnome:

I followed the above video but wlroots-eglstream-git didn’t seem to do the job for me (RTX 2080 Super): sway was stalling on startup.
Using wlroots-git i/o wlroots-eglstream-git (which by the way doesn’t seem to be maintained anymore) did the trick. I’ve had flickers in the beginning but they seem to have disappeared after a reboot.
Thanks a lot to all this thread’s participant for putting all this together :)

This is becoming my favourite environment. The only issues that prevent me using this all the time (instead of i3) are:

If anyone got to the bottom of the electron issue please share! Looks like screen sharing is in the works.

Anyone test out the newest drivers to see if there is improvement, maybe there will be more supports with the kernel module being open sourced

What I’ve observed with Sway 1.7 on the 515.43.04 drivers:

  • wlroots-eglstreams has been discontinued after the maintainer’s GPU broke, so GBM is the only way forward now
  • Hardware cursor is still broken
  • Generally, flickering still happens sometimes randomly (the flicker seems worse under XWayland)
  • foot terminal still sees a lot of flickering every time the terminal needs to refresh
  • Lots of flickering in VS Code as well (using Wayland flags, don’t have the same problem with Signal Desktop which also uses Electron)
  • Screensharing is broken as others have discussed above
  • The newest release of wf-recorder (from 2020) is broken but the git release works fine
  • This official Nvidia post has a lot of info as well: Wayland information for r515 beta release

Honestly, not much has changed since 495 and most of the same issues are still there. The open source release is still alpha on GeForce cards and I had trouble booting my system even with the NVreg_OpenRmEnableUnsupportedGpus=1 option with the nvidia-open package. Hopefully it’ll allow contributors to help with development and make Nouveau better as well.