Function Prototype

vkCmdCopyAccelerationStructureKHR

Copy an acceleration structure

To copy an acceleration structure call:

void vkCmdCopyAccelerationStructureKHR(
    VkCommandBuffer commandBuffer,
    const VkCopyAccelerationStructureInfoKHR* pInfo);
  • commandBuffer is the command buffer into which the command will be recorded.
  • pInfo is a pointer to a VkCopyAccelerationStructureInfoKHR structure defining the copy operation.

This command copies the pInfo→src acceleration structure to the pInfo→dst acceleration structure in the manner specified by pInfo→mode.

Accesses to pInfo→src and pInfo→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-vkCmdCopyAccelerationStructureKHR-src-11633

The source acceleration structure pInfo→src must have been constructed prior to the execution of this command on the device

VUID-vkCmdCopyAccelerationStructureKHR-src-11634

If the source acceleration structure pInfo→src was constructed through deserialization, all micromap arrays the acceleration structure references that were not replaced by an acceleration structure update command must have been deserialized using the serialized data of the corresponding micromaps used to originally build the acceleration structure prior to the execution of this command on the device

Valid Usage (Implicit)

VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_COMPUTE_BIT operations

VUID-vkCmdCopyAccelerationStructureKHR-renderpass

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

VUID-vkCmdCopyAccelerationStructureKHR-suspended

This command must not be called between suspended render pass instances

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