vkCmdBuildPartitionedAccelerationStructuresNV
To build a partitioned top level acceleration structure, call:
void vkCmdBuildPartitionedAccelerationStructuresNV(
VkCommandBuffer commandBuffer,
const VkBuildPartitionedAccelerationStructureInfoNV* pBuildInfo);
commandBufferis the command buffer into which the command is recorded.pBuildInfois a pointer to a VkBuildPartitionedAccelerationStructureInfoNV structure containing parameters required for building a PTLAS.
Accesses to the acceleration structure scratch memory as identified by the
VkBuildPartitionedAccelerationStructureInfoNV::scratchData must
be synchronized with the
VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
pipeline stage and an
access type of
(VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR).
Accesses to each
VkBuildPartitionedAccelerationStructureInfoNV::srcAccelerationStructureData
and
VkBuildPartitionedAccelerationStructureInfoNV::dstAccelerationStructureDatamust be synchronized with 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.
Accesses to memory with input data as identified by any used values of
VkBuildPartitionedAccelerationStructureInfoNV::srcInfos and
VkBuildPartitionedAccelerationStructureInfoNV::srcInfosCountmust be synchronized with the
VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
pipeline stage and an
access type of
VK_ACCESS_INDIRECT_COMMAND_READ_BIT.
Valid Usage
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-partitionedAccelerationStructure-10536
The VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV::partitionedAccelerationStructure
feature must be enabled
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10537
The count specified in pBuildInfo→input::instanceCount for
the build operation must not exceed the value provided in
pInfo→instanceCount when calling
vkGetPartitionedAccelerationStructuresBuildSizesNV to determine
the memory size
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10538
The count specified in
pBuildInfo→input::maxInstancePerPartitionCount for the
build operation must not exceed the value provided in
pInfo→maxInstancePerPartitionCount when calling
vkGetPartitionedAccelerationStructuresBuildSizesNV to determine
the memory size
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10539
The count specified in pBuildInfo→input::partitionCount for
the build operation must not exceed the value provided in
pInfo→partitionCount when calling
vkGetPartitionedAccelerationStructuresBuildSizesNV to determine
the memory size
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10540
The count specified in
pBuildInfo→input::maxInstanceInGlobalPartitionCount for the
build operation must not exceed the value provided in
pInfo→maxInstanceInGlobalPartitionCount when calling
vkGetPartitionedAccelerationStructuresBuildSizesNV to determine
the memory size
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10541
The scratch memory for the partitioned acceleration structure build
specified in pBuildInfo→scratchData must be larger than or equal
to the scratch size queried with
vkGetPartitionedAccelerationStructuresBuildSizesNV
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10542
pBuildInfo→scratchData must be aligned to 256 bytes
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10543
The destination memory of the partitioned acceleration structure build
specified in pBuildInfo→dstAccelerationStructureData must be
larger than or equal to the size queried with
vkGetPartitionedAccelerationStructuresBuildSizesNV
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10544
pBuildInfo→srcAccelerationStructureData must be aligned to 256
bytes
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10545
pBuildInfo→dstAccelerationStructureData must be aligned to 256
bytes
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10546
The number of inputs specified in pBuildInfo→srcInfos must be
greater than or equal to pBuildInfo→srcInfosCount
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10547
The memory region containing the acceleration structure at address
pBuildInfo→srcAccelerationStructureData must not overlap with
scratch memory region at address pBuildInfo→scratchData
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10548
The memory region containing the acceleration structure at address
pBuildInfo→dstAccelerationStructureData must not overlap with
scratch memory region at address pBuildInfo→scratchData
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10549
The memory regions containing the acceleration structures at addresses
pBuildInfo→srcAccelerationStructureData and
pBuildInfo→dstAccelerationStructureData must not overlap with
each other
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10550
The buffer from which the buffer device address for
pBuildInfo→scratchData is queried must have been created with
the VK_BUFFER_USAGE_STORAGE_BUFFER_BIT usage flag
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10551
The buffers from which the buffer device addresses for
pBuildInfo→srcInfos and pBuildInfo→srcInfosCount are
queried must have been created with the
VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
usage flag
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10552
The buffers from which the buffer device addresses for
pBuildInfo→srcAccelerationStructureData and
pBuildInfo→dstAccelerationStructureData are queried must have
been created with the
VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR usage flag
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10553
If pBuildInfo→srcAccelerationStructureData is the address of a
non-sparse buffer then it must be bound completely and contiguously to
a single VkDeviceMemory object
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10554
If pBuildInfo→dstAccelerationStructureData is the address of a
non-sparse buffer then it must be bound completely and contiguously to
a single VkDeviceMemory object
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10555
If pBuildInfo→scratchData is the address of a non-sparse buffer
then it must be bound completely and contiguously to a single
VkDeviceMemory object
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10556
If pBuildInfo→srcInfos is the address of a non-sparse buffer then
it must be bound completely and contiguously to a single
VkDeviceMemory object
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-10557
If pBuildInfo→srcInfosCount is the address of a non-sparse buffer
then it must be bound completely and contiguously to a single
VkDeviceMemory object
Valid Usage (Implicit)
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-commandBuffer-parameter
commandBuffer must be a valid VkCommandBuffer handle
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-pBuildInfo-parameter
pBuildInfo must be a valid pointer to a valid VkBuildPartitionedAccelerationStructureInfoNV structure
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-commandBuffer-recording
commandBuffer must be in the recording state
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-commandBuffer-cmdpool
The VkCommandPool that commandBuffer was allocated from must support compute operations
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-renderpass
This command must only be called outside of a render pass instance
VUID-vkCmdBuildPartitionedAccelerationStructuresNV-videocoding
This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized ::