VkBufferDeviceAddressCreateInfoEXT(3)

# VkBufferDeviceAddressCreateInfoEXT(3) Manual Page

## Name

VkBufferDeviceAddressCreateInfoEXT - Request a specific address for a buffer

## C Specification

To request a specific device address for a buffer, add a VkBufferDeviceAddressCreateInfoEXT structure to the `pNext` chain of the VkBufferCreateInfo structure. The `VkBufferDeviceAddressCreateInfoEXT` structure is defined as:

    typedef struct VkBufferDeviceAddressCreateInfoEXT {
        VkStructureType    sType;
        const void*        pNext;
        VkDeviceAddress    deviceAddress;
    } VkBufferDeviceAddressCreateInfoEXT;

## Members

- `sType` is the type of this structure.

- `pNext` is `NULL` or a pointer to an extension-specific structure.

- `deviceAddress` is the device address requested for the buffer.

## Description

If `deviceAddress` is zero, no specific address is requested.

If `deviceAddress` is not zero, `deviceAddress` must be an address retrieved from an identically created buffer on the same implementation. The buffer must also be bound to an identically created `VkDeviceMemory` object.

If this structure is not present, it is as if `deviceAddress` is zero.

Apps should avoid creating buffers with app-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of `VK_ERROR_INVALID_DEVICE_ADDRESS_EXT` errors.

| Note The expected usage for this is that a trace capture/replay tool will add the `VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT` flag to all buffers that use `VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT`, and during capture will save the queried device addresses in the trace. During replay, the buffers will be created specifying the original address so any address values stored in the trace data will remain valid. Implementations are expected to separate such buffers in the GPU address space so normal allocations will avoid using these addresses. Apps/tools should avoid mixing app-provided and implementation-provided addresses for buffers created with `VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT`, to avoid address space allocation conflicts.

Valid Usage (Implicit)

- `sType` must be `VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT`

## See Also

`VkDeviceAddress`, VkStructureType

## 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 (c) 2014-2019 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.