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;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.image
is VK_NULL_HANDLE or a handle of an image which this memory will be bound to.buffer
is 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 image
must 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 buffer
must 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