vkGetAccelerationStructureDeviceAddressKHR(3)

# vkGetAccelerationStructureDeviceAddressKHR(3) Manual Page

## Name

vkGetAccelerationStructureDeviceAddressKHR - Query an address of an acceleration structure

## C Specification

To query the 64-bit device address for an acceleration structure, call:

    // Provided by VK_KHR_acceleration_structure
    VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR(
        VkDevice                                    device,
        const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);

## Parameters

- `device` is the logical device that the acceleration structure was created on.

- `pInfo` is a pointer to a VkAccelerationStructureDeviceAddressInfoKHR structure specifying the acceleration structure to retrieve an address for.

## Description

The 64-bit return value is an address of the acceleration structure, which can be used for device and shader operations that involve acceleration structures, such as ray traversal and acceleration structure building.

If the acceleration structure was created with vkCreateAccelerationStructure2KHR, the return value will be the same address as `addressRange.address`.

If the acceleration structure was created with vkCreateAccelerationStructureKHR with a non-zero value of VkAccelerationStructureCreateInfoKHR::`deviceAddress`, the return value will be the same address.

Otherwise, if the acceleration structure was created with a `type` of VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR, the returned address must be consistent with the relative offset to other acceleration structures with `type` VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR allocated with the same VkBuffer. That is, the difference in returned addresses between the two must be the same as the difference in offsets provided at acceleration structure creation.

The returned address must be aligned to 256 bytes.

Note | For acceleration structures created with vkCreateAccelerationStructureKHR, their device address may be different from the buffer device address corresponding to the acceleration structure’s start offset in its storage buffer for acceleration structure types other than VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR.

Valid Usage

- VUID-vkGetAccelerationStructureDeviceAddressKHR-accelerationStructure-08935
  The `VkPhysicalDeviceAccelerationStructureFeaturesKHR`::`accelerationStructure` feature must be enabled

- VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504
  If `device` was created with multiple physical devices, then the `bufferDeviceAddressMultiDevice` feature must be enabled

- VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-09541
  If the buffer on which `pInfo->accelerationStructure` was placed is non-sparse then it must be bound completely and contiguously to a single `VkDeviceMemory` object

- VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-09542
  The buffer on which `pInfo->accelerationStructure` was placed must have been created with the VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT usage flag set

Valid Usage (Implicit)

- VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter
  `device` must be a valid VkDevice handle

- VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter
  `pInfo` must be a valid pointer to a valid VkAccelerationStructureDeviceAddressInfoKHR structure

## See Also

VK_KHR_acceleration_structure, VkAccelerationStructureDeviceAddressInfoKHR, VkDevice

## Document Notes

For more information, see the Vulkan Specification.

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0