VK_KHR_buffer_device_address(3)

# VK_KHR_buffer_device_address(3) Manual Page

## Name

VK_KHR_buffer_device_address - device extension

Loading… please wait.

## Registered Extension Number

258

## Revision

1

## Extension and Version Dependencies

- Requires Vulkan 1.0

- Requires `VK_KHR_get_physical_device_properties2`

## Deprecation state

- Promoted to Vulkan 1.2

### Other Extension Metadata

Last Modified Date

  2019-06-24

IP Status

  No known IP claims.

Interactions and External Dependencies

  - Promoted to Vulkan 1.2 Core

Contributors

  - Jeff Bolz, NVIDIA

  - Neil Henning, AMD

  - Tobias Hector, AMD

  - Jason Ekstrand, Intel

  - Baldur Karlsson, Valve

  - Jan-Harald Fredriksen, Arm

### Description

This extension allows the application to query a 64-bit buffer device address value for a buffer, which can be used to access the buffer memory via the `PhysicalStorageBuffer` storage class in the `GL_EXT_buffer_reference` GLSL extension and `SPV_KHR_physical_storage_buffer` SPIR-V extension.

This extension also allows opaque addresses for buffers and memory objects to be queried and later supplied by a trace capture and replay tool, so that addresses used at replay time match the addresses used when the trace was captured. To enable tools to insert these queries, new memory allocation flags must be specified for memory objects that will be bound to buffers accessed via the `PhysicalStorageBuffer` storage class.

### Promotion to Vulkan 1.2

All functionality in this extension is included in core Vulkan 1.2, with the KHR suffix omitted. However, if Vulkan 1.2 is supported and this extension is not, the `bufferDeviceAddress` capability is optional. The original type, enum and command names are still available as aliases of the core functionality.

### New Commands

- vkGetBufferDeviceAddressKHR

- vkGetBufferOpaqueCaptureAddressKHR

- vkGetDeviceMemoryOpaqueCaptureAddressKHR

### New Structures

- VkBufferDeviceAddressInfoKHR

- VkDeviceMemoryOpaqueCaptureAddressInfoKHR

- Extending VkBufferCreateInfo:

  - VkBufferOpaqueCaptureAddressCreateInfoKHR

- Extending VkMemoryAllocateInfo:

  - VkMemoryOpaqueCaptureAddressAllocateInfoKHR

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceBufferDeviceAddressFeaturesKHR

### New Enum Constants

- `VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME`

- `VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION`

- Extending VkBufferCreateFlagBits:

  - `VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR`

- Extending VkBufferUsageFlagBits:

  - `VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR`

- Extending VkMemoryAllocateFlagBits:

  - `VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR`

  - `VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR`

- Extending VkResult:

  - `VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR`

  - `VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR`

  - `VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR`

  - `VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR`

### New SPIR-V Capabilities

- `PhysicalStorageBufferAddresses`

### Version History

- Revision 1, 2019-06-24 (Jan-Harald Fredriksen)

  - Internal revisions based on VK_EXT_buffer_device_address

## See Also

VkBufferDeviceAddressInfoKHR, VkBufferOpaqueCaptureAddressCreateInfoKHR, VkDeviceMemoryOpaqueCaptureAddressInfoKHR, VkMemoryOpaqueCaptureAddressAllocateInfoKHR, VkPhysicalDeviceBufferDeviceAddressFeaturesKHR, vkGetBufferDeviceAddressKHR, vkGetBufferOpaqueCaptureAddressKHR, vkGetDeviceMemoryOpaqueCaptureAddressKHR

## Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright (c) 2014-2020 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0