noautovalidity
在Vulkan API模式(vk.xml
)中的结构成员定义上意味着什么?
registry.rnc
说标签,表明不应该生成自动有效性语言
Vulkan注册中心规范说:防止为标记的项目生成自动有效性语言。仅禁止特定于项目的有效性-育儿问题等仍被捕获。当具有隐式有效性的结构具有显式有效性时,也必须使用它。
什么是自动有效性语言?
什么是不具有自动有效性的示例,而该示例抑制了特定于项目的有效性是什么?为什么决定要压制它?
答案 0 :(得分:3)
noautovalidity
意味着将不会为给定的参数或结构成员生成大多数有效用法(隐式)条目。
这可能意味着隐式有效性规则不适用于给定的项目,尽管在很多情况下都使用了非常相似的显式VU。
示例:
VkWriteDescriptorSet::pImageInfo
之所以拥有noautovalidity
,是因为它共享descriptorCount
。它可以防止生成类似“ pImageInfo
必须是descriptorCount
个元素的数组”的信息。而是给出了显式VU,例如:“如果descriptorType
是*_IMAGE
,则pImageInfo
必须是descriptorCount
个元素的数组。
VkComputePipelineCreateInfo::basePipelineHandle
是noautovalidity
,因为如果flags
不包含VK_PIPELINE_CREATE_DERIVATIVE_BIT
,API会忽略该参数。如果没有该属性,则规范会坚持要求句柄必须为有效的VkPipeline
(如果为VK_NULL_HANDLE
,则句柄必须为optional
)。
案例案例:
VkViewport::x
是noautovalidity
。它似乎不需要noautovalidity
,但在这种情况下,它表示尽管该结构没有隐式有效性,但规范中可能存在某些显式有效性。