vkQueueBindSparse(3) ==================== Name ---- vkQueueBindSparse - Bind device memory to a sparse resource object. C Specification --------------- include::../protos/vkQueueBindSparse.txt[] Parameters ---------- pname:queue:: The queue upon which to perform the operation. pname:bindInfoCount:: The number of binding operations to perform. pname:pBindInfo:: A pointer to an array of pname:bindInfoCount data structures describing the binding operations to perform. pname:fence:: A handle to a fence object that will be signaled when the binding operation completes. Description ----------- fname:vkQueueBindSparse binds memory to sparse resources. The number of binding operations to perform is specified in pname:bindInfoCount and the binding operation takes place on the queue specified in pname:queue. pname:queue must be the handle to a queue that is a member of a family that supports the ename:VK_QUEUE_SPARSE_MEMMGR_BIT capability. pname:pBindInfo is a pointer to an array of pname:bindInfoCount slink:VkBindSparseInfo structures describing each of the binding operations. The definition of slink:VkBindSparseInfo is: include::../structs/VkBindSparseInfo.txt[] The pname:sType member of slink:VkBindSparseInfo should be ename:VK_STRUCTURE_TYPE_BIND_SPARSE_INFO. The pname:pNext member is reserved for use by extensions and should be set to code:NULL. The pname:waitSemaphoreCount member specifies the number of semaphores that should be waited on before the binding operation takes place. pname:pWaitSemaphores is a pointer to an array of basetype:VkSemaphore objects to wait on. If pname:waitSemaphoreCount is zero then the value of pname:pWaitSemaphores is ignored and the command will not wait before performing the bind operations. The pname:bufferBindCount parameter specifies the number of binding operations to apply to buffer objects. The pname:pBufferBinds parameter is a pointer to an array of pname:bufferBindCount slink:VkSparseBufferMemoryBindInfo structures describing the binding operations for buffers to be performed by the command. The definition of slink:VkSparseBufferMemoryBindInfo is: include::../structs/VkSparseBufferMemoryBindInfo.txt[] The pname:buffer member of slink:VkSparseBufferMemoryBindInfo specifies the target buffer, pname:bindCount specifies the number of binding operations to apply to that buffer, and pname:pBinds is a pointer to an array of slink:VkSparseMemoryBind structures describing the bindings. If pname:bindCount is zero then the value of pname:pBinds is ignored and no bindings are performed. The definition of slink:VkSparseMemoryBind is: include::../structs/VkSparseMemoryBind.txt[] For each element of the array of slink:VkSparseMemoryBind structures, pname:resourceOffset and pname:size specify the starting offset and size of the region in the buffer. Both are specified in bytes. pname:memoryOffset specifies the offset of the region of the memory object specified by pname:memory that is to be bound to the specified region in the buffer object. pname:memoryOffset is also specified in bytes. pname:resourceOffset, pname:size and pname:memoryOffset must each satisfy the alignment requirements of the buffer. This is returned in the ptext:alignment field of the slink:VkMemoryRequirements structure filled by a call to flink:vkGetBufferMemoryRequirements. The pname:flags member of the slink:VkSparseMemoryBind structure is a bitfield comprising members of the elink:VkSparseMemoryBindFlagBits enumeration, the definition of which is: include::../enums/VkSparseMemoryBindFlagBits.txt[] If ename:VK_SPARSE_MEMORY_BIND_REPLICATE_BLOCK_BIT is set, only a single block of memory is consumed from pname:memory and is replicated throughout the region of the buffer object specified pname:resourceOffset and pname:size as many times as neccessary to fill it. All other bits in pname:flags are reserved and should be set to zero. The ptext:imageOpaqueBindCount member specifies the number of opaque image memory binding operations to execute and ptext:pImageOpaqueBinds is a pointer to an array of ptext:imageOpaqueBindCount slink:VkSparseImageOpaqueMemoryBindInfo structures describing those operations. If ptext:imageOpaqueBindCount is zero then the value of ptext:pImageOpaqueBinds is ignored and no binding operations are performed. The definition of slink:VkSparseImageOpaqueMemoryBindInfo is: include::../structs/VkSparseImageOpaqueMemoryBindInfo.txt[] The pname:image member of the slink:VkSparseImageOpaqueMemoryBindInfo structure specifies the image that is the target of the binding operation. pname:bindCount specifies the number of binding operations to be applied to pname:image and pname:pBinds is a pointer to an array of slink:VkSparseMemoryBind structures describing those operations. If pname:bindCount is zero then the value of pname:pBinds is ignored. Opaque memory binding operations are expressed in terms of byte offsets. The slink:VkSparseMemoryBind structures pointed to by the pname:pBinds member of slink:VkSparseImageOpaqueMemoryBindInfo are interpreted as described for buffers above. The ptext:imageBindCount member of the slink:VkBindSparseInfo specifies the number of non-opaque image bindings to perform, and the ptext:pImageBinds member of the structure is a pointer to an array of ptext:imageBindCount slink:VkSparseImageMemoryBindInfo structures describing those operations. If ptext:imageBindCount is zero then the value of ptext:pImageBinds is ignored. The definition of slink:VkSparseImageMemoryBindInfo is: include::../structs/VkSparseImageMemoryBindInfo.txt[] Within slink:VkSparseImageMemoryBindInfo, the pname:image member specifies the image that is to be the target of the binding operation. pname:bindCount specifies the number of binding operations to execute and pname:pBinds is a pointer to an array of pname:bindCount slink:VkSparseImageMemoryBind structes describing those operations. The definition of slink:VkSparseImageMemoryBind is: include::../structs/VkSparseImageMemoryBind.txt[] The pname:subresource member of slink:VkSparseImageMemoryBind specifies the subresource within the image to bind memory to. The pname:offset and pname:extent members specify the region within the image subresource to bind memory to. pname:offset and pname:extent are instances of the slink:VkOffset3D and slink:VkExtent3D structures, respectively, and are expressed in texels. The pname:memoryOffset member specifies the offset within the memory object specified by pname:memory from which to bind memory. pname:memoryOffset is expressed in bytes. Its value and the values contained in pname:offset and pname:extent must satisfy device-specific alignment requirements. The pname:flags member within slink:VkSparseImageMemoryBind has the same interpretation as the similarly named member in slink:VkSparseMemoryBind. The ptext:signalSemaphoreCount parameter specifies the number of semaphores to signal after the binding operations are complete. ptext:pSignalSemaphores is a pointer to an array of ptext:signalSemaphoreCount basetype:VkSemaphore objects to signal at this point. If ptext:signalSemaphoreCount is zero then the value of ptext:pSignalSemaphores is ignored and no semaphores are signaled as a result of the operation. include::../validity/protos/vkQueueBindSparse.txt[] See Also -------- flink:vkQueueSubmit, flink:vkBindBufferMemory, flink:vkGetBufferMemoryRequirements, flink:vkGetImageMemoryRequirements, flink:vkBindImageMemory include::footer.txt[]