vulkan
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_descriptor_heap

Description

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.

Synopsis

Documentation

writeSamplerDescriptorsEXT Source #

Arguments

:: MonadIO io 
=> Device

device is the logical device that the descriptors are for.

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

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

-> ("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.

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

writeResourceDescriptorsEXT Source #

Arguments

:: MonadIO io 
=> Device

device is the logical device that the descriptors are for.

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

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

-> ("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.

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

cmdBindSamplerHeapEXT Source #

Arguments

:: MonadIO io 
=> CommandBuffer

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

-> ("bindInfo" ::: BindHeapInfoEXT)

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

-> 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 + minSamplerHeapReservedRange), or in the range [pBindInfo->reservedRangeOffset, pBindInfo->reservedRangeOffset + minSamplerHeapReservedRangeWithEmbedded) if embedded samplers will be used, are reserved for the implementation and must not be accessed by the application at any time from when this command is recorded until all command buffers with that range bound (even invalid ones) have been reset or freed.

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 LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BITState

Conditional Rendering

vkCmdBindSamplerHeapEXT is not affected by conditional rendering

See Also

VK_EXT_descriptor_heap, BindHeapInfoEXT, CommandBuffer

cmdBindResourceHeapEXT Source #

Arguments

:: MonadIO io 
=> CommandBuffer

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

-> ("bindInfo" ::: BindHeapInfoEXT)

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

-> 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 + minResourceHeapReservedRange) 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.

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 LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BITState

Conditional Rendering

vkCmdBindResourceHeapEXT is not affected by conditional rendering

See Also

VK_EXT_descriptor_heap, BindHeapInfoEXT, CommandBuffer

cmdPushDataEXT Source #

Arguments

:: forall (a :: [Type]) io. (Extendss PushDataInfoEXT a, PokeChain a, MonadIO io) 
=> CommandBuffer

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

-> PushDataInfoEXT a

pPushDataInfo is a pointer to a PushDataInfoEXT structure.

-> 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 LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BITState

Conditional Rendering

vkCmdPushDataEXT is not affected by conditional rendering

See Also

VK_EXT_descriptor_heap, CommandBuffer, PushDataInfoEXT

registerCustomBorderColorEXT Source #

Arguments

:: MonadIO io 
=> Device

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

-> SamplerCustomBorderColorCreateInfoEXT

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

-> ("requestIndex" ::: Bool)

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

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

unregisterCustomBorderColorEXT Source #

Arguments

:: MonadIO io 
=> Device

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

device must be a valid Device handle

-> ("index" ::: Word32)

index is the uint32_t index value to unregister.

index must be less than maxCustomBorderColorSamplers

-> io () 

vkUnregisterCustomBorderColorEXT - Unregister a custom border color

Valid Usage (Implicit)

See Also

VK_EXT_custom_border_color, VK_EXT_descriptor_heap, Device

getImageOpaqueCaptureDataEXT Source #

Arguments

:: MonadIO io 
=> Device

device is the logical device that gets the data.

-> ("images" ::: Vector Image)

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

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

getPhysicalDeviceDescriptorSizeEXT Source #

Arguments

:: MonadIO io 
=> PhysicalDevice

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

physicalDevice must be a valid PhysicalDevice handle

-> DescriptorType

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

descriptorType must be a valid DescriptorType value

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

getTensorOpaqueCaptureDataARM Source #

Arguments

:: MonadIO io 
=> Device

device is the logical device that gets the data.

-> ("tensors" ::: Vector TensorARM)

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

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

data HostAddressRangeEXT Source #

VkHostAddressRangeEXT - Structure specifying a host address range

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, getImageOpaqueCaptureDataEXT, getTensorOpaqueCaptureDataARM, writeResourceDescriptorsEXT, writeSamplerDescriptorsEXT

Constructors

HostAddressRangeEXT 

Fields

  • 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

Instances

Instances details
Storable HostAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show HostAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct HostAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct HostAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero HostAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data HostAddressRangeConstEXT Source #

VkHostAddressRangeConstEXT - Structure specifying a constant host address range

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, OpaqueCaptureDataCreateInfoEXT, PushDataInfoEXT

Constructors

HostAddressRangeConstEXT 

Fields

  • address :: Ptr ()

    address is a read-only 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

Instances

Instances details
Storable HostAddressRangeConstEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show HostAddressRangeConstEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct HostAddressRangeConstEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct HostAddressRangeConstEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero HostAddressRangeConstEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data DeviceAddressRangeEXT Source #

VkDeviceAddressRangeEXT - 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, BindHeapInfoEXT, DeviceAddress, DeviceSize, ResourceDescriptorDataEXT, TexelBufferDescriptorInfoEXT

Constructors

DeviceAddressRangeEXT 

Fields

Instances

Instances details
Eq DeviceAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable DeviceAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show DeviceAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct DeviceAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct DeviceAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero DeviceAddressRangeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data TexelBufferDescriptorInfoEXT Source #

VkTexelBufferDescriptorInfoEXT - Structure describing an image descriptor created from a buffer

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, DeviceAddressRangeEXT, Format, ResourceDescriptorDataEXT, StructureType

Constructors

TexelBufferDescriptorInfoEXT 

Fields

Instances

Instances details
Storable TexelBufferDescriptorInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show TexelBufferDescriptorInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct TexelBufferDescriptorInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct TexelBufferDescriptorInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero TexelBufferDescriptorInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data ImageDescriptorInfoEXT Source #

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

ImageDescriptorInfoEXT 

Fields

data ResourceDescriptorInfoEXT (es :: [Type]) Source #

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

ResourceDescriptorInfoEXT 

Fields

Instances

Instances details
Extensible ResourceDescriptorInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Methods

extensibleTypeName :: String Source #

getNext :: forall (es :: [Type]). ResourceDescriptorInfoEXT es -> Chain es Source #

setNext :: forall (ds :: [Type]) (es :: [Type]). ResourceDescriptorInfoEXT ds -> Chain es -> ResourceDescriptorInfoEXT es Source #

extends :: forall e b proxy. Typeable e => proxy e -> (Extends ResourceDescriptorInfoEXT e => b) -> Maybe b Source #

Show (Chain es) => Show (ResourceDescriptorInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

(Extendss ResourceDescriptorInfoEXT es, PokeChain es) => ToCStruct (ResourceDescriptorInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

es ~ ('[] :: [Type]) => Zero (ResourceDescriptorInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data BindHeapInfoEXT Source #

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

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, CommandBufferInheritanceDescriptorHeapInfoEXT, DeviceAddressRangeEXT, DeviceSize, StructureType, cmdBindResourceHeapEXT, cmdBindSamplerHeapEXT

Constructors

BindHeapInfoEXT 

Fields

Instances

Instances details
Storable BindHeapInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show BindHeapInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct BindHeapInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct BindHeapInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero BindHeapInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data PushDataInfoEXT (es :: [Type]) Source #

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

PushDataInfoEXT 

Fields

  • next :: Chain es

    pNext is NULL or a pointer to a structure extending this structure.

  • offset :: Word32

    offset is the start offset of the push data range to update, in units of bytes.

  • data' :: HostAddressRangeConstEXT

    data is the host address range containing the push data to update.

Instances

Instances details
Extensible PushDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Methods

extensibleTypeName :: String Source #

getNext :: forall (es :: [Type]). PushDataInfoEXT es -> Chain es Source #

setNext :: forall (ds :: [Type]) (es :: [Type]). PushDataInfoEXT ds -> Chain es -> PushDataInfoEXT es Source #

extends :: forall e b proxy. Typeable e => proxy e -> (Extends PushDataInfoEXT e => b) -> Maybe b Source #

Show (Chain es) => Show (PushDataInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

(Extendss PushDataInfoEXT es, PeekChain es) => FromCStruct (PushDataInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

(Extendss PushDataInfoEXT es, PokeChain es) => ToCStruct (PushDataInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

es ~ ('[] :: [Type]) => Zero (PushDataInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data DescriptorMappingSourceConstantOffsetEXT Source #

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

DescriptorMappingSourceConstantOffsetEXT 

Fields

data DescriptorMappingSourcePushIndexEXT Source #

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

DescriptorMappingSourcePushIndexEXT 

Fields

  • heapOffset :: Word32

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

  • pushOffset :: Word32

    pushOffset is an index into 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 push 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.

  • 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.

data DescriptorMappingSourceIndirectIndexEXT Source #

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 

Fields

  • 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.

data DescriptorMappingSourceIndirectIndexArrayEXT Source #

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

DescriptorMappingSourceIndirectIndexArrayEXT 

Fields

  • 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.

  • 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.

data DescriptorMappingSourceHeapDataEXT Source #

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

DescriptorMappingSourceHeapDataEXT 

Fields

  • heapOffset :: Word32

    heapOffset is a constant byte offset added to the heap address for the mapped buffer.

    heapOffset must be a multiple of minUniformBufferOffsetAlignment

  • pushOffset :: Word32

    pushOffset is an index into push data where an additional offset into the heap for the mapped resource will be retrieved.

    pushOffset must be a multiple of 4

    pushOffset must be less than or equal to maxPushDataSize - 4

Instances

Instances details
Eq DescriptorMappingSourceHeapDataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable DescriptorMappingSourceHeapDataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show DescriptorMappingSourceHeapDataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct DescriptorMappingSourceHeapDataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct DescriptorMappingSourceHeapDataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero DescriptorMappingSourceHeapDataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data DescriptorMappingSourceShaderRecordIndexEXT Source #

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

DescriptorMappingSourceShaderRecordIndexEXT 

Fields

  • heapOffset :: Word32

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

  • shaderRecordOffset :: Word32

    shaderRecordOffset is an index into shader record 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 shader record 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.

  • samplerShaderRecordOffset :: Word32

    samplerShaderRecordOffset is used only when mapping a combined image sampler, used in place of shaderRecordOffset 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.

data DescriptorMappingSourceIndirectAddressEXT Source #

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 

Fields

  • 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

Instances

Instances details
Eq DescriptorMappingSourceIndirectAddressEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable DescriptorMappingSourceIndirectAddressEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show DescriptorMappingSourceIndirectAddressEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct DescriptorMappingSourceIndirectAddressEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct DescriptorMappingSourceIndirectAddressEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero DescriptorMappingSourceIndirectAddressEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data DescriptorSetAndBindingMappingEXT (es :: [Type]) Source #

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

DescriptorSetAndBindingMappingEXT 

Fields

Instances

Instances details
Extensible DescriptorSetAndBindingMappingEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show (Chain es) => Show (DescriptorSetAndBindingMappingEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

(Extendss DescriptorSetAndBindingMappingEXT es, PokeChain es) => ToCStruct (DescriptorSetAndBindingMappingEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

es ~ ('[] :: [Type]) => Zero (DescriptorSetAndBindingMappingEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data ShaderDescriptorSetAndBindingMappingInfoEXT Source #

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)

See Also

VK_EXT_descriptor_heap, DescriptorSetAndBindingMappingEXT, StructureType

Constructors

ShaderDescriptorSetAndBindingMappingInfoEXT 

Fields

data SamplerCustomBorderColorIndexCreateInfoEXT Source #

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.

Valid Usage (Implicit)

See Also

VK_EXT_custom_border_color, VK_EXT_descriptor_heap, StructureType

Constructors

SamplerCustomBorderColorIndexCreateInfoEXT 

Fields

Instances

Instances details
Eq SamplerCustomBorderColorIndexCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable SamplerCustomBorderColorIndexCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show SamplerCustomBorderColorIndexCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct SamplerCustomBorderColorIndexCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct SamplerCustomBorderColorIndexCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero SamplerCustomBorderColorIndexCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data OpaqueCaptureDataCreateInfoEXT Source #

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)

See Also

VK_EXT_descriptor_heap, HostAddressRangeConstEXT, StructureType

Constructors

OpaqueCaptureDataCreateInfoEXT 

Fields

data IndirectCommandsLayoutPushDataTokenNV Source #

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)

See Also

VK_EXT_descriptor_heap, VK_NV_device_generated_commands, StructureType

Constructors

IndirectCommandsLayoutPushDataTokenNV 

Fields

Instances

Instances details
Eq IndirectCommandsLayoutPushDataTokenNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable IndirectCommandsLayoutPushDataTokenNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show IndirectCommandsLayoutPushDataTokenNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct IndirectCommandsLayoutPushDataTokenNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct IndirectCommandsLayoutPushDataTokenNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero IndirectCommandsLayoutPushDataTokenNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data SubsampledImageFormatPropertiesEXT Source #

VkSubsampledImageFormatPropertiesEXT - Structure specifying image descriptor count for subsampled images

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, VK_EXT_fragment_density_map, StructureType

Constructors

SubsampledImageFormatPropertiesEXT 

Fields

Instances

Instances details
Eq SubsampledImageFormatPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable SubsampledImageFormatPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show SubsampledImageFormatPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct SubsampledImageFormatPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct SubsampledImageFormatPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero SubsampledImageFormatPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data PhysicalDeviceDescriptorHeapFeaturesEXT Source #

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.

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, Bool32, StructureType

Constructors

PhysicalDeviceDescriptorHeapFeaturesEXT 

Fields

Instances

Instances details
Eq PhysicalDeviceDescriptorHeapFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable PhysicalDeviceDescriptorHeapFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show PhysicalDeviceDescriptorHeapFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct PhysicalDeviceDescriptorHeapFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct PhysicalDeviceDescriptorHeapFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero PhysicalDeviceDescriptorHeapFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data PhysicalDeviceDescriptorHeapPropertiesEXT Source #

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.

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_heap, Bool32, DeviceSize, StructureType

Constructors

PhysicalDeviceDescriptorHeapPropertiesEXT 

Fields

Instances

Instances details
Eq PhysicalDeviceDescriptorHeapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable PhysicalDeviceDescriptorHeapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show PhysicalDeviceDescriptorHeapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct PhysicalDeviceDescriptorHeapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct PhysicalDeviceDescriptorHeapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero PhysicalDeviceDescriptorHeapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data CommandBufferInheritanceDescriptorHeapInfoEXT Source #

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

See Also

VK_EXT_descriptor_heap, BindHeapInfoEXT, StructureType

Constructors

CommandBufferInheritanceDescriptorHeapInfoEXT 

Fields

Instances

Instances details
Show CommandBufferInheritanceDescriptorHeapInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct CommandBufferInheritanceDescriptorHeapInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct CommandBufferInheritanceDescriptorHeapInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero CommandBufferInheritanceDescriptorHeapInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data PhysicalDeviceDescriptorHeapTensorPropertiesARM Source #

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.

Valid Usage (Implicit)

See Also

VK_ARM_tensors, VK_EXT_descriptor_heap, DeviceSize, StructureType

Constructors

PhysicalDeviceDescriptorHeapTensorPropertiesARM 

Fields

Instances

Instances details
Eq PhysicalDeviceDescriptorHeapTensorPropertiesARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable PhysicalDeviceDescriptorHeapTensorPropertiesARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show PhysicalDeviceDescriptorHeapTensorPropertiesARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

FromCStruct PhysicalDeviceDescriptorHeapTensorPropertiesARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

ToCStruct PhysicalDeviceDescriptorHeapTensorPropertiesARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero PhysicalDeviceDescriptorHeapTensorPropertiesARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

data DescriptorMappingSourceDataEXT Source #

newtype DescriptorMappingSourceEXT Source #

VkDescriptorMappingSourceEXT - Specifies the mapping source for a shader binding

Description

See Also

VK_EXT_descriptor_heap, DescriptorSetAndBindingMappingEXT

Instances

Instances details
Eq DescriptorMappingSourceEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Ord DescriptorMappingSourceEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable DescriptorMappingSourceEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Read DescriptorMappingSourceEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show DescriptorMappingSourceEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero DescriptorMappingSourceEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

newtype SpirvResourceTypeFlagBitsEXT Source #

VkSpirvResourceTypeFlagBitsEXT - Bitmask specifying different SPIR-V resource declarations

Description

See Also

VK_EXT_descriptor_heap, SpirvResourceTypeFlagsEXT

Instances

Instances details
Bits SpirvResourceTypeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Methods

(.&.) :: SpirvResourceTypeFlagBitsEXT -> SpirvResourceTypeFlagBitsEXT -> SpirvResourceTypeFlagBitsEXT #

(.|.) :: SpirvResourceTypeFlagBitsEXT -> SpirvResourceTypeFlagBitsEXT -> SpirvResourceTypeFlagBitsEXT #

xor :: SpirvResourceTypeFlagBitsEXT -> SpirvResourceTypeFlagBitsEXT -> SpirvResourceTypeFlagBitsEXT #

complement :: SpirvResourceTypeFlagBitsEXT -> SpirvResourceTypeFlagBitsEXT #

shift :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

rotate :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

zeroBits :: SpirvResourceTypeFlagBitsEXT #

bit :: Int -> SpirvResourceTypeFlagBitsEXT #

setBit :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

clearBit :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

complementBit :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

testBit :: SpirvResourceTypeFlagBitsEXT -> Int -> Bool #

bitSizeMaybe :: SpirvResourceTypeFlagBitsEXT -> Maybe Int #

bitSize :: SpirvResourceTypeFlagBitsEXT -> Int #

isSigned :: SpirvResourceTypeFlagBitsEXT -> Bool #

shiftL :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

unsafeShiftL :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

shiftR :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

unsafeShiftR :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

rotateL :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

rotateR :: SpirvResourceTypeFlagBitsEXT -> Int -> SpirvResourceTypeFlagBitsEXT #

popCount :: SpirvResourceTypeFlagBitsEXT -> Int #

FiniteBits SpirvResourceTypeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Eq SpirvResourceTypeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Ord SpirvResourceTypeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Storable SpirvResourceTypeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Read SpirvResourceTypeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Show SpirvResourceTypeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

Zero SpirvResourceTypeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_heap

type EXT_DESCRIPTOR_HEAP_EXTENSION_NAME = "VK_EXT_descriptor_heap" Source #

newtype TensorARM Source #

Constructors

TensorARM Word64 

Instances

Instances details
Eq TensorARM Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord TensorARM Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Storable TensorARM Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show TensorARM Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType TensorARM Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle TensorARM Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero TensorARM Source # 
Instance details

Defined in Vulkan.Extensions.Handles

data SamplerCustomBorderColorCreateInfoEXT Source #

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

See Also

VK_EXT_custom_border_color, ClearColorValue, Format, StructureType, registerCustomBorderColorEXT

Constructors

SamplerCustomBorderColorCreateInfoEXT 

Fields

data TensorViewCreateInfoARM (es :: [Type]) Source #

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

TensorViewCreateInfoARM 

Fields

Instances

Instances details
Extensible TensorViewCreateInfoARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Methods

extensibleTypeName :: String Source #

getNext :: forall (es :: [Type]). TensorViewCreateInfoARM es -> Chain es Source #

setNext :: forall (ds :: [Type]) (es :: [Type]). TensorViewCreateInfoARM ds -> Chain es -> TensorViewCreateInfoARM es Source #

extends :: forall e b proxy. Typeable e => proxy e -> (Extends TensorViewCreateInfoARM e => b) -> Maybe b Source #

Show (Chain es) => Show (TensorViewCreateInfoARM es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

(Extendss TensorViewCreateInfoARM es, PeekChain es) => FromCStruct (TensorViewCreateInfoARM es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

(Extendss TensorViewCreateInfoARM es, PokeChain es) => ToCStruct (TensorViewCreateInfoARM es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

es ~ ('[] :: [Type]) => Zero (TensorViewCreateInfoARM es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

newtype IndirectCommandsTokenTypeNV Source #

Instances

Instances details
Eq IndirectCommandsTokenTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_device_generated_commands

Ord IndirectCommandsTokenTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_device_generated_commands

Storable IndirectCommandsTokenTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_device_generated_commands

Read IndirectCommandsTokenTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_device_generated_commands

Show IndirectCommandsTokenTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_device_generated_commands

Zero IndirectCommandsTokenTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_device_generated_commands

newtype IndirectCommandsTokenTypeEXT Source #

VkIndirectCommandsTokenTypeEXT - Enum specifying token commands

Description

'

Common TokensCommand Data
INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXTu32[] array of indices into the indirect execution set
INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXTu32[] raw data
INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXTu8[] raw data
INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXTu32 placeholder data (not accessed by shader)
INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXTu32 placeholder data (not accessed by shader)
Compute Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXTDispatchIndirectCommand
Ray Tracing Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXTTraceRaysIndirectCommand2KHR
Graphics State Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXTBindIndexBufferIndirectCommandEXT
INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXTBindVertexBufferIndirectCommandEXT
Graphics Draw Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXTDrawIndexedIndirectCommand
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXTDrawIndirectCommand
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXTDrawMeshTasksIndirectCommandEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXTDrawMeshTasksIndirectCommandNV
Graphics Draw Count Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXTDrawIndirectCountIndirectCommandEXT with VkDrawIndexedIndirectCommand
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXTDrawIndirectCountIndirectCommandEXT with VkDrawIndirectCommand
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXTDrawIndirectCountIndirectCommandEXT with VkDrawMeshTasksIndirectCommandEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXTDrawIndirectCountIndirectCommandEXT with VkDrawMeshTasksIndirectCommandNV

Supported Indirect Command Tokens

See Also

VK_EXT_device_generated_commands, IndirectCommandsLayoutTokenEXT

Bundled Patterns

pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT :: IndirectCommandsTokenTypeEXT 
pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT :: IndirectCommandsTokenTypeEXT 

Instances

Instances details
Eq IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Ord IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Storable IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Read IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

newtype ShaderCreateFlagBitsEXT Source #

VkShaderCreateFlagBitsEXT - Bitmask controlling how a shader object is created

Description

See Also

VK_EXT_shader_object, ShaderCreateFlagsEXT

Instances

Instances details
Bits ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

FiniteBits ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Eq ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Ord ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Storable ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Read ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Show ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Zero ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

newtype TensorCreateFlagBitsARM Source #

VkTensorCreateFlagBitsARM - Bitmask specifying additional parameters of a tensor

Description

See Also

VK_ARM_tensors, TensorCreateFlagsARM

Instances

Instances details
Bits TensorCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

FiniteBits TensorCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Eq TensorCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Ord TensorCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Storable TensorCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Read TensorCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Show TensorCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Zero TensorCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

newtype TensorViewCreateFlagBitsARM Source #

VkTensorViewCreateFlagBitsARM - Bitmask specifying additional parameters of an tensor view

Description

See Also

VK_ARM_tensors, TensorViewCreateFlagsARM

Instances

Instances details
Bits TensorViewCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Methods

(.&.) :: TensorViewCreateFlagBitsARM -> TensorViewCreateFlagBitsARM -> TensorViewCreateFlagBitsARM #

(.|.) :: TensorViewCreateFlagBitsARM -> TensorViewCreateFlagBitsARM -> TensorViewCreateFlagBitsARM #

xor :: TensorViewCreateFlagBitsARM -> TensorViewCreateFlagBitsARM -> TensorViewCreateFlagBitsARM #

complement :: TensorViewCreateFlagBitsARM -> TensorViewCreateFlagBitsARM #

shift :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

rotate :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

zeroBits :: TensorViewCreateFlagBitsARM #

bit :: Int -> TensorViewCreateFlagBitsARM #

setBit :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

clearBit :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

complementBit :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

testBit :: TensorViewCreateFlagBitsARM -> Int -> Bool #

bitSizeMaybe :: TensorViewCreateFlagBitsARM -> Maybe Int #

bitSize :: TensorViewCreateFlagBitsARM -> Int #

isSigned :: TensorViewCreateFlagBitsARM -> Bool #

shiftL :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

unsafeShiftL :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

shiftR :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

unsafeShiftR :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

rotateL :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

rotateR :: TensorViewCreateFlagBitsARM -> Int -> TensorViewCreateFlagBitsARM #

popCount :: TensorViewCreateFlagBitsARM -> Int #

FiniteBits TensorViewCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Eq TensorViewCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Ord TensorViewCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Storable TensorViewCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Read TensorViewCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Show TensorViewCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors

Zero TensorViewCreateFlagBitsARM Source # 
Instance details

Defined in Vulkan.Extensions.VK_ARM_tensors