VkMemoryDedicatedAllocateInfo
If the pNext chain includes a VkMemoryDedicatedAllocateInfo
structure, then that structure includes a handle of the sole buffer or image
resource that the memory can be bound to.
The VkMemoryDedicatedAllocateInfo structure is defined as:
typedef struct VkMemoryDedicatedAllocateInfo {
VkStructureType sType;
const void* pNext;
VkImage image;
VkBuffer buffer;
} VkMemoryDedicatedAllocateInfo;
or the equivalent
typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.imageis VK_NULL_HANDLE or a handle of an image which this memory will be bound to.bufferis VK_NULL_HANDLE or a handle of a buffer which this memory will be bound to.
Valid Usage
VUID-VkMemoryDedicatedAllocateInfo-image-01432
At least one of image and buffer must be
VK_NULL_HANDLE
VUID-VkMemoryDedicatedAllocateInfo-image-02964
If `image` is not [VK_NULL_HANDLE](/man/VK_NULL_HANDLE)
and the memory is not an imported
Android Hardware Buffer
or an imported
QNX Screen buffer
, VkMemoryAllocateInfo::allocationSize must equal the
VkMemoryRequirements::size of the image
VUID-VkMemoryDedicatedAllocateInfo-image-01434
If image is not VK_NULL_HANDLE, image must have been
created without VK_IMAGE_CREATE_SPARSE_BINDING_BIT set in
VkImageCreateInfo::flags
VUID-VkMemoryDedicatedAllocateInfo-buffer-02965
If `buffer` is not [VK_NULL_HANDLE](/man/VK_NULL_HANDLE)
and the memory is not an imported
Android Hardware Buffer
or an imported
QNX Screen buffer
, VkMemoryAllocateInfo::allocationSize must equal the
VkMemoryRequirements::size of the buffer
VUID-VkMemoryDedicatedAllocateInfo-buffer-01436
If buffer is not VK_NULL_HANDLE, buffer must have
been created without VK_BUFFER_CREATE_SPARSE_BINDING_BIT set in
VkBufferCreateInfo::flags
VUID-VkMemoryDedicatedAllocateInfo-image-01876
If image is not VK_NULL_HANDLE and
VkMemoryAllocateInfo defines a memory import operation with handle
type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, or
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, and the
external handle was created by the Vulkan API, then the memory being
imported must also be a dedicated image allocation and imagemust be identical to the image associated with the imported memory
VUID-VkMemoryDedicatedAllocateInfo-buffer-01877
If buffer is not VK_NULL_HANDLE and
VkMemoryAllocateInfo defines a memory import operation with handle
type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, or
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, and the
external handle was created by the Vulkan API, then the memory being
imported must also be a dedicated buffer allocation and buffermust be identical to the buffer associated with the imported memory
VUID-VkMemoryDedicatedAllocateInfo-image-01878
If image is not VK_NULL_HANDLE and
VkMemoryAllocateInfo defines a memory import operation with handle
type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
being imported must also be a dedicated image allocation and
image must be identical to the image associated with the imported
memory
VUID-VkMemoryDedicatedAllocateInfo-buffer-01879
If buffer is not VK_NULL_HANDLE and
VkMemoryAllocateInfo defines a memory import operation with handle
type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
being imported must also be a dedicated buffer allocation and
buffer must be identical to the buffer associated with the
imported memory
VUID-VkMemoryDedicatedAllocateInfo-image-01797
If image is not VK_NULL_HANDLE, image must not have
been created with VK_IMAGE_CREATE_DISJOINT_BIT set in
VkImageCreateInfo::flags
VUID-VkMemoryDedicatedAllocateInfo-image-04751
If image is not VK_NULL_HANDLE and
VkMemoryAllocateInfo defines a memory import operation with handle
type VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA, the
memory being imported must also be a dedicated image allocation and
image must be identical to the image associated with the imported
memory
VUID-VkMemoryDedicatedAllocateInfo-buffer-04752
If buffer is not VK_NULL_HANDLE and
VkMemoryAllocateInfo defines a memory import operation with handle
type VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA, the
memory being imported must also be a dedicated buffer allocation and
buffer must be identical to the buffer associated with the
imported memory
Valid Usage (Implicit)
VUID-VkMemoryDedicatedAllocateInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
VUID-VkMemoryDedicatedAllocateInfo-image-parameter
If image is not VK_NULL_HANDLE, image must be a valid VkImage handle
VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter
If buffer is not VK_NULL_HANDLE, buffer must be a valid VkBuffer handle
VUID-VkMemoryDedicatedAllocateInfo-commonparent
Both of buffer, and image that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice