【问题标题】:Vulkan Queue FamiliesVulkan 队列系列
【发布时间】:2018-08-26 06:11:37
【问题描述】:

如果我正确进入:

  • queueFamily 是一组队列
  • 队列可能有多个队列标志
  • 队列标志有 4 种类型(图形、计算、传输和稀疏绑定)

我正在尝试枚举有关单个队列系列的所有信息。首先我检查有多少个队列族可用,接下来每个队列族有多少个队列,以及有多少个队列标志族支持。

知道我有支持例如队列图形标志的队列族就足够了,或者将来我必须更深入地检查特定队列族中的特定队列?

【问题讨论】:

  • 您所说的“将来”是指在未来版本的 Vulkan 中,还是指“以后”(即在您的程序中更进一步,或者如果您决定使用更多 API,则在以后)?
  • 我的意思是就 Vulkan 学习和我的程序而言,但你的回答给了我另一个值得关注和考虑的东西,当然在未来

标签: vulkan


【解决方案1】:

来自一个系列的所有队列都具有相同的属性(相同的标志集)。因此,您不必深入检查每个队列。

但是有 3 件事你需要记住。规范保证必须至少有一个支持图形和计算操作的通用队列。第二件事是不同的队列族可能具有相同的属性(相同的标志集)。最后一件事 - 交换链表示(将交换链图像呈现到给定表面的能力)也是队列族属性,但必须通过一组单独的查询(函数)进行检查。

【讨论】:

    【解决方案2】:

    或将来

    这基本上是关于版本控制和扩展的 Q。

    允许主要版本进行任何更改(即“不兼容”)。所以你可能不得不在应用程序中做不同的事情。但可以想象,旧的主要版本仍将与新版本一起提供。

    次要版本和扩展应该是向后兼容的(有明显的例外)。但仅限于 ABI 级别,因此不能绝对保证您的程序将使用新头文件进行编译。

    这意味着驱动程序更新不应破坏您已编译的应用程序。


    (值得注意的例外是):

    • 从 Vulkan 返回的*Flags可能包含未指定的位(即未在您与已启用的扩展一起使用的版本规范中指定的位)
    • 从 Vulkan 返回的enums可能具有未指定的值
    • 如果您主动尝试使您的应用崩溃,例如if( vulkanVersion != 1.0.0 ) crash();
    • 兼容性(显然?)不适用于非纯功能性的事物(即不适用于性能、功率、噪音或其他)
    • 如果您使用任何新内容,Vulkan 希望您了解所有内容 - 例如。如果您的应用程序主要是 Vulkan 1.0,并且 Vulkan 从 Vulkan 1.42 返回标志以及您尚未费心学习的图形,那么您稍后在另一个命令中使用由 1.42 定义的另一个标志位,它可能会以某种方式与队列标志交互。李>
    • 允许任何版本不兼容地修复 Spec 错误(或作者决定考虑的错误)
    • ?

    【讨论】:

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