VKSPARSEMEMORYBIND(3)

NAME
VkSparseMemoryBind - Structure specifying a sparse memory bind operation

C SPECIFICATION

The VkSparseMemoryBind structure is defined as:

    typedef struct VkSparseMemoryBind {
        VkDeviceSize               resourceOffset;
        VkDeviceSize               size;
        VkDeviceMemory             memory;
        VkDeviceSize               memoryOffset;
        VkSparseMemoryBindFlags    flags;
    } VkSparseMemoryBind;

MEMBERS

    • resourceOffset is the offset into the resource.

    • size is the size of the memory region to be bound.

    • memory is the VkDeviceMemory object that the range of the resource is bound to. If memory is VK_NULL_HANDLE, the range is unbound.

    • memoryOffset is the offset into the VkDeviceMemory object to bind the resource range to. If memory is VK_NULL_HANDLE, this value is ignored.

    • flags is a bitmask specifying usage of the binding operation. Bits which can be set include:

        typedef enum VkSparseMemoryBindFlagBits {
            VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
        } VkSparseMemoryBindFlagBits;

        • VK_SPARSE_MEMORY_BIND_METADATA_BIT indicates that the memory being bound is only for the metadata aspect.

DESCRIPTION

The binding range [ $[thit{resourceOffset}, thit{resourceOffset} + thit{size})$ ] has different constraints based on flags. If flags contains VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding range must be within the mip tail region of the metadata aspect. This metadata region is defined by:

    \begin{align*} \mathit{metadataRegion} = [&
            \mathit{imageMipTailOffset} + \mathit{imageMipTailStride} \times n,\\
            &\mathit{imageMipTailOffset} +
                    \mathit{imageMipTailStride} \times n + \mathit{imageMipTailSize}) \end{align*}

Where imageMipTailOffset, imageMipTailSize, and imageMipTailStride values are from the VkSparseImageMemoryRequirements that correspond to the metadata aspect of the image. The term [ $n$ ] is a valid array layer index for the image.

imageMipTailStride is considered to be zero for aspects where VkSparseImageMemoryRequirements::formatProperties.flags contains VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT.

If flags does not contain VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding range must be within the range [ $[0, {thit{VkMemoryRequirements}::thit{size}})$ ].

VALID USAGE

    • If memory is not VK_NULL_HANDLE, memory must be a valid VkDeviceMemory handle

    • flags must be a valid combination of VkSparseMemoryBindFlagBits values

    • If memory is not VK_NULL_HANDLE, memory and memoryOffset must match the memory requirements of the resource, as described in section ???

    • If memory is not VK_NULL_HANDLE, memory must not have been created with a memory type that reports VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set

    • size must be greater than 0

    • resourceOffset must be less than the size of the resource

    • size must be less than or equal to the size of the resource minus resourceOffset

    • memoryOffset must be less than the size of memory

    • size must be less than or equal to the size of memory minus memoryOffset

SEE ALSO

VkDeviceMemory, VkDeviceSize, VkSparseBufferMemoryBindInfo, VkSparseImageOpaqueMemoryBindInfo, VkSparseMemoryBindFlags

DOCUMENT NOTES

For more information, see the Vulkan Specification at URL

https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseMemoryBind

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

COPYRIGHT

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

AUTHOR

Khronos Group
    Author.