gpt4 book ai didi

multithreading - Vulkan - 我们什么时候需要使用多个逻辑设备(当只有一个物理设备时)?

转载 作者:行者123 更新时间:2023-12-03 12:44:07 26 4
gpt4 key购买 nike

在 OpenGL 中,我们需要每个线程都有一个设备,以便并行执行多个操作。

在 Vulkan 中,我们可以为每个线程使用队列和命令池,以便并行执行多个操作 - 但它们都可以从一个逻辑设备创建。

那么,如果我们只有一个物理设备,我们什么时候需要多个逻辑设备呢?

最佳答案

逻辑设备的概念需要与物理设备不同,因为您需要能够注册扩展、功能、队列计数和其他初始化时间结构。您需要能够询问物理设备的功能是什么,然后您需要能够构建使用它们的指定子集的事物。

鉴于分离是有用的......为什么还要添加一个任意限制,即单个应用程序只能创建单个 VkDevice来自单个 VkPhysicalDevice ?

毕竟,物理设备已经需要能够为多个应用程序提供服务。每个应用程序都需要能够分配 GPU 资源,并且这些资源需要彼此区分开来。它们都必须能够并行执行不相互干扰的命令(除了占用计算资源)。因此,实现必须能够服务于许多主机,包括操作系统。

所以没有理由为什么一个实现不能允许单个应用程序有多个接口(interface)到那个实现。所以这不是“需要”的问题。实现已经事实上必须能够做到这一点,所以强制他们做他们已经要做的事情几乎不是负担。

但是,如果您想要一个可能有用的示例,请考虑一个具有基于 DLL/SO 的插件架构的程序。该程序出于某种目的使用 Vulkan。但是其中一个插件可能还想出于某种目的使用 Vulkan。它们都是同一个过程的一部分,但由于它们不尝试渲染到彼此的表面,因此它们不需要互相交谈或知道对方 VkDevice甚至存在。

关于multithreading - Vulkan - 我们什么时候需要使用多个逻辑设备(当只有一个物理设备时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56434055/

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