veldrid / veldrid

A low-level, portable graphics library for .NET.

Home Page:https://veldrid.dev/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NeoDemo fails on nVidia hardware (Pop_OS 22.04)

philstopford opened this issue · comments

Running Pop_OS 22.04 fully up to date on a system with this nVidia hardware as the Primary GPU (xorg.conf)

GPU 0: NVIDIA GeForce RTX 3070 Laptop GPU (UUID: GPU-f9a04a24-9905-3fad-b0a7-47d34ccecc0f)

nvidia-smi yields:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.05    Driver Version: 525.85.05    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| 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   43C    P8    18W / 115W |    694MiB /  8192MiB |     34%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      3442      G   /usr/lib/xorg/Xorg                421MiB |
|    0   N/A  N/A      3549      G   /usr/bin/kwin_x11                   3MiB |
|    0   N/A  N/A      3611      G   /usr/bin/plasmashell               76MiB |
|    0   N/A  N/A      3822      G   /usr/bin/latte-dock                34MiB |
|    0   N/A  N/A      7059      G   ...RendererForSitePerProcess       40MiB |
|    0   N/A  N/A      9758      G   ...983906523381009797,131072       89MiB |
|    0   N/A  N/A     15382      G   ...RendererForSitePerProcess       16MiB |
|    0   N/A  N/A     20972      G   ...ug/NeoDemo/net6.0/NeoDemo        3MiB |
+-----------------------------------------------------------------------------+

With the code as of today, If I don't symlink /usr/lib/x86_64/libdl.so.2 the NeoDemo application runs, but Vulkan is grayed out (only OpenGL is available). Symlinking libdl.so.2 to libdl.so, which seems to be needed to have Vulkan detected, the demo tool crashes at start-up due to failing this check

            if (!GetPresentQueueIndex(out _presentQueueIndex))
            {
                throw new VeldridException($"The system does not support presenting the given Vulkan surface.");
            }

in public VkSwapchain(VkGraphicsDevice gd, ref SwapchainDescription description, VkSurfaceKHR existingSurface)
at veldrid/src/Veldrid/Vk/VkSwapchain.cs:line 71

Output of vulkaninfo is attached,
vulkan_info.txt

I don't really understand the cause of the failure; is there a way to fix this?