VkBindSparseInfo(3)

# VkBindSparseInfo(3) Manual Page

## Name

VkBindSparseInfo - Structure specifying a sparse binding operation

## C Specification

The `VkBindSparseInfo` structure is defined as:

    typedef struct VkBindSparseInfo {
        VkStructureType                             sType;
        const void*                                 pNext;
        uint32_t                                    waitSemaphoreCount;
        const VkSemaphore*                          pWaitSemaphores;
        uint32_t                                    bufferBindCount;
        const VkSparseBufferMemoryBindInfo*         pBufferBinds;
        uint32_t                                    imageOpaqueBindCount;
        const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
        uint32_t                                    imageBindCount;
        const VkSparseImageMemoryBindInfo*          pImageBinds;
        uint32_t                                    signalSemaphoreCount;
        const VkSemaphore*                          pSignalSemaphores;
    } VkBindSparseInfo;

## Members

- `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 sparse binding operations for the batch.

- `pWaitSemaphores` is a pointer to an array of semaphores upon which to wait on before the sparse binding operations for this batch begin execution. If semaphores to wait on are provided, they define a semaphore wait operation.

- `bufferBindCount` is the number of sparse buffer bindings to perform in the batch.

- `pBufferBinds` is a pointer to an array of VkSparseBufferMemoryBindInfo structures.

- `imageOpaqueBindCount` is the number of opaque sparse image bindings to perform.

- `pImageOpaqueBinds` is a pointer to an array of VkSparseImageOpaqueMemoryBindInfo structures, indicating opaque sparse image bindings to perform.

- `imageBindCount` is the number of sparse image bindings to perform.

- `pImageBinds` is a pointer to an array of VkSparseImageMemoryBindInfo structures, indicating sparse image bindings to perform.

- `signalSemaphoreCount` is the number of semaphores to be signaled once the sparse binding operations specified by the structure have completed execution.

- `pSignalSemaphores` is a pointer to an array of semaphores which will be signaled when the sparse binding operations for this batch have completed execution. If semaphores to be signaled are provided, they define a semaphore signal operation.

## Description

Valid Usage

- If any element of `pWaitSemaphores` or `pSignalSemaphores` was created with a VkSemaphoreTypeKHR of `VK_SEMAPHORE_TYPE_TIMELINE_KHR` then the `pNext` chain must include an instance of VkTimelineSemaphoreSubmitInfoKHR

- If the `pNext` chain of this structure includes an instance of VkTimelineSemaphoreSubmitInfoKHR and any element of `pWaitSemaphores` was created with a VkSemaphoreTypeKHR of `VK_SEMAPHORE_TYPE_TIMELINE_KHR` then its `waitSemaphoreValueCount` member must equal `waitSemaphoreCount`

- If the `pNext` chain of this structure includes an instance of VkTimelineSemaphoreSubmitInfoKHR and any element of `pSignalSemaphores` was created with a VkSemaphoreTypeKHR of `VK_SEMAPHORE_TYPE_TIMELINE_KHR` then its `signalSemaphoreValueCount` member must equal `signalSemaphoreCount`

- For each element of `pSignalSemaphores` created with a VkSemaphoreTypeKHR of `VK_SEMAPHORE_TYPE_TIMELINE_KHR` the corresponding element of VkTimelineSemaphoreSubmitInfoKHR::pSignalSemaphoreValues must have a value greater than the current value of the semaphore when the semaphore signal operation is executed

- For each element of `pWaitSemaphores` created with a VkSemaphoreTypeKHR of `VK_SEMAPHORE_TYPE_TIMELINE_KHR` the corresponding element of VkTimelineSemaphoreSubmitInfoKHR::pWaitSemaphoreValues must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than `maxTimelineSemaphoreValueDifference`.

- For each element of `pSignalSemaphores` created with a VkSemaphoreTypeKHR of `VK_SEMAPHORE_TYPE_TIMELINE_KHR` the corresponding element of VkTimelineSemaphoreSubmitInfoKHR::pSignalSemaphoreValues must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than `maxTimelineSemaphoreValueDifference`.

Valid Usage (Implicit)

- `sType` must be `VK_STRUCTURE_TYPE_BIND_SPARSE_INFO`

- 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 VkDeviceGroupBindSparseInfo or VkTimelineSemaphoreSubmitInfoKHR

- Each `sType` member in the `pNext` chain must be unique

- If `waitSemaphoreCount` is not `0`, `pWaitSemaphores` must be a valid pointer to an array of `waitSemaphoreCount` valid `VkSemaphore` handles

- If `bufferBindCount` is not `0`, `pBufferBinds` must be a valid pointer to an array of `bufferBindCount` valid `VkSparseBufferMemoryBindInfo` structures

- If `imageOpaqueBindCount` is not `0`, `pImageOpaqueBinds` must be a valid pointer to an array of `imageOpaqueBindCount` valid `VkSparseImageOpaqueMemoryBindInfo` structures

- If `imageBindCount` is not `0`, `pImageBinds` must be a valid pointer to an array of `imageBindCount` valid `VkSparseImageMemoryBindInfo` structures

- If `signalSemaphoreCount` is not `0`, `pSignalSemaphores` must be a valid pointer to an array of `signalSemaphoreCount` valid `VkSemaphore` handles

- Both of 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`

## See Also

VkSemaphore, VkSparseBufferMemoryBindInfo, VkSparseImageMemoryBindInfo, VkSparseImageOpaqueMemoryBindInfo, VkStructureType, vkQueueBindSparse

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright (c) 2014-2019 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.