Class NVMemoryDecompression

java.lang.Object
org.lwjgl.vulkan.NVMemoryDecompression

public class NVMemoryDecompression extends Object
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_properties2 or Version 1.1 and VK_KHR_buffer_device_address or Version 1.2
Contact
Other Extension Metadata
Last Modified Date
2022-01-31
Contributors
  • Vikram Kushwaha, NVIDIA
  • Jeff Bolz, NVIDIA
  • Christoph Kubisch, NVIDIA
  • Piers Daniell, NVIDIA
  • Field Details

  • 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 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 - the command buffer into which the command will be recorded.
      pDecompressMemoryRegions - a pointer to an array of decompressRegionCount VkDecompressMemoryRegionNV structures specifying decompression parameters.
    • 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 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 - the command buffer into which the command will be recorded.
      indirectCommandsAddress - the device address containing decompression parameters laid out as an array of VkDecompressMemoryRegionNV structures.
      indirectCommandsCountAddress - the device address containing the decompression count.
      stride - the byte stride between successive sets of decompression parameters located starting from indirectCommandsAddress.