This extension adds a few small structures to resource creation and memory allocation: a new structure that flags whether am image/buffer will have a dedicated allocation, and a structure indicating the image or buffer that an allocation will be bound to.
// Create an image with
// VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
// set to VK_TRUE
VkDedicatedAllocationImageCreateInfoNV dedicatedImageInfo =
{
.sType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
.pNext = NULL,
.dedicatedAllocation = VK_TRUE,
};
VkImageCreateInfo imageCreateInfo =
{
.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
.pNext = &dedicatedImageInfo
// Other members set as usual
};
VkImage image;
VkResult result = vkCreateImage(
device,
&imageCreateInfo,
NULL, // pAllocator
&image);
VkMemoryRequirements memoryRequirements;
vkGetImageMemoryRequirements(
device,
image,
&memoryRequirements);
// Allocate memory with VkDedicatedAllocationMemoryAllocateInfoNV::image
// pointing to the image we are allocating the memory for
VkDedicatedAllocationMemoryAllocateInfoNV dedicatedInfo =
{
.sType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
.pNext = NULL,
.image = image,
.buffer = VK_NULL_HANDLE,
};
VkMemoryAllocateInfo memoryAllocateInfo =
{
.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
.pNext = &dedicatedInfo,
.allocationSize = memoryRequirements.size,
.memoryTypeIndex = FindMemoryTypeIndex(memoryRequirements.memoryTypeBits),
};
VkDeviceMemory memory;
vkAllocateMemory(
device,
&memoryAllocateInfo,
NULL, // pAllocator
&memory);
// Bind the image to the memory
vkBindImageMemory(
device,
image,
memory,
0);
VK_NV_dedicated_allocationVK_KHR_dedicated_allocation extension
| Modifier and Type | Field and Description |
|---|---|
| public static final String | VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME
The extension name. |
| public static final int | VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION
The extension specification version. |
| public static final int | VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
Extends |
| public static final int | VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
Extends |
| public static final int | VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
Extends |
| Access | Constructor and Description |
|---|---|
| private |
| VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME | back to summary |
|---|---|
| public static final String VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME The extension name. | |
| VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION | back to summary |
|---|---|
| public static final int VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION The extension specification version. | |
| VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV Extends Enum values: | |
| VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV Extends Enum values: | |
| VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV Extends Enum values: | |
| NVDedicatedAllocation | back to summary |
|---|---|
| private NVDedicatedAllocation() | |