VK_MAKE_API_VERSION 中的 Vulkan API 版本变体是啥?

Posted

技术标签:

【中文标题】VK_MAKE_API_VERSION 中的 Vulkan API 版本变体是啥?【英文标题】:What is the Vulkan API version variant in VK_MAKE_API_VERSION?VK_MAKE_API_VERSION 中的 Vulkan API 版本变体是什么? 【发布时间】:2021-10-12 03:43:54 【问题描述】:

我刚刚在使用 VK_MAKE_VERSION 时意识到它已被弃用。弃用消息建议改用VK_MAKE_API_VERSION。它们之间唯一的区别是后者多了一个variant参数。

我知道majorminorpatch 是什么意思,但我以前从未见过variant 版本。什么意思?

【问题讨论】:

在写这个问题时,我意识到也许我会在规范中找到答案,我做到了,所以我把它贴在这里似乎受到鼓励:***.blog/2011/07/01/…。 【参考方案1】:

这在the current Vulkan specification 的30.2.1. Version Numbers 部分进行了解释:

Vulkan 版本号由四部分组成,分别表示变体、主要、次要和补丁 Vulkan API 规范的版本。

variant 表示实现支持的 Vulkan API 的变体。这总是 Vulkan API 为 0。

注意

非零变体表示 API 是 Vulkan API 的变体,并且 通常需要修改应用程序才能针对它运行。变体字段 是对版本号的后来添加,在版本 1.2.175 中添加 规格。由于 Vulkan 使用变体 0,因此此更改完全向后兼容 使用 Vulkan 实现的先前版本号格式。新的 已为此更改添加了版本号宏和旧宏 已弃用。对于使用旧格式和宏的现有应用程序, 具有非零变体的实现将解码为非常高的 Vulkan 版本。 执行适当的应用程序应该可以检测到高版本号 版本检查。

【讨论】:

你认为一个变体可以用来表示像 OpenGL 和 OpenGLES 这样的东西吗? VulkanES 还是 WebVk? @Columbo 它不能是 OpenGL 或 OpenGLES,因为它们与 Vulkan 完全不同。为什么有人会使用 OpenGL 风格的 Vulkan 而不仅仅是 OpenGL?我知道它可能是“VulkanES”或“WebVk”之类的东西,尽管这似乎违背了 Vulkan 的跨平台理念——相同的 Vulkan 代码目前可以在 Windows、android 甚至 Nintendo Switch 上运行。为什么要创造一种新的、独立的 Vulkan 风格?不过,这只是猜测。有可能我只是找不到任何 Vulkan 变体,而有些变体已经存在或正在计划中。

以上是关于VK_MAKE_API_VERSION 中的 Vulkan API 版本变体是啥?的主要内容,如果未能解决你的问题,请参考以下文章

k6 VU(虚拟用户)有多少内存? [关闭]

VU|DBA校友风采——沈宇锋:快递智能领域中的黑马

从 K6 模拟每个 VU 的浏览器缓存以进行负载测试

蚂蚁电竞ant27vu菜单打不开

在 Android 中录制音频时的 VU(音频)计

k6:增加VU数量的每个阶段如何管理rps-limit