vulkan
Safe HaskellNone
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
Ratified
Extension and Version Dependencies

VK_KHR_get_physical_device_properties2                  or

Vulkan Version 1.1              and

VK_KHR_buffer_device_address              and

VK_EXT_descriptor_indexing          or

Vulkan Version 1.2      and

VK_KHR_synchronization2 or Vulkan Version 1.3

API Interactions
  • Interacts with VK_KHR_acceleration_structure
  • Interacts with VK_NV_ray_tracing
Deprecation State
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.

Deprecation by VK_EXT_descriptor_heap

Functionality in this extension is deprecated by the VK_EXT_descriptor_heap extension. See Descriptor Management: Replaced by Descriptor Heaps.

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

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

getDescriptorSetLayoutSizeEXT Source #

Arguments

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

:: 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_EXT can be used. Any potential types in MutableDescriptorTypeCreateInfoEXT::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 (a :: [Type]) io. (Extendss DescriptorGetInfoEXT a, PokeChain a, MonadIO io) 
=> Device

device is the logical device that gets the descriptor.

-> ("descriptorInfo" ::: DescriptorGetInfoEXT a)

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

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

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 Secondary Both Outside VK_QUEUE_COMPUTE_BIT VK_QUEUE_DATA_GRAPH_BIT_ARM VK_QUEUE_GRAPHICS_BITState

Conditional Rendering

vkCmdBindDescriptorBuffersEXT is not affected by conditional rendering

See Also

VK_EXT_descriptor_buffer, CommandBuffer, DescriptorBufferBindingInfoEXT

cmdSetDescriptorBufferOffsetsEXT Source #

Arguments

:: 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+setCount-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.

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.

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.

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)

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 Secondary Both Outside VK_QUEUE_COMPUTE_BIT VK_QUEUE_DATA_GRAPH_BIT_ARM VK_QUEUE_GRAPHICS_BITState

Conditional Rendering

vkCmdSetDescriptorBufferOffsetsEXT is not affected by conditional rendering

See Also

VK_EXT_descriptor_buffer, CommandBuffer, DeviceSize, PipelineBindPoint, PipelineLayout

cmdBindDescriptorBufferEmbeddedSamplersEXT Source #

Arguments

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

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

vkCmdBindDescriptorBufferEmbeddedSamplersEXT is not affected by conditional rendering

See Also

VK_EXT_descriptor_buffer, CommandBuffer, PipelineBindPoint, PipelineLayout

getBufferOpaqueCaptureDescriptorDataEXT Source #

Arguments

:: 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 an application-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

:: 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 an application-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

:: 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 an application-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

:: 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 an application-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

:: 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 an application-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. If the application wishes to use a Device with any features described by PhysicalDeviceDescriptorBufferFeaturesEXT, 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_buffer, Bool32, StructureType

Constructors

PhysicalDeviceDescriptorBufferFeaturesEXT 

Fields

Instances

Instances details
Eq PhysicalDeviceDescriptorBufferFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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_EXT has a descriptor size which is implied by the descriptor types included in the MutableDescriptorTypeCreateInfoEXT::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 the robustBufferAccess feature 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
Eq PhysicalDeviceDescriptorBufferPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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
Eq PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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

Valid Usage (Implicit)

  • pNext must be NULL
  • If address is not 0, address must be a valid DeviceAddress value
  • 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
Eq DescriptorAddressInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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 the pNext chain includes a BufferUsageFlags2CreateInfo structure, BufferUsageFlags2CreateInfo::usage from that structure is used instead of usage 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

Methods

extensibleTypeName :: String Source #

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

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

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

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)

  • buffer must be a valid Buffer handle

See Also

VK_EXT_descriptor_buffer, Buffer, StructureType

Constructors

DescriptorBufferBindingPushDescriptorBufferHandleEXT 

Fields

Instances

Instances details
Eq DescriptorBufferBindingPushDescriptorBufferHandleEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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 (es :: [Type]) 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

Instances

Instances details
Extensible DescriptorGetInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

Methods

extensibleTypeName :: String Source #

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

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

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

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

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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
Eq BufferCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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
Eq ImageCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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
Eq ImageViewCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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
Eq SamplerCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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
Eq AccelerationStructureCaptureDescriptorDataInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer

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

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, TensorCreateInfoARM, TensorViewCreateInfoARM, AccelerationStructureCreateInfoNV or AccelerationStructureCreateInfoKHR structure.

When providing opaque capture data for an image, if the pNext chain of ImageCreateInfo or TensorCreateInfoARM contains an instance of both this structure and OpaqueCaptureDataCreateInfoEXT, they should both specify data from the same original resource. If they have capture data from different original resources, resource creation is much more likely to fail.

Valid Usage (Implicit)

See Also

VK_EXT_descriptor_buffer, StructureType

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 #

newtype AccelerationStructureKHR Source #

Instances

Instances details
Eq AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Storable AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show 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
Eq AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Storable AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show 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

Description

See Also

VK_KHR_acceleration_structure, AccelerationStructureCreateFlagsKHR

Instances

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

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

Storable 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

Zero AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure