C Specification
The VkSparseMemoryBind
structure is defined as:
// Provided by VK_VERSION_1_0
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. Ifmemory
is VK_NULL_HANDLE, the range is unbound. -
memoryOffset
is the offset into the VkDeviceMemory object to bind the resource range to. Ifmemory
is VK_NULL_HANDLE, this value is ignored. -
flags
is a bitmask of VkSparseMemoryBindFlagBits specifying usage of the binding operation.
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
).
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.