HORIZON HASKELLDocslts/ghc-10.0.x8174fa42026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 8174fa4 · 2026-10-11

Modulevulkan-3.27GHC2021

Vulkan.Extensions.VK_EXT_descriptor_heap

Name

VK_EXT_descriptor_heap - device extension

VK_EXT_descriptor_heap

Name String

VK_EXT_descriptor_heap

Extension Type

Device extension

Registered Extension Number

136

Revision

1

Ratification Status

Ratified

Extension and Version Dependencies

VK_KHR_maintenance5

and

VK_KHR_buffer_device_address      or

Vulkan Version 1.2

API Interactions
  • Interacts with VK_ARM_tensors

  • Interacts with VK_EXT_custom_border_color

  • Interacts with VK_EXT_device_generated_commands

  • Interacts with VK_EXT_fragment_density_map

  • Interacts with VK_EXT_shader_object

  • Interacts with VK_KHR_ray_tracing_pipeline

  • Interacts with VK_NV_device_generated_commands

  • Interacts with VK_NV_ray_tracing

SPIR-V Dependencies
Contact
Extension Proposal

VK_EXT_descriptor_heap

Other Extension Metadata

Last Modified Date

2024-06-12

IP Status

No known IP claims.

Contributors
  • Tobias Hector, AMD

  • Jan-Harald Fredriksen, Arm

  • Daniel Story, Nintendo

  • Connor Abbot, Valve

  • Hans-Kristian Arntzen, Valve

  • Matthew Netsch, Qualcomm

  • Jeff Bolz, NVIDIA

  • Alyssa Rosenzweig, Valve

  • Lionel Landerwerlin, Intel

  • Baldur Karlsson, Valve

  • Faith Ekstrand, Collabora

  • Slawomir Grajewski, Intel

  • Mike Blumenkrantz, Valve

  • Yiwei Zhang, Google

  • Stu Smith, AMD

  • Piers Daniell, NVIDIA

  • Jon Leech, Khronos

  • Rodrigo Locatti, NVIDIA

  • Krzysztof Niski, NVIDIA

  • Alan Baker, Google

  • James Fitzpatrick, Imagination

  • Samuel (Sheng-Wen) Huang, Mediatek

  • Hai Nguyen, Google

  • Jeff Leger, Qualcomm

  • Marty Johnson, Khronos

  • Tom Olson, Arm

  • Chris Glover, Google

  • Daniel Koch, NVIDIA

  • Robert Simpson, Qualcomm

  • Dan Ginsburg, Valve

  • Andreas Süßenbach, NVIDIA

  • Anna Maniscalco, Valve

  • Artem Kharytoniuk, LunarG

  • Younggwan Kim, Arm

  • Konstantin Seurer, Valve

  • Catarina Shablia, Collabora

  • Spencer Fricke, LunarG

  • Chris Bieneman, Microsoft

  • Ting Wei, Arm

  • Boris Zanin, AMD

  • Samuel Pitoiset, Valve

  • Erik Hogeman, Arm

  • Jesse Natalie, Microsoft

  • Guang Xu, AMD

  • Embla Flatlandsmo, Arm

Interactions and External Dependencies

Description

This extension allows explicit management of descriptors, and the memory used to store descriptors, conceptualised as descriptor heaps. Descriptor heap memory can be accessed as any other memory, enabling management of descriptors on both CPU and the GPU.

This extension was developed based on issues discovered with VK_EXT_descriptor_buffer. There are more constraints on how it is implemented, to provide more portable guarantees and more predictable performance characteristics. For instance, rather than an arbitrary number of sampler or resource buffers, there is exactly one sampler heap and exactly one resource heap.

This extension also eliminates descriptor sets and pipeline layouts completely; instead applications can look descriptors up solely by their offset into a heap. Shaders still using descriptor set and binding decorations can still be mapped to heaps through an API that maps set and binding decorations to heap offsets, either as constants or through push data. This new mapping API also enables a much more straightforward mapping to HLSL shaders using the root signature and descriptor table interfaces.

The push constant API has also been replaced with the push data interface, which aims to provide much more clarity about how data is passed to the shader, without requiring any mapping information to be provided during pipeline or shader creation. Mappings are still available for shaders written for the legacy interface.

There is also a much clearer path for mapping shader constant data, with two recommended options for mapping constant data through push data; either directly in push data, or through a device address stored in push data, both of which can be mapped to shaders with set and binding interfaces.

New Object Types

New Commands

If VK_ARM_tensors is supported:

If VK_EXT_custom_border_color is supported:

New Structures

If VK_ARM_tensors is supported:

If VK_EXT_custom_border_color is supported:

If VK_EXT_fragment_density_map is supported:

If VK_NV_device_generated_commands is supported:

New Unions

New Enums

New Bitmasks

New Enum Constants

If VK_ARM_tensors is supported:

If VK_EXT_custom_border_color is supported:

If VK_EXT_device_generated_commands is supported:

If VK_EXT_fragment_density_map is supported:

If VK_EXT_shader_object is supported:

If VK_KHR_ray_tracing_pipeline or VK_NV_ray_tracing is supported:

If VK_NV_device_generated_commands is supported:

Version History

  • Revision 1, 2024-06-12 (Tobias Hector)

    • Initial revision.

See Also

No cross-references are available

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.

  • 44 types
  • 10 values
  • Packagevulkan-3.27
  • Exports125
  • LanguageGHC2021
  • LicenceBSD-3-Clause
  • SourceVK_EXT_descriptor_heap.hs
valuewriteSamplerDescriptorsEXT
  1. :: MonadIO io
  2. => Device

    device is the logical device that the descriptors are for.

  3. -> "samplers" ::: Vector (SomeStruct SamplerCreateInfo)

    pSamplers is a pointer to an array of SamplerCreateInfo structures defining properties of the sampler descriptors that will be written.

  4. -> "descriptors" ::: Vector HostAddressRangeEXT

    pDescriptors is a pointer to an array of HostAddressRangeEXT structures defining the host address ranges that will be written to for each descriptor.

  5. -> io ()
#

vkWriteSamplerDescriptorsEXT - Write sampler descriptors to memory

Description

Each descriptor will be written to pDescriptors[i].address where i is the index of its create info in pSamplers.

Descriptors written using a fully identical SamplerCreateInfo structure on the same Device will always return the same bit pattern. If the descriptorHeapCaptureReplay feature is enabled, descriptors written using a fully identical SamplerCreateInfo structure on a Device created from the same PhysicalDevice with identical parameters will always return the same bit pattern.

YCBCR samplers must be embedded in a shader by using ShaderDescriptorSetAndBindingMappingInfoEXT, they cannot be specified here.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

  • pSamplers must be a valid pointer to an array of samplerCount valid SamplerCreateInfo structures

  • pDescriptors must be a valid pointer to an array of samplerCount valid HostAddressRangeEXT structures

  • samplerCount must be greater than 0

Return Codes

Success
Failure

See Also

VK_EXT_descriptor_heap, Device, HostAddressRangeEXT, SamplerCreateInfo

valuewriteResourceDescriptorsEXT
  1. :: MonadIO io
  2. => Device

    device is the logical device that the descriptors are for.

  3. -> "resources" ::: Vector (SomeStruct ResourceDescriptorInfoEXT)

    pResources is a pointer to an array of ResourceDescriptorInfoEXT structures defining properties of the resource descriptors that will be written.

  4. -> "descriptors" ::: Vector HostAddressRangeEXT

    pDescriptors is a pointer to an array of HostAddressRangeEXT structures defining the host address ranges that will be written to for each descriptor.

  5. -> io ()
#

vkWriteResourceDescriptorsEXT - Write resource descriptors to memory

Description

Each descriptor will be written to pDescriptors[i].address where i is the index of its create info in pResources.

If any image descriptor written by this command includes a SamplerYcbcrConversion, multiple descriptors will be written adjacent to each other for that descriptor, equal to SamplerYcbcrConversionImageFormatProperties::combinedImageSamplerDescriptorCount for the image.

If any image descriptor written by this command is for an image created with flags containing IMAGE_CREATE_SUBSAMPLED_BIT_EXT, multiple descriptors will be written adjacent to each other for that descriptor, equal to SubsampledImageFormatPropertiesEXT::subsampledImageDescriptorCount for the image.

Descriptors using the same type and written using a fully identical TexelBufferDescriptorInfoEXT or DeviceAddressRangeKHR structure on the same Device will always return the same bit pattern. If the descriptorHeapCaptureReplay feature is enabled, this applies to any Device created with identical parameters from the same PhysicalDevice.

Recreating the same buffer descriptor during replay of a prior capture requires that the device address is the same, which requires additional data to be captured and provided during replay when creating a buffer and allocating memory for it.

Image descriptors using the same type and written using a fully identical ImageDescriptorInfoEXT other than ImageDescriptorInfoEXT::pView->image, where image was successfully created with IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT and a OpaqueCaptureDataCreateInfoEXT with data captured via getImageOpaqueCaptureDataEXT from an image used previously, will write a descriptor with the same bit pattern if possible; if the same bit pattern cannot be generated, ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS will be returned instead.

Tensor descriptors using the same type and written using a fully identical TensorViewCreateInfoARM other than TensorViewCreateInfoARM::tensor, where tensor was successfully created with OpaqueCaptureDataCreateInfoEXT with TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM and a OpaqueCaptureDataCreateInfoEXT with data captured via getTensorOpaqueCaptureDataARM from a tensor used previously, will write a descriptor with the same bit pattern if possible; if the same bit pattern cannot be generated, ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS will be returned instead.

Image creation is sufficiently complex that it may not be possible to recreate all possible descriptors from an image during replay, even if the image itself was successfully recreated. The conditions for this happening will be largely the same as those which could cause allocating a buffer with the same device address during replay to fail. Replay tools are advised to recreate captured descriptors for an image immediately after recreating the image itself wherever possible. The same is true for tensors.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

  • pResources must be a valid pointer to an array of resourceCount valid ResourceDescriptorInfoEXT structures

  • pDescriptors must be a valid pointer to an array of resourceCount valid HostAddressRangeEXT structures

  • resourceCount must be greater than 0

Return Codes

Success
Failure

See Also

VK_EXT_descriptor_heap, Device, HostAddressRangeEXT, ResourceDescriptorInfoEXT

valuecmdBindSamplerHeapEXT
  1. :: MonadIO io
  2. => CommandBuffer

    commandBuffer is the command buffer that the sampler heap will be bound to.

  3. -> "bindInfo" ::: BindHeapInfoEXT

    pBindInfo is a BindHeapInfoEXT specifying the device address range used for the heap and any implementation reservations.

  4. -> io ()
#

vkCmdBindSamplerHeapEXT - Binds a sampler heap to a command buffer

Description

Addresses in the range defined by pBindInfo->heapRange are bound as the sampler heap. The application can access samplers and data through this heap anywhere except for the reserved range specified by pBindInfo->reservedRangeOffset. Addresses in the range [pBindInfo->reservedRangeOffset, pBindInfo->reservedRangeOffset + pBindInfo->reservedRangeSize) are reserved for the implementation and must not be accessed by the application at any time from when this command is recorded until there are no command buffers with that range bound.

The reserved range is bound to the command buffer until it has been reset.

Implementations may require a larger sampler heap reservation to store embedded sampler descriptors when used in a mapping, as advertised by minSamplerHeapReservedRangeWithEmbedded.

Shaders executed by commands recorded after this command can use the specified sampler heap to access resources. pBindInfo->heapRange.address will be available to shaders to access samplers and data through the SamplerHeapEXT BuiltIn or via shader bindings.

When cmdBindSamplerHeapEXT is recorded, it immediately invalidates all non-heap descriptor state. Similarly, recording any non-heap descriptor state commands immediately invalidates state set by this command.

Valid Usage

  • The sum of pBindInfo->reservedRangeOffset and pBindInfo->reservedRangeSize must be less than or equal to pBindInfo->heapRange.size

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized

  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels

Render Pass Scope

Video Coding Scope

Supported Queue Types

Command Type

Primary Secondary

Both

Outside

VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT

State

Conditional Rendering

vkCmdBindSamplerHeapEXT is not affected by conditional rendering

See Also

VK_EXT_descriptor_heap, BindHeapInfoEXT, CommandBuffer

valuecmdBindResourceHeapEXT
  1. :: MonadIO io
  2. => CommandBuffer

    commandBuffer is the command buffer that the resource heap will be bound to.

  3. -> "bindInfo" ::: BindHeapInfoEXT

    pBindInfo is a BindHeapInfoEXT specifying the device address range used for the heap and any implementation reservations.

  4. -> io ()
#

vkCmdBindResourceHeapEXT - Binds a resource heap to a command buffer

Description

Addresses in the range defined by pBindInfo->heapRange are bound as the resource heap. The application can access resources and data through this heap anywhere except for the reserved range specified by pBindInfo->reservedRangeOffset. Addresses in the range [pBindInfo->reservedRangeOffset, pBindInfo->reservedRangeOffset + pBindInfo->reservedRangeSize) are reserved for the implementation and must not be accessed by the application at any time from when this command is recorded until there are no command buffers with that range bound.

The reserved range is bound to the command buffer until it has been reset.

Shaders executed by commands recorded after this command can use the specified resource heap to access resources. pBindInfo->heapRange.address will be available to shaders to access resources through the ResourceHeapEXT BuiltIn or via shader bindings.

When cmdBindResourceHeapEXT is recorded, it immediately invalidates all non-heap descriptor state. Similarly, recording any non-heap descriptor state commands immediately invalidates state set by this command.

Valid Usage

  • The sum of pBindInfo->reservedRangeOffset and pBindInfo->reservedRangeSize must be less than or equal to pBindInfo->heapRange.size

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized

  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels

Render Pass Scope

Video Coding Scope

Supported Queue Types

Command Type

Primary Secondary

Both

Outside

VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT

State

Conditional Rendering

vkCmdBindResourceHeapEXT is not affected by conditional rendering

See Also

VK_EXT_descriptor_heap, BindHeapInfoEXT, CommandBuffer

valuecmdPushDataEXT
  1. :: (Extendss PushDataInfoEXT a, PokeChain a, MonadIO io)
  2. => CommandBuffer

    commandBuffer is the command buffer in which the push data update will be recorded.

  3. -> PushDataInfoEXT a

    pPushDataInfo is a pointer to a PushDataInfoEXT structure.

  4. -> io ()
#

vkCmdPushDataEXT - Update the values of push data

Description

When cmdPushDataEXT is recorded, it immediately invalidates all non-heap descriptor state. Similarly, recording any non-heap descriptor state commands immediately invalidates state set by this command.

All push data is available to all shaders using the existing PushConstant Storage Class.

Device addresses in push data are intended as the fast path for shader-constant data that does not fit into push data directly. In order to maximize performance of constant data inputs, addresses should be aligned to minUniformBufferOffsetAlignment, and decorated with Alignment and NonWritable in the shader when using physical pointers.

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized

  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels

Render Pass Scope

Video Coding Scope

Supported Queue Types

Command Type

Primary Secondary

Both

Outside

VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT

State

Conditional Rendering

vkCmdPushDataEXT is not affected by conditional rendering

See Also

VK_EXT_descriptor_heap, CommandBuffer, PushDataInfoEXT

valueregisterCustomBorderColorEXT
  1. :: MonadIO io
  2. => Device

    device is the logical device where the border color is registered.

  3. -> SamplerCustomBorderColorCreateInfoEXT

    pBorderColor is a pointer to a SamplerCustomBorderColorCreateInfoEXT structure specifying the custom border color value to register.

  4. -> "requestIndex" ::: Bool

    requestIndex is a Boolean value indicating if a specific index is requested or not.

  5. -> io ("index" ::: Word32)
#

vkRegisterCustomBorderColorEXT - Register a custom border color

Description

If requestIndex is TRUE, the value present in pIndex when passed to the command is a requested index, and rather than returning a new index, the implementation will attempt to register that index, leaving the value intact. If the implementation is unable to register a requested index, ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS will be returned. If an index has not been registered (either explicitly or implicitly by creating a sampler object), or if it has been subsequently unregistered, the implementation must register that index successfully.

If requestIndex is FALSE, the value stored in pIndex is ignored, and a new index will be returned if the implementation is able to register a new index. If the implementation is unable to register a new index, ERROR_TOO_MANY_OBJECTS will be returned.

If an index is successfully registered, it can be used when writing a sampler descriptor or creating a sampler object to use with the custom border color, via SamplerCustomBorderColorIndexCreateInfoEXT.

The type of border color is not specified by this command (BORDER_COLOR_FLOAT_CUSTOM_EXT vs. BORDER_COLOR_INT_CUSTOM_EXT); the data will be interpreted at the point the border color is sampled with an actual sampler. Implementations are expected to store the data as raw bytes if they do not need the format to be specified.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_EXT_custom_border_color, VK_EXT_descriptor_heap, Bool32, Device, SamplerCustomBorderColorCreateInfoEXT

valuegetImageOpaqueCaptureDataEXT
  1. :: MonadIO io
  2. => Device

    device is the logical device that gets the data.

  3. -> "images" ::: Vector Image

    pImages is a pointer to an array of Image objects to retrieve the opaque capture data from.

  4. -> io ("datas" ::: Vector HostAddressRangeEXT)
#

vkGetImageOpaqueCaptureDataEXT - Get image opaque capture descriptor data for descriptor heap replay

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

  • pImages must be a valid pointer to an array of imageCount valid Image handles

  • pDatas must be a valid pointer to an array of imageCount HostAddressRangeEXT structures

  • imageCount must be greater than 0

  • Each element of pImages must have been created, allocated, or retrieved from device

Return Codes

Success
Failure

See Also

VK_EXT_descriptor_heap, Device, HostAddressRangeEXT, Image

valuegetPhysicalDeviceDescriptorSizeEXT
  1. :: MonadIO io
  2. => PhysicalDevice

    physicalDevice is the physical device from which to query the descriptor sizes.

    physicalDevice must be a valid PhysicalDevice handle

  3. -> DescriptorType

    descriptorType is a DescriptorType specifying the type of heap descriptor to query the size for.

    descriptorType must be a valid DescriptorType value

  4. -> io DeviceSize
#

vkGetPhysicalDeviceDescriptorSizeEXT - Report specific descriptor sizes for each descriptor type

Description

The return value of this function will be a DeviceSize indicating the size in bytes (N) of a heap descriptor with a type equal to descriptorType. When a descriptor of this type is written by writeResourceDescriptorsEXT or writeSamplerDescriptorsEXT, only the first N bytes are written; the rest will not be accessed and can be safely discarded when copying descriptors around. Additionally, those first N bytes are the only bytes that will be accessed when the descriptor is accessed in the shader. N will never be larger than the applicable limits in PhysicalDeviceDescriptorHeapTensorPropertiesARM or PhysicalDeviceDescriptorHeapPropertiesEXT.

Values returned by this function have other requirements, so for example may not be power-of-two values.

This command is not intended for general use, and is for tools that already take advantage of tighter packing with other similar features (e.g. VK_EXT_descriptor_buffer) to optimize accesses in some cases. Applications can safely ignore this function and are advised to do so, to avoid depending on non-portable packing.

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, DescriptorType, PhysicalDevice

valuegetTensorOpaqueCaptureDataARM
  1. :: MonadIO io
  2. => Device

    device is the logical device that gets the data.

  3. -> "tensors" ::: Vector TensorARM

    pTensors is a pointer to an array of TensorARM objects to retrieve the opaque capture data from.

  4. -> io ("datas" ::: Vector HostAddressRangeEXT)
#

vkGetTensorOpaqueCaptureDataARM - Get tensor opaque capture descriptor data for descriptor heap replay

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

  • pTensors must be a valid pointer to an array of tensorCount valid TensorARM handles

  • pDatas must be a valid pointer to an array of tensorCount HostAddressRangeEXT structures

  • tensorCount must be greater than 0

  • Each element of pTensors must have been created, allocated, or retrieved from device

Return Codes

Success
Failure

See Also

VK_ARM_tensors, VK_EXT_descriptor_heap, Device, HostAddressRangeEXT, TensorARM

datadata HostAddressRangeEXT
#

VkHostAddressRangeEXT - Structure specifying a host address range

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, getImageOpaqueCaptureDataEXT, getTensorOpaqueCaptureDataARM, writeResourceDescriptorsEXT, writeSamplerDescriptorsEXT

Constructors

  • HostAddressRangeEXT
    • address :: Ptr ()

      address is a host memory address.

      address must be a valid pointer to an array of size bytes

    • size :: Word64

      size is the size of the range.

      size must be greater than 0

Instances5Show, Storable, FromCStruct, ToCStruct, Zero

VkHostAddressRangeConstEXT - Structure specifying a constant host address range

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, OpaqueCaptureDataCreateInfoEXT, PushDataInfoEXT

Constructors

Instances5Show, Storable, FromCStruct, ToCStruct, Zero

VkTexelBufferDescriptorInfoEXT - Structure describing an image descriptor created from a buffer

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, DeviceAddressRangeKHR, Format, ResourceDescriptorDataEXT, StructureType

Constructors

Instances4Show, FromCStruct, ToCStruct, Zero

VkImageDescriptorInfoEXT - Structure describing an image descriptor created from an image

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, ImageLayout, ImageViewCreateInfo, ResourceDescriptorDataEXT, StructureType

Constructors

Instances4Show, FromCStruct, ToCStruct, Zero
datadata ResourceDescriptorInfoEXT (es :: [Type])
#

VkResourceDescriptorInfoEXT - Structure describing a resource descriptor

Description

If type is DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER or DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, data->pTexelBuffer is used to construct the descriptor.

If type is DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV, DESCRIPTOR_TYPE_UNIFORM_BUFFER, or DESCRIPTOR_TYPE_STORAGE_BUFFER, data->pAddressRange is used to construct the descriptor. For acceleration structures, the size of the range is not used by the descriptor, and can be set to 0. If a non-zero size is provided though, it must be a valid range.

Applications may wish to provide a valid range as a way to check their own assumptions about the range they are binding; but it has no bearing on anything except validation. Implementations cannot make any assumptions based on the size of the provided range.

If type is DESCRIPTOR_TYPE_SAMPLED_IMAGE, DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, DESCRIPTOR_TYPE_STORAGE_IMAGE, or DESCRIPTOR_TYPE_INPUT_ATTACHMENT, data->pImage is used to construct the descriptor. If type is DESCRIPTOR_TYPE_TENSOR_ARM, data->pTensorARM is used to construct the descriptor.

If the nullDescriptor feature is enabled, the corresponding element of data may be NULL to generate a null descriptor.

Applications can give resource descriptors a debug name in a similar way to naming an object, via the DebugUtilsObjectNameInfoEXT structure. However, as there is no actual object, this structure must be passed via the pNext chain of this structure, with a objectType of OBJECT_TYPE_UNKNOWN and a objectHandle of NULL_HANDLE. The name is attached to the unique set of descriptor bits written by the implementation, and writing the same bits again with new debug info may rename the original descriptor.

Implementations are not prevented from returning the same bits for different descriptors. This can result in multiple different resources mapping to the same name. A common case for this might be something like a uniform buffer and storage buffer with the same device address range.

If a descriptor becomes invalid due to the underlying resource becoming invalid, implementations may remove the name association.

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, DescriptorType, ResourceDescriptorDataEXT, StructureType, writeResourceDescriptorsEXT

Constructors

Instances4Extensible, Show, ToCStruct, Zero
datadata BindHeapInfoEXT
#

VkBindHeapInfoEXT - Structure describing a device address range and implementation reservation for a descriptor heap

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, CommandBufferInheritanceDescriptorHeapInfoEXT, DeviceAddressRangeKHR, DeviceSize, StructureType, cmdBindResourceHeapEXT, cmdBindSamplerHeapEXT

Constructors

Instances4Show, FromCStruct, ToCStruct, Zero
datadata PushDataInfoEXT (es :: [Type])
#

VkPushDataInfoEXT - Structure specifying a push data update operation

Valid Usage

  • The sum of offset and data.size must be less than or equal to maxPushDataSize

  • offset must be a multiple of 4

  • data.size must be a multiple of 4

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, HostAddressRangeConstEXT, StructureType, cmdPushDataEXT

Constructors

Instances5Extensible, Show, FromCStruct, ToCStruct, Zero

VkDescriptorMappingSourceConstantOffsetEXT - Structure specifying mapping resources to a constant heap index

Description

Resources using this mapping will be backed by a descriptor in the heap, at an offset calculated as

  • shaderIndex = (Binding - firstBinding) + arrayIndex

  • offset = heapOffset + (shaderIndex * heapArrayStride)

where Binding is the binding value in the shader, arrayIndex is the index into the array if the shader binding is declared as an array.

If the mapped resource is a OpTypeSampledImage, offset is instead calculated for the sampler as

  • offset = samplerHeapOffset + (shaderIndex * samplerHeapArrayStride)

If the mapped resource is a OpTypeSampler or OpTypeSampledImage, and pEmbeddedSampler is not NULL, the specified embedded sampler will be used rather than accessing the sampler heap.

Valid Usage

Valid Usage (Implicit)

  • If pEmbeddedSampler is not NULL, pEmbeddedSampler must be a valid pointer to a valid SamplerCreateInfo structure

See Also

VK_EXT_descriptor_heap, DescriptorMappingSourceDataEXT, SamplerCreateInfo

Constructors

Instances4Show, FromCStruct, ToCStruct, Zero

VkDescriptorMappingSourcePushIndexEXT - Structure specifying mapping resources to a heap index in push data

Description

Resources using this mapping will be backed by a descriptor in the heap, at an offset calculated as

  • pushIndex = ((uint32_t*)pPushData)[pushOffset/4]

  • shaderIndex = (Binding - firstBinding) + arrayIndex

  • offset = heapOffset + (pushIndex × heapIndexStride) + (shaderIndex × heapArrayStride)

where Binding is the binding value in the shader, arrayIndex is the index into the array if the shader binding is declared as an array, and pPushData is the total set of push data specified by cmdPushDataEXT.

If the mapped resource is a OpTypeSampledImage, offset is instead calculated for the sampler as

  • samplerPushIndex = ((uint32_t*)pPushData)[samplerPushOffset/4]

  • offset = samplerHeapOffset + (samplerPushIndex × samplerHeapIndexStride) + (shaderIndex × samplerHeapArrayStride)

If useCombinedImageSamplerIndex is TRUE, and the mapped resource is a OpTypeSampledImage, pushIndex and samplerPushIndex in the above equations are instead calculated as

  • pushIndex = ((uint32_t*)pPushData)[pushOffset/4] & 0xFFFFF

  • samplerPushIndex = (((uint32_t*)pPushData)[pushOffset/4] >> 20) & 0xFFF

If the mapped resource is a OpTypeSampler or OpTypeSampledImage, and pEmbeddedSampler is not NULL, the specified embedded sampler will be used rather than accessing the sampler heap.

Valid Usage

  • pushOffset must be a multiple of 4

Valid Usage (Implicit)

  • If pEmbeddedSampler is not NULL, pEmbeddedSampler must be a valid pointer to a valid SamplerCreateInfo structure

See Also

VK_EXT_descriptor_heap, Bool32, DescriptorMappingSourceDataEXT, SamplerCreateInfo

Constructors

Instances4Show, FromCStruct, ToCStruct, Zero

VkDescriptorMappingSourceIndirectIndexEXT - Structure specifying mapping resources to a heap index in indirect data

Description

Resources using this mapping will be backed by a descriptor in the heap, at an offset calculated as

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

  • indirectIndex = indirectAddress[(addressOffset / 4)]

  • shaderIndex = (Binding - firstBinding) + arrayIndex

  • offset = heapOffset + (indirectIndex × heapIndexStride) + (shaderIndex × heapArrayStride)

where Binding is the binding value in the shader, arrayIndex is the index into the array if the shader binding is declared as an array, and pPushData is the total set of push data specified by cmdPushDataEXT. The value of the address in push data must be a multiple of 4. Index reads through indirectAddress are performed as non-volatile uniform buffer reads, and can be synchronized using ACCESS_2_UNIFORM_READ_BIT. The value in memory must remain static while any shader invocation using this mapping is in flight to avoid a data race.

If the mapped resource is a OpTypeSampledImage, offset is instead calculated for the sampler as

  • uint32_t *samplerIndirectAddress = ((VkDeviceAddress*)pPushData)[samplerPushOffset/8]

  • samplerIndirectIndex = samplerIndirectAddress[(samplerAddressOffset / 4)]

  • offset = samplerHeapOffset + (samplerIndirectIndex × samplerHeapIndexStride) + (shaderIndex × samplerHeapArrayStride)

If useCombinedImageSamplerIndex is TRUE, and the mapped resource is a OpTypeSampledImage, indirectIndex and samplerIndirectIndex in the above equations are instead calculated as

  • indirectIndex = indirectAddress[addressOffset/4] & 0xFFFFF

  • samplerIndirectIndex = indirectAddress[addressOffset/4] >> 20) & 0xFFF

If the mapped resource is a OpTypeSampler or OpTypeSampledImage, and pEmbeddedSampler is not NULL, the specified embedded sampler will be used rather than accessing the sampler heap.

Valid Usage

  • pushOffset must be a multiple of 8

Valid Usage (Implicit)

  • If pEmbeddedSampler is not NULL, pEmbeddedSampler must be a valid pointer to a valid SamplerCreateInfo structure

See Also

VK_EXT_descriptor_heap, Bool32, DescriptorMappingSourceDataEXT, SamplerCreateInfo

Constructors

  • DescriptorMappingSourceIndirectIndexEXT
    • heapOffset :: Word32

      heapOffset is a constant byte offset added to the heap address for the mapped resource or sampler.

    • pushOffset :: Word32

      pushOffset is an offset into push data where an the indirect address will be.

    • addressOffset :: Word32

      addressOffset is an index into the address in push data where an index into the heap for the mapped resource will be retrieved.

    • heapIndexStride :: Word32

      heapIndexStride is a constant byte stride that multiplies the index in indirect data.

    • heapArrayStride :: Word32

      heapArrayStride is a constant byte stride that multiplies the shader binding and array index.

    • embeddedSampler :: Maybe (SomeStruct SamplerCreateInfo)

      pEmbeddedSampler is an optional SamplerCreateInfo structure specifying a sampler to embed into the shader, in place of looking the sampler up in a heap.

    • useCombinedImageSamplerIndex :: Bool

      useCombinedImageSamplerIndex specifies whether the generated index value will be decoded as two packed indices if the mapped resource is an OpTypeSampledImage.

    • samplerHeapOffset :: Word32

      samplerHeapOffset is used only when mapping a combined image sampler, used in place of heapOffset to retrieve the sampler.

    • samplerPushOffset :: Word32

      samplerPushOffset is used only when mapping a combined image sampler, used in place of pushOffset to retrieve the sampler.

    • samplerAddressOffset :: Word32

      samplerAddressOffset is used only when mapping a combined image sampler, used in place of addressOffset to retrieve the sampler.

    • samplerHeapIndexStride :: Word32

      samplerHeapIndexStride is used only when mapping a combined image sampler, used in place of heapIndexStride to retrieve the sampler.

    • samplerHeapArrayStride :: Word32

      samplerHeapArrayStride is used only when mapping a combined image sampler, used in place of heapArrayStride to retrieve the sampler.

Instances4Show, FromCStruct, ToCStruct, Zero

VkDescriptorMappingSourceIndirectIndexArrayEXT - Structure specifying mapping resources to a heap index array in indirect data

Description

Resources using this mapping will be backed by a descriptor in the heap, at an offset calculated as

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

  • shaderIndex = (Binding - firstBinding) + arrayIndex

  • indirectIndex = indirectAddress[(addressOffset / 4) + shaderIndex]

  • offset = heapOffset + (indirectIndex × heapIndexStride)

where Binding is the binding value in the shader, arrayIndex is the index into the array if the shader binding is declared as an array, and pPushData is the total set of push data specified by cmdPushDataEXT. The value of the address in push data must be a multiple of 4. Index reads through indirectAddress are performed as non-volatile uniform buffer reads, and can be synchronized using ACCESS_2_UNIFORM_READ_BIT. The value in memory must remain static while any shader invocation using this mapping is in flight to avoid a data race.

If the mapped resource is a OpTypeSampledImage, offset is instead calculated for the sampler as

  • uint32_t *samplerIndirectAddress = ((VkDeviceAddress*)pPushData)[samplerPushOffset/8]

  • samplerIndirectIndex = samplerAddr[(samplerAddressOffset / 4) + shaderIndex]

  • offset = samplerHeapOffset + (samplerIndirectIndex × samplerHeapIndexStride)

If useCombinedImageSamplerIndex is TRUE, and the mapped resource is a OpTypeSampledImage, indirectIndex and samplerIndirectIndex in the above equations are instead calculated as

  • indirectIndex = indirectAddress[addressOffset/4 + shaderIndex] & 0xFFFFF

  • samplerIndirectIndex = indirectAddress[addressOffset/4 + shaderIndex] >> 20) & 0xFFF

If the mapped resource is a OpTypeSampler or OpTypeSampledImage, and pEmbeddedSampler is not NULL, the specified embedded sampler will be used rather than accessing the sampler heap.

Valid Usage

  • pushOffset must be a multiple of 8

Valid Usage (Implicit)

  • If pEmbeddedSampler is not NULL, pEmbeddedSampler must be a valid pointer to a valid SamplerCreateInfo structure

See Also

VK_EXT_descriptor_heap, Bool32, DescriptorMappingSourceDataEXT, SamplerCreateInfo

Constructors

Instances4Show, FromCStruct, ToCStruct, Zero

VkDescriptorMappingSourceHeapDataEXT - Structure specifying mapping a uniform buffer to heap data

Description

Uniform buffers using this mapping will be backed directly by data in the heap. Accessing data in the uniform buffer at an offset of shaderOffset in the shader will access heap data at an offset equal to

  • offset = shaderOffset + heapOffset + ((uint32_t*)pPushData)[pushOffset/4]

where pPushData is the total set of push data specified by cmdPushDataEXT. Shader reads through the heap mapped in this way are performed according to the mapped resource.

Valid Usage

See Also

VK_EXT_descriptor_heap, DescriptorMappingSourceDataEXT

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkDescriptorMappingSourceShaderRecordIndexEXT - Structure specifying mapping resources to a heap index in shader record data

Description

Resources using this mapping will be backed by a descriptor in the heap, at an offset calculated as

  • shaderRecordIndex = ((uint32_t*)pShaderRecordData)[shaderRecordOffset/4]

  • shaderIndex = (Binding - firstBinding) + arrayIndex

  • offset = heapOffset + (shaderRecordIndex × heapIndexStride) + (shaderIndex × heapArrayStride)

where Binding is the binding value in the shader, arrayIndex is the index into the array if the shader binding is declared as an array, and pShaderRecordData is the set of shader record data accessible to the shader.

If the mapped resource is a OpTypeSampledImage, offset is instead calculated for the sampler as

  • samplerShaderRecordIndex = ((uint32_t*)pShaderRecordData)[samplerShaderRecordOffset/4]

  • offset = samplerHeapOffset + (samplerShaderRecordIndex × samplerHeapIndexStride) + (shaderIndex × samplerHeapArrayStride)

If useCombinedImageSamplerIndex is TRUE, and the mapped resource is a OpTypeSampledImage, shaderRecordIndex and samplerShaderRecordIndex in the above equations are instead calculated as

  • shaderRecordIndex = ((uint32_t*)pShaderRecordData)[shaderRecordOffset/4] & 0xFFFFF

  • samplerShaderRecordIndex = (((uint32_t*)pShaderRecordData)[shaderRecordOffset/4] >> 20) & 0xFFF

If the mapped resource is a OpTypeSampler or OpTypeSampledImage, and pEmbeddedSampler is not NULL, the specified embedded sampler will be used rather than accessing the sampler heap.

Valid Usage

  • shaderRecordOffset must be a multiple of 4

Valid Usage (Implicit)

  • If pEmbeddedSampler is not NULL, pEmbeddedSampler must be a valid pointer to a valid SamplerCreateInfo structure

See Also

VK_EXT_descriptor_heap, Bool32, DescriptorMappingSourceDataEXT, SamplerCreateInfo

Constructors

Instances4Show, FromCStruct, ToCStruct, Zero

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

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 cmdPushDataEXT. Reads through indirectAddress are performed as non-volatile uniform buffer reads, and can be synchronized using 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

See Also

VK_EXT_descriptor_heap, DescriptorMappingSourceDataEXT

Constructors

  • DescriptorMappingSourceIndirectAddressEXT
    • pushOffset :: Word32

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

      pushOffset must be a multiple of 8

      pushOffset must be less than or equal to maxPushDataSize - 8

    • addressOffset :: Word32

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

      addressOffset must be a multiple of 8

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkDescriptorSetAndBindingMappingEXT - Structure specifying mappings from a set of shader resources to a descriptor heap

Description

Resources specified in a shader with a DescriptorSet decoration set to descriptorSet, a Binding decoration greater than or equal to firstBinding and less than the sum of firstBinding and bindingCount, and a resource type matching one of the bits in resourceMask will be mapped according to source and sourceData.

Applications are free to overspecify bindings that are not present; allowing reuse of the same mapping structures with multiple shaders, even when those shaders only partially reuse those mappings. This includes things like setting binding counts higher than the number used in the shader, specifying bindings that are not present in the shader, and setting resourceMask to all possible resources that may be encountered.

If source selects an element of sourceData defined by a structure, the description of that structure defines how resources are mapped. Source mappings using a single base type are defined here.

If source is DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT, the resource will be backed by heap data as specified by constantOffset.

If source is DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT, the resource will be backed by heap data as specified by pushIndex.

If source is DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, the resource will be backed by heap data as specified by indirectIndex.

If source is DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, the resource will be backed by heap data as specified by indirectIndexArray.

If source is DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT, the resource will be backed by heap data as specified by heapData.

If source is DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT, the resource will be backed by push data at a range from pushDataOffset to the size of the resource, allowing a uniform buffer to be backed by push data access push data. Accessing data in the uniform buffer at an offset of shaderOffset in the shader will access push data at an offset equal to

  • offset = shaderOffset + pushDataOffset.

If source is DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, the resource will be backed by data pointed to by a device address in push data at an offset of pushAddressOffset. Accessing data via the mapped resource in the shader will access data backing the address specified in push data:

  • address = ((VkDeviceAddress*)pPushData)[pushAddressOffset/8]

where pPushData is the total set of push data specified by cmdPushDataEXT. If the shader resource is an acceleration structure, the address must be a valid acceleration structure address.

If source is DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, the resource will be backed by heap data as specified by indirectAddress.

Accesses to resources using mappings to anything that is not a descriptor in a heap are not subject to robustness guarantees; resources for such mappings must not be accessed out of bounds.

If source is DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT, the resource will be backed by heap data as specified by shaderRecordIndex.

If source is DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT, the resource will be backed by shader record data at a range from shaderRecordDataOffset to the size of the resource, allowing a uniform buffer to be used as a way to access shader record data. Accessing data in the uniform buffer at an offset shaderOffset in the shader will access shader record data at an offset equal to

  • offset = shaderOffset + shaderRecordDataOffset.

If source is DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, the resource will be backed by data pointed to by a device address in the shader record at shaderRecordAddressOffset. Accessing data via the mapped resource in the shader will access data backing the address specified in shader record data:

  • address = ((VkDeviceAddress*)pShaderRecordData)[shaderRecordAddressOffset/8]

where pShaderRecord is the memory associated with a given shader as its shader record. If the shader resource is an acceleration structure, the address must be a valid acceleration structure address.

Accesses to resources using DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT mappings are not subject to robustness guarantees; data must not be accessed outside of the allocated memory range.

Mappings must be declared for all variables with a DescriptorSet and Binding in the shader resource interface.

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, DescriptorMappingSourceDataEXT, DescriptorMappingSourceEXT, ShaderDescriptorSetAndBindingMappingInfoEXT, SpirvResourceTypeFlagsEXT, StructureType

Constructors

Instances4Extensible, Show, ToCStruct, Zero

VkShaderDescriptorSetAndBindingMappingInfoEXT - Structure specifying mappings from shader resources to descriptor heaps

Description

Including this structure in the pNext chain of PipelineShaderStageCreateInfo will set mappings for the shader defined by that structure. Similarly, including this structure in the pNext chain of a ShaderCreateInfoEXT with a codeType of SHADER_CODE_TYPE_SPIRV_EXT, will set mappings for that shader.

If this structure is not present, it is equivalent to setting mappingCount to 0.

Valid Usage

  • Any two elements of pMappings must not have the same value of descriptorSet, an overlapping range specified by firstBinding and bindingCount, and any overlapping bits in resourceMask

Valid Usage (Implicit)

Structure Chaining

Extends the structures

See Also

VK_EXT_descriptor_heap, DescriptorSetAndBindingMappingEXT, StructureType

Constructors

Instances3Show, ToCStruct, Zero

VkSamplerCustomBorderColorIndexCreateInfoEXT - Structure specifying the custom border color index for a sampler

Description

If this structure is included in the pNext chain of SamplerCreateInfo, the value of index will be used for the custom border color registration. index does not need to be registered at the point that a sampler object is created or a sampler descriptor is written; as long as it is registered when any use of the sampler is recorded to a command, and remains registered while the sampler is in use. The color registered with the index and the color specified in the sampler must be identically defined.

If this structure is not provided when creating a sampler object with a custom border color, it is equivalent to registering a new custom border color by calling registerCustomBorderColorEXT with that custom border color value, and using that value as index in this structure. This implicit registration will be implicitly unregistered when the sampler is destroyed.

If this structure is not provided when creating a sampler object without a custom border color, it is equivalent to setting index to 0.

Structure Chaining

Extends the structure

See Also

VK_EXT_custom_border_color, VK_EXT_descriptor_heap, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkOpaqueCaptureDataCreateInfoEXT - Structure specifying opaque capture data

Description

When an image is created with IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT set in ImageCreateInfo::flags, if the pNext chain of ImageCreateInfo includes this structure, and pData is not NULL, the implementation will attempt to recreate the image such that descriptors written with writeResourceDescriptorsEXT will be reproduced with the same bit pattern as during capture if possible. If the implementation is unable to recreate the image based on this data, image creation will fail and return ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS.

When a tensor is created with TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM set in TensorCreateInfoARM::flags, if the pNext chain of TensorCreateInfoARM includes this structure, and pData is not NULL, the implementation will attempt to recreate the tensor such that descriptors written with writeResourceDescriptorsEXT will be reproduced with the same bit pattern as during capture if possible. If the implementation is unable to recreate the tensor based on this data, tensor creation will fail and return ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS.

If this structure is not present, it is equivalent to setting pData to NULL.

Valid Usage (Implicit)

Structure Chaining

Extends the structures

See Also

VK_EXT_descriptor_heap, HostAddressRangeConstEXT, StructureType

Constructors

Instances4Show, FromCStruct, ToCStruct, Zero

VkIndirectCommandsLayoutPushDataTokenNV - Struct specifying the details of an indirect push data command layout token

Description

If this structure is in the pNext chain of IndirectCommandsLayoutTokenNV, and IndirectCommandsLayoutTokenNV::tokenType is set to INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV, this structure defines a push data command layout token.

If this structure is not provided, it is equivalent to setting pushDataOffset and pushDataSize to 0.

Valid Usage

  • The sum of pushDataOffset and pushDataSize must be less than maxPushDataSize

  • pushDataOffset must be a multiple of 4

  • pushDataSize must be a multiple of 4

Valid Usage (Implicit)

Structure Chaining

Extends the structure

See Also

VK_EXT_descriptor_heap, VK_NV_device_generated_commands, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkSubsampledImageFormatPropertiesEXT - Structure specifying image descriptor count for subsampled images

Structure Chaining

Extends the structure

See Also

VK_EXT_descriptor_heap, VK_EXT_fragment_density_map, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkPhysicalDeviceDescriptorHeapFeaturesEXT - Structure describing support for descriptor heaps

Description

If the PhysicalDeviceDescriptorHeapFeaturesEXT structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. If the application wishes to use a Device with any features described by PhysicalDeviceDescriptorHeapFeaturesEXT, it must add an instance of the structure, with the desired feature members set to TRUE, to the pNext chain of DeviceCreateInfo when creating the Device.

Structure Chaining

Extends the structures

See Also

VK_EXT_descriptor_heap, Bool32, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkPhysicalDeviceDescriptorHeapPropertiesEXT - Structure describing supported image alignments for a physical device

Description

If the PhysicalDeviceDescriptorHeapPropertiesEXT structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Structure Chaining

Extends the structure

See Also

VK_EXT_descriptor_heap, Bool32, DeviceSize, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkCommandBufferInheritanceDescriptorHeapInfoEXT - Structure specifying command buffer inheritance information

Description

If this structure is not present, the behavior is as if pSamplerHeapBindInfo and pResourceHeapBindInfo were both NULL.

Valid Usage

  • If the descriptorHeap feature is not enabled, pSamplerHeapBindInfo must be NULL

  • If the descriptorHeap feature is not enabled, pResourceHeapBindInfo must be NULL

  • If pSamplerHeapBindInfo is not NULL, pSamplerHeapBindInfo->heapRange must be a device address range allocated to the application from a buffer created with the BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT usage flag set

  • If pResourceHeapBindInfo is not NULL, pResourceHeapBindInfo->heapRange must be a device address range allocated to the application from a buffer created with the BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT usage flag set

Valid Usage (Implicit)

  • If pSamplerHeapBindInfo is not NULL, pSamplerHeapBindInfo must be a valid pointer to a valid BindHeapInfoEXT structure

  • If pResourceHeapBindInfo is not NULL, pResourceHeapBindInfo must be a valid pointer to a valid BindHeapInfoEXT structure

Structure Chaining

Extends the structure

See Also

VK_EXT_descriptor_heap, BindHeapInfoEXT, StructureType

Constructors

Instances4Show, FromCStruct, ToCStruct, Zero

VkPhysicalDeviceDescriptorHeapTensorPropertiesARM - Structure describing descriptor heap tensor properties supported by an implementation

Description

If the PhysicalDeviceDescriptorHeapTensorPropertiesARM structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Structure Chaining

Extends the structure

See Also

VK_ARM_tensors, VK_EXT_descriptor_heap, DeviceSize, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero
Instances3Show, ToCStruct, Zero
Instances3Show, ToCStruct, Zero
newtypenewtype DescriptorMappingSourceEXT
#

VkDescriptorMappingSourceEXT - Specifies the mapping source for a shader binding

Description

See Also

VK_EXT_descriptor_heap, DescriptorSetAndBindingMappingEXT

Instances6Eq, Ord, Read, Show, Storable, Zero
newtypenewtype SpirvResourceTypeFlagBitsEXT
#

VkSpirvResourceTypeFlagBitsEXT - Bitmask specifying different SPIR-V resource declarations

Description

See Also

VK_EXT_descriptor_heap, SpirvResourceTypeFlagsEXT

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …
newtypenewtype TensorARM
#
Instances7Eq, Ord, Show, Storable, HasObjectType, IsHandle, …

VkSamplerCustomBorderColorCreateInfoEXT - Structure specifying custom border color

Description

If format is a depth/stencil format, the aspect is determined by the value of SamplerCreateInfo::borderColor. If SamplerCreateInfo::borderColor is BORDER_COLOR_FLOAT_CUSTOM_EXT, the depth aspect is considered. If SamplerCreateInfo::borderColor is BORDER_COLOR_INT_CUSTOM_EXT, the stencil aspect is considered.

If format is FORMAT_UNDEFINED, the SamplerCreateInfo::borderColor is BORDER_COLOR_INT_CUSTOM_EXT, and the sampler is used with an image with a stencil format, then the implementation must source the custom border color from either the first or second components of SamplerCreateInfo::borderColor and should source it from the first component.

Valid Usage

Valid Usage (Implicit)

  • format must be a valid Format value

Structure Chaining

Extends the structure

See Also

VK_EXT_custom_border_color, ClearColorValue, Format, StructureType, registerCustomBorderColorEXT

Constructors

Instances3Show, ToCStruct, Zero
datadata TensorViewCreateInfoARM (es :: [Type])
#

VkTensorViewCreateInfoARM - Structure specifying parameters of a newly created tensor view

Description

If tensor was created with the TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM flag, format can be different from the tensor’s format, but if they are not equal they must be compatible. Tensor format compatibility is defined in the Format Compatibility Classes section. Views of compatible formats will have the same mapping between element locations irrespective of the format, with only the interpretation of the bit pattern changing.

Values intended to be used with one view format may not be exactly preserved when written or read through a different format. For example, an integer value that happens to have the bit pattern of a floating-point denorm or NaN may be flushed or canonicalized when written or read through a view with a floating-point format. Similarly, a value written through a signed normalized format that has a bit pattern exactly equal to -2b may be changed to -2b + 1 as described in Conversion from Normalized Fixed-Point to Floating-Point.

Valid Usage

Valid Usage (Implicit)

See Also

VK_ARM_tensors, VK_EXT_descriptor_heap, Format, ResourceDescriptorDataEXT, StructureType, TensorARM, TensorViewCreateFlagsARM, createTensorViewARM

Constructors

Instances5Extensible, Show, FromCStruct, ToCStruct, Zero

VkDeviceAddressRangeKHR - Structure specifying a device address range

Valid Usage

  • If size is not 0, address must not be 0

  • The sum of address and size must be less than or equal to the sum of an address retrieved from a Buffer and the value of BufferCreateInfo::size used to create that Buffer

Valid Usage (Implicit)

  • If address is not 0, address must be a valid DeviceAddress value

See Also

VK_EXT_descriptor_heap, VK_KHR_device_address_commands, AccelerationStructureCreateInfo2KHR, BindHeapInfoEXT, BindIndexBuffer3InfoKHR, BindTransformFeedbackBuffer2InfoEXT, ConditionalRenderingBeginInfo2EXT, DeviceAddress, DeviceMemoryCopyKHR, DeviceMemoryImageCopyKHR, DeviceSize, DispatchIndirect2InfoKHR, DrawIndirectCount2InfoKHR, MemoryMarkerInfoAMD, MemoryRangeBarrierKHR, ResourceDescriptorDataEXT, TexelBufferDescriptorInfoEXT, cmdFillMemoryKHR, cmdUpdateMemoryKHR

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero
newtypenewtype IndirectCommandsTokenTypeNV
#
Instances6Eq, Ord, Read, Show, Storable, Zero
newtypenewtype IndirectCommandsTokenTypeEXT
#

VkIndirectCommandsTokenTypeEXT - Enum specifying token commands

Description

'

Common Tokens

Command Data

INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT

u32[]

array of indices into the indirect execution set

INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT

u32[]

raw data

INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT

u8[]

raw data

INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT

u32

placeholder data (not accessed by shader)

INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT

u32

placeholder data (not accessed by shader)

Compute Tokens

INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT

DispatchIndirectCommand

Ray Tracing Tokens

INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT

TraceRaysIndirectCommand2KHR

Graphics State Tokens

INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT

BindIndexBufferIndirectCommandEXT

INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT

BindVertexBufferIndirectCommandEXT

Graphics Draw Tokens

INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT

DrawIndexedIndirectCommand

INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT

DrawIndirectCommand

INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT

DrawMeshTasksIndirectCommandEXT

INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT

DrawMeshTasksIndirectCommandNV

Graphics Draw Count Tokens

INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT

DrawIndirectCountIndirectCommandEXT

with VkDrawIndexedIndirectCommand

INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT

DrawIndirectCountIndirectCommandEXT

with VkDrawIndirectCommand

INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT

DrawIndirectCountIndirectCommandEXT

with VkDrawMeshTasksIndirectCommandEXT

INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT

DrawIndirectCountIndirectCommandEXT

with VkDrawMeshTasksIndirectCommandNV

Supported Indirect Command Tokens

See Also

VK_EXT_device_generated_commands, IndirectCommandsLayoutTokenEXT

Instances6Eq, Ord, Read, Show, Storable, Zero
newtypenewtype ShaderCreateFlagBitsEXT
#

VkShaderCreateFlagBitsEXT - Bitmask controlling how a shader object is created

Description

See Also

VK_EXT_shader_object, ShaderCreateFlagsEXT

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …
newtypenewtype TensorCreateFlagBitsARM
#

VkTensorCreateFlagBitsARM - Bitmask specifying additional parameters of a tensor

Description

See Also

VK_ARM_tensors, TensorCreateFlagsARM

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …
newtypenewtype TensorViewCreateFlagBitsARM
#

VkTensorViewCreateFlagBitsARM - Bitmask specifying additional parameters of an tensor view

Description

See Also

VK_ARM_tensors, TensorViewCreateFlagsARM

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …