noautovalidity 在 Vulkan API 架构 (vk.xml) 中意味着什么?

What does noautovalidity mean in Vulkan API schema (vk.xml)?

noautovalidity 在 Vulkan API 架构 (vk.xml) 中的结构成员定义中意味着什么?

registry.rnc 标签说明不应生成自动有效性语言

Vulkan 注册表规范说:防止为标记项生成自动有效性语言。仅抑制特定于项目的有效性 - 仍然捕获育儿问题等。当结构具有显式有效性时,它也必须用于没有隐式有效性的结构。

什么是自动有效语言

没有自动有效性的示例是什么?在该示例中,被抑制的特定于项目的有效性是什么?以及为什么它决定被压制?

参考XML schema doc

noautovalidity 表示不会为给定参数或结构成员生成大多数有效用法(隐式)条目。

这可能意味着隐式有效性规则不适用于给定的项目,尽管很多时候在其位置给出了非常相似的显式 VU。

示例:

VkWriteDescriptorSet::pImageInfonoautovalidity 因为它共享 descriptorCount。它可以防止生成类似“pImageInfo 必须是 descriptorCount 元素的数组”之类的内容。相反,给出显式 VU,例如:“如果 descriptorType*_IMAGE,则 pImageInfo 必须是 descriptorCount 元素的数组。

VkComputePipelineCreateInfo::basePipelineHandlenoautovalidity,因为如果 flags 不包含 VK_PIPELINE_CREATE_DERIVATIVE_BIT,API 允许忽略参数。如果没有该属性,规范将坚持句柄必须是有效的 VkPipeline(如果 optional,则另外允许为 VK_NULL_HANDLE)。

极端情况示例:

VkViewport::xnoautovalidity。它似乎不需要 noautovalidity,但在这种情况下,它表示尽管该结构没有隐式有效性,但规范中可能存在一些显式有效性。