org.lwjgl.vulkan.NVDedicatedAllocation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lwjgl-vulkan Show documentation
Show all versions of lwjgl-vulkan Show documentation
A new generation graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms.
/*
* Copyright LWJGL. All rights reserved.
* License terms: https://www.lwjgl.org/license
* MACHINE GENERATED FILE, DO NOT EDIT
*/
package org.lwjgl.vulkan;
/**
* 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 =
* {
* VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV, // sType
* NULL, // pNext
* VK_TRUE, // dedicatedAllocation
* };
*
* VkImageCreateInfo imageCreateInfo =
* {
* VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // sType
* &dedicatedImageInfo // pNext
* // 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 =
* {
* VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV, // 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);
*
*
* - Name String
* - {@code VK_NV_dedicated_allocation}
* - Extension Type
* - Device extension
* - Registered Extension Number
* - 27
* - Revision
* - 1
* - Extension and Version Dependencies
*
* - Requires Vulkan 1.0
*
* - Contact
*
* - Jeff Bolz @jbolz
*
* - Last Modified Date
* - 2016-05-31
* - IP Status
* - No known IP claims.
* - Contributors
*
* - Jeff Bolz, NVIDIA
*
*
*/
public final class NVDedicatedAllocation {
/** The extension specification version. */
public static final int VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1;
/** The extension name. */
public static final String VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation";
/**
* Extends {@code VkStructureType}.
*
* Enum values:
*
*
* - {@link #VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV}
* - {@link #VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV}
* - {@link #VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV}
*
*/
public static final int
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002;
private NVDedicatedAllocation() {}
}