Function Prototype

vkCmdCopyAccelerationStructureNV

Copy an acceleration structure

To copy an acceleration structure for the VK_NV_ray_tracing extension 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 range of src accessed by this command must be fully backed by physical memory

VUID-vkCmdCopyAccelerationStructureNV-buffer-03719

The range of dst accessed by this command must be fully backed by physical 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

Valid Usage (Implicit)

VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_COMPUTE_BIT operations

VUID-vkCmdCopyAccelerationStructureNV-renderpass

This command must only be called outside of a render pass instance

VUID-vkCmdCopyAccelerationStructureNV-suspended

This command must not be called between suspended render pass instances

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 that commandBuffer was allocated from must be externally synchronized