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
参数。
我知道major
、minor
和patch
是什么意思,但我以前从未见过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 版本变体是啥?的主要内容,如果未能解决你的问题,请参考以下文章