vkCmdWaitEvents(3) ================== Name ---- vkCmdWaitEvents - Wait for one or more events and insert a set of memory barriers. C Specification --------------- include::../protos/vkCmdWaitEvents.txt[] Parameters ---------- pname:commandBuffer:: The command buffer in which to wait. pname:eventCount:: Number of event objects to wait on. pname:pEvents:: Array of pname:eventCount number of event objects to wait on. pname:srcStageMask:: Mask of pipeline stages used to signal all of the events in pname:pEvents. pname:dstStageMask:: Specifies which pipeline stages must wait for the events to become signaled (see elink:VkPipelineStageFlags for more detail). pname:memoryBarrierCount:: Number of memory barriers to insert after waiting for the events. pname:ppMemoryBarriers:: Array of pointers to memory barrier structures specifying the parameters of the memory barriers to insert after waiting for the events. Each element of the array may point to a slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier, or slink:VkImageMemoryBarrier structure. Description ----------- fname:vkCmdWaitEvents waits for a number of event objects to become signalled and inserts a set of memory barriers into the command buffer specified by pname:commandBuffer. fname:vkCmdWaitEvents waits for each of the pname:eventCount event object specified by pname:pEvents to become signalled. The point at which each is signalled must have been specified in the command that caused the object to become signalled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must also have the corresponding bit set in pname:srcStageMask. The pname:ppMemoryBarriers parameter is a pointer to an array of pname:memoryBarrierCount structures defining the parameters of memory barriers to insert after waiting for each of the events. Each element of the array may be an instance of slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier, or slink:VkImageMemoryBarrier, the definitions of each are, respectively: include::../structs/VkMemoryBarrier.txt[] include::../structs/VkBufferMemoryBarrier.txt[] include::../structs/VkImageMemoryBarrier.txt[] The memory barriers specified by pname:ppMemoryBarriers cause writes as described by pname:outputMask that were written by pipeline stages in pname:srcStageMask prior to the wait to be made visible to reads as described by pname:inputMask in pipeline stages in pname:dstStageMask subsequent to the wait. In case of global memory barriers inserted by passing an slink:VkMemoryBarrier structure to the command prior writes in the requested pipeline stages to any memory location corresponding to the set of memory output coherency flags specified in the pname:outputMask member of the structure are made coherent with subsequent reads in the requested pipeline stages of any memory location corresponding to the set of memory input coherency flags specified in the pname:inputMask member of the structure. In case of buffer memory barriers inserted by passing an slink:VkBufferMemoryBarrier structure to the command prior writes in the requested pipeline stages to the specified sub-range of the buffer corresponding to the set of memory output coherency flags specified in the pname:outputMask member of the structure are made coherent with subsequent reads in the requested pipeline stages of the specified sub-range of the buffer corresponding to the set of memory input coherency flags specified in the pname:inputMask member of the structure. In case of image memory barriers inserted by passing an slink:VkImageMemoryBarrier structure to the command prior writes in the requested pipeline stages to the specified sub-range of the image corresponding to the set of memory output coherency flags specified in the pname:outputMask member of the structure are made coherent with subsequent reads in the requested pipeline stages of the specified sub-range of the image corresponding to the set of memory input coherency flags specified in the pname:inputMask member of the structure. Additionally, if the pname:oldLayout and pname:newLayout members of the structure don't match a layout transition is performed on the specified sub-range of the image as part of the memory barrier. In case of buffer and image memory barriers the pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex members of the corresponding memory barrier structures can specify the parameters of a transfer of ownership between two distinct families of queues of a shared buffer or image object created with the ename:VK_SHARING_MODE_EXCLUSIVE sharing mode. In case of regular resource transitions both pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex should be set to ename:VK_QUEUE_FAMILY_IGNORED to indicate no transfer of ownership between queue families. In case of resource transitions involving ownership transfer of shared buffers or images one of these two members have to match the queue family index the command buffer specified by pname:commandBuffer was created for, while the other should specify the queue family index the ownership transfer is released to or acquired from. Ownership transferring resource transitions have to be performed both on a queue from the source queue family and on a queue from the destination queue family (see elink:VkSharingMode for more detail). If pname:inputMask is zero in any of the memory barrier structures then prior writes will only be coherent with any type of subsequent read after a future resource transition command specifies a non-empty set of memory input coherency control flags. This allows flushing device output caches unconditionally. If pname:outputMask is zero in any of the memory barrier structures then subsequent reads will only be coherent with any type of prior write if an earlier resource transition command specified a non-empty set of memory output coherency control flags. This allows invalidating device input caches unconditionally. include::../validity/protos/vkCmdWaitEvents.txt[] See Also -------- flink:vkCmdSetEvent, flink:vkCmdResetEvent, flink:vkSetEvent, flink:vkResetEvent, flink:vkCmdPipelineBarrier, slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier, slink:VkImageMemoryBarrier, elink:VkPipelineStageFlagBits include::footer.txt[]