Structures

VkClusterAccelerationStructureCommandsInfoNV

Structure describing parameters for building for moving an acceleration structure

The VkClusterAccelerationStructureCommandsInfoNV structure is defined as:

typedef struct VkClusterAccelerationStructureCommandsInfoNV {
    VkStructureType sType;
    void* pNext;
    VkClusterAccelerationStructureInputInfoNV input;
    VkDeviceAddress dstImplicitData;
    VkDeviceAddress scratchData;
    VkStridedDeviceAddressRegionKHR dstAddressesArray;
    VkStridedDeviceAddressRegionKHR dstSizesArray;
    VkStridedDeviceAddressRegionKHR srcInfosArray;
    VkDeviceAddress srcInfosCount;
    VkClusterAccelerationStructureAddressResolutionFlagsNV addressResolutionFlags;
} VkClusterAccelerationStructureCommandsInfoNV;

input::opType

Format of srcInfosArray

VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV

VkClusterAccelerationStructureMoveObjectsInfoNV

VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV

VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV

VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV

VkClusterAccelerationStructureBuildTriangleClusterInfoNV

VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV

VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV

VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV

VkClusterAccelerationStructureInstantiateClusterInfoNV

  • srcInfosCount is the device address of memory containing the count of number of build or move operations to perform. The actual value is the minimum of this value and the value specified in input::maxAccelerationStructureCount. If this value is 0, the count is determined by input::maxAccelerationStructureCount alone.
  • addressResolutionFlags is a bitmask of VkClusterAccelerationStructureAddressResolutionFlagBitsNV values specifying how an implementation will interpret the device addresses in this structure.

Valid Usage

VUID-VkClusterAccelerationStructureCommandsInfoNV-opMode-10466

If VkClusterAccelerationStructureInputInfoNV::opMode is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV, dstImplicitData must be a valid address

VUID-VkClusterAccelerationStructureCommandsInfoNV-opMode-10467

If VkClusterAccelerationStructureInputInfoNV::opMode is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV and input::opType is not VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV, the memory in dstImplicitData must be equal to or larger than the VkAccelerationStructureBuildSizesInfoKHR::accelerationStructureSize value returned from vkGetClusterAccelerationStructureBuildSizesNV with same input parameters

VUID-VkClusterAccelerationStructureCommandsInfoNV-opMode-10468

If VkClusterAccelerationStructureInputInfoNV::opMode is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV and input::opType is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV, the memory in dstImplicitData must be equal to or larger than the sum of all the built acceleration structures that are being moved

VUID-VkClusterAccelerationStructureCommandsInfoNV-input-10469

If input::opType is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV, the total memory moved must not be larger than the size provided in VkClusterAccelerationStructureMoveObjectsInputNV::maxMovedBytes

VUID-VkClusterAccelerationStructureCommandsInfoNV-opMode-10470

If VkClusterAccelerationStructureInputInfoNV::opMode is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV, dstSizesArray must be a valid address

VUID-VkClusterAccelerationStructureCommandsInfoNV-opMode-10471

If VkClusterAccelerationStructureInputInfoNV::opMode is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV, the address in dstAddressesArray must be a valid address with sizes of individual buffers large enough to accommodate built or moved clusters

VUID-VkClusterAccelerationStructureCommandsInfoNV-opMode-10472

If VkClusterAccelerationStructureInputInfoNV::opMode is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV, the buffers in dstAddressesArray must not overlap

VUID-VkClusterAccelerationStructureCommandsInfoNV-opMode-10473

If VkClusterAccelerationStructureInputInfoNV::opMode is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV, the addresses in dstAddressesArray must be aligned based on the cluster acceleration structure type and its alignment properties as described in VkPhysicalDeviceClusterAccelerationStructurePropertiesNV

VUID-VkClusterAccelerationStructureCommandsInfoNV-dstAddressesArray-10474

The stride in dstAddressesArray must be greater than or equal to 8

VUID-VkClusterAccelerationStructureCommandsInfoNV-dstSizesArray-10475

The stride in dstSizesArray must be greater than or equal to 4

VUID-VkClusterAccelerationStructureCommandsInfoNV-srcInfosArray-10476

The stride in srcInfosArray must be greater than the type of structure the address is describing

VUID-VkClusterAccelerationStructureCommandsInfoNV-input-10477

If input::opType is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV, then depending on the VkClusterAccelerationStructureInputInfoNV::opMode, dstImplicitData or addresses specified in dstAddressesArraymust be aligned to VkPhysicalDeviceClusterAccelerationStructurePropertiesNV::clusterByteAlignment

VUID-VkClusterAccelerationStructureCommandsInfoNV-input-10478

If input::opType is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV, then depending on the VkClusterAccelerationStructureInputInfoNV::opMode, dstImplicitData or addresses specified in dstAddressesArraymust be aligned to VkPhysicalDeviceClusterAccelerationStructurePropertiesNV::clusterTemplateByteAlignment

VUID-VkClusterAccelerationStructureCommandsInfoNV-input-10479

If input::opType is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV, then depending on the VkClusterAccelerationStructureInputInfoNV::opMode, dstImplicitData or addresses specified in dstAddressesArraymust be aligned to VkPhysicalDeviceClusterAccelerationStructurePropertiesNV::clusterByteAlignment

VUID-VkClusterAccelerationStructureCommandsInfoNV-input-10482

If input::opType is VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV, the total and per argument number of cluster acceleration structures referenced in srcInfosArray must be equal or less than the maximum values with which memory requirements were queried in vkGetClusterAccelerationStructureBuildSizesNV with VkClusterAccelerationStructureOpInputNV::pClustersBottomLevel