vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_descriptor_buffer

Description

Name

VK_EXT_descriptor_buffer - device extension

VK_EXT_descriptor_buffer

Name String
VK_EXT_descriptor_buffer
Extension Type
Device extension
Registered Extension Number
317
Revision
1
Ratification Status
Not ratified
Extension and Version Dependencies
VK_KHR_get_physical_device_properties2 and VK_KHR_buffer_device_address and VK_KHR_synchronization2 and VK_EXT_descriptor_indexing
Contact
Extension Proposal
VK_EXT_descriptor_buffer

Other Extension Metadata

Last Modified Date
2021-06-07
IP Status
No known IP claims.
Contributors
  • Tobias Hector, AMD
  • Stu Smith, AMD
  • Maciej Jesionowski, AMD
  • Boris Zanin, AMD
  • Hans-Kristian Arntzen, Valve
  • Connor Abbott, Valve
  • Baldur Karlsson, Valve
  • Mike Blumenkrantz, Valve
  • Graeme Leese, Broadcom
  • Jan-Harald Fredriksen, Arm
  • Rodrigo Locatti, NVIDIA
  • Jeff Bolz, NVIDIA
  • Piers Daniell, NVIDIA
  • Jeff Leger, QUALCOMM
  • Lionel Landwerlin, Intel
  • Slawomir Grajewski, Intel

Description

This extension introduces new commands to put shader-accessible descriptors directly in memory, making the management of descriptor data more explicit.

New Commands

If VK_KHR_acceleration_structure or VK_NV_ray_tracing is supported:

New Structures

If VK_KHR_acceleration_structure or VK_NV_ray_tracing is supported:

New Unions

New Enum Constants

If VK_KHR_acceleration_structure or VK_NV_ray_tracing is supported:

Version History

  • Revision 1, 2021-06-07 (Stu Smith)

    • Initial revision

See Also

BufferCaptureDescriptorDataInfoEXT, DescriptorAddressInfoEXT, DescriptorBufferBindingInfoEXT, DescriptorBufferBindingPushDescriptorBufferHandleEXT, DescriptorDataEXT, DescriptorGetInfoEXT, ImageCaptureDescriptorDataInfoEXT, ImageViewCaptureDescriptorDataInfoEXT, OpaqueCaptureDescriptorDataCreateInfoEXT, PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, PhysicalDeviceDescriptorBufferFeaturesEXT, PhysicalDeviceDescriptorBufferPropertiesEXT, SamplerCaptureDescriptorDataInfoEXT, cmdBindDescriptorBufferEmbeddedSamplersEXT, cmdBindDescriptorBuffersEXT, cmdSetDescriptorBufferOffsetsEXT, getBufferOpaqueCaptureDescriptorDataEXT, getDescriptorEXT, getDescriptorSetLayoutBindingOffsetEXT, getDescriptorSetLayoutSizeEXT, getImageOpaqueCaptureDescriptorDataEXT, getImageViewOpaqueCaptureDescriptorDataEXT, getSamplerOpaqueCaptureDescriptorDataEXT

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

getDescriptorSetLayoutSizeEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that gets the size.

-> DescriptorSetLayout

layout is the descriptor set layout being queried.

-> io ("layoutSizeInBytes" ::: DeviceSize) 

vkGetDescriptorSetLayoutSizeEXT - Get the size of a descriptor set layout in memory

Description

The size of a descriptor set layout will be at least as large as the sum total of the size of all descriptors in the layout, and may be larger. This size represents the amount of memory that will be required to store all of the descriptors for this layout in memory, when placed according to the layout’s offsets as obtained by getDescriptorSetLayoutBindingOffsetEXT.

If any binding in layout is DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, the returned size includes space for the maximum descriptorCount descriptors as declared for that binding. To compute the required size of a descriptor set with a DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT:

  • size = offset + descriptorSize × variableDescriptorCount

where offset is obtained by getDescriptorSetLayoutBindingOffsetEXT and descriptorSize is the size of the relevant descriptor as obtained from PhysicalDeviceDescriptorBufferPropertiesEXT, and variableDescriptorCount is the equivalent of DescriptorSetVariableDescriptorCountAllocateInfo::pDescriptorCounts. For DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, variableDescriptorCount is the size in bytes for the inline uniform block, and descriptorSize is 1.

If PhysicalDeviceDescriptorBufferPropertiesEXT::combinedImageSamplerDescriptorSingleArray is FALSE and the variable descriptor type is DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, variableDescriptorCount is always considered to be the upper bound.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle
  • layout must be a valid DescriptorSetLayout handle
  • pLayoutSizeInBytes must be a valid pointer to a DeviceSize value
  • layout must have been created, allocated, or retrieved from device

See Also

VK_EXT_descriptor_buffer, DescriptorSetLayout, Device, DeviceSize

getDescriptorSetLayoutBindingOffsetEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that gets the offset.

-> DescriptorSetLayout

layout is the descriptor set layout being queried.

-> ("binding" ::: Word32)

binding is the binding number being queried.

-> io ("offset" ::: DeviceSize) 

vkGetDescriptorSetLayoutBindingOffsetEXT - Get the offset of a binding within a descriptor set layout

Description

Each binding in a descriptor set layout is assigned an offset in memory by the implementation. When a shader accesses a resource with that binding, it will access the bound descriptor buffer from that offset to look for its descriptor. This command provides an application with that offset, so that descriptors can be placed in the correct locations. The precise location accessed by a shader for a given descriptor is as follows:

  • location = bufferAddress + setOffset + descriptorOffset + (arrayElement × descriptorSize)

where bufferAddress and setOffset are the base address and offset for the identified descriptor set as specified by cmdBindDescriptorBuffersEXT and cmdSetDescriptorBufferOffsetsEXT, descriptorOffset is the offset for the binding returned by this command, arrayElement is the index into the array specified in the shader, and descriptorSize is the size of the relevant descriptor as obtained from PhysicalDeviceDescriptorBufferPropertiesEXT. Applications are responsible for placing valid descriptors at the expected location in order for a shader to access it. The overall offset added to bufferAddress to calculate location must be less than PhysicalDeviceDescriptorBufferPropertiesEXT::maxSamplerDescriptorBufferRange for samplers and PhysicalDeviceDescriptorBufferPropertiesEXT::maxResourceDescriptorBufferRange for resources.

If any binding in layout is DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, that binding must have the largest offset of any binding.

A descriptor binding with type DESCRIPTOR_TYPE_MUTABLE_VALVE can be used. Any potential types in MutableDescriptorTypeCreateInfoVALVE::pDescriptorTypes for binding share the same offset. If the size of the mutable descriptor is larger than the size of a concrete descriptor type being accessed, the padding area is ignored by the implementation.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle
  • layout must be a valid DescriptorSetLayout handle
  • pOffset must be a valid pointer to a DeviceSize value
  • layout must have been created, allocated, or retrieved from device

See Also

VK_EXT_descriptor_buffer, DescriptorSetLayout, Device, DeviceSize

getDescriptorEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that gets the descriptor.

-> ("descriptorInfo" ::: DescriptorGetInfoEXT)

pDescriptorInfo is a pointer to a DescriptorGetInfoEXT structure specifying the parameters of the descriptor to get.

-> ("dataSize" ::: Word64)

dataSize is the amount of the descriptor data to get in bytes.

-> ("descriptor" ::: Ptr ())

pDescriptor is a pointer to a user-allocated buffer where the descriptor will be written.

-> io () 

vkGetDescriptorEXT - To get a descriptor to place in a buffer

Description

The size of the data for each descriptor type is determined by the value in PhysicalDeviceDescriptorBufferPropertiesEXT. This value also defines the stride in bytes for arrays of that descriptor type.

If the PhysicalDeviceDescriptorBufferPropertiesEXT::combinedImageSamplerDescriptorSingleArray property is FALSE the implementation requires an array of DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER descriptors to be written into a descriptor buffer as an array of image descriptors, immediately followed by an array of sampler descriptors. Applications must write the first PhysicalDeviceDescriptorBufferPropertiesEXT::sampledImageDescriptorSize bytes of the data returned through pDescriptor to the first array, and the remaining PhysicalDeviceDescriptorBufferPropertiesEXT::samplerDescriptorSize bytes of the data to the second array. For variable-sized descriptor bindings of DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER descriptors, the two arrays each have a size equal to the upper bound descriptorCount of that binding.

A descriptor obtained by this command references the underlying ImageView or Sampler, and these objects must not be destroyed before the last time a descriptor is dynamically accessed. For descriptor types which consume an address instead of an object, the underlying Buffer is referenced instead.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pDescriptorInfo must be a valid pointer to a valid DescriptorGetInfoEXT structure
  • pDescriptor must be a valid pointer to an array of dataSize bytes
  • dataSize must be greater than 0

See Also

VK_EXT_descriptor_buffer, DescriptorGetInfoEXT, Device

cmdBindDescriptorBuffersEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer that the descriptor buffers will be bound to.

-> ("bindingInfos" ::: Vector (SomeStruct DescriptorBufferBindingInfoEXT))

pBindingInfos is a pointer to an array of DescriptorBufferBindingInfoEXT structures.

-> io () 

vkCmdBindDescriptorBuffersEXT - Binding descriptor buffers to a command buffer

Description

cmdBindDescriptorBuffersEXT causes any offsets previously set by cmdSetDescriptorBufferOffsetsEXT that use the bindings numbered [0.. bufferCount-1] to be no longer valid for subsequent bound pipeline commands. Any previously bound buffers at binding points greater than or equal to bufferCount are unbound.

Valid Usage

Valid Usage (Implicit)

  • pBindingInfos must be a valid pointer to an array of bufferCount valid DescriptorBufferBindingInfoEXT structures
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics, or compute operations
  • This command must only be called outside of a video coding scope
  • bufferCount must be greater than 0

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

See Also

VK_EXT_descriptor_buffer, CommandBuffer, DescriptorBufferBindingInfoEXT

cmdSetDescriptorBufferOffsetsEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer in which the descriptor buffer offsets will be set.

-> PipelineBindPoint

pipelineBindPoint is a PipelineBindPoint indicating the type of the pipeline that will use the descriptors.

-> PipelineLayout

layout is a PipelineLayout object used to program the bindings.

-> ("firstSet" ::: Word32)

firstSet is the number of the first set to be bound.

-> ("bufferIndices" ::: Vector Word32)

pBufferIndices is a pointer to an array of indices into the descriptor buffer binding points set by cmdBindDescriptorBuffersEXT.

-> ("offsets" ::: Vector DeviceSize)

pOffsets is a pointer to an array of DeviceSize offsets to apply to the bound descriptor buffers.

-> io () 

vkCmdSetDescriptorBufferOffsetsEXT - Setting descriptor buffer offsets in a command buffer

Description

cmdSetDescriptorBufferOffsetsEXT binds setCount pairs of descriptor buffers, specified by indices into the binding points bound using cmdBindDescriptorBuffersEXT, and buffer offsets to set numbers [firstSet..firstSet+descriptorSetCount-1] for subsequent bound pipeline commands set by pipelineBindPoint. Set [firstSet + i] is bound to the descriptor buffer at binding pBufferIndices[i] at an offset of pOffsets[i]. Any bindings that were previously applied via these sets, or calls to cmdBindDescriptorSets, are no longer valid. Other sets will also be invalidated upon calling this command if layout differs from the pipeline layout used to bind those other sets, as described in Pipeline Layout Compatibility.

After binding descriptors, applications can modify descriptor memory either by performing writes on the host or with device commands. When descriptor memory is updated with device commands, visibility for the shader stage accessing a descriptor is ensured with the ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT access flag. Implementations must not access resources referenced by these descriptors unless they are dynamically accessed by shaders. Descriptors bound with this call can be undefined if they are not dynamically accessed by shaders.

Implementations may read descriptor data for any statically accessed descriptor if the binding in layout is not declared with the DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT flag. If the binding in layout is declared with DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, implementations must not read descriptor data that is not dynamically accessed.

Applications must ensure that any descriptor which the implementation may read must be in-bounds of the underlying descriptor buffer binding.

Note

Applications can freely decide how large a variable descriptor buffer binding is, so it may not be safe to read such descriptor payloads statically. The intention of these rules is to allow implementations to speculatively prefetch descriptor payloads where feasible.

Dynamically accessing a resource through descriptor data from an unbound region of a sparse partially-resident buffer will result in invalid descriptor data being read, and therefore undefined behavior.

Note

For descriptors written by the host, visibility is implied through the automatic visibility operation on queue submit, and there is no need to consider VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT. Explicit synchronization for descriptors is only required when descriptors are updated on the device.

Note

The requirements above imply that all descriptor bindings have been defined with the equivalent of DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT and DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, but enabling those features is not required to get this behavior.

Valid Usage

Valid Usage (Implicit)

  • pipelineBindPoint must be a valid PipelineBindPoint value
  • layout must be a valid PipelineLayout handle
  • pBufferIndices must be a valid pointer to an array of setCount uint32_t values
  • pOffsets must be a valid pointer to an array of setCount DeviceSize values
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics, or compute operations
  • This command must only be called outside of a video coding scope
  • setCount must be greater than 0
  • Both of commandBuffer, and layout must have been created, allocated, or retrieved from the same Device

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

See Also

VK_EXT_descriptor_buffer, CommandBuffer, DeviceSize, PipelineBindPoint, PipelineLayout

cmdBindDescriptorBufferEmbeddedSamplersEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer that the embedded immutable samplers will be bound to.

-> PipelineBindPoint

pipelineBindPoint is a PipelineBindPoint indicating the type of the pipeline that will use the embedded immutable samplers.

-> PipelineLayout

layout is a PipelineLayout object used to program the bindings.

-> ("set" ::: Word32)

set is the number of the set to be bound.

-> io () 

vkCmdBindDescriptorBufferEmbeddedSamplersEXT - Setting embedded immutable samplers offsets in a command buffer

Description

cmdBindDescriptorBufferEmbeddedSamplersEXT binds the embedded immutable samplers in set of layout to set for the command buffer for subsequent bound pipeline commands set by pipelineBindPoint. Any previous binding to this set by cmdSetDescriptorBufferOffsetsEXT or this command is overwritten. Any sets that were last bound by a call to cmdBindDescriptorSets are invalidated upon calling this command. Other sets will also be invalidated upon calling this command if layout differs from the pipeline layout used to bind those other sets, as described in Pipeline Layout Compatibility.

Valid Usage

Valid Usage (Implicit)

  • pipelineBindPoint must be a valid PipelineBindPoint value
  • layout must be a valid PipelineLayout handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics, or compute operations
  • This command must only be called outside of a video coding scope
  • Both of commandBuffer, and layout must have been created, allocated, or retrieved from the same Device

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

See Also

VK_EXT_descriptor_buffer, CommandBuffer, PipelineBindPoint, PipelineLayout

getBufferOpaqueCaptureDescriptorDataEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that gets the data.

-> BufferCaptureDescriptorDataInfoEXT

pInfo is a pointer to a BufferCaptureDescriptorDataInfoEXT structure specifying the buffer.

-> ("data" ::: Ptr ())

pData is a pointer to a user-allocated buffer where the data will be written.

-> io () 

vkGetBufferOpaqueCaptureDescriptorDataEXT - Get buffer opaque capture descriptor data

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_EXT_descriptor_buffer, BufferCaptureDescriptorDataInfoEXT, Device

getImageOpaqueCaptureDescriptorDataEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that gets the data.

-> ImageCaptureDescriptorDataInfoEXT

pInfo is a pointer to a ImageCaptureDescriptorDataInfoEXT structure specifying the image.

-> ("data" ::: Ptr ())

pData is a pointer to a user-allocated buffer where the data will be written.

-> io () 

vkGetImageOpaqueCaptureDescriptorDataEXT - Get image opaque capture descriptor data

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_EXT_descriptor_buffer, Device, ImageCaptureDescriptorDataInfoEXT

getImageViewOpaqueCaptureDescriptorDataEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that gets the data.

-> ImageViewCaptureDescriptorDataInfoEXT

pInfo is a pointer to a ImageViewCaptureDescriptorDataInfoEXT structure specifying the image view.

-> ("data" ::: Ptr ())

pData is a pointer to a user-allocated buffer where the data will be written.

-> io () 

vkGetImageViewOpaqueCaptureDescriptorDataEXT - Get image view opaque capture descriptor data

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_EXT_descriptor_buffer, Device, ImageViewCaptureDescriptorDataInfoEXT

getSamplerOpaqueCaptureDescriptorDataEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that gets the data.

-> SamplerCaptureDescriptorDataInfoEXT

pInfo is a pointer to a SamplerCaptureDescriptorDataInfoEXT structure specifying the sampler.

-> ("data" ::: Ptr ())

pData is a pointer to a user-allocated buffer where the data will be written.

-> io () 

vkGetSamplerOpaqueCaptureDescriptorDataEXT - Get sampler opaque capture descriptor data

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_EXT_descriptor_buffer, Device, SamplerCaptureDescriptorDataInfoEXT

getAccelerationStructureOpaqueCaptureDescriptorDataEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that gets the data.

-> AccelerationStructureCaptureDescriptorDataInfoEXT

pInfo is a pointer to a AccelerationStructureCaptureDescriptorDataInfoEXT structure specifying the acceleration structure.

-> ("data" ::: Ptr ())

pData is a pointer to a user-allocated buffer where the data will be written.

-> io () 

vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT - Get acceleration structure opaque capture descriptor data

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_EXT_descriptor_buffer, VK_KHR_acceleration_structure, VK_NV_ray_tracing, AccelerationStructureCaptureDescriptorDataInfoEXT, Device

data PhysicalDeviceDescriptorBufferFeaturesEXT Source #

VkPhysicalDeviceDescriptorBufferFeaturesEXT - Structure describing the descriptor buffer features that can be supported by an implementation

Members

This structure describes the following feature:

Description

If the PhysicalDeviceDescriptorBufferFeaturesEXT 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. PhysicalDeviceDescriptorBufferFeaturesEXT can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, Bool32, StructureType

Constructors

PhysicalDeviceDescriptorBufferFeaturesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceDescriptorBufferFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show PhysicalDeviceDescriptorBufferFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq PhysicalDeviceDescriptorBufferFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct PhysicalDeviceDescriptorBufferFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct PhysicalDeviceDescriptorBufferFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero PhysicalDeviceDescriptorBufferFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data PhysicalDeviceDescriptorBufferPropertiesEXT Source #

VkPhysicalDeviceDescriptorBufferPropertiesEXT - Structure describing descriptor buffer properties supported by an implementation

Description

A descriptor binding with type DESCRIPTOR_TYPE_MUTABLE_VALVE has a descriptor size which is implied by the descriptor types included in the MutableDescriptorTypeCreateInfoVALVE::pDescriptorTypes list. The descriptor size is equal to the maximum size of any descriptor type included in the pDescriptorTypes list.

As there is no way to request robust and non-robust descriptors separately, or specify robust/non-robust descriptors in the set layout, if robustBufferAccess is enabled then robust descriptors are always used.

If the PhysicalDeviceDescriptorBufferPropertiesEXT 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_buffer, Bool32, DeviceSize, StructureType

Constructors

PhysicalDeviceDescriptorBufferPropertiesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceDescriptorBufferPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show PhysicalDeviceDescriptorBufferPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq PhysicalDeviceDescriptorBufferPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct PhysicalDeviceDescriptorBufferPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct PhysicalDeviceDescriptorBufferPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero PhysicalDeviceDescriptorBufferPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT Source #

VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT - Structure describing descriptor buffer density map properties supported by an implementation

Description

If the PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT 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_buffer, StructureType

Constructors

PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data DescriptorAddressInfoEXT Source #

VkDescriptorAddressInfoEXT - Structure specifying descriptor buffer address info

Valid Usage

  • If the nullDescriptor feature is not enabled, address must not be zero
  • If address is zero, range must be WHOLE_SIZE
  • If address is not zero, range must not be WHOLE_SIZE
  • If address is not zero, address must be a valid device address at an offset within a Buffer
  • range must be less than or equal to the size of the buffer containing address minus the offset of address from the base address of the buffer
  • range must not be zero

Valid Usage (Implicit)

  • pNext must be NULL
  • format must be a valid Format value

If the nullDescriptor feature is enabled, address can be zero. Loads from a null descriptor return zero values and stores and atomics to a null descriptor are discarded.

See Also

VK_EXT_descriptor_buffer, DescriptorDataEXT, DeviceAddress, DeviceSize, Format, StructureType

Constructors

DescriptorAddressInfoEXT 

Fields

  • address :: DeviceAddress

    address is either 0 or a device address at an offset in a buffer, where the base address can be queried from getBufferDeviceAddress.

  • range :: DeviceSize

    range is the size in bytes of the buffer or buffer view used by the descriptor.

  • format :: Format

    format is the format of the data elements in the buffer view and is ignored for buffers.

Instances

Instances details
Storable DescriptorAddressInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show DescriptorAddressInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq DescriptorAddressInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct DescriptorAddressInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct DescriptorAddressInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero DescriptorAddressInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

VkDescriptorBufferBindingInfoEXT - Structure specifying descriptor buffer binding information

Description

If a PipelineCreateFlags2CreateInfoKHR structure is present in the pNext chain, PipelineCreateFlags2CreateInfoKHR::flags from that structure is used instead of flags from this structure.

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, BufferUsageFlags, DeviceAddress, StructureType, cmdBindDescriptorBuffersEXT

Constructors

DescriptorBufferBindingInfoEXT 

Fields

Instances

Instances details
Extensible DescriptorBufferBindingInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data DescriptorBufferBindingPushDescriptorBufferHandleEXT Source #

VkDescriptorBufferBindingPushDescriptorBufferHandleEXT - Structure specifying push descriptor buffer binding information

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, Buffer, StructureType

Constructors

DescriptorBufferBindingPushDescriptorBufferHandleEXT 

Fields

Instances

Instances details
Storable DescriptorBufferBindingPushDescriptorBufferHandleEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show DescriptorBufferBindingPushDescriptorBufferHandleEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq DescriptorBufferBindingPushDescriptorBufferHandleEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct DescriptorBufferBindingPushDescriptorBufferHandleEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct DescriptorBufferBindingPushDescriptorBufferHandleEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero DescriptorBufferBindingPushDescriptorBufferHandleEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data DescriptorGetInfoEXT Source #

VkDescriptorGetInfoEXT - Structure specifying parameters of descriptor to get

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, DescriptorDataEXT, DescriptorType, StructureType, getDescriptorEXT

Constructors

DescriptorGetInfoEXT 

Fields

data BufferCaptureDescriptorDataInfoEXT Source #

VkBufferCaptureDescriptorDataInfoEXT - Structure specifying a buffer for descriptor capture

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, Buffer, StructureType, getBufferOpaqueCaptureDescriptorDataEXT

Constructors

BufferCaptureDescriptorDataInfoEXT 

Fields

Instances

Instances details
Storable BufferCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show BufferCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq BufferCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct BufferCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct BufferCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero BufferCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data ImageCaptureDescriptorDataInfoEXT Source #

VkImageCaptureDescriptorDataInfoEXT - Structure specifying an image for descriptor capture

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, Image, StructureType, getImageOpaqueCaptureDescriptorDataEXT

Constructors

ImageCaptureDescriptorDataInfoEXT 

Fields

Instances

Instances details
Storable ImageCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show ImageCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq ImageCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct ImageCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct ImageCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero ImageCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data ImageViewCaptureDescriptorDataInfoEXT Source #

VkImageViewCaptureDescriptorDataInfoEXT - Structure specifying an image view for descriptor capture

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, ImageView, StructureType, getImageViewOpaqueCaptureDescriptorDataEXT

Constructors

ImageViewCaptureDescriptorDataInfoEXT 

Fields

Instances

Instances details
Storable ImageViewCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show ImageViewCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq ImageViewCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct ImageViewCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct ImageViewCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero ImageViewCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data SamplerCaptureDescriptorDataInfoEXT Source #

VkSamplerCaptureDescriptorDataInfoEXT - Structure specifying a sampler for descriptor capture

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, Sampler, StructureType, getSamplerOpaqueCaptureDescriptorDataEXT

Constructors

SamplerCaptureDescriptorDataInfoEXT 

Fields

Instances

Instances details
Storable SamplerCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show SamplerCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq SamplerCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct SamplerCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct SamplerCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero SamplerCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data AccelerationStructureCaptureDescriptorDataInfoEXT Source #

VkAccelerationStructureCaptureDescriptorDataInfoEXT - Structure specifying an acceleration structure for descriptor capture

Valid Usage

Valid Usage (Implicit)

  • pNext must be NULL
  • If accelerationStructure is not NULL_HANDLE, accelerationStructure must be a valid AccelerationStructureKHR handle
  • If accelerationStructureNV is not NULL_HANDLE, accelerationStructureNV must be a valid AccelerationStructureNV handle
  • Both of accelerationStructure, and accelerationStructureNV that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

See Also

VK_EXT_descriptor_buffer, VK_KHR_acceleration_structure, VK_NV_ray_tracing, AccelerationStructureKHR, AccelerationStructureNV, StructureType, getAccelerationStructureOpaqueCaptureDescriptorDataEXT

Constructors

AccelerationStructureCaptureDescriptorDataInfoEXT 

Fields

Instances

Instances details
Storable AccelerationStructureCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show AccelerationStructureCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Eq AccelerationStructureCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct AccelerationStructureCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct AccelerationStructureCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero AccelerationStructureCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

data OpaqueCaptureDescriptorDataCreateInfoEXT Source #

VkOpaqueCaptureDescriptorDataCreateInfoEXT - Structure specifying opaque capture descriptor data

Description

During replay, opaque descriptor capture data can be specified by adding a OpaqueCaptureDescriptorDataCreateInfoEXT structure to the relevant pNext chain of a BufferCreateInfo, ImageCreateInfo, ImageViewCreateInfo, SamplerCreateInfo, AccelerationStructureCreateInfoNV or AccelerationStructureCreateInfoKHR structure.

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, StructureType

Constructors

OpaqueCaptureDescriptorDataCreateInfoEXT 

Fields

Instances

Instances details
Storable OpaqueCaptureDescriptorDataCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Show OpaqueCaptureDescriptorDataCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

FromCStruct OpaqueCaptureDescriptorDataCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

ToCStruct OpaqueCaptureDescriptorDataCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Zero OpaqueCaptureDescriptorDataCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

type EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME = "VK_EXT_descriptor_buffer" Source #

pattern EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #

newtype AccelerationStructureKHR Source #

Instances

Instances details
Storable AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

newtype AccelerationStructureNV Source #

Instances

Instances details
Storable AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

newtype AccelerationStructureCreateFlagBitsKHR Source #

VkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional creation parameters for acceleration structure

See Also

VK_KHR_acceleration_structure, AccelerationStructureCreateFlagsKHR

Bundled Patterns

pattern ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR :: AccelerationStructureCreateFlagBitsKHR

ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR specifies that the acceleration structure’s address can be saved and reused on a subsequent run.

pattern ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV :: AccelerationStructureCreateFlagBitsKHR 
pattern ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT :: AccelerationStructureCreateFlagBitsKHR

ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT specifies that the acceleration structure can be used with descriptor buffers when capturing and replaying (e.g. for trace capture and replay), see OpaqueCaptureDescriptorDataCreateInfoEXT for more detail.

Instances

Instances details
Storable AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Bits AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Methods

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

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

xor :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

complement :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

shift :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

rotate :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

zeroBits :: AccelerationStructureCreateFlagBitsKHR #

bit :: Int -> AccelerationStructureCreateFlagBitsKHR #

setBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

clearBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

complementBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

testBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: AccelerationStructureCreateFlagBitsKHR -> Maybe Int #

bitSize :: AccelerationStructureCreateFlagBitsKHR -> Int #

isSigned :: AccelerationStructureCreateFlagBitsKHR -> Bool #

shiftL :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

unsafeShiftL :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

shiftR :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

unsafeShiftR :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

rotateL :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

rotateR :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

popCount :: AccelerationStructureCreateFlagBitsKHR -> Int #

FiniteBits AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure