vkCmdDecompressMemoryIndirectCountEXT
To decompress data between one or more memory regions by specifying decompression parameters indirectly in a buffer, call:
void vkCmdDecompressMemoryIndirectCountEXT(
VkCommandBuffer commandBuffer,
VkMemoryDecompressionMethodFlagsEXT decompressionMethod,
VkDeviceAddress indirectCommandsAddress,
VkDeviceAddress indirectCommandsCountAddress,
uint32_t maxDecompressionCount,
uint32_t stride);
pub fn cmd_decompress_memory_indirect_count_ext(
command_buffer: vk::CommandBuffer,
decompression_method: vk::MemoryDecompressionMethodFlagsEXT,
indirect_commands_address: vk::DeviceAddress,
indirect_commands_count_address: vk::DeviceAddress,
max_decompression_count: u32,
stride: u32,
);
commandBufferis the command buffer into which the command will be recorded.decompressionMethodis a bitmask of VkMemoryDecompressionMethodFlagBitsEXT with a single bit set specifying the method used to decompress data.indirectCommandsAddressis the device address containing decompression parameters laid out as an array of VkDecompressMemoryRegionEXT structures.indirectCommandsCountAddressis the device address containing a 32-bit integer value specifying the decompression count.maxDecompressionCountis maximum number of decompressions that will be executed. The actual number of executed decompressions is the minimum of the count specified inindirectCommandsCountAddressandmaxDecompressionCount.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-vkCmdDecompressMemoryIndirectCountEXT-None-07692
The memoryDecompression feature
must be enabled
VUID-vkCmdDecompressMemoryIndirectCountEXT-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-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsAddress-07695
indirectCommandsAddress must be a multiple of 4
VUID-vkCmdDecompressMemoryIndirectCountEXT-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-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsCountAddress-07698
indirectCommandsCountAddress must be a multiple of 4
VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsCountAddress-07699
The count stored in indirectCommandsCountAddress must be less
than or equal to
VkPhysicalDeviceMemoryDecompressionPropertiesEXT::maxDecompressionIndirectCount
VUID-vkCmdDecompressMemoryIndirectCountEXT-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-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-07690
The decompressionMethod must have a single bit set
VUID-vkCmdDecompressMemoryIndirectCountEXT-stride-11767
stride must be a multiple of 4 and must be greater than or
equal to sizeof(VkDecompressMemoryRegionEXT)
VUID-vkCmdDecompressMemoryIndirectCountEXT-maxDecompressionCount-11768
maxDecompressionCount must be less than or equal to
VkPhysicalDeviceMemoryDecompressionPropertiesEXT::maxDecompressionIndirectCount
VUID-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-11769
If decompressionMethod is
VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT, then all
values in VkDecompressMemoryRegionEXT::decompressedSizemust be less than or equal to 65536 bytes
VUID-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-11810
decompressionMethod must be a valid bit specified in
VkPhysicalDeviceMemoryDecompressionPropertiesEXT::decompressionMethods
Valid Usage (Implicit)
VUID-vkCmdDecompressMemoryIndirectCountEXT-commandBuffer-parameter
commandBuffer must be a valid VkCommandBuffer handle
VUID-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-parameter
decompressionMethod must be a valid combination of VkMemoryDecompressionMethodFlagBitsEXT values
VUID-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-requiredbitmask
decompressionMethod must not be 0
VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsAddress-parameter
indirectCommandsAddress must be a valid VkDeviceAddress value
VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsCountAddress-parameter
indirectCommandsCountAddress must be a valid VkDeviceAddress value
VUID-vkCmdDecompressMemoryIndirectCountEXT-commandBuffer-recording
commandBuffer must be in the recording state
VUID-vkCmdDecompressMemoryIndirectCountEXT-commandBuffer-cmdpool
The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_COMPUTE_BIT, or VK_QUEUE_GRAPHICS_BIT operations
VUID-vkCmdDecompressMemoryIndirectCountEXT-renderpass
This command must only be called outside of a render pass instance
VUID-vkCmdDecompressMemoryIndirectCountEXT-suspended
This command must not be called between suspended render pass instances
VUID-vkCmdDecompressMemoryIndirectCountEXT-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