To submit command buffers to a queue, call:
VkResult vkQueueSubmit(
VkQueue queue,
uint32_t submitCount,
const VkSubmitInfo* pSubmits,
VkFence fence);
queue is the queue that the command buffers will be submitted to.
submitCount is the number of elements in the pSubmits array.
pSubmits is a pointer to an array of VkSubmitInfo structures,
each specifying a command buffer submission batch.
fence is an optional handle to a fence to be signaled. If
fence is not VK_NULL_HANDLE, it defines a
fence signal operation.
| Note | |
|---|---|
Submission can be a high overhead operation, and applications should
attempt to batch work together into as few calls to |
vkQueueSubmit is a
queue submission command, with each batch
defined by an element of pSubmits as an instance of the
VkSubmitInfo structure.
Fence and semaphore operations submitted with vkQueueSubmit have
additional ordering constraints compared to other submission commands,
with dependencies involving previous and subsequent queue operations.
Information about these additional constraints can be found in the
semaphore and
fence sections of
the synchronization chapter.
Details on the interaction of pWaitDstStageMask with synchronization
are described in the
semaphore wait operation section of
the synchronization chapter.
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;
sType is the type of this structure.
pNext is NULL or a pointer to an extension-specific structure.
waitSemaphoreCount is the number of semaphores upon which
to wait before executing the command buffers for the batch.
pWaitSemaphores is a pointer to an array of semaphores 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.
pWaitDstStageMask is a pointer to an array of pipeline stages at
which each corresponding semaphore wait will occur.
commandBufferCount is the number of command buffers to
execute in the batch.
pCommandBuffers is a pointer to an array of command buffers to
execute in the batch. The command buffers submitted in a batch begin
execution in the order they appear in pCommandBuffers, but may
complete out of order.
signalSemaphoreCount is the number of semaphores to be
signaled once the commands specified in pCommandBuffers have
completed execution.
pSignalSemaphores is a pointer to an array of semaphores 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.