Structures

VkDescriptorMappingSourceIndirectAddressEXT

Structure specifying mapping a uniform buffer to an address specified indirectly

The VkDescriptorMappingSourceIndirectAddressEXT structure is defined as:

typedef struct VkDescriptorMappingSourceIndirectAddressEXT {
    uint32_t pushOffset;
    uint32_t addressOffset;
} VkDescriptorMappingSourceIndirectAddressEXT;
  • 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.

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

pushOffset must be less than or equal to maxPushDataSize - 8