VkSubmitInfo
The VkSubmitInfo structure is defined as:
typedef struct VkSubmitInfo {
VkStructureType sType;
const void* pNext;
uint32_t waitSemaphoreCount;
const VkSemaphore* pWaitSemaphores;
const VkPipelineStageFlags* pWaitDstStageMask;
uint32_t commandBufferCount;
const VkCommandBuffer* pCommandBuffers;
uint32_t signalSemaphoreCount;
const VkSemaphore* pSignalSemaphores;
} VkSubmitInfo;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.waitSemaphoreCountis the number of semaphores upon which to wait before executing the command buffers for the batch.pWaitSemaphoresis a pointer to an array of VkSemaphore handles upon which to wait before the command buffers for this batch begin execution. If semaphores to wait on are provided, they define a semaphore wait operation.pWaitDstStageMaskis a pointer to an array of pipeline stages at which each corresponding semaphore wait will occur.commandBufferCountis the number of command buffers to execute in the batch.pCommandBuffersis a pointer to an array of VkCommandBuffer handles to execute in the batch.signalSemaphoreCountis the number of semaphores to be signaled once the commands specified inpCommandBuffershave completed execution.pSignalSemaphoresis a pointer to an array of VkSemaphore handles which will be signaled when the command buffers for this batch have completed execution. If semaphores to be signaled are provided, they define a semaphore signal operation.
The order that command buffers appear in pCommandBuffers is used to
determine submission order, and thus
all the implicit ordering guarantees that
respect it.
Other than these implicit ordering guarantees and any explicit synchronization primitives, these command buffers may overlap or
otherwise execute out of order.
Valid Usage
VUID-VkSubmitInfo-pWaitDstStageMask-04090
If the geometryShader feature is not
enabled, pWaitDstStageMask must not contain
VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
VUID-VkSubmitInfo-pWaitDstStageMask-04091
If the tessellationShader feature
is not enabled, pWaitDstStageMask must not contain
VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
VUID-VkSubmitInfo-pWaitDstStageMask-04092
If the conditionalRendering
feature is not enabled, pWaitDstStageMask must not contain
VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
VUID-VkSubmitInfo-pWaitDstStageMask-04093
If the fragmentDensityMap feature
is not enabled, pWaitDstStageMask must not contain
VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
VUID-VkSubmitInfo-pWaitDstStageMask-04094
If the transformFeedback feature
is not enabled, pWaitDstStageMask must not contain
VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
VUID-VkSubmitInfo-pWaitDstStageMask-04095
If the meshShader feature is not enabled,
pWaitDstStageMask must not contain
VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
VUID-VkSubmitInfo-pWaitDstStageMask-04096
If the taskShader feature is not enabled,
pWaitDstStageMask must not contain
VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
VUID-VkSubmitInfo-pWaitDstStageMask-07318
If neither of the shadingRateImage
or the attachmentFragmentShadingRate features are enabled,
pWaitDstStageMask must not contain
VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
VUID-VkSubmitInfo-pWaitDstStageMask-03937
If the synchronization2 feature is
not enabled, pWaitDstStageMask must not be 0
VUID-VkSubmitInfo-pWaitDstStageMask-07949
If neither the VK_NV_ray_tracing extension or the
rayTracingPipeline feature are
enabled, pWaitDstStageMask must not contain
VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
VUID-VkSubmitInfo-pCommandBuffers-00075
Each element of pCommandBuffers must not have been allocated with
VK_COMMAND_BUFFER_LEVEL_SECONDARY
VUID-VkSubmitInfo-pWaitDstStageMask-00078
Each element of pWaitDstStageMask must not include
VK_PIPELINE_STAGE_HOST_BIT
VUID-VkSubmitInfo-pWaitSemaphores-03239
If any element of pWaitSemaphores or pSignalSemaphores was
created with a VkSemaphoreType of
VK_SEMAPHORE_TYPE_TIMELINE, then the pNext chain must
include a VkTimelineSemaphoreSubmitInfo structure
VUID-VkSubmitInfo-pNext-03240
If the pNext chain of this structure includes a
VkTimelineSemaphoreSubmitInfo structure and any element of
pWaitSemaphores was created with a VkSemaphoreType of
VK_SEMAPHORE_TYPE_TIMELINE, then its waitSemaphoreValueCount
member must equal waitSemaphoreCount
VUID-VkSubmitInfo-pNext-03241
If the pNext chain of this structure includes a
VkTimelineSemaphoreSubmitInfo structure and any element of
pSignalSemaphores was created with a VkSemaphoreType of
VK_SEMAPHORE_TYPE_TIMELINE, then its
signalSemaphoreValueCount member must equal
signalSemaphoreCount
VUID-VkSubmitInfo-pSignalSemaphores-03242
For each element of pSignalSemaphores created with a
VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE the
corresponding element of
VkTimelineSemaphoreSubmitInfo::pSignalSemaphoreValues must
have a value greater than the current value of the semaphore when the
semaphore signal operation is
executed
VUID-VkSubmitInfo-pWaitSemaphores-03243
For each element of pWaitSemaphores created with a
VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE the
corresponding element of
VkTimelineSemaphoreSubmitInfo::pWaitSemaphoreValues must
have a value which does not differ from the current value of the
semaphore or the value of any outstanding semaphore wait or signal
operation on that semaphore by more than
maxTimelineSemaphoreValueDifference
VUID-VkSubmitInfo-pSignalSemaphores-03244
For each element of pSignalSemaphores created with a
VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE the
corresponding element of
VkTimelineSemaphoreSubmitInfo::pSignalSemaphoreValues must
have a value which does not differ from the current value of the
semaphore or the value of any outstanding semaphore wait or signal
operation on that semaphore by more than
maxTimelineSemaphoreValueDifference
VUID-VkSubmitInfo-pCommandBuffers-06193
If pCommandBuffers contains any resumed
render pass instances, they must be suspended by a render pass
instance earlier in submission order within pCommandBuffers
VUID-VkSubmitInfo-pCommandBuffers-06014
If pCommandBuffers contains any suspended
render pass instances, they must be resumed by a render pass instance
later in submission order within pCommandBuffers
VUID-VkSubmitInfo-pCommandBuffers-06015
If pCommandBuffers contains any suspended
render pass instances, there must be no action or synchronization
commands executed in a primary or secondary command buffer between that render pass instance and the
render pass instance that resumes it
VUID-VkSubmitInfo-pCommandBuffers-06016
If pCommandBuffers contains any suspended
render pass instances, there must be no render pass instances between
that render pass instance and the render pass instance that resumes it
VUID-VkSubmitInfo-variableSampleLocations-06017
If the variableSampleLocations
limit is not supported, and any element of pCommandBuffers
contains any suspended render pass instances,
where a graphics pipeline has been bound, any pipelines bound in the
render pass instance that resumes it, or any subsequent render pass
instances that resume from that one and so on, must use the same sample
locations
Valid Usage (Implicit)
VUID-VkSubmitInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_SUBMIT_INFO
VUID-VkSubmitInfo-pNext-pNext
Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkAmigoProfilingSubmitInfoSEC, VkD3D12FenceSubmitInfoKHR, VkDeviceGroupSubmitInfo, VkFrameBoundaryEXT, VkLatencySubmissionPresentIdNV, VkPerformanceQuerySubmitInfoKHR, VkProtectedSubmitInfo, VkTimelineSemaphoreSubmitInfo, VkWin32KeyedMutexAcquireReleaseInfoKHR, or VkWin32KeyedMutexAcquireReleaseInfoNV
VUID-VkSubmitInfo-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkSubmitInfo-pWaitSemaphores-parameter
If waitSemaphoreCount is not 0, pWaitSemaphores must be a valid pointer to an array of waitSemaphoreCount valid VkSemaphore handles
VUID-VkSubmitInfo-pWaitDstStageMask-parameter
If waitSemaphoreCount is not 0, pWaitDstStageMask must be a valid pointer to an array of waitSemaphoreCount valid combinations of VkPipelineStageFlagBits values
VUID-VkSubmitInfo-pCommandBuffers-parameter
If commandBufferCount is not 0, pCommandBuffers must be a valid pointer to an array of commandBufferCount valid VkCommandBuffer handles
VUID-VkSubmitInfo-pSignalSemaphores-parameter
If signalSemaphoreCount is not 0, pSignalSemaphores must be a valid pointer to an array of signalSemaphoreCount valid VkSemaphore handles
VUID-VkSubmitInfo-commonparent
Each of the elements of pCommandBuffers, the elements of pSignalSemaphores, and the elements of pWaitSemaphores that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice