VkDescriptorMappingSourceIndirectAddressEXT(3)

# VkDescriptorMappingSourceIndirectAddressEXT(3) Manual Page

## Name

VkDescriptorMappingSourceIndirectAddressEXT - Structure specifying mapping a uniform buffer to an address specified indirectly

## C Specification

The `VkDescriptorMappingSourceIndirectAddressEXT` structure is defined as:

    // Provided by VK_EXT_descriptor_heap
    typedef struct VkDescriptorMappingSourceIndirectAddressEXT {
        uint32_t    pushOffset;
        uint32_t    addressOffset;
    } VkDescriptorMappingSourceIndirectAddressEXT;

## Members

- `pushOffset` is a byte offset into push data where an indirect address containing the address for the mapped resource will be retrieved.

- `addressOffset` is a byte offset into the indirect address where the address for the mapped resource will be retrieved.

## Description

Accessing data via the mapped resource in the shader will access data backing the address specified in the indirect address at the supplied offset:

  indirectAddress = ((VkDeviceAddress*)pPushData)[pushOffset/8]

  resourceAddress = ((VkDeviceAddress*)indirectAddress)[addressOffset/8]

where pPushData is the total set of push data specified by vkCmdPushDataEXT. Reads through indirectAddress are performed as non-volatile uniform buffer reads, and can be synchronized using VK_ACCESS_2_UNIFORM_READ_BIT. Shader reads through resourceAddress are performed according to the mapped resource. If the shader resource is an acceleration structure, the address must be a valid acceleration structure address.

Valid Usage

- VUID-VkDescriptorMappingSourceIndirectAddressEXT-pushOffset-11266
  `pushOffset` must be a multiple of 8

- VUID-VkDescriptorMappingSourceIndirectAddressEXT-pushOffset-11267
  `pushOffset` must be less than or equal to `maxPushDataSize` - 8

- VUID-VkDescriptorMappingSourceIndirectAddressEXT-addressOffset-11268
  `addressOffset` must be a multiple of 8

## See Also

VK_EXT_descriptor_heap, VkDescriptorMappingSourceDataEXT

## 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