Package org.lwjgl.vulkan
Class NVMemoryDecompression
java.lang.Object
org.lwjgl.vulkan.NVMemoryDecompression
This extension adds support for performing memory to memory decompression.
- Name String
VK_NV_memory_decompression- Extension Type
- Device extension
- Registered Extension Number
- 428
- Revision
- 1
- Extension and Version Dependencies
VK_KHR_get_physical_device_properties2or Version 1.1 andVK_KHR_buffer_device_addressor Version 1.2- Contact
- Vikram Kushwaha vkushwaha-nv
Other Extension Metadata
- Last Modified Date
- 2022-01-31
- Contributors
- Vikram Kushwaha, NVIDIA
- Jeff Bolz, NVIDIA
- Christoph Kubisch, NVIDIA
- Piers Daniell, NVIDIA
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final longVkMemoryDecompressionMethodFlagBitsNV - List the supported memory decompression methodsstatic final StringThe extension name.static final intThe extension specification version.static final intExtendsVkStructureType.static final intExtendsVkStructureType. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidnvkCmdDecompressMemoryNV(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, int decompressRegionCount, long pDecompressMemoryRegions) Unsafe version of:CmdDecompressMemoryNVstatic voidvkCmdDecompressMemoryIndirectCountNV(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, long indirectCommandsAddress, long indirectCommandsCountAddress, int stride) Indirect decompress data between memory regions.static voidvkCmdDecompressMemoryNV(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, VkDecompressMemoryRegionNV.Buffer pDecompressMemoryRegions) Decompress data between memory regions.
-
Field Details
-
VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION
public static final int VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSIONThe extension specification version.- See Also:
-
VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME
The extension name.- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NVExtendsVkStructureType.Enum values:
- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NVExtendsVkStructureType.Enum values:
- See Also:
-
VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV
public static final long VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NVVkMemoryDecompressionMethodFlagBitsNV - List the supported memory decompression methodsDescription
MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NVspecifies that the GDeflate 1.0 algorithm is used to decompress data.
- See Also:
-
-
Method Details
-
nvkCmdDecompressMemoryNV
public static void nvkCmdDecompressMemoryNV(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, int decompressRegionCount, long pDecompressMemoryRegions) Unsafe version of:CmdDecompressMemoryNV- Parameters:
decompressRegionCount- the number of memory regions to decompress.
-
vkCmdDecompressMemoryNV
public static void vkCmdDecompressMemoryNV(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, VkDecompressMemoryRegionNV.Buffer pDecompressMemoryRegions) Decompress data between memory regions.C Specification
To decompress data between one or more memory regions call:
void vkCmdDecompressMemoryNV( VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, const VkDecompressMemoryRegionNV* pDecompressMemoryRegions);Description
Each region specified in
pDecompressMemoryRegionsis decompressed from the source to destination region based on the specified decompression method.Valid Usage
- The
memoryDecompressionfeature must be enabled
Valid Usage (Implicit)
commandBuffermust be a validVkCommandBufferhandlepDecompressMemoryRegionsmust be a valid pointer to an array ofdecompressRegionCountvalidVkDecompressMemoryRegionNVstructurescommandBuffermust be in the recording state- The
VkCommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
decompressRegionCountmust be greater than 0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
Command Buffer Levels Render Pass Scope Video Coding Scope Supported Queue Types Command Type Primary Secondary Outside Outside Graphics Compute Action See Also
- Parameters:
commandBuffer- the command buffer into which the command will be recorded.pDecompressMemoryRegions- a pointer to an array ofdecompressRegionCountVkDecompressMemoryRegionNVstructures specifying decompression parameters.
- The
-
vkCmdDecompressMemoryIndirectCountNV
public static void vkCmdDecompressMemoryIndirectCountNV(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, long indirectCommandsAddress, long indirectCommandsCountAddress, int stride) Indirect decompress data between memory regions.C Specification
To decompress data between one or more memory regions by specifying decompression parameters indirectly in a buffer, call:
void vkCmdDecompressMemoryIndirectCountNV( VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress, VkDeviceAddress indirectCommandsCountAddress, uint32_t stride);Description
Each region specified in
indirectCommandsAddressis decompressed from the source to destination region based on the specified decompression method.Valid Usage
- The
memoryDecompressionfeature must be enabled - If
indirectCommandsAddresscomes from a non-sparse buffer then it must be bound completely and contiguously to a singleVkDeviceMemoryobject - The
VkBufferthatindirectCommandsAddresscomes from must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BITbit set offsetmust be a multiple of 4- If
indirectCommandsCountAddresscomes from a non-sparse buffer then it must be bound completely and contiguously to a singleVkDeviceMemoryobject - The
VkBufferthatindirectCommandsCountAddresscomes from must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BITbit set indirectCommandsCountAddressmust be a multiple of 4- The count stored in
indirectCommandsCountAddressmust be less than or equal toVkPhysicalDeviceMemoryDecompressionPropertiesNV::maxDecompressionIndirectCount stridemust be a multiple of 4 and must be greater than or equal to sizeof(VkDecompressMemoryRegionNV)- If the count stored in
indirectCommandsCountAddressis equal to 1,(offset + sizeof(must be less than or equal to the size of theVkDecompressMemoryRegionNV))VkBufferthatindirectCommandsAddresscomes from - If the count stored in
indirectCommandsCountAddressis greater than 1,indirectCommandsAddress+ sizeof(VkDecompressMemoryRegionNV) +(stride × (count stored in countBuffer - 1))must be less than or equal to the last valid address in theVkBufferthatindirectCommandsAddresswas created from
Valid Usage (Implicit)
commandBuffermust be a validVkCommandBufferhandlecommandBuffermust be in the recording state- The
VkCommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
Command Buffer Levels Render Pass Scope Video Coding Scope Supported Queue Types Command Type Primary Secondary Outside Outside Graphics Compute Action - Parameters:
commandBuffer- the command buffer into which the command will be recorded.indirectCommandsAddress- the device address containing decompression parameters laid out as an array ofVkDecompressMemoryRegionNVstructures.indirectCommandsCountAddress- the device address containing the decompression count.stride- the byte stride between successive sets of decompression parameters located starting fromindirectCommandsAddress.
- The
-