Clarify pointer autovalidity and threading
1) State more explicitly in implicit VUs if a "valid" pointer is required 2) For some time Implicit validity is quite explicit in implicit VU sections. Update pointer implicit validity chapter section as such. 3) Sometimes pointer parameter can be ignored. Update implicit pointer validity section as such. 4) Changeing to more forceful language, to clarify memory behind pointers need synchronizing too
This commit is contained in:
parent
52d809dd04
commit
4a45ecf5cc
|
@ -299,7 +299,7 @@ ifdef::VK_KHR_shared_presentable_image[]
|
||||||
endif::VK_KHR_shared_presentable_image[]
|
endif::VK_KHR_shared_presentable_image[]
|
||||||
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277]]
|
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277]]
|
||||||
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
pname:pQueueFamilyIndices must: be a pointer to an array of
|
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
||||||
pname:queueFamilyIndexCount basetype:uint32_t values
|
pname:queueFamilyIndexCount basetype:uint32_t values
|
||||||
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278]]
|
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278]]
|
||||||
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
|
|
|
@ -504,7 +504,7 @@ recorded into it, becomes <<commandbuffers-lifecycle, invalid>>.
|
||||||
All elements of pname:pCommandBuffers must: not be in the
|
All elements of pname:pCommandBuffers must: not be in the
|
||||||
<<commandbuffers-lifecycle, pending state>>
|
<<commandbuffers-lifecycle, pending state>>
|
||||||
* [[VUID-vkFreeCommandBuffers-pCommandBuffers-00048]]
|
* [[VUID-vkFreeCommandBuffers-pCommandBuffers-00048]]
|
||||||
pname:pCommandBuffers must: be a pointer to an array of
|
pname:pCommandBuffers must: be a valid pointer to an array of
|
||||||
pname:commandBufferCount sname:VkCommandBuffer handles, each element of
|
pname:commandBufferCount sname:VkCommandBuffer handles, each element of
|
||||||
which must: either be a valid handle or `NULL`
|
which must: either be a valid handle or `NULL`
|
||||||
****
|
****
|
||||||
|
|
|
@ -747,7 +747,7 @@ avoid wasted memory.
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER or
|
||||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and
|
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and
|
||||||
pname:descriptorCount is not `0` and pname:pImmutableSamplers is not
|
pname:descriptorCount is not `0` and pname:pImmutableSamplers is not
|
||||||
`NULL`, pname:pImmutableSamplers must: be a pointer to an array of
|
`NULL`, pname:pImmutableSamplers must: be a valid pointer to an array of
|
||||||
pname:descriptorCount valid sname:VkSampler handles
|
pname:descriptorCount valid sname:VkSampler handles
|
||||||
* [[VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283]]
|
* [[VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283]]
|
||||||
If pname:descriptorCount is not `0`, pname:stageFlags must: be a valid
|
If pname:descriptorCount is not `0`, pname:stageFlags must: be a valid
|
||||||
|
@ -1665,7 +1665,7 @@ in pname:pDescriptorSets are invalid.
|
||||||
All submitted commands that refer to any element of
|
All submitted commands that refer to any element of
|
||||||
pname:pDescriptorSets must: have completed execution
|
pname:pDescriptorSets must: have completed execution
|
||||||
* [[VUID-vkFreeDescriptorSets-pDescriptorSets-00310]]
|
* [[VUID-vkFreeDescriptorSets-pDescriptorSets-00310]]
|
||||||
pname:pDescriptorSets must: be a pointer to an array of
|
pname:pDescriptorSets must: be a valid pointer to an array of
|
||||||
pname:descriptorSetCount sname:VkDescriptorSet handles, each element of
|
pname:descriptorSetCount sname:VkDescriptorSet handles, each element of
|
||||||
which must: either be a valid handle or dlink:VK_NULL_HANDLE
|
which must: either be a valid handle or dlink:VK_NULL_HANDLE
|
||||||
* [[VUID-vkFreeDescriptorSets-pDescriptorSets-00311]]
|
* [[VUID-vkFreeDescriptorSets-pDescriptorSets-00311]]
|
||||||
|
@ -1838,19 +1838,19 @@ bindings as needed to update all pname:descriptorCount descriptors.
|
||||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
|
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
|
||||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, pname:pImageInfo must: be a
|
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, pname:pImageInfo must: be a
|
||||||
pointer to an array of pname:descriptorCount valid
|
valid pointer to an array of pname:descriptorCount valid
|
||||||
sname:VkDescriptorImageInfo structures
|
sname:VkDescriptorImageInfo structures
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00323]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00323]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
|
||||||
or ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, pname:pTexelBufferView
|
or ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, pname:pTexelBufferView
|
||||||
must: be a pointer to an array of pname:descriptorCount valid
|
must: be a valid pointer to an array of pname:descriptorCount valid
|
||||||
sname:VkBufferView handles
|
sname:VkBufferView handles
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00324]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00324]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
|
||||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, or
|
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, or
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, pname:pBufferInfo must:
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, pname:pBufferInfo must:
|
||||||
be a pointer to an array of pname:descriptorCount valid
|
be a valid pointer to an array of pname:descriptorCount valid
|
||||||
sname:VkDescriptorBufferInfo structures
|
sname:VkDescriptorBufferInfo structures
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00325]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00325]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER or
|
||||||
|
@ -2434,8 +2434,8 @@ include::../api/protos/vkUpdateDescriptorSetWithTemplateKHR.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkUpdateDescriptorSetWithTemplateKHR-pData-01685]]
|
* [[VUID-vkUpdateDescriptorSetWithTemplateKHR-pData-01685]]
|
||||||
pname:pData must: be a pointer to a memory that contains one or more
|
pname:pData must: be a valid pointer to a memory that contains one or
|
||||||
valid instances of slink:VkDescriptorImageInfo,
|
more valid instances of slink:VkDescriptorImageInfo,
|
||||||
slink:VkDescriptorBufferInfo, or slink:VkBufferView in a layout defined
|
slink:VkDescriptorBufferInfo, or slink:VkBufferView in a layout defined
|
||||||
by pname:descriptorUpdateTemplate when it was created with
|
by pname:descriptorUpdateTemplate when it was created with
|
||||||
flink:vkCreateDescriptorUpdateTemplateKHR
|
flink:vkCreateDescriptorUpdateTemplateKHR
|
||||||
|
@ -2768,8 +2768,8 @@ include::../api/protos/vkCmdPushDescriptorSetWithTemplateKHR.txt[]
|
||||||
update template must: be supported by the pname:commandBuffer's parent
|
update template must: be supported by the pname:commandBuffer's parent
|
||||||
sname:VkCommandPool's queue family
|
sname:VkCommandPool's queue family
|
||||||
* [[VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686]]
|
* [[VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686]]
|
||||||
pname:pData must: be a pointer to a memory that contains one or more
|
pname:pData must: be a valid pointer to a memory that contains one or
|
||||||
valid instances of slink:VkDescriptorImageInfo,
|
more valid instances of slink:VkDescriptorImageInfo,
|
||||||
slink:VkDescriptorBufferInfo, or slink:VkBufferView in a layout defined
|
slink:VkDescriptorBufferInfo, or slink:VkBufferView in a layout defined
|
||||||
by pname:descriptorUpdateTemplate when it was created with
|
by pname:descriptorUpdateTemplate when it was created with
|
||||||
flink:vkCreateDescriptorUpdateTemplateKHR
|
flink:vkCreateDescriptorUpdateTemplateKHR
|
||||||
|
|
|
@ -134,7 +134,7 @@ pname:discardRectangleCount)#.
|
||||||
sname:VkPhysicalDeviceDiscardRectanglePropertiesEXT::pname:maxDiscardRectangles,
|
sname:VkPhysicalDeviceDiscardRectanglePropertiesEXT::pname:maxDiscardRectangles,
|
||||||
inclusive
|
inclusive
|
||||||
* [[VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-00586]]
|
* [[VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-00586]]
|
||||||
pname:pDiscardRectangles must: be a pointer to an array of
|
pname:pDiscardRectangles must: be a valid pointer to an array of
|
||||||
pname:discardRectangleCount valid sname:VkRect2D structures
|
pname:discardRectangleCount valid sname:VkRect2D structures
|
||||||
* [[VUID-vkCmdSetDiscardRectangleEXT-x-00587]]
|
* [[VUID-vkCmdSetDiscardRectangleEXT-x-00587]]
|
||||||
The pname:x and pname:y members of pname:offset in sname:VkRect2D must:
|
The pname:x and pname:y members of pname:offset in sname:VkRect2D must:
|
||||||
|
|
|
@ -268,10 +268,12 @@ frees.
|
||||||
It is an application's responsibility to track the lifetime of Vulkan
|
It is an application's responsibility to track the lifetime of Vulkan
|
||||||
objects, and not to destroy them while they are still in use.
|
objects, and not to destroy them while they are still in use.
|
||||||
|
|
||||||
Application-owned memory is immediately consumed by any Vulkan command it is
|
[[fundamentals-objectmodel-lifetime-acquire]]
|
||||||
passed into.
|
The ownership of application-owned memory is immediately acquired by any
|
||||||
The application can: alter or free this memory as soon as the commands that
|
Vulkan command it is passed into.
|
||||||
consume it have returned.
|
Ownership of such memory must: be released back to the application at the
|
||||||
|
end of the duration of the command, so that the application can: alter or
|
||||||
|
free this memory as soon as all the commands that acquired it have returned.
|
||||||
|
|
||||||
The following object types are consumed when they are passed into a Vulkan
|
The following object types are consumed when they are passed into a Vulkan
|
||||||
command and not further accessed by the objects they are used to create.
|
command and not further accessed by the objects they are used to create.
|
||||||
|
@ -600,6 +602,16 @@ library) perform memory barriers as a part of mutual exclusion, so mutexing
|
||||||
Vulkan objects via these primitives will have the desired effect.
|
Vulkan objects via these primitives will have the desired effect.
|
||||||
====
|
====
|
||||||
|
|
||||||
|
Similarly the application must: avoid any potential data hazard of
|
||||||
|
application-owned memory that has its
|
||||||
|
<<fundamentals-objectmodel-lifetime-acquire,ownership temporarily acquired>>
|
||||||
|
by a Vulkan command.
|
||||||
|
While the ownership of application-owned memory remains acquired by a
|
||||||
|
command the implementation may: read the memory at any point, and it may:
|
||||||
|
write non-code:const qualified memory at any point.
|
||||||
|
Parameters referring to non-code:const qualified application-owned memory
|
||||||
|
are not marked explicitly as _externally synchronized_ in the specification.
|
||||||
|
|
||||||
Many object types are _immutable_, meaning the objects cannot: change once
|
Many object types are _immutable_, meaning the objects cannot: change once
|
||||||
they have been created.
|
they have been created.
|
||||||
These types of objects never need external synchronization, except that they
|
These types of objects never need external synchronization, except that they
|
||||||
|
@ -754,13 +766,13 @@ commands, which will silently ignore these values.
|
||||||
[[fundamentals-validusage-pointers]]
|
[[fundamentals-validusage-pointers]]
|
||||||
==== Valid Usage for Pointers
|
==== Valid Usage for Pointers
|
||||||
|
|
||||||
Any parameter that is a pointer must: either be a valid pointer, or if
|
Any parameter that is a pointer must: be a _valid pointer_ only if it is
|
||||||
_explicitly called out in the specification_, can: be `NULL`.
|
explicitly called out by a Valid Usage statement.
|
||||||
A pointer is valid if it points at memory containing values of the number
|
|
||||||
and type(s) expected by the command, and all fundamental types accessed
|
|
||||||
through the pointer (e.g. as elements of an array or as members of a
|
|
||||||
structure) satisfy the alignment requirements of the host processor.
|
|
||||||
|
|
||||||
|
A pointer is "`valid`" if it points at memory containing values of the
|
||||||
|
number and type(s) expected by the command, and all fundamental types
|
||||||
|
accessed through the pointer (e.g. as elements of an array or as members of
|
||||||
|
a structure) satisfy the alignment requirements of the host processor.
|
||||||
|
|
||||||
[[fundamentals-validusage-strings]]
|
[[fundamentals-validusage-strings]]
|
||||||
==== Valid Usage for Strings
|
==== Valid Usage for Strings
|
||||||
|
|
|
@ -60,13 +60,13 @@ include::../api/structs/VkAllocationCallbacks.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkAllocationCallbacks-pfnAllocation-00632]]
|
* [[VUID-VkAllocationCallbacks-pfnAllocation-00632]]
|
||||||
pname:pfnAllocation must: be a pointer to a valid user-defined
|
pname:pfnAllocation must: be a valid pointer to a valid user-defined
|
||||||
tlink:PFN_vkAllocationFunction
|
tlink:PFN_vkAllocationFunction
|
||||||
* [[VUID-VkAllocationCallbacks-pfnReallocation-00633]]
|
* [[VUID-VkAllocationCallbacks-pfnReallocation-00633]]
|
||||||
pname:pfnReallocation must: be a pointer to a valid user-defined
|
pname:pfnReallocation must: be a valid pointer to a valid user-defined
|
||||||
tlink:PFN_vkReallocationFunction
|
tlink:PFN_vkReallocationFunction
|
||||||
* [[VUID-VkAllocationCallbacks-pfnFree-00634]]
|
* [[VUID-VkAllocationCallbacks-pfnFree-00634]]
|
||||||
pname:pfnFree must: be a pointer to a valid user-defined
|
pname:pfnFree must: be a valid pointer to a valid user-defined
|
||||||
tlink:PFN_vkFreeFunction
|
tlink:PFN_vkFreeFunction
|
||||||
* [[VUID-VkAllocationCallbacks-pfnInternalAllocation-00635]]
|
* [[VUID-VkAllocationCallbacks-pfnInternalAllocation-00635]]
|
||||||
If either of pname:pfnInternalAllocation or pname:pfnInternalFree is not
|
If either of pname:pfnInternalAllocation or pname:pfnInternalFree is not
|
||||||
|
|
|
@ -523,7 +523,7 @@ endif::VK_NV_glsl_shader[]
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-00731]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-00731]]
|
||||||
If pname:pStages includes a tessellation control shader stage and a
|
If pname:pStages includes a tessellation control shader stage and a
|
||||||
tessellation evaluation shader stage, pname:pTessellationState must: be
|
tessellation evaluation shader stage, pname:pTessellationState must: be
|
||||||
a pointer to a valid sname:VkPipelineTessellationStateCreateInfo
|
a valid pointer to a valid sname:VkPipelineTessellationStateCreateInfo
|
||||||
structure
|
structure
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-00732]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-00732]]
|
||||||
If pname:pStages includes tessellation shader stages, the shader code of
|
If pname:pStages includes tessellation shader stages, the shader code of
|
||||||
|
@ -616,12 +616,12 @@ endif::VK_KHR_maintenance2[]
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747]]
|
||||||
If no element of the pname:pDynamicStates member of pname:pDynamicState
|
If no element of the pname:pDynamicStates member of pname:pDynamicState
|
||||||
is ename:VK_DYNAMIC_STATE_VIEWPORT, the pname:pViewports member of
|
is ename:VK_DYNAMIC_STATE_VIEWPORT, the pname:pViewports member of
|
||||||
pname:pViewportState must: be a pointer to an array of
|
pname:pViewportState must: be a valid pointer to an array of
|
||||||
pname:pViewportState::pname:viewportCount sname:VkViewport structures
|
pname:pViewportState::pname:viewportCount sname:VkViewport structures
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748]]
|
||||||
If no element of the pname:pDynamicStates member of pname:pDynamicState
|
If no element of the pname:pDynamicStates member of pname:pDynamicState
|
||||||
is ename:VK_DYNAMIC_STATE_SCISSOR, the pname:pScissors member of
|
is ename:VK_DYNAMIC_STATE_SCISSOR, the pname:pScissors member of
|
||||||
pname:pViewportState must: be a pointer to an array of
|
pname:pViewportState must: be a valid pointer to an array of
|
||||||
pname:pViewportState::pname:scissorCount sname:VkRect2D structures
|
pname:pViewportState::pname:scissorCount sname:VkRect2D structures
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749]]
|
||||||
If the wide lines feature is not enabled, and no element of the
|
If the wide lines feature is not enabled, and no element of the
|
||||||
|
@ -630,21 +630,21 @@ endif::VK_KHR_maintenance2[]
|
||||||
pname:pRasterizationState must: be `1.0`
|
pname:pRasterizationState must: be `1.0`
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750]]
|
||||||
If the pname:rasterizerDiscardEnable member of pname:pRasterizationState
|
If the pname:rasterizerDiscardEnable member of pname:pRasterizationState
|
||||||
is ename:VK_FALSE, pname:pViewportState must: be a pointer to a valid
|
is ename:VK_FALSE, pname:pViewportState must: be a valid pointer to a
|
||||||
sname:VkPipelineViewportStateCreateInfo structure
|
valid sname:VkPipelineViewportStateCreateInfo structure
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751]]
|
||||||
If the pname:rasterizerDiscardEnable member of pname:pRasterizationState
|
If the pname:rasterizerDiscardEnable member of pname:pRasterizationState
|
||||||
is ename:VK_FALSE, pname:pMultisampleState must: be a pointer to a valid
|
is ename:VK_FALSE, pname:pMultisampleState must: be a valid pointer to a
|
||||||
sname:VkPipelineMultisampleStateCreateInfo structure
|
valid sname:VkPipelineMultisampleStateCreateInfo structure
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752]]
|
||||||
If the pname:rasterizerDiscardEnable member of pname:pRasterizationState
|
If the pname:rasterizerDiscardEnable member of pname:pRasterizationState
|
||||||
is ename:VK_FALSE, and pname:subpass uses a depth/stencil attachment,
|
is ename:VK_FALSE, and pname:subpass uses a depth/stencil attachment,
|
||||||
pname:pDepthStencilState must: be a pointer to a valid
|
pname:pDepthStencilState must: be a valid pointer to a valid
|
||||||
sname:VkPipelineDepthStencilStateCreateInfo structure
|
sname:VkPipelineDepthStencilStateCreateInfo structure
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753]]
|
||||||
If the pname:rasterizerDiscardEnable member of pname:pRasterizationState
|
If the pname:rasterizerDiscardEnable member of pname:pRasterizationState
|
||||||
is ename:VK_FALSE, and pname:subpass uses color attachments,
|
is ename:VK_FALSE, and pname:subpass uses color attachments,
|
||||||
pname:pColorBlendState must: be a pointer to a valid
|
pname:pColorBlendState must: be a valid pointer to a valid
|
||||||
sname:VkPipelineColorBlendStateCreateInfo structure
|
sname:VkPipelineColorBlendStateCreateInfo structure
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754]]
|
||||||
If the depth bias clamping feature is not enabled, no element of the
|
If the depth bias clamping feature is not enabled, no element of the
|
||||||
|
@ -1390,9 +1390,9 @@ slink:VkSpecializationMapEntry.
|
||||||
The pname:size member of each element of pname:pMapEntries must: be less
|
The pname:size member of each element of pname:pMapEntries must: be less
|
||||||
than or equal to pname:dataSize minus pname:offset
|
than or equal to pname:dataSize minus pname:offset
|
||||||
* [[VUID-VkSpecializationInfo-mapEntryCount-00775]]
|
* [[VUID-VkSpecializationInfo-mapEntryCount-00775]]
|
||||||
If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a pointer
|
If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a valid
|
||||||
to an array of pname:mapEntryCount valid sname:VkSpecializationMapEntry
|
pointer to an array of pname:mapEntryCount valid
|
||||||
structures
|
sname:VkSpecializationMapEntry structures
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkSpecializationInfo.txt[]
|
include::../validity/structs/VkSpecializationInfo.txt[]
|
||||||
|
|
|
@ -1750,7 +1750,7 @@ pass.
|
||||||
pname:stencilLoadOp, if the attachment has a depth/stencil format) of
|
pname:stencilLoadOp, if the attachment has a depth/stencil format) of
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR
|
||||||
* [[VUID-VkRenderPassBeginInfo-clearValueCount-00903]]
|
* [[VUID-VkRenderPassBeginInfo-clearValueCount-00903]]
|
||||||
If pname:clearValueCount is not `0`, pname:pClearValues must: be a
|
If pname:clearValueCount is not `0`, pname:pClearValues must: be a valid
|
||||||
pointer to an array of pname:clearValueCount valid sname:VkClearValue
|
pointer to an array of pname:clearValueCount valid sname:VkClearValue
|
||||||
unions
|
unions
|
||||||
* [[VUID-VkRenderPassBeginInfo-renderPass-00904]]
|
* [[VUID-VkRenderPassBeginInfo-renderPass-00904]]
|
||||||
|
|
|
@ -95,7 +95,7 @@ endif::editing-notes[]
|
||||||
pname:size must: be greater than `0`
|
pname:size must: be greater than `0`
|
||||||
* [[VUID-VkBufferCreateInfo-sharingMode-00913]]
|
* [[VUID-VkBufferCreateInfo-sharingMode-00913]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
pname:pQueueFamilyIndices must: be a pointer to an array of
|
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
||||||
pname:queueFamilyIndexCount basetype:uint32_t values
|
pname:queueFamilyIndexCount basetype:uint32_t values
|
||||||
* [[VUID-VkBufferCreateInfo-sharingMode-00914]]
|
* [[VUID-VkBufferCreateInfo-sharingMode-00914]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
|
@ -602,7 +602,7 @@ endif::VK_KHR_maintenance2[]
|
||||||
values passed to the corresponding parameters.
|
values passed to the corresponding parameters.
|
||||||
* [[VUID-VkImageCreateInfo-sharingMode-00941]]
|
* [[VUID-VkImageCreateInfo-sharingMode-00941]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
pname:pQueueFamilyIndices must: be a pointer to an array of
|
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
||||||
pname:queueFamilyIndexCount basetype:uint32_t values
|
pname:queueFamilyIndexCount basetype:uint32_t values
|
||||||
* [[VUID-VkImageCreateInfo-sharingMode-00942]]
|
* [[VUID-VkImageCreateInfo-sharingMode-00942]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
|
|
|
@ -607,8 +607,8 @@ replace the current state for the viewport index [eq]#pname:firstViewport
|
||||||
If the <<features-features-multiViewport,multiple viewports>> feature is
|
If the <<features-features-multiViewport,multiple viewports>> feature is
|
||||||
not enabled, pname:viewportCount must: be `1`
|
not enabled, pname:viewportCount must: be `1`
|
||||||
* [[VUID-vkCmdSetViewport-pViewports-01226]]
|
* [[VUID-vkCmdSetViewport-pViewports-01226]]
|
||||||
pname:pViewports must: be a pointer to an array of pname:viewportCount
|
pname:pViewports must: be a valid pointer to an array of
|
||||||
valid sname:VkViewport structures
|
pname:viewportCount valid sname:VkViewport structures
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkCmdSetViewport.txt[]
|
include::../validity/protos/vkCmdSetViewport.txt[]
|
||||||
|
|
|
@ -348,9 +348,9 @@ class ValidityOutputGenerator(OutputGenerator):
|
||||||
if (lengths[0]) == 'null-terminated':
|
if (lengths[0]) == 'null-terminated':
|
||||||
asciidoc += 'a null-terminated '
|
asciidoc += 'a null-terminated '
|
||||||
elif (lengths[0]) == '1':
|
elif (lengths[0]) == '1':
|
||||||
asciidoc += 'a pointer to '
|
asciidoc += 'a valid pointer to '
|
||||||
else:
|
else:
|
||||||
asciidoc += 'a pointer to an array of '
|
asciidoc += 'a valid pointer to an array of '
|
||||||
|
|
||||||
# Handle equations, which are currently denoted with latex
|
# Handle equations, which are currently denoted with latex
|
||||||
if 'latexmath:' in lengths[0]:
|
if 'latexmath:' in lengths[0]:
|
||||||
|
@ -363,9 +363,9 @@ class ValidityOutputGenerator(OutputGenerator):
|
||||||
if (length) == 'null-terminated': # This should always be the last thing. If it ever isn't for some bizarre reason, then this will need some massaging.
|
if (length) == 'null-terminated': # This should always be the last thing. If it ever isn't for some bizarre reason, then this will need some massaging.
|
||||||
asciidoc += 'null-terminated '
|
asciidoc += 'null-terminated '
|
||||||
elif (length) == '1':
|
elif (length) == '1':
|
||||||
asciidoc += 'pointers to '
|
asciidoc += 'valid pointers to '
|
||||||
else:
|
else:
|
||||||
asciidoc += 'pointers to arrays of '
|
asciidoc += 'valid pointers to arrays of '
|
||||||
# Handle equations, which are currently denoted with latex
|
# Handle equations, which are currently denoted with latex
|
||||||
if 'latexmath:' in length:
|
if 'latexmath:' in length:
|
||||||
asciidoc += length
|
asciidoc += length
|
||||||
|
@ -416,7 +416,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
||||||
# Could be multi-level pointers (e.g. ppData - pointer to a pointer). Handle that.
|
# Could be multi-level pointers (e.g. ppData - pointer to a pointer). Handle that.
|
||||||
asciidoc += 'a '
|
asciidoc += 'a '
|
||||||
for i in range(0, pointercount):
|
for i in range(0, pointercount):
|
||||||
asciidoc += 'pointer to a '
|
asciidoc += 'valid pointer to a '
|
||||||
|
|
||||||
# Handle void* and pointers to it
|
# Handle void* and pointers to it
|
||||||
if paramtype.text == 'void':
|
if paramtype.text == 'void':
|
||||||
|
|
Loading…
Reference in New Issue