vkBuildAccelerationStructuresKHR
To build acceleration structures on the host, call:
VkResult vkBuildAccelerationStructuresKHR(
VkDevice device,
VkDeferredOperationKHR deferredOperation,
uint32_t infoCount,
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
pub fn build_acceleration_structures_khr(
device: vk::Device,
deferred_operation: vk::DeferredOperationKHR,
info_count: u32,
p_infos: *const vk::AccelerationStructureBuildGeometryInfoKHR,
pp_build_range_infos: *const *const vk::AccelerationStructureBuildRangeInfoKHR,
) -> vk::Result;
deviceis theVkDevicefor which the acceleration structures are being built.deferredOperationis an optional VkDeferredOperationKHR to request deferral for this command.infoCountis the number of acceleration structures to build. It specifies the number of thepInfosstructures andppBuildRangeInfospointers that must be provided.pInfosis a pointer to an array ofinfoCount
VkAccelerationStructureBuildGeometryInfoKHR structures defining the geometry used to build each acceleration structure.ppBuildRangeInfosis a pointer to an array ofinfoCountpointers to arrays of VkAccelerationStructureBuildRangeInfoKHR structures. EachppBuildRangeInfos[i] is a pointer to an array ofpInfos[i].geometryCount
VkAccelerationStructureBuildRangeInfoKHR structures defining dynamic offsets to the addresses where geometry data is stored, as defined bypInfos[i].
This command fulfills the same task as vkCmdBuildAccelerationStructuresKHR but is executed by the host.
The vkBuildAccelerationStructuresKHR command provides the ability to
initiate multiple acceleration structures builds, however there is no
ordering or synchronization implied between any of the individual
acceleration structure builds.
Valid Usage
VUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581
The VkPhysicalDeviceAccelerationStructureFeaturesKHR::accelerationStructureHostCommands
feature must be enabled
VUID-vkBuildAccelerationStructuresKHR-mode-04628
The mode member of each element of pInfos must be a valid
VkBuildAccelerationStructureModeKHR value
VUID-vkBuildAccelerationStructuresKHR-srcAccelerationStructure-04629
If the srcAccelerationStructure member of any element of
pInfos is not VK_NULL_HANDLE, the
srcAccelerationStructure member must be a valid
VkAccelerationStructureKHR handle
VUID-vkBuildAccelerationStructuresKHR-pInfos-04630
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, its
srcAccelerationStructure member must not be VK_NULL_HANDLE
VUID-vkBuildAccelerationStructuresKHR-pInfos-03708
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR,
srcAccelerationStructure must be fully backed by physical memory
VUID-vkBuildAccelerationStructuresKHR-pInfos-03403
The srcAccelerationStructure member of any element of pInfosmust not be the same acceleration structure as the
dstAccelerationStructure member of any other element of
pInfos
VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698
The dstAccelerationStructure member of any element of pInfosmust not be the same acceleration structure as the
dstAccelerationStructure member of any other element of
pInfos
VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800
The dstAccelerationStructure member of any element of pInfosmust be a valid VkAccelerationStructureKHR handle
VUID-vkBuildAccelerationStructuresKHR-pInfos-03707
For each element of pInfos, its dstAccelerationStructure
member must be fully backed by physical memory
VUID-vkBuildAccelerationStructuresKHR-pInfos-03699
For each element of pInfos, if its type member is
VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, its
dstAccelerationStructure member must have been created with a
value of VkAccelerationStructureCreateInfoKHR::type equal to
either VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR or
VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
VUID-vkBuildAccelerationStructuresKHR-pInfos-03700
For each element of pInfos, if its type member is
VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, its
dstAccelerationStructure member must have been created with a
value of VkAccelerationStructureCreateInfoKHR::type equal to
either VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR or
VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
VUID-vkBuildAccelerationStructuresKHR-pInfos-03663
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR,
inactive primitives in its
srcAccelerationStructure member must not be made active
VUID-vkBuildAccelerationStructuresKHR-pInfos-03664
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, active primitives
in its srcAccelerationStructure member must not be made
inactive
VUID-vkBuildAccelerationStructuresKHR-pInfos-03709
For each element of pInfos, if an acceleration structure is
referenced by the geometry.instances.data member of any element of
pGeometries or ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_INSTANCES_KHR, it must be fully backed by
physical memory
VUID-vkBuildAccelerationStructuresKHR-None-03407
The dstAccelerationStructure member of any element of pInfosmust not be referenced by the geometry.instances.data member of
any element of pGeometries or ppGeometries with a
geometryType of VK_GEOMETRY_TYPE_INSTANCES_KHR in any other
element of pInfos
VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701
The range of memory backing the dstAccelerationStructure member of
any element of pInfos that is accessed by this command must not
overlap the memory backing the srcAccelerationStructure member of
any other element of pInfos with a mode equal to
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, which is accessed
by this command
VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702
The range of memory backing the dstAccelerationStructure member of
any element of pInfos that is accessed by this command must not
overlap the memory backing the dstAccelerationStructure member of
any other element of pInfos, which is accessed by this command
VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703
The range of memory backing the dstAccelerationStructure member of
any element of pInfos that is accessed by this command must not
overlap the memory backing the scratchData member of any element
of pInfos (including the same element), which is accessed by this
command
VUID-vkBuildAccelerationStructuresKHR-scratchData-03704
The range of memory backing the scratchData member of any element
of pInfos that is accessed by this command must not overlap the
memory backing the scratchData member of any other element of
pInfos, which is accessed by this command
VUID-vkBuildAccelerationStructuresKHR-scratchData-03705
The range of memory backing the scratchData member of any element
of pInfos that is accessed by this command must not overlap the
memory backing the srcAccelerationStructure member of any element
of pInfos with a mode equal to
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR (including the
same element), which is accessed by this command
VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706
The range of memory backing the dstAccelerationStructure member of
any element of pInfos that is accessed by this command must not
overlap the memory backing any acceleration structure referenced by the
geometry.instances.data member of any element of pGeometries
or ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_INSTANCES_KHR in any other element of
pInfos, which is accessed by this command
VUID-vkBuildAccelerationStructuresKHR-pInfos-03667
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, its
srcAccelerationStructure member must have previously been
constructed with
VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR set in
VkAccelerationStructureBuildGeometryInfoKHR::flags in the
build
VUID-vkBuildAccelerationStructuresKHR-pInfos-03668
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, its
srcAccelerationStructure and dstAccelerationStructure
members must either be the same VkAccelerationStructureKHR, or
not have any memory aliasing
VUID-vkBuildAccelerationStructuresKHR-pInfos-03758
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, its
geometryCount member must have the same value which was specified
when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03759
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, its flags
member must have the same value which was specified when
srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03760
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, its type
member must have the same value which was specified when
srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03761
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, its geometryType
member must have the same value which was specified when
srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03762
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, its flags member
must have the same value which was specified when
srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03763
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR, its
geometry.triangles.vertexFormat member must have the same value
which was specified when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03764
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR, its
geometry.triangles.maxVertex member must have the same value
which was specified when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03765
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR, its
geometry.triangles.indexType member must have the same value
which was specified when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03766
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR, if its
geometry.triangles.transformData address was NULL when
srcAccelerationStructure was last built, then it must be NULL
VUID-vkBuildAccelerationStructuresKHR-pInfos-03767
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR, if its
geometry.triangles.transformData address was not NULL when
srcAccelerationStructure was last built, then it must not be
NULL
VUID-vkBuildAccelerationStructuresKHR-pInfos-10898
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX, the
numTriangles member of the
VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX
structure in the pNext chain must have the same value which was
specified when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-10899
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX, the
numVertices member of the
VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX
structure in the pNext chain must have the same value which was
specified when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-10900
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX, the
maxPrimitiveIndex member of the
VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX
structure in the pNext chain must have the same value which was
specified when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-10901
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX, the
maxGeometryIndex member of the
VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX
structure in the pNext chain must have the same value which was
specified when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-10902
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX, the
format member of the
VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX
structure in the pNext chain must have the same value which was
specified when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-10903
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX, the
dataSize member of the
VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX
structure in the pNext chain must have the same value which was
specified when srcAccelerationStructure was last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03768
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR, and
geometry.triangles.indexType is not VK_INDEX_TYPE_NONE_KHR,
then the value of each index referenced must be the same as the
corresponding index value when srcAccelerationStructure was last
built
VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, then for each
VkAccelerationStructureGeometryKHR structure referred to by its
pGeometries or ppGeometries members, the
primitiveCount member of its corresponding
VkAccelerationStructureBuildRangeInfoKHR structure must have the
same value which was specified when srcAccelerationStructure was
last built
VUID-vkBuildAccelerationStructuresKHR-pInfos-03801
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_INSTANCES_KHR, the corresponding
ppBuildRangeInfos[i][j].primitiveCount must be less than or equal to
VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxInstanceCount
VUID-vkBuildAccelerationStructuresKHR-pInfos-10126
For each pInfos[i], dstAccelerationStructure must have been
created with a value of
VkAccelerationStructureCreateInfoKHR::size greater than or
equal to either:
- the memory size required by the build operation, as returned by
vkGetAccelerationStructureBuildSizesKHR with
pBuildInfo=pInfos[i] and with each element of thepMaxPrimitiveCountsarray greater than or equal to the equivalentppBuildRangeInfos[i][j].primitiveCountvalues forjin [0,pInfos[i].geometryCount) or, - the result of querying the corresponding
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR, if updating a compacted acceleration structure
VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678
Any previous deferred operation that was associated with
deferredOperation must be complete
VUID-vkBuildAccelerationStructuresKHR-pInfos-11702
Each element of ppBuildRangeInfos[i] must be a valid pointer to
an array of pInfos[i].geometryCount
VkAccelerationStructureBuildRangeInfoKHR structures
VUID-vkBuildAccelerationStructuresKHR-pInfos-11703
For each element of pInfos, its dstAccelerationStructure
member must have been created with
vkCreateAccelerationStructureKHR
VUID-vkBuildAccelerationStructuresKHR-pInfos-03722
For each element of pInfos, its dstAccelerationStructure
member must be bound to host-visible device memory
VUID-vkBuildAccelerationStructuresKHR-pInfos-11706
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, its
srcAccelerationStructure member must have been created with
vkCreateAccelerationStructureKHR
VUID-vkBuildAccelerationStructuresKHR-pInfos-03723
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR the buffer
used to create its srcAccelerationStructure member must be bound
to host-visible device memory
VUID-vkBuildAccelerationStructuresKHR-pInfos-11704
For each element of pInfos, the acceleration structure referenced
by the geometry.instances.data member of any element of
pGeometries or ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_INSTANCES_KHR must have been created with
vkCreateAccelerationStructureKHR
VUID-vkBuildAccelerationStructuresKHR-pInfos-03724
For each element of pInfos, each acceleration structure referenced
by the geometry.instances.data member of any element of
pGeometries or ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_INSTANCES_KHR must be bound to host-visible
device memory
VUID-vkBuildAccelerationStructuresKHR-pInfos-12244
If pInfos[i].mode is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR, and N is not 0,
all addresses between pInfos[i].scratchData.hostAddress and
pInfos[i].scratchData.hostAddress + N - 1 must
be valid host memory, where N is given by the buildScratchSize
member of the VkAccelerationStructureBuildSizesInfoKHR structure
returned from a call to vkGetAccelerationStructureBuildSizesKHR
with an identical VkAccelerationStructureBuildGeometryInfoKHR
structure and primitive count
VUID-vkBuildAccelerationStructuresKHR-pInfos-12245
If pInfos[i].mode is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, and N is not 0,
all addresses between pInfos[i].scratchData.hostAddress and
pInfos[i].scratchData.hostAddress + N - 1 must
be valid host memory, where N is given by the updateScratchSize
member of the VkAccelerationStructureBuildSizesInfoKHR structure
returned from a call to vkGetAccelerationStructureBuildSizesKHR
with an identical VkAccelerationStructureBuildGeometryInfoKHR
structure and primitive count
VUID-vkBuildAccelerationStructuresKHR-pInfos-03771
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_TRIANGLES_KHR,
geometry.triangles.vertexData.hostAddress must be a valid host
address
VUID-vkBuildAccelerationStructuresKHR-pInfos-03772
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_TRIANGLES_KHR, if
geometry.triangles.indexType is not VK_INDEX_TYPE_NONE_KHR,
geometry.triangles.indexData.hostAddress must be a valid host
address
VUID-vkBuildAccelerationStructuresKHR-pInfos-03773
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_TRIANGLES_KHR, if
geometry.triangles.transformData.hostAddress is not 0, it must
be a valid host address
VUID-vkBuildAccelerationStructuresKHR-pInfos-03774
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_AABBS_KHR, geometry.aabbs.data.hostAddressmust be a valid host address
VUID-vkBuildAccelerationStructuresKHR-pInfos-03775
For each element of pInfos, its dstAccelerationStructure
member must be bound to memory that was not allocated with multiple
instances
VUID-vkBuildAccelerationStructuresKHR-pInfos-03776
For each element of pInfos, if its mode member is
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR the buffer
used to create its srcAccelerationStructure member must be bound
to memory that was not allocated with multiple instances
VUID-vkBuildAccelerationStructuresKHR-pInfos-03777
For each element of pInfos, each acceleration structure referenced
by the geometry.instances.data member of any element of
pGeometries or ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_INSTANCES_KHR must be bound to memory that was
not allocated with multiple instances
VUID-vkBuildAccelerationStructuresKHR-pInfos-03778
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_INSTANCES_KHR,
geometry.instances.data.hostAddress must be a valid host address
VUID-vkBuildAccelerationStructuresKHR-pInfos-03779
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_INSTANCES_KHR, each
VkAccelerationStructureInstanceKHR::accelerationStructureReference
value in geometry.instances.data.hostAddress must be a valid
VkAccelerationStructureKHR object
VUID-vkBuildAccelerationStructuresKHR-pInfos-04930
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_INSTANCES_KHR with
VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV set, each
accelerationStructureReference in any structure in
VkAccelerationStructureMotionInstanceNV value in
geometry.instances.data.hostAddress must be a valid
VkAccelerationStructureKHR object
VUID-vkBuildAccelerationStructuresKHR-pInfos-11820
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_TRIANGLES_KHR, if there is an instance of
VkAccelerationStructureGeometryMotionTrianglesDataNV in the
geometry.triangles.pNext chain, then its
vertexData.hostAddress must not be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-10892
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_TRIANGLES_KHR, if there is an instance of
VkAccelerationStructureTrianglesOpacityMicromapEXT in the
geometry.triangles.pNext chain, and its indexType is
VK_INDEX_TYPE_NONE_KHR, then its indexBuffer.hostAddressmust be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-11821
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_TRIANGLES_KHR, if there is an instance of
VkAccelerationStructureTrianglesOpacityMicromapEXT in the
geometry.triangles.pNext chain, and its indexType is not
VK_INDEX_TYPE_NONE_KHR, then its indexBuffer.hostAddressmust not be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-11705
For any element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_TRIANGLES_KHR, if there is an instance of
VkAccelerationStructureTrianglesOpacityMicromapKHR in the
geometry.triangles.pNext chain its micromap member must be
VK_NULL_HANDLE
VUID-vkBuildAccelerationStructuresKHR-pInfos-11822
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_SPHERES_NV,
VkAccelerationStructureGeometrySpheresDataNV::indexType is
VK_INDEX_TYPE_NONE_KHR, then its indexData.hostAddress must
be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-11823
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_SPHERES_NV,
VkAccelerationStructureGeometrySpheresDataNV::indexType is
not VK_INDEX_TYPE_NONE_KHR, then its indexData.hostAddressmust not be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-11824
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_SPHERES_NV,
VkAccelerationStructureGeometrySpheresDataNV::vertexData.hostAddressmust not be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-11825
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_SPHERES_NV,
VkAccelerationStructureGeometrySpheresDataNV::radiusData.hostAddressmust not be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-11826
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV,
VkAccelerationStructureGeometryLinearSweptSpheresDataNV::indexType
is VK_INDEX_TYPE_NONE_KHR, then its indexData.hostAddressmust be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-11827
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV,
VkAccelerationStructureGeometryLinearSweptSpheresDataNV::indexType
is not VK_INDEX_TYPE_NONE_KHR, then its
indexData.hostAddress must not be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-11828
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV,
VkAccelerationStructureGeometryLinearSweptSpheresDataNV::vertexData.hostAddressmust not be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-11829
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries with a geometryType of
VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV,
VkAccelerationStructureGeometryLinearSweptSpheresDataNV::radiusData.hostAddressmust not be 0
VUID-vkBuildAccelerationStructuresKHR-pInfos-10893
For each element of pInfos[i].pGeometries or
pInfos[i].ppGeometries, geometryType must not be
VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX
Valid Usage (Implicit)
VUID-vkBuildAccelerationStructuresKHR-device-parameter
device must be a valid VkDevice handle
VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter
If deferredOperation is not VK_NULL_HANDLE, deferredOperation must be a valid VkDeferredOperationKHR handle
VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter
pInfos must be a valid pointer to an array of infoCount valid VkAccelerationStructureBuildGeometryInfoKHR structures
VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter
ppBuildRangeInfos must be a valid pointer to an array of infoCount VkAccelerationStructureBuildRangeInfoKHR structures
VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength
infoCount must be greater than 0
VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent
If deferredOperation is a valid handle, it must have been created, allocated, or retrieved from device