X11 上的 Vulkan:vkGetPhysicalDeviceSurfaceCapabilitiesKHR 错误

Vulkan on X11: vkGetPhysicalDeviceSurfaceCapabilitiesKHR error

我正在尝试在 X11 下获取 Vulkan 运行。

我(显然)已经成功创建了实例、设备和表面,并且与表面相关的几个调用也成功了,甚至 return 合理的值(例如 vkGetPhysicalDeviceSurfaceFormatsKHR return 的两种格式)。但是,当我调用 vkGetPhysicalDeviceSurfaceCapabilitiesKHR 时,我得到以下信息:

X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
  Major opcode of failed request:  14 (X_GetGeometry)
  Resource id in failed request:  0x5800009
  Serial number of failed request:  42
  Current serial number in output stream:  42

X11 Window 是 0x5800009,如错误中所引用。我正在使用 Vulkan SDK 1.0.5 和 Nvidia 364.12 驱动程序(如果相关)。

预感 Vulkan 正在查询有关尚未创建的 Window 的内容,我在此之前调用了一个 XSync(<display>, false),这似乎解决了问题。

我不确定这是否是正常操作所必需的(我不是 X11 专家),或者这是否是 Vulkan 本身的问题。如果有人有更好的解释,我很想听听。

我在 Linux 和 XCB 上遇到了同样的错误,我通过在 xcb_flush 之后调用 xcb_flush =16=]创作。

我在实际创建 window 句柄之前将 ::XDisplay 绑定到 VkSwapchainCreateInfoKHR.dpy 时遇到了同样的错误。只要我在调整大小事件期间保持该结构更新(.dpy.window),一切都会继续正常工作。