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);
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 the decompression count.stride
is 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
commandBuffer
must be externally synchronized - Host access to the
VkCommandPool
thatcommandBuffer
was allocated from must be externally synchronized ::