Function Prototype

vkCmdDecompressMemoryIndirectCountNV

Indirect decompress data between memory regions

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);
  • commandBuffer is the command buffer into which the command will be recorded.
  • indirectCommandsAddress is the device address containing decompression parameters laid out as an array of VkDecompressMemoryRegionNV structures.
  • indirectCommandsCountAddress is the device address containing a 32-bit integer value specifying the decompression count.
  • stride is the byte stride between successive sets of decompression parameters located starting from indirectCommandsAddress.

Each region specified in indirectCommandsAddress is decompressed from the source to destination region based on the specified decompressionMethod.

Valid Usage

VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07694

indirectCommandsAddress must be a device address allocated to the application from a buffer created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT usage flag set

VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07697

indirectCommandsCountAddress must be a device address allocated to the application from a buffer created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT usage flag set

VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07698

indirectCommandsCountAddress must be a multiple of 4

VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07699

The count stored in indirectCommandsCountAddress must be less than or equal to VkPhysicalDeviceMemoryDecompressionPropertiesEXT::maxDecompressionIndirectCount

VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-11794

All device addresses between indirectCommandsAddress and indirectCommandsAddress + (stride × (count stored in indirectCommandsCountAddress)) - 1 must be in the buffer device address range of the same buffer

VUID-vkCmdDecompressMemoryIndirectCountNV-stride-11770

stride must be a multiple of 4 and must be greater than or equal to sizeof(VkDecompressMemoryRegionNV)

Valid Usage (Implicit)

VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_COMPUTE_BIT, or VK_QUEUE_GRAPHICS_BIT operations

VUID-vkCmdDecompressMemoryIndirectCountNV-renderpass

This command must only be called outside of a render pass instance

VUID-vkCmdDecompressMemoryIndirectCountNV-suspended

This command must not be called between suspended render pass instances

VUID-vkCmdDecompressMemoryIndirectCountNV-videocoding

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