Package org.lwjgl.vulkan
Class NVDedicatedAllocation
java.lang.Object
org.lwjgl.vulkan.NVDedicatedAllocation
This extension allows device memory to be allocated for a particular buffer or image resource, which on some devices can significantly improve the performance of that resource. Normal device memory allocations must support memory aliasing and sparse binding, which could interfere with optimizations like framebuffer compression or efficient page table usage. This is important for render targets and very large resources, but need not (and probably should not) be used for smaller resources that can benefit from suballocation.
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.
Examples
// 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_allocation
- Name String
VK_NV_dedicated_allocation
- Extension Type
- Device extension
- Registered Extension Number
- 27
- Revision
- 1
- Deprecation State
- Deprecated by
VK_KHR_dedicated_allocation
extension- Which in turn was promoted to Vulkan 1.1
- Deprecated by
- Contact
- Jeff Bolz jeffbolznv
Other Extension Metadata
- Last Modified Date
- 2016-05-31
- IP Status
- No known IP claims.
- Contributors
- Jeff Bolz, NVIDIA
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
The extension name.static final int
The extension specification version.static final int
ExtendsVkStructureType
.static final int
ExtendsVkStructureType
.static final int
ExtendsVkStructureType
. -
Method Summary
-
Field Details
-
VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION
public static final int VK_NV_DEDICATED_ALLOCATION_SPEC_VERSIONThe extension specification version.- See Also:
-
VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME
The extension name.- See Also:
-
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
public static final int VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NVExtendsVkStructureType
.Enum values:
- See Also:
-
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
public static final int VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NVExtendsVkStructureType
.Enum values:
- See Also:
-
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
public static final int VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NVExtendsVkStructureType
.Enum values:
- See Also:
-