gpt4 book ai didi

graphics - 在 Vulkan 中,您如何将每个单独的视频卡与它们直接连接的显示器相关联

转载 作者:行者123 更新时间:2023-12-04 13:22:39 25 4
gpt4 key购买 nike

我有两台显示器,每台显示器都连接到不同的 GPU。两个 GPU 都在一台机器上,我想运行一个应用程序。我有两个独立的 View ,我想使用 GPU/Monitor 集渲染每个 View 。我可以创建多个表面和设备,但我想确保我将每个表面与其显示器插入的 GPU 相关联,否则我怀疑我会遇到性能问题,因为需要在卡之间来回复制帧缓冲区。

我正在使用全屏表面,我认为这是 vkGetPhysicalDeviceSurfaceSupportKHR会告诉我。然而,两者 VkSurfaceKHR似乎是每个 VkPhysicalDevice 的有效目标所以我猜这是操作系统和 GPU 驱动程序可以处理的事情,但是是否有任何关于哪个表面最适合与设备关联的提示?

据我所知,分机号 VK_KHR_display是这样做的一种方法,但它在我的 Windows 10 机器或 Nvidia GPU 上不可用。它似乎仅适用于嵌入式平台。但是它可以让你列出每个设备的附加显示,这几乎是我正在寻找的:https://vulkan.lunarg.com/doc/view/1.0.30.0/linux/vkspec.chunked/ch29s03.html

此引自 docs让我相信这在 Windows 上可能不受支持:

Issues

1) Does Win32 need a way to query for compatibility between a particular physical device and a specific screen? Compatibility between a physical device and a window generally only depends on what screen the window is on. However, there is not an obvious way to identify a screen without already having a window on the screen.

RESOLVED: No. While it may be useful, there is not a clear way to do this on Win32. However, a method was added to query support for presenting to the windows desktop as a whole.



但是,我仍然很想知道是否有解决方法可以达到类似的效果。

最佳答案

终于想出了一个解决方法:

Direct X 实际上通过使用 IDXGIAdapter::EnumOutputs 来支持这一点。功能。这让您可以列出连接到每个 GPU 的显示器。然后使用这两个扩展,您可以将此信息重新映射到 Vulkan:

  • VK_KHR_external_memory_capabilities
  • VK_KHR_get_physical_device_properties2

  • 您可以使用这些来获取 deviceLUID来自 VkPhysicalDeviceIDPropertiesKHR .
    然后可以将其与 Direct X DXGI_ADAPTER_DESC 中此结构的 Luid 进行比较。

    您也可以使用 glfwGetWin32Window获取 HWND监视器的。这使您可以将 vulkan 表面与直接 x 监视器相关联。

    您现在拥有将 vulkan 表面与其实际连接的设备相关联所需的所有信息。

    至少在我的应用程序中,正确设置它会导致性能显着差异。

    如果 Windows 只支持 VK_KHR_display,这一切都会更简单(和跨平台)。和 VK_KHR_display_swapchain扩展为 Linux does .

    关于graphics - 在 Vulkan 中,您如何将每个单独的视频卡与它们直接连接的显示器相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48191596/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com