【问题标题】:Questions about how to handle vulkan queue families关于如何处理vulkan队列族的问题
【发布时间】:2019-12-17 01:53:30
【问题描述】:

我正在关注这个 tut https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Window_surface

当我读到这篇文章时,我有一些问题。关于队列族

下面的代码是

检查能够呈现到窗口表面的队列族

VkBool32 presentSupport = false;
vkGetPhysicalDeviceSurfaceSupportKHR(device, i, surface, &presentSupport);

if (presentSupport) {
    indices.presentFamily = i;
}

这篇文章有这句话。

请注意,它们很可能最终成为同一个队列族,但在整个程序中,我们会将它们视为单独的队列,以采用统一的方法

  1. 为什么要将它们视为单独的队列以实现统一的方法?

您可以添加逻辑以明确首选支持在同一队列中进行绘图和演示的物理设备,以提高性能。

  1. 添加逻辑以明确首选支持在同一队列中进行绘图和演示的物理设备。为什么要提高性能?

【问题讨论】:

    标签: c++ queue vulkan


    【解决方案1】:

    为什么要将它们视为统一方法的单独队列?

    教程的重点是指导,通常使用尽可能清晰和直接的代码。为特殊情况添加一堆逻辑只会使示例代码变得混乱和混乱。这对于本系列的早期教程尤其重要。

    为什么要提高性能?

    如果您知道您将呈现在与渲染图像相同的队列中,那么您可能可以使用不同的同步选项或不添加障碍来转移交换链图像的所有权。

    但这可能没什么大不了的。

    【讨论】:

      【解决方案2】:
      1. 为什么要将它们视为单独的队列以实现统一的方法?

      因为 Vulkan API 在技术上允许这种可能性。虽然它很模糊。

      我认为出于教程的目的,您可以检查GRAPHICS 队列系列是否支持存在,否则终止。但这是教程作者的选择。问他,而不是一般社区。​​p>

      1. 添加逻辑以明确首选支持在同一队列中进行绘图和演示的物理设备。为什么要提高性能?

      为什么不提高性能? :p

      两个队列族意味着VkSemaphore 和队列所有权转移或VK_SHARING_MODE_CONCURRENT。单一队列不需要这个,所以性能可能会稍微好一些。

      这只是理论上的讨论,因为几乎每个驱动程序都支持存在于GRAPHICS 队列系列中。具有两个 GRAPHICS 队列族的驱动程序,其中只有一个支持呈现,这是更模糊的\理论上的可能性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-11
        • 1970-01-01
        • 2019-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多