| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Core10.DescriptorSet
Synopsis
- createDescriptorSetLayout :: forall a io. (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetLayoutCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> io DescriptorSetLayout
- withDescriptorSetLayout :: forall a io r. (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetLayoutCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorSetLayout -> (DescriptorSetLayout -> io ()) -> r) -> r
- destroyDescriptorSetLayout :: forall io. MonadIO io => Device -> DescriptorSetLayout -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- createDescriptorPool :: forall a io. (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorPoolCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> io DescriptorPool
- withDescriptorPool :: forall a io r. (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorPoolCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorPool -> (DescriptorPool -> io ()) -> r) -> r
- destroyDescriptorPool :: forall io. MonadIO io => Device -> DescriptorPool -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- resetDescriptorPool :: forall io. MonadIO io => Device -> DescriptorPool -> DescriptorPoolResetFlags -> io ()
- allocateDescriptorSets :: forall a io. (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetAllocateInfo a -> io ("descriptorSets" ::: Vector DescriptorSet)
- withDescriptorSets :: forall a io r. (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetAllocateInfo a -> (io (Vector DescriptorSet) -> (Vector DescriptorSet -> io ()) -> r) -> r
- freeDescriptorSets :: forall io. MonadIO io => Device -> DescriptorPool -> ("descriptorSets" ::: Vector DescriptorSet) -> io ()
- updateDescriptorSets :: forall io. MonadIO io => Device -> ("descriptorWrites" ::: Vector (SomeStruct WriteDescriptorSet)) -> ("descriptorCopies" ::: Vector CopyDescriptorSet) -> io ()
- data DescriptorBufferInfo = DescriptorBufferInfo {
- buffer :: Buffer
- offset :: DeviceSize
- range :: DeviceSize
- data DescriptorImageInfo = DescriptorImageInfo {}
- data WriteDescriptorSet (es :: [Type]) = WriteDescriptorSet {}
- data CopyDescriptorSet = CopyDescriptorSet {}
- data DescriptorSetLayoutBinding = DescriptorSetLayoutBinding {}
- data DescriptorSetLayoutCreateInfo (es :: [Type]) = DescriptorSetLayoutCreateInfo {}
- data DescriptorPoolSize = DescriptorPoolSize {}
- data DescriptorPoolCreateInfo (es :: [Type]) = DescriptorPoolCreateInfo {}
- data DescriptorSetAllocateInfo (es :: [Type]) = DescriptorSetAllocateInfo {}
- newtype DescriptorSet = DescriptorSet Word64
- newtype DescriptorSetLayout = DescriptorSetLayout Word64
- newtype DescriptorPool = DescriptorPool Word64
- newtype DescriptorPoolResetFlags = DescriptorPoolResetFlags Flags
- newtype DescriptorType where
- DescriptorType Int32
- pattern DESCRIPTOR_TYPE_SAMPLER :: DescriptorType
- pattern DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER :: DescriptorType
- pattern DESCRIPTOR_TYPE_SAMPLED_IMAGE :: DescriptorType
- pattern DESCRIPTOR_TYPE_STORAGE_IMAGE :: DescriptorType
- pattern DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER :: DescriptorType
- pattern DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER :: DescriptorType
- pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER :: DescriptorType
- pattern DESCRIPTOR_TYPE_STORAGE_BUFFER :: DescriptorType
- pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC :: DescriptorType
- pattern DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC :: DescriptorType
- pattern DESCRIPTOR_TYPE_INPUT_ATTACHMENT :: DescriptorType
- pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR :: DescriptorType
- pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT :: DescriptorType
- newtype DescriptorPoolCreateFlagBits where
- type DescriptorPoolCreateFlags = DescriptorPoolCreateFlagBits
- newtype DescriptorSetLayoutCreateFlagBits where
- type DescriptorSetLayoutCreateFlags = DescriptorSetLayoutCreateFlagBits
Documentation
createDescriptorSetLayout Source #
Arguments
| :: forall a io. (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) | |
| => Device |
|
| -> DescriptorSetLayoutCreateInfo a |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io DescriptorSetLayout |
vkCreateDescriptorSetLayout - Create a new descriptor set layout
Valid Usage (Implicit)
devicemust be a validDevicehandle
pCreateInfomust be a valid pointer to a validDescriptorSetLayoutCreateInfostructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pSetLayoutmust be a valid pointer to aDescriptorSetLayouthandle
Return Codes
See Also
AllocationCallbacks,
DescriptorSetLayout,
DescriptorSetLayoutCreateInfo, Device
withDescriptorSetLayout :: forall a io r. (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetLayoutCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorSetLayout -> (DescriptorSetLayout -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createDescriptorSetLayout and destroyDescriptorSetLayout
To ensure that destroyDescriptorSetLayout is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the first argument.
To just extract the pair pass (,) as the first argument.
destroyDescriptorSetLayout Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> DescriptorSetLayout |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyDescriptorSetLayout - Destroy a descriptor set layout object
Valid Usage
- If
AllocationCallbackswere provided whendescriptorSetLayoutwas created, a compatible set of callbacks must be provided here
- If no
AllocationCallbackswere provided whendescriptorSetLayoutwas created,pAllocatormust beNULL
Valid Usage (Implicit)
devicemust be a validDevicehandle
- If
descriptorSetLayoutis notNULL_HANDLE,descriptorSetLayoutmust be a validDescriptorSetLayouthandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
descriptorSetLayoutis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
descriptorSetLayoutmust be externally synchronized
See Also
Arguments
| :: forall a io. (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) | |
| => Device |
|
| -> DescriptorPoolCreateInfo a |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io DescriptorPool |
vkCreateDescriptorPool - Creates a descriptor pool object
Description
pAllocator controls host memory allocation as described in the
Memory Allocation
chapter.
The created descriptor pool is returned in pDescriptorPool.
Valid Usage (Implicit)
devicemust be a validDevicehandle
pCreateInfomust be a valid pointer to a validDescriptorPoolCreateInfostructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pDescriptorPoolmust be a valid pointer to aDescriptorPoolhandle
Return Codes
See Also
AllocationCallbacks,
DescriptorPool, DescriptorPoolCreateInfo,
Device
withDescriptorPool :: forall a io r. (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorPoolCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorPool -> (DescriptorPool -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createDescriptorPool and destroyDescriptorPool
To ensure that destroyDescriptorPool is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the first argument.
To just extract the pair pass (,) as the first argument.
destroyDescriptorPool Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> DescriptorPool |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyDescriptorPool - Destroy a descriptor pool object
Description
When a pool is destroyed, all descriptor sets allocated from the pool are implicitly freed and become invalid. Descriptor sets allocated from a given pool do not need to be freed before destroying that descriptor pool.
Valid Usage
- All submitted commands that refer to
descriptorPool(via any allocated descriptor sets) must have completed execution
- If
AllocationCallbackswere provided whendescriptorPoolwas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whendescriptorPoolwas created,pAllocatormust beNULL
Valid Usage (Implicit)
devicemust be a validDevicehandle
- If
descriptorPoolis notNULL_HANDLE,descriptorPoolmust be a validDescriptorPoolhandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
descriptorPoolis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
descriptorPoolmust be externally synchronized
See Also
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> DescriptorPool |
|
| -> DescriptorPoolResetFlags |
|
| -> io () |
vkResetDescriptorPool - Resets a descriptor pool object
Description
Resetting a descriptor pool recycles all of the resources from all of the descriptor sets allocated from the descriptor pool back to the descriptor pool, and the descriptor sets are implicitly freed.
Valid Usage
- All uses of
descriptorPool(via any allocated descriptor sets) must have completed execution
Valid Usage (Implicit)
devicemust be a validDevicehandle
descriptorPoolmust be a validDescriptorPoolhandleflagsmust be0descriptorPoolmust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
descriptorPoolmust be externally synchronized
- Host access to any
DescriptorSetobjects allocated fromdescriptorPoolmust be externally synchronized
Return Codes
See Also
allocateDescriptorSets Source #
Arguments
| :: forall a io. (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) | |
| => Device |
|
| -> DescriptorSetAllocateInfo a |
|
| -> io ("descriptorSets" ::: Vector DescriptorSet) |
vkAllocateDescriptorSets - Allocate one or more descriptor sets
Description
The allocated descriptor sets are returned in pDescriptorSets.
When a descriptor set is allocated, the initial state is largely uninitialized and all descriptors are undefined. Descriptors also become undefined if the underlying resource is destroyed. Descriptor sets containing undefined descriptors can still be bound and used, subject to the following conditions:
- For descriptor set bindings created with the
DESCRIPTOR_BINDING_PARTIALLY_BOUND_BITbit set, all descriptors in that binding that are dynamically used must have been populated before the descriptor set is consumed. - For descriptor set bindings created without the
DESCRIPTOR_BINDING_PARTIALLY_BOUND_BITbit set, all descriptors in that binding that are statically used must have been populated before the descriptor set is consumed. - Descriptor bindings with descriptor type of
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXTcan be undefined when the descriptor set is consumed; though values in that block will be undefined. - Entries that are not used by a pipeline can have undefined descriptors.
If a call to allocateDescriptorSets would cause the total number of
descriptor sets allocated from the pool to exceed the value of
DescriptorPoolCreateInfo::maxSets used to create
pAllocateInfo->descriptorPool, then the allocation may fail due to
lack of space in the descriptor pool. Similarly, the allocation may
fail due to lack of space if the call to allocateDescriptorSets would
cause the number of any given descriptor type to exceed the sum of all
the descriptorCount members of each element of
DescriptorPoolCreateInfo::pPoolSizes with a member equal to that
type.
Additionally, the allocation may also fail if a call to
allocateDescriptorSets would cause the total number of inline uniform
block bindings allocated from the pool to exceed the value of
DescriptorPoolInlineUniformBlockCreateInfoEXT::maxInlineUniformBlockBindings
used to create the descriptor pool.
If the allocation fails due to no more space in the descriptor pool, and
not because of system or device memory exhaustion, then
ERROR_OUT_OF_POOL_MEMORY must be
returned.
allocateDescriptorSets can be used to create multiple descriptor
sets. If the creation of any of those descriptor sets fails, then the
implementation must destroy all successfully created descriptor set
objects from this command, set all entries of the pDescriptorSets
array to NULL_HANDLE and return the error.
Valid Usage (Implicit)
devicemust be a validDevicehandle
pAllocateInfomust be a valid pointer to a validDescriptorSetAllocateInfostructurepDescriptorSetsmust be a valid pointer to an array ofpAllocateInfo->descriptorSetCountDescriptorSethandles- The value referenced by
pAllocateInfo->descriptorSetCountmust be greater than0
Host Synchronization
- Host access to
pAllocateInfo->descriptorPoolmust be externally synchronized
Return Codes
See Also
withDescriptorSets :: forall a io r. (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetAllocateInfo a -> (io (Vector DescriptorSet) -> (Vector DescriptorSet -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
allocateDescriptorSets and freeDescriptorSets
To ensure that freeDescriptorSets is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the first argument.
To just extract the pair pass (,) as the first argument.
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> DescriptorPool |
|
| -> ("descriptorSets" ::: Vector DescriptorSet) |
|
| -> io () |
vkFreeDescriptorSets - Free one or more descriptor sets
Description
After calling freeDescriptorSets, all descriptor sets in
pDescriptorSets are invalid.
Valid Usage
- All submitted commands that refer to any element of
pDescriptorSetsmust have completed execution
pDescriptorSetsmust be a valid pointer to an array ofdescriptorSetCountDescriptorSethandles, each element of which must either be a valid handle orNULL_HANDLE- Each valid handle in
pDescriptorSetsmust have been allocated fromdescriptorPool descriptorPoolmust have been created with theDESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BITflag
Valid Usage (Implicit)
devicemust be a validDevicehandle
descriptorPoolmust be a validDescriptorPoolhandledescriptorSetCountmust be greater than0descriptorPoolmust have been created, allocated, or retrieved fromdevice- Each element of
pDescriptorSetsthat is a valid handle must have been created, allocated, or retrieved fromdescriptorPool
Host Synchronization
- Host access to
descriptorPoolmust be externally synchronized
- Host access to each member of
pDescriptorSetsmust be externally synchronized
Return Codes
See Also
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ("descriptorWrites" ::: Vector (SomeStruct WriteDescriptorSet)) |
|
| -> ("descriptorCopies" ::: Vector CopyDescriptorSet) |
|
| -> io () |
vkUpdateDescriptorSets - Update the contents of a descriptor set object
Description
The operations described by pDescriptorWrites are performed first,
followed by the operations described by pDescriptorCopies. Within each
array, the operations are performed in the order they appear in the
array.
Each element in the pDescriptorWrites array describes an operation
updating the descriptor set using descriptors for resources specified in
the structure.
Each element in the pDescriptorCopies array is a CopyDescriptorSet
structure describing an operation copying descriptors between sets.
If the dstSet member of any element of pDescriptorWrites or
pDescriptorCopies is bound, accessed, or modified by any command that
was recorded to a command buffer which is currently in the
recording or executable state,
and any of the descriptor bindings that are updated were not created
with the
DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
or
DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
bits set, that command buffer becomes
invalid.
Valid Usage
- Descriptor bindings updated by this command which were created
without the
DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITorDESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BITbits set must not be used by any command that was recorded to a command buffer which is in the pending state
Valid Usage (Implicit)
devicemust be a validDevicehandle
- If
descriptorWriteCountis not0,pDescriptorWritesmust be a valid pointer to an array ofdescriptorWriteCountvalidWriteDescriptorSetstructures - If
descriptorCopyCountis not0,pDescriptorCopiesmust be a valid pointer to an array ofdescriptorCopyCountvalidCopyDescriptorSetstructures
Host Synchronization
- Host access to
pDescriptorWrites[].dstSet must be externally synchronized
- Host access to
pDescriptorCopies[].dstSet must be externally synchronized
See Also
data DescriptorBufferInfo Source #
VkDescriptorBufferInfo - Structure specifying descriptor buffer info
Description
Note
When setting range to WHOLE_SIZE, the
effective range must not be larger than the maximum range for the
descriptor type
(maxUniformBufferRange
or
maxStorageBufferRange).
This means that WHOLE_SIZE is not typically
useful in the common case where uniform buffer descriptors are
suballocated from a buffer that is much larger than
maxUniformBufferRange.
For
DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
and
DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
descriptor types, offset is the base offset from which the dynamic
offset is applied and range is the static size used for all dynamic
offsets.
Valid Usage
offsetmust be less than the size ofbuffer
- If
rangeis not equal toWHOLE_SIZE,rangemust be greater than0 - If
rangeis not equal toWHOLE_SIZE,rangemust be less than or equal to the size ofbufferminusoffset - If the
nullDescriptor
feature is not enabled,
buffermust not beNULL_HANDLE - If
bufferisNULL_HANDLE,offsetmust be zero andrangemust beWHOLE_SIZE
Valid Usage (Implicit)
- If
bufferis notNULL_HANDLE,buffermust be a validBufferhandle
See Also
Constructors
| DescriptorBufferInfo | |
Fields
| |
Instances
data DescriptorImageInfo Source #
VkDescriptorImageInfo - Structure specifying descriptor image info
Description
Members of DescriptorImageInfo that are not used in an update (as
described above) are ignored.
Valid Usage
imageViewmust not be 2D or 2D array image view created from a 3D image
- If
imageViewis created from a depth/stencil image, theaspectMaskused to create theimageViewmust include eitherIMAGE_ASPECT_DEPTH_BITorIMAGE_ASPECT_STENCIL_BITbut not both imageLayoutmust match the actualImageLayoutof each subresource accessible fromimageViewat the time this descriptor is accessed as defined by the image layout matching rules- If
sampleris used and theFormatof the image is a multi-planar format, the image must have been created withIMAGE_CREATE_MUTABLE_FORMAT_BIT, and theaspectMaskof theimageViewmust beIMAGE_ASPECT_PLANE_0_BIT,IMAGE_ASPECT_PLANE_1_BITor (for three-plane formats only)IMAGE_ASPECT_PLANE_2_BIT
Valid Usage (Implicit)
- Both of
imageView, andsamplerthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
Constructors
| DescriptorImageInfo | |
Fields
| |
Instances
data WriteDescriptorSet (es :: [Type]) Source #
VkWriteDescriptorSet - Structure specifying the parameters of a descriptor set write operation
Description
Only one of pImageInfo, pBufferInfo, or pTexelBufferView members
is used according to the descriptor type specified in the
descriptorType member of the containing WriteDescriptorSet
structure, or none of them in case descriptorType is
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT,
in which case the source data for the descriptor writes is taken from
the
WriteDescriptorSetInlineUniformBlockEXT
structure included in the pNext chain of WriteDescriptorSet, or if
descriptorType is
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,
in which case the source data for the descriptor writes is taken from
the
WriteDescriptorSetAccelerationStructureKHR
structure in the pNext chain of WriteDescriptorSet, as specified
below.
If the
nullDescriptor
feature is enabled, the buffer, imageView, or bufferView can be
NULL_HANDLE. Loads from a null descriptor
return zero values and stores and atomics to a null descriptor are
discarded.
If the dstBinding has fewer than descriptorCount array elements
remaining starting from dstArrayElement, then the remainder will be
used to update the subsequent binding - dstBinding+1 starting at array
element zero. If a binding has a descriptorCount of zero, it is
skipped. This behavior applies recursively, with the update affecting
consecutive bindings as needed to update all descriptorCount
descriptors.
Note
The same behavior applies to bindings with a descriptor type of
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
where descriptorCount specifies the number of bytes to update while
dstArrayElement specifies the starting byte offset, thus in this case
if the dstBinding has a smaller byte size than the sum of
dstArrayElement and descriptorCount, then the remainder will be used
to update the subsequent binding - dstBinding+1 starting at offset
zero. This falls out as a special case of the above rule.
Valid Usage
dstBindingmust be less than or equal to the maximum value ofbindingof allDescriptorSetLayoutBindingstructures specified whendstSet’s descriptor set layout was created
dstBindingmust be a binding with a non-zerodescriptorCount- All consecutive bindings updated via a single
WriteDescriptorSetstructure, except those with adescriptorCountof zero, must have identicaldescriptorTypeandstageFlags - All consecutive bindings updated via a single
WriteDescriptorSetstructure, except those with adescriptorCountof zero, must all either use immutable samplers or must all not use immutable samplers descriptorTypemust match the type ofdstBindingwithindstSetdstSetmust be a validDescriptorSethandle- The sum of
dstArrayElementanddescriptorCountmust be less than or equal to the number of array elements in the descriptor set binding specified bydstBinding, and all applicable consecutive bindings, as described by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive - If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT,dstArrayElementmust be an integer multiple of4 - If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT,descriptorCountmust be an integer multiple of4 - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLER,DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE, orDESCRIPTOR_TYPE_INPUT_ATTACHMENT,pImageInfomust be a valid pointer to an array ofdescriptorCountvalidDescriptorImageInfostructures - If
descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERorDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, each element ofpTexelBufferViewmust be either a validBufferViewhandle orNULL_HANDLE - If
descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERorDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERand the nullDescriptor feature is not enabled, each element ofpTexelBufferViewmust not beNULL_HANDLE - If
descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_BUFFER,DESCRIPTOR_TYPE_STORAGE_BUFFER,DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, orDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,pBufferInfomust be a valid pointer to an array ofdescriptorCountvalidDescriptorBufferInfostructures - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLERorDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, anddstSetwas not allocated with a layout that included immutable samplers fordstBindingwithdescriptorType, thesamplermember of each element ofpImageInfomust be a validSamplerobject - If
descriptorTypeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE, orDESCRIPTOR_TYPE_INPUT_ATTACHMENT, theimageViewmember of each element ofpImageInfomust be either a validImageViewhandle orNULL_HANDLE - If
descriptorTypeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE, orDESCRIPTOR_TYPE_INPUT_ATTACHMENTand the nullDescriptor feature is not enabled, theimageViewmember of each element ofpImageInfomust not beNULL_HANDLE - If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT, thepNextchain must include aWriteDescriptorSetInlineUniformBlockEXTstructure whosedataSizemember equalsdescriptorCount - If
descriptorTypeisDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, thepNextchain must include aWriteDescriptorSetAccelerationStructureKHRstructure whoseaccelerationStructureCountmember equalsdescriptorCount - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLED_IMAGE, then theimageViewmember of eachpImageInfoelement must have been created without aSamplerYcbcrConversionInfostructure in itspNextchain - If
descriptorTypeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and if any element ofpImageInfohas aimageViewmember that was created with aSamplerYcbcrConversionInfostructure in itspNextchain, thendstSetmust have been allocated with a layout that included immutable samplers fordstBinding, and the corresponding immutable sampler must have been created with an identically definedSamplerYcbcrConversionInfoobject - If
descriptorTypeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, anddstSetwas allocated with a layout that included immutable samplers fordstBinding, then theimageViewmember of each element ofpImageInfowhich corresponds to an immutable sampler that enables sampler Y′CBCR conversion must have been created with aSamplerYcbcrConversionInfostructure in itspNextchain with an identically definedSamplerYcbcrConversionInfoto the corresponding immutable sampler - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_IMAGE, for each descriptor that will be accessed via load or store operations theimageLayoutmember for corresponding elements ofpImageInfomust beIMAGE_LAYOUT_GENERAL - If
descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_BUFFERorDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, theoffsetmember of each element ofpBufferInfomust be a multiple ofPhysicalDeviceLimits::minUniformBufferOffsetAlignment - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_BUFFERorDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, theoffsetmember of each element ofpBufferInfomust be a multiple ofPhysicalDeviceLimits::minStorageBufferOffsetAlignment - If
descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_BUFFER,DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,DESCRIPTOR_TYPE_STORAGE_BUFFER, orDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, and thebuffermember of any element ofpBufferInfois the handle of a non-sparse buffer, then that buffer must be bound completely and contiguously to a singleDeviceMemoryobject - If
descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_BUFFERorDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, thebuffermember of each element ofpBufferInfomust have been created withBUFFER_USAGE_UNIFORM_BUFFER_BITset - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_BUFFERorDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, thebuffermember of each element ofpBufferInfomust have been created withBUFFER_USAGE_STORAGE_BUFFER_BITset - If
descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_BUFFERorDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, therangemember of each element ofpBufferInfo, or the effective range ifrangeisWHOLE_SIZE, must be less than or equal toPhysicalDeviceLimits::maxUniformBufferRange - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_BUFFERorDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, therangemember of each element ofpBufferInfo, or the effective range ifrangeisWHOLE_SIZE, must be less than or equal toPhysicalDeviceLimits::maxStorageBufferRange - If
descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, theBufferthat each element ofpTexelBufferViewwas created from must have been created withBUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITset - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, theBufferthat each element ofpTexelBufferViewwas created from must have been created withBUFFER_USAGE_STORAGE_TEXEL_BUFFER_BITset - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_IMAGEorDESCRIPTOR_TYPE_INPUT_ATTACHMENT, theimageViewmember of each element ofpImageInfomust have been created with the identity swizzle - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLED_IMAGEorDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, theimageViewmember of each element ofpImageInfomust have been created withIMAGE_USAGE_SAMPLED_BITset - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLED_IMAGEorDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, theimageLayoutmember of each element ofpImageInfomust be a member of the list given in Sampled Image or Combined Image Sampler, corresponding to its type - If
descriptorTypeisDESCRIPTOR_TYPE_INPUT_ATTACHMENT, theimageViewmember of each element ofpImageInfomust have been created withIMAGE_USAGE_INPUT_ATTACHMENT_BITset - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_IMAGE, theimageViewmember of each element ofpImageInfomust have been created withIMAGE_USAGE_STORAGE_BITset - All consecutive bindings updated via a single
WriteDescriptorSetstructure, except those with adescriptorCountof zero, must have identicalDescriptorBindingFlagBits - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLER, thendstSetmust not have been allocated with a layout that included immutable samplers fordstBinding
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofWriteDescriptorSetAccelerationStructureKHRorWriteDescriptorSetInlineUniformBlockEXT - The
sTypevalue of each struct in thepNextchain must be unique descriptorTypemust be a validDescriptorTypevaluedescriptorCountmust be greater than0- Both of
dstSet, and the elements ofpTexelBufferViewthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
BufferView, DescriptorBufferInfo,
DescriptorImageInfo, DescriptorSet,
DescriptorType,
StructureType,
cmdPushDescriptorSetKHR,
updateDescriptorSets
Constructors
| WriteDescriptorSet | |
Fields
| |
Instances
data CopyDescriptorSet Source #
VkCopyDescriptorSet - Structure specifying a copy descriptor set operation
Valid Usage
srcBindingmust be a valid binding withinsrcSet
- The sum of
srcArrayElementanddescriptorCountmust be less than or equal to the number of array elements in the descriptor set binding specified bysrcBinding, and all applicable consecutive bindings, as described by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive dstBindingmust be a valid binding withindstSet- The sum of
dstArrayElementanddescriptorCountmust be less than or equal to the number of array elements in the descriptor set binding specified bydstBinding, and all applicable consecutive bindings, as described by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive - The type of
dstBindingwithindstSetmust be equal to the type ofsrcBindingwithinsrcSet - If
srcSetis equal todstSet, then the source and destination ranges of descriptors must not overlap, where the ranges may include array elements from consecutive bindings as described by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive - If the descriptor type of the descriptor set binding specified by
srcBindingisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT,srcArrayElementmust be an integer multiple of4 - If the descriptor type of the descriptor set binding specified by
dstBindingisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT,dstArrayElementmust be an integer multiple of4 - If the descriptor type of the descriptor set binding specified by
either
srcBindingordstBindingisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT,descriptorCountmust be an integer multiple of4 - If
srcSet’s layout was created with theDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITflag set, thendstSet’s layout must also have been created with theDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITflag set - If
srcSet’s layout was created without theDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITflag set, thendstSet’s layout must also have been created without theDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITflag set - If the descriptor pool from which
srcSetwas allocated was created with theDESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITflag set, then the descriptor pool from whichdstSetwas allocated must also have been created with theDESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITflag set - If the descriptor pool from which
srcSetwas allocated was created without theDESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITflag set, then the descriptor pool from whichdstSetwas allocated must also have been created without theDESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITflag set - If the descriptor type of the descriptor set binding specified by
dstBindingisDESCRIPTOR_TYPE_SAMPLER, thendstSetmust not have been allocated with a layout that included immutable samplers fordstBinding
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_COPY_DESCRIPTOR_SET
pNextmust beNULLsrcSetmust be a validDescriptorSethandledstSetmust be a validDescriptorSethandle- Both of
dstSet, andsrcSetmust have been created, allocated, or retrieved from the sameDevice
See Also
Constructors
| CopyDescriptorSet | |
Fields
| |
Instances
data DescriptorSetLayoutBinding Source #
VkDescriptorSetLayoutBinding - Structure specifying a descriptor set layout binding
Description
pImmutableSamplersaffects initialization of samplers. IfdescriptorTypespecifies aDESCRIPTOR_TYPE_SAMPLERorDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERtype descriptor, thenpImmutableSamplerscan be used to initialize a set of immutable samplers. Immutable samplers are permanently bound into the set layout and must not be changed; updating aDESCRIPTOR_TYPE_SAMPLERdescriptor with immutable samplers is not allowed and updates to aDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERdescriptor with immutable samplers does not modify the samplers (the image views are updated, but the sampler updates are ignored). IfpImmutableSamplersis notNULL, then it points to an array of sampler handles that will be copied into the set layout and used for the corresponding binding. Only the sampler handles are copied; the sampler objects must not be destroyed before the final use of the set layout and any descriptor pools and sets created using it. IfpImmutableSamplersisNULL, then the sampler slots are dynamic and sampler handles must be bound into descriptor sets using this layout. IfdescriptorTypeis not one of these descriptor types, thenpImmutableSamplersis ignored.
The above layout definition allows the descriptor bindings to be
specified sparsely such that not all binding numbers between 0 and the
maximum binding number need to be specified in the pBindings array.
Bindings that are not specified have a descriptorCount and
stageFlags of zero, and the value of descriptorType is undefined.
However, all binding numbers between 0 and the maximum binding number in
the DescriptorSetLayoutCreateInfo::pBindings array may consume
memory in the descriptor set layout even if not all descriptor bindings
are used, though it should not consume additional memory from the
descriptor pool.
Note
The maximum binding number specified should be as compact as possible to avoid wasted memory.
Valid Usage
- If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLERorDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, anddescriptorCountis not0andpImmutableSamplersis notNULL,pImmutableSamplersmust be a valid pointer to an array ofdescriptorCountvalidSamplerhandles
- If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXTthendescriptorCountmust be a multiple of4 - If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXTthendescriptorCountmust be less than or equal toPhysicalDeviceInlineUniformBlockPropertiesEXT::maxInlineUniformBlockSize - If
descriptorCountis not0,stageFlagsmust be a valid combination ofShaderStageFlagBitsvalues - If
descriptorTypeisDESCRIPTOR_TYPE_INPUT_ATTACHMENTanddescriptorCountis not0, thenstageFlagsmust be0orSHADER_STAGE_FRAGMENT_BIT - The sampler objects indicated by
pImmutableSamplersmust not have aborderColorwith one of the valuesBORDER_COLOR_FLOAT_CUSTOM_EXTorBORDER_COLOR_INT_CUSTOM_EXT
Valid Usage (Implicit)
descriptorTypemust be a validDescriptorTypevalue
See Also
DescriptorSetLayoutCreateInfo,
DescriptorType,
Sampler,
ShaderStageFlags
Constructors
| DescriptorSetLayoutBinding | |
Fields
| |
Instances
data DescriptorSetLayoutCreateInfo (es :: [Type]) Source #
VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout
Valid Usage
- The
DescriptorSetLayoutBinding::bindingmembers of the elements of thepBindingsarray must each have different values
- If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, then all elements ofpBindingsmust not have adescriptorTypeofDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICorDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, then all elements ofpBindingsmust not have adescriptorTypeofDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, then the total number of elements of all bindings must be less than or equal toPhysicalDevicePushDescriptorPropertiesKHR::maxPushDescriptors - If any binding has the
DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITbit set,flagsmust includeDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT - If any binding has the
DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITbit set, then all bindings must not havedescriptorTypeofDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICorDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
pNextmust beNULLor a pointer to a valid instance ofDescriptorSetLayoutBindingFlagsCreateInfo- The
sTypevalue of each struct in thepNextchain must be unique flagsmust be a valid combination ofDescriptorSetLayoutCreateFlagBitsvalues- If
bindingCountis not0,pBindingsmust be a valid pointer to an array ofbindingCountvalidDescriptorSetLayoutBindingstructures
See Also
DescriptorSetLayoutBinding,
DescriptorSetLayoutCreateFlags,
StructureType,
createDescriptorSetLayout,
getDescriptorSetLayoutSupport,
getDescriptorSetLayoutSupportKHR
Constructors
| DescriptorSetLayoutCreateInfo | |
Fields
| |
Instances
data DescriptorPoolSize Source #
VkDescriptorPoolSize - Structure specifying descriptor pool size
Description
Note
When creating a descriptor pool that will contain descriptors for
combined image samplers of multi-planar formats, an application needs to
account for non-trivial descriptor consumption when choosing the
descriptorCount value, as indicated by
SamplerYcbcrConversionImageFormatProperties::combinedImageSamplerDescriptorCount.
Valid Usage
descriptorCountmust be greater than0
- If
typeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXTthendescriptorCountmust be a multiple of4
Valid Usage (Implicit)
typemust be a validDescriptorTypevalue
See Also
Constructors
| DescriptorPoolSize | |
Fields
| |
Instances
data DescriptorPoolCreateInfo (es :: [Type]) Source #
VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool
Description
If multiple DescriptorPoolSize structures appear in the pPoolSizes
array then the pool will be created with enough storage for the total
number of descriptors of each type.
Fragmentation of a descriptor pool is possible and may lead to descriptor set allocation failures. A failure due to fragmentation is defined as failing a descriptor set allocation despite the sum of all outstanding descriptor set allocations from the pool plus the requested allocation requiring no more than the total number of descriptors requested at pool creation. Implementations provide certain guarantees of when fragmentation must not cause allocation failure, as described below.
If a descriptor pool has not had any descriptor sets freed since it was
created or most recently reset then fragmentation must not cause an
allocation failure (note that this is always the case for a pool created
without the
DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
bit set). Additionally, if all sets allocated from the pool since it was
created or most recently reset use the same number of descriptors (of
each type) and the requested allocation also uses that same number of
descriptors (of each type), then fragmentation must not cause an
allocation failure.
If an allocation failure occurs due to fragmentation, an application can create an additional descriptor pool to perform further descriptor set allocations.
If flags has the
DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT
bit set, descriptor pool creation may fail with the error
ERROR_FRAGMENTATION if the total number of
descriptors across all pools (including this one) created with this bit
set exceeds maxUpdateAfterBindDescriptorsInAllPools, or if
fragmentation of the underlying hardware resources occurs.
Valid Usage
maxSetsmust be greater than0
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
pNextmust beNULLor a pointer to a valid instance ofDescriptorPoolInlineUniformBlockCreateInfoEXT- The
sTypevalue of each struct in thepNextchain must be unique flagsmust be a valid combination ofDescriptorPoolCreateFlagBitsvaluespPoolSizesmust be a valid pointer to an array ofpoolSizeCountvalidDescriptorPoolSizestructurespoolSizeCountmust be greater than0
See Also
DescriptorPoolCreateFlags,
DescriptorPoolSize, StructureType,
createDescriptorPool
Constructors
| DescriptorPoolCreateInfo | |
Fields
| |
Instances
data DescriptorSetAllocateInfo (es :: [Type]) Source #
VkDescriptorSetAllocateInfo - Structure specifying the allocation parameters for descriptor sets
Valid Usage
- Each element of
pSetLayoutsmust not have been created withDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHRset
- If any element of
pSetLayoutswas created with theDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set,descriptorPoolmust have been created with theDESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITflag set
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
pNextmust beNULLor a pointer to a valid instance ofDescriptorSetVariableDescriptorCountAllocateInfo- The
sTypevalue of each struct in thepNextchain must be unique descriptorPoolmust be a validDescriptorPoolhandlepSetLayoutsmust be a valid pointer to an array ofdescriptorSetCountvalidDescriptorSetLayouthandlesdescriptorSetCountmust be greater than0- Both of
descriptorPool, and the elements ofpSetLayoutsmust have been created, allocated, or retrieved from the sameDevice
See Also
DescriptorPool,
DescriptorSetLayout,
StructureType,
allocateDescriptorSets
Constructors
| DescriptorSetAllocateInfo | |
Fields
| |
Instances
newtype DescriptorSet Source #
VkDescriptorSet - Opaque handle to a descriptor set object
See Also
CopyDescriptorSet,
WriteDescriptorSet,
allocateDescriptorSets,
cmdBindDescriptorSets,
freeDescriptorSets,
updateDescriptorSetWithTemplate,
updateDescriptorSetWithTemplateKHR
Constructors
| DescriptorSet Word64 |
Instances
newtype DescriptorSetLayout Source #
VkDescriptorSetLayout - Opaque handle to a descriptor set layout object
See Also
DescriptorSetAllocateInfo,
DescriptorUpdateTemplateCreateInfo,
PipelineLayoutCreateInfo,
createDescriptorSetLayout,
destroyDescriptorSetLayout
Constructors
| DescriptorSetLayout Word64 |
Instances
newtype DescriptorPool Source #
VkDescriptorPool - Opaque handle to a descriptor pool object
See Also
DescriptorSetAllocateInfo,
createDescriptorPool,
destroyDescriptorPool,
freeDescriptorSets,
resetDescriptorPool
Constructors
| DescriptorPool Word64 |
Instances
newtype DescriptorPoolResetFlags Source #
VkDescriptorPoolResetFlags - Reserved for future use
Description
DescriptorPoolResetFlags is a bitmask type for setting a mask, but is
currently reserved for future use.
See Also
Constructors
| DescriptorPoolResetFlags Flags |
Instances
newtype DescriptorType Source #
VkDescriptorType - Specifies the type of a descriptor in a descriptor set
Description
DESCRIPTOR_TYPE_SAMPLERspecifies a sampler descriptor.
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERspecifies a combined image sampler descriptor.DESCRIPTOR_TYPE_SAMPLED_IMAGEspecifies a sampled image descriptor.DESCRIPTOR_TYPE_STORAGE_IMAGEspecifies a storage image descriptor.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERspecifies a uniform texel buffer descriptor.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERspecifies a storage texel buffer descriptor.DESCRIPTOR_TYPE_UNIFORM_BUFFERspecifies a uniform buffer descriptor.DESCRIPTOR_TYPE_STORAGE_BUFFERspecifies a storage buffer descriptor.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICspecifies a dynamic uniform buffer descriptor.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICspecifies a dynamic storage buffer descriptor.DESCRIPTOR_TYPE_INPUT_ATTACHMENTspecifies an input attachment descriptor.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXTspecifies an inline uniform block.
When a descriptor set is updated via elements of
WriteDescriptorSet, members of
pImageInfo, pBufferInfo and pTexelBufferView are only accessed by
the implementation when they correspond to descriptor type being defined
- otherwise they are ignored. The members accessed are as follows for
each descriptor type:
- For
DESCRIPTOR_TYPE_SAMPLER, only thesamplermember of each element ofWriteDescriptorSet::pImageInfois accessed. - For
DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE, orDESCRIPTOR_TYPE_INPUT_ATTACHMENT, only theimageViewandimageLayoutmembers of each element ofWriteDescriptorSet::pImageInfoare accessed. - For
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, all members of each element ofWriteDescriptorSet::pImageInfoare accessed. - For
DESCRIPTOR_TYPE_UNIFORM_BUFFER,DESCRIPTOR_TYPE_STORAGE_BUFFER,DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, orDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, all members of each element ofWriteDescriptorSet::pBufferInfoare accessed. - For
DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERorDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, each element ofWriteDescriptorSet::pTexelBufferViewis accessed.
When updating descriptors with a descriptorType of
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT, none of the pImageInfo,
pBufferInfo, or pTexelBufferView members are accessed, instead the
source data of the descriptor update operation is taken from the
WriteDescriptorSetInlineUniformBlockEXT
structure in the pNext chain of
WriteDescriptorSet. When updating
descriptors with a descriptorType of
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, none of the pImageInfo,
pBufferInfo, or pTexelBufferView members are accessed, instead the
source data of the descriptor update operation is taken from the
WriteDescriptorSetAccelerationStructureKHR
structure in the pNext chain of
WriteDescriptorSet.
See Also
DescriptorPoolSize,
DescriptorSetLayoutBinding,
DescriptorUpdateTemplateEntry,
ImageViewHandleInfoNVX,
WriteDescriptorSet
Constructors
| DescriptorType Int32 |
Bundled Patterns
| pattern DESCRIPTOR_TYPE_SAMPLER :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_SAMPLED_IMAGE :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_STORAGE_IMAGE :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_STORAGE_BUFFER :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_INPUT_ATTACHMENT :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR :: DescriptorType | |
| pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT :: DescriptorType |
Instances
newtype DescriptorPoolCreateFlagBits Source #
VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor pool
See Also
Constructors
| DescriptorPoolCreateFlagBits Flags |
Bundled Patterns
| pattern DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT :: DescriptorPoolCreateFlagBits |
|
| pattern DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT :: DescriptorPoolCreateFlagBits |
|
Instances
newtype DescriptorSetLayoutCreateFlagBits Source #
VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set layout properties
See Also
Constructors
| DescriptorSetLayoutCreateFlagBits Flags |
Bundled Patterns
| pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR :: DescriptorSetLayoutCreateFlagBits |
|
| pattern DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT :: DescriptorSetLayoutCreateFlagBits |
|