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 [resourceOffset, resourceOffset + 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:

    metadataRegion = [base, base + imageMipTailSize)

    base = imageMipTailOffset + imageMipTailStride × n

and imageMipTailOffset, imageMipTailSize, and imageMipTailStride values are from the VkSparseImageMemoryRequirements corresponding to the metadata aspect of the image, and 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,VkMemoryRequirements::size). Valid Usage

    • 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
Valid Usage (Implicit)

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

    • flags must be a valid combination of VkSparseMemoryBindFlagBits values

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.