selkies-project / docker-nvidia-egl-desktop

KDE Plasma Desktop container designed for Kubernetes, supporting OpenGL EGL and GLX, Vulkan, and Wine/Proton for NVIDIA GPUs through WebRTC and HTML5, providing an open-source remote cloud/HPC graphics or game streaming platform.
https://github.com/selkies-project/docker-nvidia-egl-desktop/pkgs/container/nvidia-egl-desktop
Mozilla Public License 2.0
243 stars 50 forks source link

NVIDIA Drivers required with nvidia-headless #34

Closed robballantyne closed 5 months ago

robballantyne commented 8 months ago

Hello

I have created an image which would not have been possible without the work you have done here (and the gstreamer interface) - Amazing job.

I have discovered that EGL is only possible with /dev/dri exposed within the container unless the Nvidia drivers are installed in the same way as you do with the GLX variant.

I'm happy to submit a PR to add this on, but I'll be mostly giving your own code back to you. I wanted to check what you wanted first.

Rob

ehfd commented 8 months ago

This is tricky and I must think about this... This image is specifically meant to specifically not install the drivers compared to GLX.

@dcommander Does EGLStreams with NVIDIA work with VirtualGL via EGL even without GBM (this is not about Wayland)? Because my previous experience is that I did not need /dev/dri when I used egl0 and such similar syntax.

dcommander commented 8 months ago

@dcommander Does EGLStreams with NVIDIA work with VirtualGL via EGL even without GBM (this is not about Wayland)? Because my previous experience is that I did not need /dev/dri when I used egl0 and such similar syntax.

VirtualGL doesn't technically use EGLStream. EGLStream is a specific mechanism for transferring rendered frames between APIs. VirtualGL uses EGL with the EGL_EXT_platform_device extension. That extension exposes all GPUs in the system as EGL devices, and VirtualGL can select a device either by its EGL device ID or by its DRI device path.

dcommander commented 8 months ago

(Also, VirtualGL does not explicitly require GBM. Open source GPU drivers may use GBM at a lower level, such as interfacing with DRI3, but nVidia's drivers do not.)

ehfd commented 8 months ago

@robballantyne This means that I would need your eglinfo inside the container.

ehfd commented 8 months ago

Thank you @dcommander

ehfd commented 8 months ago

@robballantyne I would need your eglinfo output inside the container in order to proceed.

ehfd commented 8 months ago

Example:

EGL client extensions string:
    EGL_EXT_platform_base EGL_EXT_device_base EGL_EXT_device_enumeration
    EGL_EXT_device_query 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_MESA_platform_surfaceless EGL_EXT_explicit_device
    EGL_KHR_platform_wayland EGL_EXT_platform_wayland
    EGL_KHR_platform_gbm EGL_MESA_platform_gbm EGL_EXT_platform_xcb

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_EXT_present_opaque
    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:
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_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_image_pixmap 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_post_sub_buffer
    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_EXT_present_opaque
    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 0x24--         y  y  y     win,pb,pix,str
0x02 32  0  8  8  8  8 24  8  0 0 0x7a--         y  y  y     win,pb,pix,str
0x03 32  0  8  8  8  8 24  8  0 0 0x4f--         y  y  y     win,pb,pix,str
0x04 32  0  8  8  8  8 24  0  0 0 0x28--         y  y  y     win,pb,pix,str
0x05 32  0  8  8  8  8 24  0  0 0 0x7e--         y  y  y     win,pb,pix,str
0x06 32  0  8  8  8  8 24  0  0 0 0x53--         y  y  y     win,pb,pix,str
0x07 32  0  8  8  8  8  0  0  0 0 0x2c--         y  y  y     win,pb,pix,str
0x08 32  0  8  8  8  8  0  0  0 0 0x82--         y  y  y     win,pb,pix,str
0x09 32  0  8  8  8  8  0  0  0 0 0x57--         y  y  y     win,pb,pix,str
0x0a 32  0  8  8  8  8 24  8  2 1 0x38--         y  y  y     win,pb,str
0x0b 32  0  8  8  8  8 24  8  2 1 0x8e--         y  y  y     win,pb,str
0x0c 32  0  8  8  8  8 24  8  2 1 0x63--         y  y  y     win,pb,str
0x0d 32  0  8  8  8  8 24  0  2 1 0x30--         y  y  y     win,pb,str
0x0e 32  0  8  8  8  8 24  0  2 1 0x86--         y  y  y     win,pb,str
0x0f 32  0  8  8  8  8 24  0  2 1 0x5b--         y  y  y     win,pb,str
0x10 32  0  8  8  8  8 24  8  4 1 0x3a--         y  y  y     win,pb,str
0x11 32  0  8  8  8  8 24  8  4 1 0x90--         y  y  y     win,pb,str
0x12 32  0  8  8  8  8 24  8  4 1 0x65--         y  y  y     win,pb,str
0x13 32  0  8  8  8  8 24  0  4 1 0x32--         y  y  y     win,pb,str
0x14 32  0  8  8  8  8 24  0  4 1 0x88--         y  y  y     win,pb,str
0x15 32  0  8  8  8  8 24  0  4 1 0x5d--         y  y  y     win,pb,str
0x16 32  0  8  8  8  8 24  8  8 1 0x44--         y  y  y     win,pb,str
0x17 32  0  8  8  8  8 24  8  8 1 0x9a--         y  y  y     win,pb,str
0x18 32  0  8  8  8  8 24  8  8 1 0x6f--         y  y  y     win,pb,str
0x19 32  0  8  8  8  8 24  0  8 1 0x40--         y  y  y     win,pb,str
0x1a 32  0  8  8  8  8 24  0  8 1 0x96--         y  y  y     win,pb,str
0x1b 32  0  8  8  8  8 24  0  8 1 0x6b--         y  y  y     win,pb,str
0x1c 32  0  8  8  8  8 24  8 16 1 0x4c--         y  y  y     win,pb,str
0x1d 32  0  8  8  8  8 24  8 16 1 0xa2--         y  y  y     win,pb,str
0x1e 32  0  8  8  8  8 24  8 16 1 0x77--         y  y  y     win,pb,str
0x1f 32  0  8  8  8  8 24  0 16 1 0x48--         y  y  y     win,pb,str
0x20 32  0  8  8  8  8 24  0 16 1 0x9e--         y  y  y     win,pb,str
0x21 32  0  8  8  8  8 24  0 16 1 0x73--         y  y  y     win,pb,str
0x22 24  0  8  8  8  0 24  8  0 0 0x21--         y  y  y     win,pb,pix,str
0x23 24  0  8  8  8  0 24  8  0 0 0x23--         y  y  y     win,pb,pix,str
0x24 24  0  8  8  8  0 24  8  0 0 0x22--         y  y  y     win,pb,pix,str
0x25 24  0  8  8  8  0 24  0  0 0 0x27--         y  y  y     win,pb,pix,str
0x26 24  0  8  8  8  0 24  0  0 0 0x7d--         y  y  y     win,pb,pix,str
0x27 24  0  8  8  8  0 24  0  0 0 0x52--         y  y  y     win,pb,pix,str
0x28 24  0  8  8  8  0  0  0  0 0 0x2b--         y  y  y     win,pb,pix,str
0x29 24  0  8  8  8  0  0  0  0 0 0x81--         y  y  y     win,pb,pix,str
0x2a 24  0  8  8  8  0  0  0  0 0 0x56--         y  y  y     win,pb,pix,str
0x2b 24  0  8  8  8  0 24  8  2 1 0x37--         y  y  y     win,pb,str
0x2c 24  0  8  8  8  0 24  8  2 1 0x8d--         y  y  y     win,pb,str
0x2d 24  0  8  8  8  0 24  8  2 1 0x62--         y  y  y     win,pb,str
0x2e 24  0  8  8  8  0 24  0  2 1 0x2f--         y  y  y     win,pb,str
0x2f 24  0  8  8  8  0 24  0  2 1 0x85--         y  y  y     win,pb,str
0x30 24  0  8  8  8  0 24  0  2 1 0x5a--         y  y  y     win,pb,str
0x31 24  0  8  8  8  0 24  8  4 1 0x39--         y  y  y     win,pb,str
0x32 24  0  8  8  8  0 24  8  4 1 0x8f--         y  y  y     win,pb,str
0x33 24  0  8  8  8  0 24  8  4 1 0x64--         y  y  y     win,pb,str
0x34 24  0  8  8  8  0 24  0  4 1 0x31--         y  y  y     win,pb,str
0x35 24  0  8  8  8  0 24  0  4 1 0x87--         y  y  y     win,pb,str
0x36 24  0  8  8  8  0 24  0  4 1 0x5c--         y  y  y     win,pb,str
0x37 24  0  8  8  8  0 24  8  8 1 0x43--         y  y  y     win,pb,str
0x38 24  0  8  8  8  0 24  8  8 1 0x99--         y  y  y     win,pb,str
0x39 24  0  8  8  8  0 24  8  8 1 0x6e--         y  y  y     win,pb,str
0x3a 24  0  8  8  8  0 24  0  8 1 0x3f--         y  y  y     win,pb,str
0x3b 24  0  8  8  8  0 24  0  8 1 0x95--         y  y  y     win,pb,str
0x3c 24  0  8  8  8  0 24  0  8 1 0x6a--         y  y  y     win,pb,str
0x3d 24  0  8  8  8  0 24  8 16 1 0x4b--         y  y  y     win,pb,str
0x3e 24  0  8  8  8  0 24  8 16 1 0xa1--         y  y  y     win,pb,str
0x3f 24  0  8  8  8  0 24  8 16 1 0x76--         y  y  y     win,pb,str
0x40 24  0  8  8  8  0 24  0 16 1 0x47--         y  y  y     win,pb,str
0x41 24  0  8  8  8  0 24  0 16 1 0x9d--         y  y  y     win,pb,str
0x42 24  0  8  8  8  0 24  0 16 1 0x72--         y  y  y     win,pb,str
0x43 16  0  5  6  5  0 24  8  0 0 0x00--         y  y  y     pb,str
0x44 16  0  5  6  5  0 24  0  0 0 0x00--         y  y  y     pb,str
0x45 16  0  5  6  5  0 16  0  0 0 0x00--         y  y  y     pb,str
0x46 16  0  5  6  5  0  0  0  0 0 0x00--         y  y  y     pb,str

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_EXT_present_opaque
    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
ehfd commented 8 months ago

And fundamentally, do you have the NVIDIA container toolkit set up? @robballantyne

robballantyne commented 8 months ago

@ehfd sorry I'm slow on this. I'm away currently but I'll get you the info you need ASAP

ehfd commented 8 months ago

I think checking NVIDIA_DRIVER_CAPABILITIES includes graphics and display or is all is the first thing to do. Then we can see the /opt/VirtualGL/bin/eglinfo -e and /opt/VirtualGL/bin/eglinfo egl outputs.

This isn't urgent, so take your time.

robballantyne commented 8 months ago

It appears that I was doing something wrong on previous testing because EGL is fine on your image without dri or drivers. It's also fine on mine without drivers - I have no way to replicate what I did. Sorry for the waste of time.

I have included the outputs you asked for anyway because there is a small diff when running with drivers. I don't know if it's important.

All tests run on 3090 without /dev/dri present

Files marked selkies- are from your latest image

Files marked aidock- are from my adaptation

egl-outputs.tar.gz

ehfd commented 8 months ago

This is still a meaningful issue, because nodes with nvidia-headless will not have EGL libraries and will error out. Let me think of ways.

ehfd commented 7 months ago

I think checking based on libEGL_nvidia.so.0 on whether the userspace driver should be installed or not would be a good choice.

ehfd commented 7 months ago

I confirm that the existence of libEGL_nvidia.so.0 and libGLX_nvidia.so.0 is important for Vulkan and OpenGL capabilities, and nvidia-headless does not provide these libraries.

ehfd commented 5 months ago

Fulfilled through:

https://github.com/selkies-project/docker-nvidia-egl-desktop/commit/8f1369bacbeef60cd6656c534edefc7d49a90542