Function Prototype

vkCmdCopyAccelerationStructureNV

Copy an acceleration structure
primary / secondary
outside
compute
action

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