使用 NVIDIA 驱动程序时,Vulkan pSurfaceFormatCount 为零

使用 NVIDIA 驱动程序时,Vulkan pSurfaceFormatCount 为零

我不知道是更新还是我安装的软件包,但所有 Vulkan 应用程序都不再运行。不过 OpenGL 应用程序可以运行。

我使用的是 Ubuntu 18.04 和 Gnome 3。我有一台 GTX 950M,我在“软件和更新”的“其他驱动程序”选项卡中更改了显卡驱动程序。我尝试了不同的开源驱动程序,例如 nvidia-driver-430 / 440 / 410。但都不起作用。

在某些应用程序中我收到此错误:

X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
  Major opcode of failed request:  149 ()
  Minor opcode of failed request:  4
  Resource id in failed request:  0x220000d
  Serial number of failed request:  179
  Current serial number in output stream:  184

其他的根本就什么都不显示(可能是由于错误处理)。
屏幕外 Vulkan 渲染正在运行。我知道这一点,因为我的一个应用程序使用它并显示日志。
窗口系统 (GLFW3) 在 OpenGL 应用程序中运行,而在 Vulkan 中,窗口打开但仍然为黑色或因上述错误而崩溃。

我记得最近我安装了一些我想运行的程序的软件包,比如 sld2、qt5,也许还有其他我不记得的软件包。后来我把它们都清除了。

我真的不知道哪里出了问题。如果您有任何想法,请分享,或者如果您需要更多信息,我可以提供。

编辑:
我尝试了这些常见的解决方法,但没有效果:
QT_X11_NO_MITSHM=1
LIBOVERLAY_SCROLLBAR=0

编辑2:
我尝试使用专有的 435 驱动程序,但没有作用。

EDIT3:
感谢@kvark和进一步的调试,我缩小了一点范围。问题的根源在于pSurfaceFormatCount使用查询时为0。vkGetPhysicalDeviceSurfaceFormatsKHR我目前正在运行440驱动程序,我的应用程序识别Nvidia GPU。没有来自验证层的消息。

答案1

我在配备 Nvidia 的笔记本电脑上遇到过这个问题。问题和解决方法在此处详细描述 -https://dev.getsol.us/T6335

基本上,您可以通过强制 NVidia Vulkan ICD 使用其中一个启动脚本中设置的环境变量来解决此问题:

VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/10_nvidia.json

您的 NV ICD 路径可能不同(链接针对 Solus,而这个问题是关于 Ubuntu 的)。

相关内容