| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
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
VK_KHR_buffer_device_address 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
- Deprecated by VK_EXT_descriptor_heap extension
- 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
cmdBindDescriptorBuffersEXTcmdSetDescriptorBufferOffsetsEXTgetBufferOpaqueCaptureDescriptorDataEXTgetDescriptorEXTgetDescriptorSetLayoutBindingOffsetEXTgetDescriptorSetLayoutSizeEXTgetImageOpaqueCaptureDescriptorDataEXTgetImageViewOpaqueCaptureDescriptorDataEXTgetSamplerOpaqueCaptureDescriptorDataEXT
If VK_KHR_acceleration_structure or VK_NV_ray_tracing is supported:
New Structures
DescriptorAddressInfoEXTDescriptorBufferBindingInfoEXTDescriptorGetInfoEXTImageCaptureDescriptorDataInfoEXTImageViewCaptureDescriptorDataInfoEXTSamplerCaptureDescriptorDataInfoEXTExtending
BufferCreateInfo,ImageCreateInfo,ImageViewCreateInfo,SamplerCreateInfo,AccelerationStructureCreateInfoKHR,AccelerationStructureCreateInfoNV,TensorCreateInfoARM,TensorViewCreateInfoARM:Extending
DescriptorBufferBindingInfoEXT:Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:
If VK_KHR_acceleration_structure or VK_NV_ray_tracing is supported:
New Unions
New Enum Constants
EXT_DESCRIPTOR_BUFFER_SPEC_VERSIONExtending
AccelerationStructureCreateFlagBitsKHR:Extending
AccessFlagBits2:Extending
BufferCreateFlagBits:Extending
BufferUsageFlagBits:Extending
DescriptorSetLayoutCreateFlagBits:Extending
ImageCreateFlagBits:Extending
ImageViewCreateFlagBits:Extending
PipelineCreateFlagBits:Extending
SamplerCreateFlagBits:Extending
StructureType:STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXTSTRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXTSTRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXTSTRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXTSTRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXTSTRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXTSTRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXTSTRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXTSTRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
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
- getDescriptorSetLayoutSizeEXT :: MonadIO io => Device -> DescriptorSetLayout -> io ("layoutSizeInBytes" ::: DeviceSize)
- getDescriptorSetLayoutBindingOffsetEXT :: MonadIO io => Device -> DescriptorSetLayout -> ("binding" ::: Word32) -> io ("offset" ::: DeviceSize)
- getDescriptorEXT :: forall (a :: [Type]) io. (Extendss DescriptorGetInfoEXT a, PokeChain a, MonadIO io) => Device -> ("descriptorInfo" ::: DescriptorGetInfoEXT a) -> ("dataSize" ::: Word64) -> ("descriptor" ::: Ptr ()) -> io ()
- cmdBindDescriptorBuffersEXT :: MonadIO io => CommandBuffer -> ("bindingInfos" ::: Vector (SomeStruct DescriptorBufferBindingInfoEXT)) -> io ()
- cmdSetDescriptorBufferOffsetsEXT :: MonadIO io => CommandBuffer -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("bufferIndices" ::: Vector Word32) -> ("offsets" ::: Vector DeviceSize) -> io ()
- cmdBindDescriptorBufferEmbeddedSamplersEXT :: MonadIO io => CommandBuffer -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> io ()
- getBufferOpaqueCaptureDescriptorDataEXT :: MonadIO io => Device -> BufferCaptureDescriptorDataInfoEXT -> ("data" ::: Ptr ()) -> io ()
- getImageOpaqueCaptureDescriptorDataEXT :: MonadIO io => Device -> ImageCaptureDescriptorDataInfoEXT -> ("data" ::: Ptr ()) -> io ()
- getImageViewOpaqueCaptureDescriptorDataEXT :: MonadIO io => Device -> ImageViewCaptureDescriptorDataInfoEXT -> ("data" ::: Ptr ()) -> io ()
- getSamplerOpaqueCaptureDescriptorDataEXT :: MonadIO io => Device -> SamplerCaptureDescriptorDataInfoEXT -> ("data" ::: Ptr ()) -> io ()
- getAccelerationStructureOpaqueCaptureDescriptorDataEXT :: MonadIO io => Device -> AccelerationStructureCaptureDescriptorDataInfoEXT -> ("data" ::: Ptr ()) -> io ()
- pattern IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT :: ImageCreateFlagBits
- data PhysicalDeviceDescriptorBufferFeaturesEXT = PhysicalDeviceDescriptorBufferFeaturesEXT {}
- data PhysicalDeviceDescriptorBufferPropertiesEXT = PhysicalDeviceDescriptorBufferPropertiesEXT {
- combinedImageSamplerDescriptorSingleArray :: Bool
- bufferlessPushDescriptors :: Bool
- allowSamplerImageViewPostSubmitCreation :: Bool
- descriptorBufferOffsetAlignment :: DeviceSize
- maxDescriptorBufferBindings :: Word32
- maxResourceDescriptorBufferBindings :: Word32
- maxSamplerDescriptorBufferBindings :: Word32
- maxEmbeddedImmutableSamplerBindings :: Word32
- maxEmbeddedImmutableSamplers :: Word32
- bufferCaptureReplayDescriptorDataSize :: Word64
- imageCaptureReplayDescriptorDataSize :: Word64
- imageViewCaptureReplayDescriptorDataSize :: Word64
- samplerCaptureReplayDescriptorDataSize :: Word64
- accelerationStructureCaptureReplayDescriptorDataSize :: Word64
- samplerDescriptorSize :: Word64
- combinedImageSamplerDescriptorSize :: Word64
- sampledImageDescriptorSize :: Word64
- storageImageDescriptorSize :: Word64
- uniformTexelBufferDescriptorSize :: Word64
- robustUniformTexelBufferDescriptorSize :: Word64
- storageTexelBufferDescriptorSize :: Word64
- robustStorageTexelBufferDescriptorSize :: Word64
- uniformBufferDescriptorSize :: Word64
- robustUniformBufferDescriptorSize :: Word64
- storageBufferDescriptorSize :: Word64
- robustStorageBufferDescriptorSize :: Word64
- inputAttachmentDescriptorSize :: Word64
- accelerationStructureDescriptorSize :: Word64
- maxSamplerDescriptorBufferRange :: DeviceSize
- maxResourceDescriptorBufferRange :: DeviceSize
- samplerDescriptorBufferAddressSpaceSize :: DeviceSize
- resourceDescriptorBufferAddressSpaceSize :: DeviceSize
- descriptorBufferAddressSpaceSize :: DeviceSize
- data PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
- data DescriptorAddressInfoEXT = DescriptorAddressInfoEXT {
- address :: DeviceAddress
- range :: DeviceSize
- format :: Format
- data DescriptorBufferBindingInfoEXT (es :: [Type]) = DescriptorBufferBindingInfoEXT {
- next :: Chain es
- address :: DeviceAddress
- usage :: BufferUsageFlags
- data DescriptorBufferBindingPushDescriptorBufferHandleEXT = DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
- data DescriptorGetInfoEXT (es :: [Type]) = DescriptorGetInfoEXT {
- next :: Chain es
- type' :: DescriptorType
- data' :: DescriptorDataEXT
- data BufferCaptureDescriptorDataInfoEXT = BufferCaptureDescriptorDataInfoEXT {}
- data ImageCaptureDescriptorDataInfoEXT = ImageCaptureDescriptorDataInfoEXT {}
- data ImageViewCaptureDescriptorDataInfoEXT = ImageViewCaptureDescriptorDataInfoEXT {}
- data SamplerCaptureDescriptorDataInfoEXT = SamplerCaptureDescriptorDataInfoEXT {}
- data AccelerationStructureCaptureDescriptorDataInfoEXT = AccelerationStructureCaptureDescriptorDataInfoEXT {}
- data OpaqueCaptureDescriptorDataCreateInfoEXT = OpaqueCaptureDescriptorDataCreateInfoEXT {}
- data DescriptorDataEXT
- = ASampler Sampler
- | ACombinedImageSampler DescriptorImageInfo
- | AnInputAttachmentImage DescriptorImageInfo
- | ASampledImage (Maybe DescriptorImageInfo)
- | AStorageImage (Maybe DescriptorImageInfo)
- | AnUniformTexelBuffer (Maybe DescriptorAddressInfoEXT)
- | AStorageTexelBuffer (Maybe DescriptorAddressInfoEXT)
- | AnUniformBuffer (Maybe DescriptorAddressInfoEXT)
- | AStorageBuffer (Maybe DescriptorAddressInfoEXT)
- | AnAccelerationStructure DeviceAddress
- peekDescriptorDataEXT :: DescriptorType -> Ptr DescriptorDataEXT -> IO DescriptorDataEXT
- type EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1
- pattern EXT_DESCRIPTOR_BUFFER_SPEC_VERSION :: Integral a => a
- type EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME = "VK_EXT_descriptor_buffer"
- pattern EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME :: (Eq a, IsString a) => a
- newtype AccelerationStructureKHR = AccelerationStructureKHR Word64
- newtype AccelerationStructureNV = AccelerationStructureNV Word64
- newtype AccelerationStructureCreateFlagBitsKHR where
- AccelerationStructureCreateFlagBitsKHR Flags
- pattern ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT :: AccelerationStructureCreateFlagBitsKHR
- pattern ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR :: AccelerationStructureCreateFlagBitsKHR
- pattern ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV :: AccelerationStructureCreateFlagBitsKHR
- type AccelerationStructureCreateFlagsKHR = AccelerationStructureCreateFlagBitsKHR
Documentation
getDescriptorSetLayoutSizeEXT Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> DescriptorSetLayout |
|
| -> 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
- The descriptorBuffer feature must be enabled
-
layoutmust have been created with theDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTflag set -
layoutmust have not been created with theDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BITflag set -
layoutmust have not been created with theDESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXTflag set
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
layoutmust be a validDescriptorSetLayouthandle -
pLayoutSizeInBytesmust be a valid pointer to aDeviceSizevalue -
layoutmust have been created, allocated, or retrieved fromdevice
See Also
VK_EXT_descriptor_buffer,
DescriptorSetLayout,
Device,
DeviceSize
getDescriptorSetLayoutBindingOffsetEXT Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> DescriptorSetLayout |
|
| -> ("binding" ::: Word32) |
|
| -> 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
- The descriptorBuffer feature must be enabled
-
layoutmust have been created with theDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTflag set -
layoutmust have not been created with theDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BITflag set -
layoutmust have not been created with theDESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXTflag set
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
layoutmust be a validDescriptorSetLayouthandle -
pOffsetmust be a valid pointer to aDeviceSizevalue -
layoutmust have been created, allocated, or retrieved fromdevice
See Also
VK_EXT_descriptor_buffer,
DescriptorSetLayout,
Device,
DeviceSize
Arguments
| :: forall (a :: [Type]) io. (Extendss DescriptorGetInfoEXT a, PokeChain a, MonadIO io) | |
| => Device |
|
| -> ("descriptorInfo" ::: DescriptorGetInfoEXT a) |
|
| -> ("dataSize" ::: Word64) |
|
| -> ("descriptor" ::: Ptr ()) |
|
| -> 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
- The descriptorBuffer feature must be enabled
- If
pDescriptorInfo->typeis notDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERorpDescriptorInfo->data.pCombinedImageSamplerhas animageViewmember that was not created with aSamplerYcbcrConversionInfostructure in itspNextchain,dataSizemust equal the size of a descriptor of typeDescriptorGetInfoEXT::typedetermined by the value inPhysicalDeviceDescriptorBufferPropertiesEXT, or determined byPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT::combinedImageSamplerDensityMapDescriptorSizeifpDescriptorInfospecifies aDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERwhoseSamplerwas created withSAMPLER_CREATE_SUBSAMPLED_BIT_EXTset - If
pDescriptorInfo->typeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERandpDescriptorInfo->data.pCombinedImageSamplerhas animageViewmember that was created with aSamplerYcbcrConversionInfostructure in itspNextchain,dataSizemust equal the size ofPhysicalDeviceDescriptorBufferPropertiesEXT::combinedImageSamplerDescriptorSizetimesSamplerYcbcrConversionImageFormatProperties::combinedImageSamplerDescriptorCount - If
pDescriptorInfo->typeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERand it has aimageViewthat isNULL_HANDLEthendataSizemust be equal to the size ofPhysicalDeviceDescriptorBufferPropertiesEXT::combinedImageSamplerDescriptorSize
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pDescriptorInfomust be a valid pointer to a validDescriptorGetInfoEXTstructure -
pDescriptormust be a valid pointer to an array ofdataSizebytes -
dataSizemust be greater than0
See Also
cmdBindDescriptorBuffersEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("bindingInfos" ::: Vector (SomeStruct DescriptorBufferBindingInfoEXT)) |
|
| -> 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
- If
commandBufferis a secondary command buffer, it must have begun withCommandBufferInheritanceDescriptorHeapInfoEXT::pSamplerHeapBindInfoequal toNULL
- If
commandBufferis a secondary command buffer, it must have begun withCommandBufferInheritanceDescriptorHeapInfoEXT::pResourceHeapBindInfoequal toNULL - The descriptorBuffer feature must be enabled
-
There must be no more than
PhysicalDeviceDescriptorBufferPropertiesEXT::maxSamplerDescriptorBufferBindingselements inpBindingInfoswithDescriptorBufferBindingInfoEXT::usagecontainingBUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT -
There must be no more than
PhysicalDeviceDescriptorBufferPropertiesEXT::maxResourceDescriptorBufferBindingselements inpBindingInfoswithDescriptorBufferBindingInfoEXT::usagecontainingBUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT - There must be no
more than
1element inpBindingInfoswithDescriptorBufferBindingInfoEXT::usagecontainingBUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT -
bufferCountmust be less than or equal toPhysicalDeviceDescriptorBufferPropertiesEXT::maxDescriptorBufferBindings - For each
element of
pBindingInfos, the buffer from whichaddresswas queried must have been created with theBUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXTusage flag set if it contains sampler descriptor data - For each
element of
pBindingInfos, the buffer from whichaddresswas queried must have been created with theBUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXTusage flag set if it contains resource descriptor data - For each
element of
pBindingInfos, at least one buffer from whichaddresswas queried must containusage - For all
elements of
pBindingInfos, the buffer from whichaddresswas queried must have been created with theBUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARMusage flag set if the command pool from whichcommandBufferwas allocated from was created with any element ofDataGraphProcessingEngineCreateInfoARM::pProcessingEngines withisForeignset toTRUE
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pBindingInfosmust be a valid pointer to an array ofbufferCountvalidDescriptorBufferBindingInfoEXTstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT,QUEUE_DATA_GRAPH_BIT_ARM, orQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
bufferCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_COMPUTE_BIT VK_QUEUE_DATA_GRAPH_BIT_ARM VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdBindDescriptorBuffersEXT is not affected by conditional rendering
See Also
VK_EXT_descriptor_buffer,
CommandBuffer, DescriptorBufferBindingInfoEXT
cmdSetDescriptorBufferOffsetsEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> PipelineBindPoint |
|
| -> PipelineLayout |
|
| -> ("firstSet" ::: Word32) |
|
| -> ("bufferIndices" ::: Vector Word32) |
|
| -> ("offsets" ::: Vector DeviceSize) |
|
| -> 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
- If
commandBufferis a secondary command buffer, it must have begun withCommandBufferInheritanceDescriptorHeapInfoEXT::pSamplerHeapBindInfoequal toNULL
- If
commandBufferis a secondary command buffer, it must have begun withCommandBufferInheritanceDescriptorHeapInfoEXT::pResourceHeapBindInfoequal toNULL - The offsets
in
pOffsetsmust be aligned toPhysicalDeviceDescriptorBufferPropertiesEXT::descriptorBufferOffsetAlignment - The offsets
in
pOffsetsmust be small enough such that any descriptor binding referenced bylayoutwithout theDESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BITflag computes a valid address inside the underlyingBuffer - The offsets
in
pOffsetsmust be small enough such that any location accessed by a shader as a sampler descriptor must be withinPhysicalDeviceDescriptorBufferPropertiesEXT::maxSamplerDescriptorBufferRangeof the sampler descriptor buffer binding - The offsets
in
pOffsetsmust be small enough such that any location accessed by a shader as a resource descriptor must be withinPhysicalDeviceDescriptorBufferPropertiesEXT::maxResourceDescriptorBufferRangeof the resource descriptor buffer binding - Each
element of
pBufferIndicesmust be less thanPhysicalDeviceDescriptorBufferPropertiesEXT::maxDescriptorBufferBindings - Each
element of
pBufferIndicesmust reference a valid descriptor buffer binding set by a previous call tocmdBindDescriptorBuffersEXTincommandBuffer - The sum of
firstSetandsetCountmust be less than or equal toPipelineLayoutCreateInfo::setLayoutCountprovided whenlayoutwas created - The
DescriptorSetLayoutfor each set fromfirstSettofirstSet+setCountwhenlayoutwas created must have been created with theDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTbit set - The
DescriptorSetLayoutfor each set fromfirstSettofirstSet+setCountwhenlayoutwas created must not have been created with theDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHRbit set - The
DescriptorSetLayoutfor each set fromfirstSettofirstSet+setCountwhenlayoutwas created must not have been created with theDESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXTbit set - The descriptorBuffer feature must be enabled
-
pipelineBindPointmust be supported by thecommandBuffer’s parentCommandPool’s queue family
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pipelineBindPointmust be a validPipelineBindPointvalue -
layoutmust be a validPipelineLayouthandle -
pBufferIndicesmust be a valid pointer to an array ofsetCountuint32_tvalues -
pOffsetsmust be a valid pointer to an array ofsetCountDeviceSizevalues -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT,QUEUE_DATA_GRAPH_BIT_ARM, orQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
setCountmust be greater than0 - Both of
commandBuffer, andlayoutmust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_COMPUTE_BIT VK_QUEUE_DATA_GRAPH_BIT_ARM VK_QUEUE_GRAPHICS_BIT | State |
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 |
|
| -> PipelineBindPoint |
|
| -> PipelineLayout |
|
| -> ("set" ::: Word32) |
|
| -> 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
-
If
commandBufferis a secondary command buffer, it must have begun withCommandBufferInheritanceDescriptorHeapInfoEXT::pSamplerHeapBindInfoequal toNULL
-
If
commandBufferis a secondary command buffer, it must have begun withCommandBufferInheritanceDescriptorHeapInfoEXT::pResourceHeapBindInfoequal toNULL - The
DescriptorSetLayoutat indexsetwhenlayoutwas created must have been created with theDESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXTbit set -
setmust be less than or equal toPipelineLayoutCreateInfo::setLayoutCountprovided whenlayoutwas created - The descriptorBuffer feature must be enabled
-
pipelineBindPointmust be supported by thecommandBuffer’s parentCommandPool’s queue family
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pipelineBindPointmust be a validPipelineBindPointvalue -
layoutmust be a validPipelineLayouthandle -
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT, orQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
Both of
commandBuffer, andlayoutmust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdBindDescriptorBufferEmbeddedSamplersEXT is not affected by conditional rendering
See Also
VK_EXT_descriptor_buffer,
CommandBuffer,
PipelineBindPoint,
PipelineLayout
getBufferOpaqueCaptureDescriptorDataEXT Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> BufferCaptureDescriptorDataInfoEXT |
|
| -> ("data" ::: Ptr ()) |
|
| -> io () |
vkGetBufferOpaqueCaptureDescriptorDataEXT - Get buffer opaque capture descriptor data
Valid Usage
- The descriptorBufferCaptureReplay feature must be enabled
-
pDatamust point to a buffer that is at leastPhysicalDeviceDescriptorBufferPropertiesEXT::bufferCaptureReplayDescriptorDataSizebytes in size - If
devicewas created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validBufferCaptureDescriptorDataInfoEXTstructure -
pDatamust be a pointer value
Return Codes
See Also
VK_EXT_descriptor_buffer,
BufferCaptureDescriptorDataInfoEXT, Device
getImageOpaqueCaptureDescriptorDataEXT Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ImageCaptureDescriptorDataInfoEXT |
|
| -> ("data" ::: Ptr ()) |
|
| -> io () |
vkGetImageOpaqueCaptureDescriptorDataEXT - Get image opaque capture descriptor data
Valid Usage
- The descriptorBufferCaptureReplay feature must be enabled
-
pDatamust point to a buffer that is at leastPhysicalDeviceDescriptorBufferPropertiesEXT::imageCaptureReplayDescriptorDataSizebytes in size - If
devicewas created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validImageCaptureDescriptorDataInfoEXTstructure -
pDatamust be a pointer value
Return Codes
See Also
VK_EXT_descriptor_buffer,
Device, ImageCaptureDescriptorDataInfoEXT
getImageViewOpaqueCaptureDescriptorDataEXT Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ImageViewCaptureDescriptorDataInfoEXT |
|
| -> ("data" ::: Ptr ()) |
|
| -> io () |
vkGetImageViewOpaqueCaptureDescriptorDataEXT - Get image view opaque capture descriptor data
Valid Usage
- The descriptorBufferCaptureReplay feature must be enabled
-
pDatamust point to a buffer that is at leastPhysicalDeviceDescriptorBufferPropertiesEXT::imageViewCaptureReplayDescriptorDataSizebytes in size - If
devicewas created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validImageViewCaptureDescriptorDataInfoEXTstructure -
pDatamust be a pointer value
Return Codes
See Also
VK_EXT_descriptor_buffer,
Device, ImageViewCaptureDescriptorDataInfoEXT
getSamplerOpaqueCaptureDescriptorDataEXT Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> SamplerCaptureDescriptorDataInfoEXT |
|
| -> ("data" ::: Ptr ()) |
|
| -> io () |
vkGetSamplerOpaqueCaptureDescriptorDataEXT - Get sampler opaque capture descriptor data
Valid Usage
- The descriptorBufferCaptureReplay feature must be enabled
-
pDatamust point to a buffer that is at leastPhysicalDeviceDescriptorBufferPropertiesEXT::samplerCaptureReplayDescriptorDataSizebytes in size - If
devicewas created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validSamplerCaptureDescriptorDataInfoEXTstructure -
pDatamust be a pointer value
Return Codes
See Also
VK_EXT_descriptor_buffer,
Device, SamplerCaptureDescriptorDataInfoEXT
getAccelerationStructureOpaqueCaptureDescriptorDataEXT Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> AccelerationStructureCaptureDescriptorDataInfoEXT |
|
| -> ("data" ::: Ptr ()) |
|
| -> io () |
vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT - Get acceleration structure opaque capture descriptor data
Valid Usage
- The descriptorBufferCaptureReplay feature must be enabled
-
pDatamust point to a buffer that is at leastPhysicalDeviceDescriptorBufferPropertiesEXT::accelerationStructureCaptureReplayDescriptorDataSizebytes in size -
If
devicewas created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validAccelerationStructureCaptureDescriptorDataInfoEXTstructure -
pDatamust be a pointer value
Return Codes
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
Constructors
| PhysicalDeviceDescriptorBufferFeaturesEXT | |
Fields
| |
Instances
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
Constructors
| PhysicalDeviceDescriptorBufferPropertiesEXT | |
Fields
| |
Instances
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
Constructors
| PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT | |
Fields
| |
Instances
data DescriptorAddressInfoEXT Source #
VkDescriptorAddressInfoEXT - Structure specifying descriptor buffer address info
Valid Usage
- If
addressis not zero, and the descriptor is of typeDESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERorDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, thenformatmust not beFORMAT_UNDEFINED
- If the
nullDescriptor
feature is not enabled,
addressmust not be zero - If
addressis zero,rangemust beWHOLE_SIZE - If
addressis not zero,rangemust not beWHOLE_SIZE - If
addressis not zero, thenrangemust be less than or equal to the size of the buffer containingaddressminus the offset ofaddressfrom the base address of the buffer -
rangemust not be zero - If Vulkan 1.3 is not
supported and the
ycbcr2plane444Formats
feature is not enabled,
formatmust not beFORMAT_G8_B8R8_2PLANE_444_UNORM,FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16,FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, orFORMAT_G16_B16R16_2PLANE_444_UNORM
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
-
pNextmust beNULL - If
addressis not0,addressmust be a validDeviceAddressvalue -
formatmust be a validFormatvalue
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
| |
Instances
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
- If the
pNextchain does not include aBufferUsageFlags2CreateInfostructure,usagemust be a valid combination ofBufferUsageFlagBitsvalues
- If the
pNextchain does not include aBufferUsageFlags2CreateInfostructure,usagemust not be 0 - The
usagemust include at least one ofBUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT,BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, orBUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT -
If
::bufferlessPushDescriptors
is
FALSE, andusagecontainsBUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT, then thepNextchain must include aDescriptorBufferBindingPushDescriptorBufferHandleEXTstructure -
addressmust be aligned toPhysicalDeviceDescriptorBufferPropertiesEXT::descriptorBufferOffsetAlignment - If
usageincludesBUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT,addressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXTusage flag set - If
usageincludesBUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT,addressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXTusage flag set - If
usageincludesBUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT,addressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXTusage flag set
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofBufferUsageFlags2CreateInfoorDescriptorBufferBindingPushDescriptorBufferHandleEXT - The
sTypevalue of each structure in thepNextchain must be unique -
addressmust be a validDeviceAddressvalue
See Also
VK_EXT_descriptor_buffer,
BufferUsageFlags,
DeviceAddress,
StructureType,
cmdBindDescriptorBuffersEXT
Constructors
| DescriptorBufferBindingInfoEXT | |
Fields
| |
Instances
data DescriptorBufferBindingPushDescriptorBufferHandleEXT Source #
VkDescriptorBufferBindingPushDescriptorBufferHandleEXT - Structure specifying push descriptor buffer binding information
Valid Usage
-
::bufferlessPushDescriptors
must be
FALSE
Valid Usage (Implicit)
-
buffermust be a validBufferhandle
See Also
Instances
data DescriptorGetInfoEXT (es :: [Type]) Source #
VkDescriptorGetInfoEXT - Structure specifying parameters of descriptor to get
Valid Usage
-
typemust not beDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICorDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
- If
typeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, thepCombinedImageSampler->samplermember ofdatamust be aSamplercreated ondevice - If
typeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, thepCombinedImageSampler->imageViewmember ofdatamust be aImageViewcreated ondevice, orNULL_HANDLE - If
typeisDESCRIPTOR_TYPE_INPUT_ATTACHMENT, thepInputAttachmentImage->imageViewmember ofdatamust be aImageViewcreated ondevice - If
typeisDESCRIPTOR_TYPE_SAMPLED_IMAGE, and ifpSampledImageis notNULL, thepSampledImage->imageViewmember ofdatamust be aImageViewcreated ondevice, orNULL_HANDLE - If
typeisDESCRIPTOR_TYPE_STORAGE_IMAGE, and ifpStorageImageis notNULL, thepStorageImage->imageViewmember ofdatamust be aImageViewcreated ondevice, orNULL_HANDLE - If
typeisDESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,pUniformBufferis notNULL, the number of texel buffer elements given by (⌊pUniformBuffer->range/ (texel block size)⌋ × (texels per block)) where texel block size and texels per block are as defined in the Compatible Formats table forpUniformBuffer->format, must be less than or equal toPhysicalDeviceLimits::maxTexelBufferElements - If
typeisDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,pStorageBufferis notNULL, the number of texel buffer elements given by (⌊pStorageBuffer->range/ (texel block size)⌋ × (texels per block)) where texel block size and texels per block are as defined in the Compatible Formats table forpStorageBuffer->format, must be less than or equal toPhysicalDeviceLimits::maxTexelBufferElements - If
typeisDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHRandaccelerationStructureis not0,accelerationStructuremust contain the address of aAccelerationStructureKHRcreated ondevice - If
typeisDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NVandaccelerationStructureis not0,accelerationStructuremust contain the handle of aAccelerationStructureNVcreated ondevice, returned bygetAccelerationStructureHandleNV - If
typeisDESCRIPTOR_TYPE_TENSOR_ARM, aDescriptorGetTensorInfoARMstructure must be included in thepNextchain anddatais ignored - If
typeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERandpCombinedImageSampler->imageViewis notNULL_HANDLE, thepCombinedImageSampler->imageViewmember ofdatamust have been created withIMAGE_USAGE_SAMPLED_BITset - If
typeisDESCRIPTOR_TYPE_SAMPLED_IMAGE,pSampledImageis notNULL, andpSampledImage->imageViewis notNULL_HANDLE, thepSampledImage->imageViewmember ofdatamust have been created withIMAGE_USAGE_SAMPLED_BITset - If
typeisDESCRIPTOR_TYPE_STORAGE_IMAGE,pStorageImageis notNULL, andpStorageImage->imageViewis notNULL_HANDLE, thepStorageImage->imageViewmember ofdatamust have been created withIMAGE_USAGE_STORAGE_BITset - If
typeisDESCRIPTOR_TYPE_INPUT_ATTACHMENT, thepInputAttachmentImage->imageViewmember ofdatamust have been created withIMAGE_USAGE_INPUT_ATTACHMENT_BITset - If
typeisDESCRIPTOR_TYPE_UNIFORM_BUFFER,pUniformBufferis notNULLandpUniformBuffer->addressis not zero,pUniformBuffer->addressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If
typeisDESCRIPTOR_TYPE_STORAGE_BUFFER,pStorageBufferis notNULLandpStorageBuffer->addressis not zero,pStorageBuffer->addressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_STORAGE_BUFFER_BITusage flag set - If
typeisDESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,pUniformTexelBufferis notNULLandpUniformTexelBuffer->addressis not zero,pUniformTexelBuffer->addressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITusage flag set - If
typeisDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,pStorageTexelBufferis notNULLandpStorageTexelBuffer->addressis not zero,pStorageTexelBuffer->addressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_STORAGE_TEXEL_BUFFER_BITusage flag set - If
typeisDESCRIPTOR_TYPE_UNIFORM_BUFFERandpUniformBufferis notNULL,pUniformBuffer->addressmust be aligned toPhysicalDeviceLimits::minUniformBufferOffsetAlignment - If
typeisDESCRIPTOR_TYPE_STORAGE_BUFFERandpStorageBufferis notNULL,pStorageBuffer->addressmust be aligned toPhysicalDeviceLimits::minStorageBufferOffsetAlignment - If
typeisDESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, andpUniformTexelBufferis notNULL,pUniformTexelBuffer->addressmust be a multiple of the effective alignment requirement as determined by minTexelBufferOffsetAlignment - If
typeisDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, the andpStorageTexelBufferis notNULL,pStorageTexelBuffer->addressmust be a multiple of the effective alignment requirement as determined by minTexelBufferOffsetAlignment
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
-
pNextmust beNULLor a pointer to a valid instance ofDescriptorGetTensorInfoARM - The
sTypevalue of each structure in thepNextchain must be unique -
typemust be a validDescriptorTypevalue - If
typeisDESCRIPTOR_TYPE_SAMPLER, thepSamplermember ofdatamust be a valid pointer to a validSamplerhandle - If
typeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, thepCombinedImageSamplermember ofdatamust be a valid pointer to a validDescriptorImageInfostructure - If
typeisDESCRIPTOR_TYPE_INPUT_ATTACHMENT, thepInputAttachmentImagemember ofdatamust be a valid pointer to a validDescriptorImageInfostructure - If
typeisDESCRIPTOR_TYPE_SAMPLED_IMAGE, and ifpSampledImageis notNULL, thepSampledImagemember ofdatamust be a valid pointer to a validDescriptorImageInfostructure - If
typeisDESCRIPTOR_TYPE_STORAGE_IMAGE, and ifpStorageImageis notNULL, thepStorageImagemember ofdatamust be a valid pointer to a validDescriptorImageInfostructure - If
typeisDESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, and ifpUniformTexelBufferis notNULL, thepUniformTexelBuffermember ofdatamust be a valid pointer to a validDescriptorAddressInfoEXTstructure - If
typeisDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, and ifpStorageTexelBufferis notNULL, thepStorageTexelBuffermember ofdatamust be a valid pointer to a validDescriptorAddressInfoEXTstructure - If
typeisDESCRIPTOR_TYPE_UNIFORM_BUFFER, and ifpUniformBufferis notNULL, thepUniformBuffermember ofdatamust be a valid pointer to a validDescriptorAddressInfoEXTstructure - If
typeisDESCRIPTOR_TYPE_STORAGE_BUFFER, and ifpStorageBufferis notNULL, thepStorageBuffermember ofdatamust be a valid pointer to a validDescriptorAddressInfoEXTstructure - If
typeisDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHRorDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, theaccelerationStructuremember ofdatamust be a validDeviceAddressvalue
See Also
VK_EXT_descriptor_buffer,
DescriptorDataEXT,
DescriptorType,
StructureType, getDescriptorEXT
Constructors
| DescriptorGetInfoEXT | |
Fields
| |
Instances
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
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
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
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
data AccelerationStructureCaptureDescriptorDataInfoEXT Source #
VkAccelerationStructureCaptureDescriptorDataInfoEXT - Structure specifying an acceleration structure for descriptor capture
Valid Usage
-
If
accelerationStructureis notNULL_HANDLEthenaccelerationStructuremust have been created withACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTset inAccelerationStructureCreateInfoKHR::createFlags
-
If
accelerationStructureNVis notNULL_HANDLEthenaccelerationStructureNVmust have been created withACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTset inAccelerationStructureCreateInfoNV::info.flags -
If
accelerationStructureis notNULL_HANDLEthenaccelerationStructureNVmust beNULL_HANDLE -
If
accelerationStructureNVis notNULL_HANDLEthenaccelerationStructuremust beNULL_HANDLE
Valid Usage (Implicit)
-
pNextmust beNULL -
If
accelerationStructureis notNULL_HANDLE,accelerationStructuremust be a validAccelerationStructureKHRhandle -
If
accelerationStructureNVis notNULL_HANDLE,accelerationStructureNVmust be a validAccelerationStructureNVhandle -
Both of
accelerationStructure, andaccelerationStructureNVthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
VK_EXT_descriptor_buffer,
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
AccelerationStructureKHR,
AccelerationStructureNV,
StructureType,
getAccelerationStructureOpaqueCaptureDescriptorDataEXT
Constructors
| AccelerationStructureCaptureDescriptorDataInfoEXT | |
Fields
| |
Instances
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
Constructors
| OpaqueCaptureDescriptorDataCreateInfoEXT | |
Fields
| |
Instances
data DescriptorDataEXT Source #
Constructors
Instances
| Show DescriptorDataEXT Source # | |
Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer Methods showsPrec :: Int -> DescriptorDataEXT -> ShowS # show :: DescriptorDataEXT -> String # showList :: [DescriptorDataEXT] -> ShowS # | |
| ToCStruct DescriptorDataEXT Source # | |
Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer Methods withCStruct :: DescriptorDataEXT -> (Ptr DescriptorDataEXT -> IO b) -> IO b Source # pokeCStruct :: Ptr DescriptorDataEXT -> DescriptorDataEXT -> IO b -> IO b Source # withZeroCStruct :: (Ptr DescriptorDataEXT -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DescriptorDataEXT -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero DescriptorDataEXT Source # | |
Defined in Vulkan.Extensions.VK_EXT_descriptor_buffer Methods | |
type EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 Source #
pattern EXT_DESCRIPTOR_BUFFER_SPEC_VERSION :: Integral a => a Source #
type EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME = "VK_EXT_descriptor_buffer" Source #
pattern EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
newtype AccelerationStructureKHR Source #
VkAccelerationStructureKHR - Opaque handle to an acceleration structure object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_KHR_acceleration_structure,
AccelerationStructureBuildGeometryInfoKHR,
AccelerationStructureCaptureDescriptorDataInfoEXT,
AccelerationStructureDeviceAddressInfoKHR,
CopyAccelerationStructureInfoKHR,
CopyAccelerationStructureToMemoryInfoKHR,
CopyMemoryToAccelerationStructureInfoKHR,
WriteDescriptorSetAccelerationStructureKHR,
cmdWriteAccelerationStructuresPropertiesKHR,
createAccelerationStructureKHR,
destroyAccelerationStructureKHR,
writeAccelerationStructuresPropertiesKHR
Constructors
| AccelerationStructureKHR Word64 |
Instances
newtype AccelerationStructureNV Source #
VkAccelerationStructureNV - Opaque handle to an acceleration structure object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_NV_ray_tracing,
AccelerationStructureCaptureDescriptorDataInfoEXT,
AccelerationStructureMemoryRequirementsInfoNV,
BindAccelerationStructureMemoryInfoNV,
WriteDescriptorSetAccelerationStructureNV,
cmdBuildAccelerationStructureNV,
cmdCopyAccelerationStructureNV,
cmdWriteAccelerationStructuresPropertiesNV,
createAccelerationStructureNV,
destroyAccelerationStructureNV,
getAccelerationStructureHandleNV
Constructors
| AccelerationStructureNV Word64 |
Instances
newtype AccelerationStructureCreateFlagBitsKHR Source #
VkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional creation parameters for acceleration structure
Description
ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHRspecifies that the acceleration structure’s address can be saved and reused on a subsequent run.
ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTspecifies that the acceleration structure can be used with descriptor buffers when capturing and replaying (e.g. for trace capture and replay), seeOpaqueCaptureDescriptorDataCreateInfoEXTfor more detail.ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NVspecifies that the acceleration structure will be used with motion information, seeAccelerationStructureMotionInfoNVfor more detail.
See Also
VK_KHR_acceleration_structure,
AccelerationStructureCreateFlagsKHR
Constructors
| AccelerationStructureCreateFlagBitsKHR Flags |
Bundled Patterns