vkCmdDecompressMemoryIndirectCountNV
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);
pub fn cmd_decompress_memory_indirect_count_nv(
command_buffer: vk::CommandBuffer,
indirect_commands_address: vk::DeviceAddress,
indirect_commands_count_address: vk::DeviceAddress,
stride: u32,
);
commandBufferis the command buffer into which the command will be recorded.indirectCommandsAddressis the device address containing decompression parameters laid out as an array of VkDecompressMemoryRegionNV structures.indirectCommandsCountAddressis the device address containing a 32-bit integer value specifying the decompression count.strideis the byte stride between successive sets of decompression parameters located starting fromindirectCommandsAddress.
Each region specified in indirectCommandsAddress is decompressed from
the source to destination region based on the specified
decompressionMethod.
Valid Usage
VUID-vkCmdDecompressMemoryIndirectCountNV-None-07692
The memoryDecompression feature
must be enabled
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-indirectCommandsAddress-07695
indirectCommandsAddress must be a multiple of 4
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-parameter
commandBuffer must be a valid VkCommandBuffer handle
VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-parameter
indirectCommandsAddress must be a valid VkDeviceAddress value
VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-parameter
indirectCommandsCountAddress must be a valid VkDeviceAddress value
VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-recording
commandBuffer must be in the recording state
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
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized