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);
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 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 decompression
method.
Valid Usage
VUID-vkCmdDecompressMemoryIndirectCountNV-None-07692
The memoryDecompression feature
must be enabled
VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07693
If indirectCommandsAddress comes from a non-sparse buffer then it
must be bound completely and contiguously to a single
VkDeviceMemory object
VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07694
The VkBuffer that indirectCommandsAddress comes from must
have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit
set
VUID-vkCmdDecompressMemoryIndirectCountNV-offset-07695
offset must be a multiple of 4
VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07696
If indirectCommandsCountAddress comes from a non-sparse buffer
then it must be bound completely and contiguously to a single
VkDeviceMemory object
VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07697
The VkBuffer that indirectCommandsCountAddress comes from
must have been created with the
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit 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
VkPhysicalDeviceMemoryDecompressionPropertiesNV::maxDecompressionIndirectCount
VUID-vkCmdDecompressMemoryIndirectCountNV-stride-07700
stride must be a multiple of 4 and must be greater than or
equal to sizeof(VkDecompressMemoryRegionNV)
VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07701
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
VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07702
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)
VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-parameter
commandBuffer must be a valid VkCommandBuffer handle
VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-recording
commandBuffer must be in the recording state
VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-cmdpool
The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations
VUID-vkCmdDecompressMemoryIndirectCountNV-renderpass
This command must only be called outside of a render pass instance
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 ::