vkCmdCopyAccelerationStructureNV
To copy an acceleration structure call:
void vkCmdCopyAccelerationStructureNV(
VkCommandBuffer commandBuffer,
VkAccelerationStructureNV dst,
VkAccelerationStructureNV src,
VkCopyAccelerationStructureModeKHR mode);
commandBuffer
is the command buffer into which the command will be recorded.dst
is the target acceleration structure for the copy.src
is the source acceleration structure for the copy.mode
is a VkCopyAccelerationStructureModeKHR value specifying additional operations to perform during the copy.
Accesses to src
and dst
must be synchronized with the
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR
pipeline stage or the
VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
pipeline stage, and an
access type of
VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR
or
VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
as appropriate.
Valid Usage
VUID-vkCmdCopyAccelerationStructureNV-mode-03410
mode
must be
VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
or
VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
VUID-vkCmdCopyAccelerationStructureNV-src-04963
The source acceleration structure src
must have been constructed
prior to the execution of this command
VUID-vkCmdCopyAccelerationStructureNV-src-03411
If mode
is VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
,
src
must have been constructed with
VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
in the
build
VUID-vkCmdCopyAccelerationStructureNV-buffer-03718
The buffer
used to create src
must be bound to device
memory
VUID-vkCmdCopyAccelerationStructureNV-buffer-03719
The buffer
used to create dst
must be bound to device
memory
VUID-vkCmdCopyAccelerationStructureNV-dst-07791
The range of memory backing dst
that is accessed by this command
must not overlap the memory backing src
that is accessed by this
command
VUID-vkCmdCopyAccelerationStructureNV-dst-07792
dst
must be bound completely and contiguously to a single
VkDeviceMemory
object via
vkBindAccelerationStructureMemoryNV
Valid Usage (Implicit)
VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter
commandBuffer
must be a valid VkCommandBuffer handle
VUID-vkCmdCopyAccelerationStructureNV-dst-parameter
dst
must be a valid VkAccelerationStructureNV handle
VUID-vkCmdCopyAccelerationStructureNV-src-parameter
src
must be a valid VkAccelerationStructureNV handle
VUID-vkCmdCopyAccelerationStructureNV-mode-parameter
mode
must be a valid VkCopyAccelerationStructureModeKHR value
VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording
commandBuffer
must be in the recording state
VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool
The VkCommandPool
that commandBuffer
was allocated from must support compute operations
VUID-vkCmdCopyAccelerationStructureNV-renderpass
This command must only be called outside of a render pass instance
VUID-vkCmdCopyAccelerationStructureNV-videocoding
This command must only be called outside of a video coding scope
VUID-vkCmdCopyAccelerationStructureNV-commonparent
Each of commandBuffer
, dst
, and src
must have been created, allocated, or retrieved from the same VkDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized - Host access to the
VkCommandPool
thatcommandBuffer
was allocated from must be externally synchronized ::