Package org.lwjgl.vulkan
Class KHRDedicatedAllocation
- java.lang.Object
-
- org.lwjgl.vulkan.KHRDedicatedAllocation
-
public final class KHRDedicatedAllocation extends java.lang.Object
This extension enables resources to be bound to a dedicated allocation, rather than suballocated. For any particular resource, applications can query whether a dedicated allocation is recommended, in which case using a dedicated allocation may improve the performance of access to that resource. Normal device memory allocations must support multiple resources per allocation, memory aliasing and sparse binding, which could interfere with some optimizations. Applications should query the implementation for when a dedicated allocation may be beneficial by addingVkMemoryDedicatedRequirementsKHR
to thepNext
chain of theVkMemoryRequirements2
structure passed as thepMemoryRequirements
parameter to a call tovkGetBufferMemoryRequirements2
orvkGetImageMemoryRequirements2
. Certain external handle types and external images or buffers may also depend on dedicated allocations on implementations that associate image or buffer metadata with OS-level memory objects.This extension adds a two small structures to memory requirements querying and memory allocation: a new structure that flags whether an image/buffer should have a dedicated allocation, and a structure indicating the image or buffer that an allocation will be bound to.
Promotion to Vulkan 1.1
All functionality in this extension is included in core Vulkan 1.1, with the KHR suffix omitted. The original type, enum and command names are still available as aliases of the core functionality.
Examples
// Create an image with a dedicated allocation based on the // implementation's preference VkImageCreateInfo imageCreateInfo = { // Image creation parameters }; VkImage image; VkResult result = vkCreateImage( device, &imageCreateInfo, NULL, // pAllocator &image); VkMemoryDedicatedRequirementsKHR dedicatedRequirements = { VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR, NULL, // pNext }; VkMemoryRequirements2 memoryRequirements = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, &dedicatedRequirements, // pNext }; const VkImageMemoryRequirementsInfo2 imageRequirementsInfo = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, NULL, // pNext image }; vkGetImageMemoryRequirements2( device, &imageRequirementsInfo, &memoryRequirements); if (dedicatedRequirements.prefersDedicatedAllocation) { // Allocate memory with VkMemoryDedicatedAllocateInfoKHR::image // pointing to the image we are allocating the memory for VkMemoryDedicatedAllocateInfoKHR dedicatedInfo = { VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR, // sType NULL, // pNext image, // image VK_NULL_HANDLE, // buffer }; VkMemoryAllocateInfo memoryAllocateInfo = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // sType &dedicatedInfo, // pNext memoryRequirements.size, // allocationSize FindMemoryTypeIndex(memoryRequirements.memoryTypeBits), // memoryTypeIndex }; VkDeviceMemory memory; vkAllocateMemory( device, &memoryAllocateInfo, NULL, // pAllocator &memory); // Bind the image to the memory vkBindImageMemory( device, image, memory, 0); } else { // Take the normal memory sub-allocation path }
- Name String
VK_KHR_dedicated_allocation
- Extension Type
- Device extension
- Registered Extension Number
- 128
- Revision
- 3
- Extension and Version Dependencies
- Requires Vulkan 1.0
- Requires
VK_KHR_get_memory_requirements2
- Deprecation state
- Promoted to Vulkan 1.1
- Contact
- James Jones cubanismo
- Last Modified Date
- 2017-09-05
- IP Status
- No known IP claims.
- Interactions and External Dependencies
- Promoted to Vulkan 1.1 Core
- Contributors
- Jeff Bolz, NVIDIA
- Jason Ekstrand, Intel
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
The extension name.static int
VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION
The extension specification version.static int
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHRExtendsVkStructureType
.
-
-
-
Field Detail
-
VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION
The extension specification version.
-
VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
The extension name.
-
-