vkGetPhysicalDeviceDisplayPropertiesKHR returns 0 始终显示

vkGetPhysicalDeviceDisplayPropertiesKHR returns 0 displays always

我正在使用 Vulkan 编写一个小示例。在我的笔记本电脑上有一个特殊情况,它有两个 GPU(Intel UHD + Nvidia Quadro T1000)。我想通过枚举所有适配器和所有可能的输出来实现与 DXGI 提供的相同的功能,以确保 select 正确的屏幕。

我做了什么:

在任何情况下 vkGetPhysicalDeviceDisplayPropertiesKHR returns 0 作为显示数量。

在 Vulkan SDK 1.3.204.1 上测试

两者的行为相同,返回 0。有什么特别要观察的吗?

这可能是因为您的系统上没有供 VK_KHR_display 扩展使用的“免费”显示器。此扩展旨在绘制不受 window 或显示管理器控制的显示。

对于您的情况,您可以将显示器插入笔记本电脑并将 OS 配置为不使用它。 Windows 会自动将您的桌面扩展或复制到外接显示器,因此您需要进入显示设置并告诉它删除该显示器。

这个 example 展示了如何做到这一点。该示例通过使用 OpenGL 渲染某些内容然后让 Vulkan 将其绘制到 VK_KHR_display 显示器来展示其他内容。但这是最后一步才重要,并且有关于如何在 Windows.

上释放监视器的明确说明

从技术上讲,在您的情况下计数为零是正确的,因为没有 VK_KHR_display 显示可用。如果您插入 non-managed 监视器,那么您应该会看到零以外的内容。所有这些对于您的枚举任务来说似乎都是合理的。