Top Description Fields Constructors Methods
org.lwjgl.vulkan

public Class NVMemoryDecompression

extends Object
Class Inheritance
Imports
org.lwjgl.system.*

This extension adds support for performing memory to memory decompression.
VK_NV_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_properties2 and VK_KHR_buffer_device_address
Contact
Other Extension Metadata
Last Modified Date
2022-01-31
Contributors
  • Vikram Kushwaha, NVIDIA
  • Jeff Bolz, NVIDIA
  • Christoph Kubisch, NVIDIA
  • Piers Daniell, NVIDIA

Field Summary

Modifier and TypeField and Description
public static final long
VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV

VkMemoryDecompressionMethodFlagBitsNV - List the supported memory decompression methods Description

public static final String
public static final int
VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION

The extension specification version.

public static final int
public static final int

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public static void
nvkCmdDecompressMemoryNV(VkCommandBuffer commandBuffer, int
the number of memory regions to decompress.
decompressRegionCount
,
long pDecompressMemoryRegions)

Unsafe version of: CmdDecompressMemoryNV

public static void
vkCmdDecompressMemoryIndirectCountNV(VkCommandBuffer
the command buffer into which the command will be recorded.
commandBuffer
,
long
the device address containing decompression parameters laid out as an array of VkDecompressMemoryRegionNV structures.
indirectCommandsAddress
,
long
the device address containing the decompression count.
indirectCommandsCountAddress
,
int
the byte stride between successive sets of decompression parameters located starting from indirectCommandsAddress.
stride
)

Indirect decompress data between memory regions.

public static void
vkCmdDecompressMemoryNV(VkCommandBuffer
the command buffer into which the command will be recorded.
commandBuffer
,
VkDecompressMemoryRegionNV.Buffer
a pointer to an array of decompressRegionCount VkDecompressMemoryRegionNV structures specifying decompression parameters.
pDecompressMemoryRegions
)

Decompress data between memory regions.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NVback to summary
public static final long VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV

VkMemoryDecompressionMethodFlagBitsNV - List the supported memory decompression methods

Description
VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAMEback to summary
public static final String VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME

The extension name.

VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSIONback to summary
public static final int VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION

The extension specification version.

VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NVback to summary
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV

Extends VkStructureType.

Enum values:
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NVback to summary
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV

Extends VkStructureType.

Enum values:

Constructor Detail

NVMemoryDecompressionback to summary
protected NVMemoryDecompression()

Method Detail

nvkCmdDecompressMemoryNVback to summary
public static void nvkCmdDecompressMemoryNV(VkCommandBuffer commandBuffer, int decompressRegionCount, long pDecompressMemoryRegions)

Unsafe version of: CmdDecompressMemoryNV

Parameters
decompressRegionCount:int

the number of memory regions to decompress.

vkCmdDecompressMemoryIndirectCountNVback to summary
public static void vkCmdDecompressMemoryIndirectCountNV(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 indirectCommandsAddress is decompressed from the source to destination region based on the specified decompression method.

Valid Usage
  • The memoryDecompression feature must be enabled
  • If indirectCommandsAddress comes from a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object
  • The VkBuffer that indirectCommandsAddress comes from must have been created with the BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
  • offset must be a multiple of 4
  • If indirectCommandsCountAddress comes from a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object
  • The VkBuffer that indirectCommandsCountAddress comes from must have been created with the BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
  • indirectCommandsCountAddress must be a multiple of 4
  • The count stored in indirectCommandsCountAddress must be less than or equal to VkPhysicalDeviceMemoryDecompressionPropertiesNV::maxDecompressionIndirectCount
  • stride must be a multiple of 4 and must be greater than or equal to sizeof(VkDecompressMemoryRegionNV)
  • If the count stored in indirectCommandsCountAddress is equal to 1, (offset + sizeof(VkDecompressMemoryRegionNV)) must be less than or equal to the size of the VkBuffer that indirectCommandsAddress comes from
  • If the count stored in indirectCommandsCountAddress is greater than 1, indirectCommandsAddress + sizeof(VkDecompressMemoryRegionNV) + (stride × (count stored in countBuffer - 1)) must be less than or equal to the last valid address in the VkBuffer that indirectCommandsAddress was created from
Valid Usage (Implicit)
  • commandBuffer must be a valid VkCommandBuffer handle
  • commandBuffer must be in the recording state
  • The VkCommandPool that commandBuffer was 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 commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutsideOutsideGraphics ComputeAction
Parameters
commandBuffer:VkCommandBuffer

the command buffer into which the command will be recorded.

indirectCommandsAddress:long

the device address containing decompression parameters laid out as an array of VkDecompressMemoryRegionNV structures.

indirectCommandsCountAddress:long

the device address containing the decompression count.

stride:int

the byte stride between successive sets of decompression parameters located starting from indirectCommandsAddress.

vkCmdDecompressMemoryNVback to summary
public static void vkCmdDecompressMemoryNV(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 pDecompressMemoryRegions is decompressed from the source to destination region based on the specified decompression method.

Valid Usage
Valid Usage (Implicit)
  • commandBuffer must be a valid VkCommandBuffer handle
  • pDecompressMemoryRegions must be a valid pointer to an array of decompressRegionCount valid VkDecompressMemoryRegionNV structures
  • commandBuffer must be in the recording state
  • The VkCommandPool that commandBuffer was 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
  • decompressRegionCount must be greater than 0
Host Synchronization
  • Host access to commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutsideOutsideGraphics ComputeAction
See Also

VkDecompressMemoryRegionNV

Parameters
commandBuffer:VkCommandBuffer

the command buffer into which the command will be recorded.

pDecompressMemoryRegions:VkDecompressMemoryRegionNV.Buffer

a pointer to an array of decompressRegionCount VkDecompressMemoryRegionNV structures specifying decompression parameters.