| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Core10.DescriptorSet
Synopsis
- createDescriptorSetLayout :: forall (a :: [Type]) io. (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetLayoutCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> io DescriptorSetLayout
- withDescriptorSetLayout :: forall (a :: [Type]) io r. (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetLayoutCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorSetLayout -> (DescriptorSetLayout -> io ()) -> r) -> r
- destroyDescriptorSetLayout :: MonadIO io => Device -> DescriptorSetLayout -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- createDescriptorPool :: forall (a :: [Type]) io. (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorPoolCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> io DescriptorPool
- withDescriptorPool :: forall (a :: [Type]) io r. (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorPoolCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorPool -> (DescriptorPool -> io ()) -> r) -> r
- destroyDescriptorPool :: MonadIO io => Device -> DescriptorPool -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- resetDescriptorPool :: MonadIO io => Device -> DescriptorPool -> DescriptorPoolResetFlags -> io ()
- allocateDescriptorSets :: forall (a :: [Type]) io. (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetAllocateInfo a -> io ("descriptorSets" ::: Vector DescriptorSet)
- withDescriptorSets :: forall (a :: [Type]) io r. (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetAllocateInfo a -> (io (Vector DescriptorSet) -> (Vector DescriptorSet -> io ()) -> r) -> r
- freeDescriptorSets :: MonadIO io => Device -> DescriptorPool -> ("descriptorSets" ::: Vector DescriptorSet) -> io ()
- updateDescriptorSets :: 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_ACCELERATION_STRUCTURE_KHR :: DescriptorType
- pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV :: DescriptorType
- pattern DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM :: DescriptorType
- pattern DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER :: DescriptorType
- pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK :: DescriptorType
- pattern DESCRIPTOR_TYPE_INPUT_ATTACHMENT :: DescriptorType
- pattern DESCRIPTOR_TYPE_MUTABLE_EXT :: DescriptorType
- pattern DESCRIPTOR_TYPE_SAMPLED_IMAGE :: DescriptorType
- pattern DESCRIPTOR_TYPE_SAMPLER :: DescriptorType
- pattern DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM :: DescriptorType
- pattern DESCRIPTOR_TYPE_STORAGE_BUFFER :: DescriptorType
- pattern DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC :: DescriptorType
- pattern DESCRIPTOR_TYPE_STORAGE_IMAGE :: DescriptorType
- pattern DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER :: DescriptorType
- pattern DESCRIPTOR_TYPE_TENSOR_ARM :: DescriptorType
- pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER :: DescriptorType
- pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC :: DescriptorType
- pattern DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER :: DescriptorType
- newtype DescriptorPoolCreateFlagBits where
- DescriptorPoolCreateFlagBits Flags
- pattern DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV :: DescriptorPoolCreateFlagBits
- pattern DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV :: DescriptorPoolCreateFlagBits
- pattern DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT :: DescriptorPoolCreateFlagBits
- pattern DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT :: DescriptorPoolCreateFlagBits
- pattern DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT :: DescriptorPoolCreateFlagBits
- type DescriptorPoolCreateFlags = DescriptorPoolCreateFlagBits
- newtype DescriptorSetLayoutCreateFlagBits where
- DescriptorSetLayoutCreateFlagBits Flags
- pattern DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT :: DescriptorSetLayoutCreateFlagBits
- pattern DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT :: DescriptorSetLayoutCreateFlagBits
- pattern DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT :: DescriptorSetLayoutCreateFlagBits
- pattern DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV :: DescriptorSetLayoutCreateFlagBits
- pattern DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV :: DescriptorSetLayoutCreateFlagBits
- pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT :: DescriptorSetLayoutCreateFlagBits
- pattern DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT :: DescriptorSetLayoutCreateFlagBits
- type DescriptorSetLayoutCreateFlags = DescriptorSetLayoutCreateFlagBits
Documentation
createDescriptorSetLayout Source #
Arguments
| :: forall (a :: [Type]) 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
- If the descriptor
layout exceeds the limits reported through the
physical device limits,
then
getDescriptorSetLayoutSupportmust have returnedDescriptorSetLayoutSupportwithsupportequal toTRUEforpCreateInfo
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
VK_VERSION_1_0,
AllocationCallbacks,
DescriptorSetLayout,
DescriptorSetLayoutCreateInfo, Device
withDescriptorSetLayout :: forall (a :: [Type]) 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 last argument.
To just extract the pair pass (,) as the last argument.
destroyDescriptorSetLayout Source #
Arguments
| :: 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
VK_VERSION_1_0,
AllocationCallbacks,
DescriptorSetLayout,
Device
Arguments
| :: forall (a :: [Type]) io. (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) | |
| => Device |
|
| -> DescriptorPoolCreateInfo a |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io DescriptorPool |
vkCreateDescriptorPool - Creates a descriptor pool object
Description
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 - The device must
have been created with at least
1queue
Return Codes
See Also
VK_VERSION_1_0,
AllocationCallbacks,
DescriptorPool, DescriptorPoolCreateInfo,
Device
withDescriptorPool :: forall (a :: [Type]) 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 last argument.
To just extract the pair pass (,) as the last argument.
destroyDescriptorPool Source #
Arguments
| :: 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
| :: 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
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
descriptorPoolmust be a validDescriptorPoolhandle -
flagsmust be0 -
descriptorPoolmust 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
VK_VERSION_1_0,
DescriptorPool,
DescriptorPoolResetFlags,
Device
allocateDescriptorSets Source #
Arguments
| :: forall (a :: [Type]) 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, with the exception that
samplers with a non-null pImmutableSamplers are initialized on
allocation. Descriptors also become undefined if the underlying resource
or view object 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_BLOCKcan 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 type 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
DescriptorPoolInlineUniformBlockCreateInfo::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 validDescriptorSetAllocateInfostructure -
pDescriptorSetsmust be a valid pointer to an array ofpAllocateInfo->descriptorSetCountDescriptorSethandles - The device must
have been created with at least
1queue -
pAllocateInfo->descriptorSetCountmust be greater than0
Return Codes
See Also
VK_VERSION_1_0,
DescriptorSet, DescriptorSetAllocateInfo,
Device
withDescriptorSets :: forall (a :: [Type]) 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 last argument.
To just extract the pair pass (,) as the last argument.
Arguments
| :: 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
-
pDescriptorSetsmust be a valid pointer to an array ofdescriptorSetCountDescriptorSethandles, each element of which must either be a valid handle orNULL_HANDLE -
descriptorPoolmust have been created with theDESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BITflag
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
descriptorPoolmust be a validDescriptorPoolhandle -
descriptorSetCountmust be greater than0 -
descriptorPoolmust 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
| :: 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.
Copying a descriptor from a descriptor set does not constitute a use of the referenced resource or view, as it is the reference itself that is copied. Applications can copy a descriptor referencing a destroyed resource, and it can copy an undefined descriptor. The destination descriptor becomes undefined in both cases.
Valid Usage
- For each
element i where
pDescriptorWrites[i].descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERorDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, elements of thepTexelBufferViewmember ofpDescriptorWrites[i] must have been created ondevice
- For each
element i where
pDescriptorWrites[i].descriptorTypeisDESCRIPTOR_TYPE_UNIFORM_BUFFER,DESCRIPTOR_TYPE_STORAGE_BUFFER,DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, orDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, thebuffermember of any element of thepBufferInfomember ofpDescriptorWrites[i] must have been created ondevice - For each
element i where
pDescriptorWrites[i].descriptorTypeisDESCRIPTOR_TYPE_SAMPLERorDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, anddstSetwas not allocated with a layout that included immutable samplers fordstBindingwithdescriptorType, thesamplermember of any element of thepImageInfomember ofpDescriptorWrites[i] must have been created ondevice - For each
element i where
pDescriptorWrites[i].descriptorTypeisDESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE,DESCRIPTOR_TYPE_INPUT_ATTACHMENT,DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, orDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERtheimageViewmember of any element ofpDescriptorWrites[i] must have been created ondevice - For each
element i where
pDescriptorWrites[i].descriptorTypeisDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, elements of thepAccelerationStructuresmember of aWriteDescriptorSetAccelerationStructureKHRstructure in thepNextchain ofpDescriptorWrites[i] must have been created ondevice - For each
element i where
pDescriptorWrites[i].descriptorTypeisDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, elements of thepAccelerationStructuresmember of aWriteDescriptorSetAccelerationStructureNVstructure in thepNextchain ofpDescriptorWrites[i] must have been created ondevice - For each
element i where
pDescriptorWrites[i].descriptorTypeisDESCRIPTOR_TYPE_TENSOR_ARM, elements of thepTensorViewsmember of aWriteDescriptorSetTensorARMstructure in thepNextchain ofpDescriptorWrites[i] must have been created ondevice - For each
element i where
pDescriptorWrites[i].descriptorTypeisDESCRIPTOR_TYPE_SAMPLER,DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE,DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, orDESCRIPTOR_TYPE_INPUT_ATTACHMENT,pDescriptorWrites[i].pImageInfomust be a valid pointer to an array ofpDescriptorWrites[i].descriptorCountvalidDescriptorImageInfostructures - The
dstSetmember of each element ofpDescriptorWritesorpDescriptorCopiesfor bindings which were created without theDESCRIPTOR_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 - Host access to
pDescriptorWrites[i].dstSetandpDescriptorCopies[i].dstSetmust be externally synchronized unless explicitly denoted otherwise for specific flags
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
See Also
VK_VERSION_1_0,
CopyDescriptorSet, Device,
WriteDescriptorSet
data DescriptorBufferInfo Source #
VkDescriptorBufferInfo - Structure specifying descriptor buffer information
Description
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.
When range is WHOLE_SIZE the effective
range is calculated at updateDescriptorSets is by taking the size of
buffer minus the offset.
Valid Usage
- 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 information
Description
Members of DescriptorImageInfo that are not used in an update (as
described above) are ignored.
Valid Usage
- If
imageViewis a 2D view created from a 3D image, thendescriptorTypemust beDESCRIPTOR_TYPE_STORAGE_IMAGE,DESCRIPTOR_TYPE_SAMPLED_IMAGE, orDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER - If
imageViewis a 2D view created from a 3D image, then the image must have been created withIMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXTset - If the
image2DViewOf3D
feature is not enabled or
descriptorTypeis notDESCRIPTOR_TYPE_STORAGE_IMAGEthenimageViewmust not be a 2D view created from a 3D image - If the
sampler2DViewOf3D
feature is not enabled or
descriptorTypeis notDESCRIPTOR_TYPE_SAMPLED_IMAGEorDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERthenimageViewmust not be a 2D 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 - If
imageLayoutisIMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, then theaspectMaskused to createimageViewmust not include eitherIMAGE_ASPECT_DEPTH_BITorIMAGE_ASPECT_STENCIL_BIT - If
imageLayoutisIMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMALorIMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, then theaspectMaskused to createimageViewmust not includeIMAGE_ASPECT_COLOR_BIT - 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 be a valid multi-planar aspect mask bit - If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::mutableComparisonSamplersisFALSE, thensamplermust have been created withSamplerCreateInfo::compareEnableset toFALSE
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
VK_VERSION_1_0,
DescriptorDataEXT,
ImageLayout,
ImageView, Sampler,
WriteDescriptorSet
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,
in which case the source data for the descriptor writes is taken from
the
WriteDescriptorSetInlineUniformBlock
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, or if
descriptorType is
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,
in which case the source data for the descriptor writes is taken from
the
WriteDescriptorSetAccelerationStructureNV
structure in the pNext chain of WriteDescriptorSet, or if
descriptorType is
DESCRIPTOR_TYPE_TENSOR_ARM, in
which case the source data for the descriptor writes is taken from the
instance of
WriteDescriptorSetTensorARM in the
pNext chain of WriteDescriptorSet, as specified below.
If the
nullDescriptor
feature is enabled, the buffer, acceleration structure, tensor,
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. A null acceleration structure descriptor results in the miss
shader being invoked.
If the destination descriptor is a mutable descriptor, the active
descriptor type for the destination descriptor becomes descriptorType.
Consecutive Binding Updates
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. Consecutive bindings must have identical
DescriptorType,
ShaderStageFlags,
DescriptorBindingFlagBits,
and immutable samplers references. In addition, if the
DescriptorType is
DESCRIPTOR_TYPE_MUTABLE_EXT, the
supported descriptor types in
MutableDescriptorTypeCreateInfoEXT
must be equally defined.
The same behavior applies to bindings with a descriptor type of
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
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 -
dstBindingmust be a binding with a non-zeroDescriptorSetLayoutCreateInfo::bindingCount - All consecutive
bindings updated via a single
WriteDescriptorSetstructure, except those with adescriptorCountof zero, must have identicaldescriptorType - All consecutive
bindings updated via a single
WriteDescriptorSetstructure, except those with adescriptorCountof zero, must have identicalstageFlags - 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 - All consecutive
bindings updated via a single
WriteDescriptorSetstructure, except those with adescriptorCountof zero, must have identicalDescriptorBindingFlagBits -
descriptorTypemust match the type ofdstBindingwithindstSet -
dstSetmust 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 - If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,dstArrayElementmust be an integer multiple of4 - If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,descriptorCountmust be an integer multiple of4 - 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, orDESCRIPTOR_TYPE_STORAGE_IMAGE, theimageViewmember of each element ofpImageInfomust be either a validImageViewhandle orNULL_HANDLE - If
descriptorTypeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,DESCRIPTOR_TYPE_SAMPLED_IMAGE, orDESCRIPTOR_TYPE_STORAGE_IMAGE, and the nullDescriptor feature is not enabled, theimageViewmember of each element ofpImageInfomust not beNULL_HANDLE - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, orDESCRIPTOR_TYPE_INPUT_ATTACHMENT, then theimageViewmember of each element ofpImageInfomust not beNULL_HANDLE - If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, thepNextchain must include aWriteDescriptorSetInlineUniformBlockstructure whosedataSizemember equalsdescriptorCount - If
descriptorTypeisDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, thepNextchain must include aWriteDescriptorSetAccelerationStructureKHRstructure whoseaccelerationStructureCountmember equalsdescriptorCount - If
descriptorTypeisDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, thepNextchain must include aWriteDescriptorSetAccelerationStructureNVstructure whoseaccelerationStructureCountmember equalsdescriptorCount - If
descriptorTypeisDESCRIPTOR_TYPE_TENSOR_ARM, thepNextchain must include aWriteDescriptorSetTensorARMstructure whosetensorViewCountmember 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 animageViewmember 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_COMBINED_IMAGE_SAMPLER,dstSetwas allocated with a layout that included immutable samplers fordstBinding, and those samplers enable sampler Y′CBCR conversion, thenimageViewmust not beNULL_HANDLE - 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 with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_BUFFERorDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, thebuffermember of each element ofpBufferInfomust have been created with theBUFFER_USAGE_STORAGE_BUFFER_BITusage flag set - 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, and the shader64BitIndexing feature is not enabled, 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, thepTexelBufferViewbuffer view usage must includeBUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, thepTexelBufferViewbuffer view usage must includeBUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT - 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 with theIMAGE_USAGE_SAMPLED_BITusage flag set - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLED_IMAGEtheimageLayoutmember of each element ofpImageInfomust be a member of the list given in Sampled Image - If
descriptorTypeisDESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERtheimageLayoutmember of each element ofpImageInfomust be a member of the list given in Combined Image Sampler - If
descriptorTypeisDESCRIPTOR_TYPE_INPUT_ATTACHMENTtheimageLayoutmember of each element ofpImageInfomust be a member of the list given in Input Attachment - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_IMAGEtheimageLayoutmember of each element ofpImageInfomust be a member of the list given in Storage Image - If
descriptorTypeisDESCRIPTOR_TYPE_INPUT_ATTACHMENT, theimageViewmember of each element ofpImageInfomust have been created with theIMAGE_USAGE_INPUT_ATTACHMENT_BITusage flag set - If
descriptorTypeisDESCRIPTOR_TYPE_STORAGE_IMAGE, theimageViewmember of each element ofpImageInfomust have been created with theIMAGE_USAGE_STORAGE_BITusage flag set - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLER, thendstSetmust not have been allocated with a layout that included immutable samplers fordstBinding - If the
DescriptorSetLayoutBindingfordstSetatdstBindingisDESCRIPTOR_TYPE_MUTABLE_EXT, the new active descriptor typedescriptorTypemust exist in the correspondingpMutableDescriptorTypeListslist fordstBinding - If
descriptorTypeisDESCRIPTOR_TYPE_INPUT_ATTACHMENT, theimageViewmember of each element ofpImageInfomust have either been created without aImageViewMinLodCreateInfoEXTincluded in thepNextchain or with aImageViewMinLodCreateInfoEXT::minLodof0.0 - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, theimageViewmember of each element ofpImageInfomust have been created with a view created with animagecreated with theIMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOMusage flag set - If
descriptorTypeisDESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, theimageViewmember of each element ofpImageInfomust have been created with a view created with animagecreated with theIMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOMusage flag set
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 ofWriteDescriptorSetAccelerationStructureKHR,WriteDescriptorSetAccelerationStructureNV,WriteDescriptorSetInlineUniformBlock, VkWriteDescriptorSetPartitionedAccelerationStructureNV, orWriteDescriptorSetTensorARM - The
sTypevalue of each structure in thepNextchain must be unique -
descriptorTypemust be a validDescriptorTypevalue -
descriptorCountmust 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
VK_VERSION_1_0,
BufferView, DescriptorBufferInfo,
DescriptorImageInfo, DescriptorSet,
DescriptorType,
Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.PushDescriptorSetInfo',
StructureType,
cmdPushDescriptorSet,
cmdPushDescriptorSet,
updateDescriptorSets
Constructors
| WriteDescriptorSet | |
Fields
| |
Instances
data CopyDescriptorSet Source #
VkCopyDescriptorSet - Structure specifying a copy descriptor set operation
Description
If the DescriptorSetLayoutBinding for dstBinding is
DESCRIPTOR_TYPE_MUTABLE_EXT and
srcBinding is not
DESCRIPTOR_TYPE_MUTABLE_EXT, the
new active descriptor type becomes the descriptor type of srcBinding.
If both DescriptorSetLayoutBinding for srcBinding and dstBinding
are DESCRIPTOR_TYPE_MUTABLE_EXT,
the active descriptor type in each source descriptor is copied into the
corresponding destination descriptor. The active descriptor type can
be different for each source descriptor.
The intention is that copies to and from mutable descriptors is a simple
memcpy. Copies between non-mutable and mutable descriptors are expected
to require one memcpy per descriptor to handle the difference in size,
but this use case with more than one descriptorCount is considered
rare.
Valid Usage
- 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 -
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 - 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 - If the descriptor type
of the descriptor set binding specified by
srcBindingisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,srcArrayElementmust be an integer multiple of4 - If the descriptor type
of the descriptor set binding specified by
dstBindingisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,dstArrayElementmust be an integer multiple of4 - If the descriptor type
of the descriptor set binding specified by either
srcBindingordstBindingisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,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 either theDESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXTflag or theDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITflag set, thendstSet’s layout must 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 either theDESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXTflag or theDESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITflag set, then the descriptor pool from whichdstSetwas allocated must 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 - If
DescriptorSetLayoutBindingfordstSetatdstBindingisDESCRIPTOR_TYPE_MUTABLE_EXT, the new active descriptor type must exist in the correspondingpMutableDescriptorTypeListslist fordstBindingif the new active descriptor type is notDESCRIPTOR_TYPE_MUTABLE_EXT - If
DescriptorSetLayoutBindingforsrcSetatsrcBindingisDESCRIPTOR_TYPE_MUTABLE_EXTand theDescriptorSetLayoutBindingfordstSetatdstBindingis notDESCRIPTOR_TYPE_MUTABLE_EXT, the active descriptor type for the source descriptor must match the descriptor type ofdstBinding - If
DescriptorSetLayoutBindingfordstSetatdstBindingisDESCRIPTOR_TYPE_MUTABLE_EXT, and the new active descriptor type isDESCRIPTOR_TYPE_MUTABLE_EXT, thepMutableDescriptorTypeListsforsrcBindinganddstBindingmust match exactly
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_COPY_DESCRIPTOR_SET
-
pNextmust beNULL -
srcSetmust be a validDescriptorSethandle -
dstSetmust be a validDescriptorSethandle - Both of
dstSet, andsrcSetmust have been created, allocated, or retrieved from the sameDevice
See Also
VK_VERSION_1_0,
DescriptorSet,
StructureType,
updateDescriptorSets
Constructors
| CopyDescriptorSet | |
Fields
| |
Instances
data DescriptorSetLayoutBinding Source #
VkDescriptorSetLayoutBinding - Structure specifying a descriptor set layout binding
Description
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.
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_COMBINED_IMAGE_SAMPLER, anddescriptorCountis not0andpImmutableSamplersis notNULL, either each element ofpImmutableSamplersmust be aSamplerthat enables sampler Y′CBCR conversion or none of them enable sampler Y′CBCR conversion - If
descriptorTypeisDESCRIPTOR_TYPE_SAMPLER, each element ofpImmutableSamplersmust not be aSamplerobject that enables sampler Y′CBCR conversion - If the
inlineUniformBlock
feature is not enabled,
descriptorTypemust not beDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK - If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCKthendescriptorCountmust be a multiple of4 - If
descriptorTypeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCKandDescriptorSetLayoutCreateInfo::flagsdoes not containDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTthendescriptorCountmust be less than or equal toPhysicalDeviceInlineUniformBlockProperties::maxInlineUniformBlockSize - If
DescriptorSetLayoutCreateInfo::flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT,descriptorTypemust beDESCRIPTOR_TYPE_SAMPLER - If
DescriptorSetLayoutCreateInfo::flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT,descriptorCountmust be less than or equal to1 - If
DescriptorSetLayoutCreateInfo::flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT, anddescriptorCountis equal to1,pImmutableSamplersmust not beNULL - If
descriptorCountis not0,stageFlagsmust beSHADER_STAGE_ALLor a valid combination of otherShaderStageFlagBitsvalues - 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 - If
descriptorTypeisDESCRIPTOR_TYPE_MUTABLE_EXT, thenpImmutableSamplersmust beNULL - If
DescriptorSetLayoutCreateInfo::flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV, anddescriptorCountis not0, thenstageFlagsmust be a valid combination ofSHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT,SHADER_STAGE_GEOMETRY_BIT,SHADER_STAGE_FRAGMENT_BITandSHADER_STAGE_COMPUTE_BITvalues
Valid Usage (Implicit)
-
descriptorTypemust be a validDescriptorTypevalue
See Also
VK_VERSION_1_0,
DescriptorSetLayoutCreateInfo,
DescriptorType,
Sampler,
ShaderStageFlags
Constructors
| DescriptorSetLayoutBinding | |
Fields
| |
Instances
| Show DescriptorSetLayoutBinding Source # | |
Defined in Vulkan.Core10.DescriptorSet Methods showsPrec :: Int -> DescriptorSetLayoutBinding -> ShowS # show :: DescriptorSetLayoutBinding -> String # showList :: [DescriptorSetLayoutBinding] -> ShowS # | |
| FromCStruct DescriptorSetLayoutBinding Source # | |
Defined in Vulkan.Core10.DescriptorSet Methods peekCStruct :: Ptr DescriptorSetLayoutBinding -> IO DescriptorSetLayoutBinding Source # | |
| ToCStruct DescriptorSetLayoutBinding Source # | |
Defined in Vulkan.Core10.DescriptorSet Methods withCStruct :: DescriptorSetLayoutBinding -> (Ptr DescriptorSetLayoutBinding -> IO b) -> IO b Source # pokeCStruct :: Ptr DescriptorSetLayoutBinding -> DescriptorSetLayoutBinding -> IO b -> IO b Source # withZeroCStruct :: (Ptr DescriptorSetLayoutBinding -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DescriptorSetLayoutBinding -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero DescriptorSetLayoutBinding Source # | |
Defined in Vulkan.Core10.DescriptorSet Methods | |
data DescriptorSetLayoutCreateInfo (es :: [Type]) Source #
VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout
Valid Usage
- If the
perStageDescriptorSet
feature is not enabled, or
flagsdoes not containDESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV, then theDescriptorSetLayoutBinding::bindingmembers of the elements of thepBindingsarray must each have different values
- If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, and the VK_KHR_push_descriptor extension is not enabled, pushDescriptor must be enabled - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, then all elements ofpBindingsmust not have adescriptorTypeofDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICorDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, then all elements ofpBindingsmust not have adescriptorTypeofDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, then the total number of elements of all bindings must be less than or equal toPhysicalDevicePushDescriptorProperties::maxPushDescriptors - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT,flagsmust not containDESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT,pBindingsmust not have adescriptorTypeofDESCRIPTOR_TYPE_MUTABLE_EXT - 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 - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,flagsmust not containDESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT - If any
element
pBindings[i] has adescriptorTypeofDESCRIPTOR_TYPE_MUTABLE_EXT, then thepNextchain must include aMutableDescriptorTypeCreateInfoEXTstructure, andmutableDescriptorTypeListCountmust be greater than i - If a
binding has a
descriptorTypevalue ofDESCRIPTOR_TYPE_MUTABLE_EXT, thenpImmutableSamplersmust beNULL -
If
PhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorTypeis not enabled,pBindingsmust not contain adescriptorTypeofDESCRIPTOR_TYPE_MUTABLE_EXT - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT,PhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorTypemust be enabled - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, then all elements ofpBindingsmust not have adescriptorTypeofDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICorDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT,flagsmust also containDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, thenflagsmust not containDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, thenflagsmust not containDESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV, then perStageDescriptorSet must be enabled - If
flagscontainsDESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV, then there must not be any two elements of thepBindingsarray with the sameDescriptorSetLayoutBinding::bindingvalue and theirDescriptorSetLayoutBinding::stageFlagscontaining the same bit
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofDescriptorSetLayoutBindingFlagsCreateInfoorMutableDescriptorTypeCreateInfoEXT - The
sTypevalue of each structure 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
VK_VERSION_1_0,
DescriptorSetLayoutBinding,
DescriptorSetLayoutCreateFlags,
StructureType,
createDescriptorSetLayout,
getDescriptorSetLayoutSupport,
getDescriptorSetLayoutSupport
Constructors
| DescriptorSetLayoutCreateInfo | |
Fields
| |
Instances
data DescriptorPoolSize Source #
VkDescriptorPoolSize - Structure specifying descriptor pool size
Description
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.
For simplicity the application can use the
Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.PhysicalDeviceMaintenance6Properties'::maxCombinedImageSamplerDescriptorCount
property, which is sized to accommodate any and all
formats that require a sampler Y′CBCR conversion
supported by the implementation.
Valid Usage
- If
typeisDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCKthendescriptorCountmust 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 containing the same
descriptor type 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.
If a pPoolSizes[i]::type is
DESCRIPTOR_TYPE_MUTABLE_EXT, a
MutableDescriptorTypeCreateInfoEXT
structure in the pNext chain can be used to specify which mutable
descriptor types can be allocated from the pool. If included in the
pNext chain,
MutableDescriptorTypeCreateInfoEXT::pMutableDescriptorTypeLists[i]
specifies which kind of
DESCRIPTOR_TYPE_MUTABLE_EXT
descriptors can be allocated from this pool entry. If
MutableDescriptorTypeCreateInfoEXT
does not exist in the pNext chain, or
MutableDescriptorTypeCreateInfoEXT::pMutableDescriptorTypeLists[i]
is out of range, the descriptor pool allocates enough memory to be able
to allocate a
DESCRIPTOR_TYPE_MUTABLE_EXT
descriptor with any supported
DescriptorType as a mutable
descriptor. A mutable descriptor can be allocated from a pool entry if
the type list in DescriptorSetLayoutCreateInfo is a subset of the type
list declared in the descriptor pool, or if the pool entry is created
without a descriptor type list. Multiple pPoolSizes entries with
DESCRIPTOR_TYPE_MUTABLE_EXT can
be declared. When multiple such pool entries are present in
pPoolSizes, they specify sets of supported descriptor types which
either fully overlap, partially overlap, or are disjoint. Two sets fully
overlap if the sets of supported descriptor types are equal. If the sets
are not disjoint they partially overlap. A pool entry without a
MutableDescriptorTypeListEXT
assigned to it is considered to partially overlap any other pool entry
which has a
MutableDescriptorTypeListEXT
assigned to it. The application must ensure that partial overlap does
not exist in pPoolSizes.
The requirement of no partial overlap is intended to resolve ambiguity
for validation as there is no confusion which pPoolSizes entries will
be allocated from. An implementation is not expected to depend on this
requirement.
Valid Usage
-
If the
descriptorPoolOverallocation
feature is not enabled, or
flagsdoes not haveDESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NVset,maxSetsmust be greater than0
- If
flagshas theDESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NVorDESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NVbits set, then descriptorPoolOverallocation must be enabled - If
flagshas theDESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXTbit set, then theDESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITbit must not be set - If
PhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorTypeis not enabled,pPoolSizesmust not contain adescriptorTypeofDESCRIPTOR_TYPE_MUTABLE_EXT - If
flagshas theDESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXTbit set,PhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorTypemust be enabled - If
pPoolSizescontains adescriptorTypeofDESCRIPTOR_TYPE_MUTABLE_EXT, any otherDESCRIPTOR_TYPE_MUTABLE_EXTelement inpPoolSizesmust not have sets of supported descriptor types which partially overlap - If
pPoolSizescontains adescriptorTypeofDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, thepNextchain must include aDescriptorPoolInlineUniformBlockCreateInfostructure whosemaxInlineUniformBlockBindingsmember is not zero - If a
DataGraphProcessingEngineCreateInfoARMstructure is included in thepNextchain, each member ofpProcessingEnginesmust be identical to anQueueFamilyDataGraphPropertiesARM::engineretrieved fromgetPhysicalDeviceQueueFamilyDataGraphPropertiesARMwith thephysicalDevicethat was used to createdevice
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofDataGraphProcessingEngineCreateInfoARM,DescriptorPoolInlineUniformBlockCreateInfo, orMutableDescriptorTypeCreateInfoEXT - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be a valid combination ofDescriptorPoolCreateFlagBitsvalues - If
poolSizeCountis not0,pPoolSizesmust be a valid pointer to an array ofpoolSizeCountvalidDescriptorPoolSizestructures
See Also
VK_VERSION_1_0,
DescriptorPoolCreateFlags,
DescriptorPoolSize, StructureType,
createDescriptorPool
Constructors
| DescriptorPoolCreateInfo | |
Fields
| |
Instances
data DescriptorSetAllocateInfo (es :: [Type]) Source #
VkDescriptorSetAllocateInfo - Structure specifying the allocation parameters for descriptor sets
Valid Usage
- If the
VK_KHR_maintenance1
extension is not enabled and
PhysicalDeviceProperties::apiVersionis less than Vulkan 1.1,descriptorSetCountmust not be greater than the number of sets that are currently available for allocation indescriptorPool
- If the
VK_KHR_maintenance1
extension is not enabled and
PhysicalDeviceProperties::apiVersionis less than Vulkan 1.1,descriptorPoolmust have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts - Each element of
pSetLayoutsmust not have been created withDESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BITset - 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 - If
pSetLayouts[i] was created with an element ofpBindingFlagsthat includesDESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, andDescriptorSetVariableDescriptorCountAllocateInfois included in thepNextchain, andDescriptorSetVariableDescriptorCountAllocateInfo::descriptorSetCountis not zero, thenDescriptorSetVariableDescriptorCountAllocateInfo::pDescriptorCounts[i] must be less than or equal toDescriptorSetLayoutBinding::descriptorCountfor the corresponding binding used to createpSetLayouts[i] - If any element
of
pSetLayoutswas created with theDESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXTbit set,descriptorPoolmust have been created with theDESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXTflag set - Each element of
pSetLayoutsmust not have been created with theDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTbit set
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
-
pNextmust beNULLor a pointer to a valid instance ofDescriptorSetVariableDescriptorCountAllocateInfo - The
sTypevalue of each structure in thepNextchain must be unique -
descriptorPoolmust be a validDescriptorPoolhandle -
pSetLayoutsmust be a valid pointer to an array ofdescriptorSetCountvalidDescriptorSetLayouthandles -
descriptorSetCountmust be greater than0 - Both of
descriptorPool, and the elements ofpSetLayoutsmust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
descriptorPoolmust be externally synchronized
See Also
VK_VERSION_1_0,
DescriptorPool,
DescriptorSetLayout,
StructureType,
allocateDescriptorSets
Constructors
| DescriptorSetAllocateInfo | |
Fields
| |
Instances
newtype DescriptorSet Source #
VkDescriptorSet - Opaque handle to a descriptor set object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_VERSION_1_0,
Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.BindDescriptorSetsInfo',
CopyDescriptorSet,
WriteDescriptorSet,
allocateDescriptorSets,
cmdBindDescriptorSets,
freeDescriptorSets,
getDescriptorSetHostMappingVALVE,
updateDescriptorSetWithTemplate,
updateDescriptorSetWithTemplate
Constructors
| DescriptorSet Word64 |
Instances
newtype DescriptorSetLayout Source #
VkDescriptorSetLayout - Opaque handle to a descriptor set layout object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_VERSION_1_0,
DescriptorSetAllocateInfo,
DescriptorSetBindingReferenceVALVE,
DescriptorUpdateTemplateCreateInfo,
IndirectExecutionSetShaderLayoutInfoEXT,
PipelineLayoutCreateInfo,
ShaderCreateInfoEXT,
createDescriptorSetLayout,
destroyDescriptorSetLayout,
getDescriptorSetLayoutBindingOffsetEXT,
getDescriptorSetLayoutSizeEXT
Constructors
| DescriptorSetLayout Word64 |
Instances
newtype DescriptorPool Source #
VkDescriptorPool - Opaque handle to a descriptor pool object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_VERSION_1_0,
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_BLOCKspecifies an inline uniform block.DESCRIPTOR_TYPE_MUTABLE_EXTspecifies a descriptor of mutable type.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMspecifies a sampled weight image descriptor.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMspecifies a block matching image descriptor.DESCRIPTOR_TYPE_TENSOR_ARMspecifies a storage tensor descriptor.
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, none of the pImageInfo,
pBufferInfo, or pTexelBufferView members are accessed, instead the
source data of the descriptor update operation is taken from the
WriteDescriptorSetInlineUniformBlock
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. When updating
descriptors with a descriptorType of
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, none of the pImageInfo,
pBufferInfo, or pTexelBufferView members are accessed, instead the
source data of the descriptor update operation is taken from the
WriteDescriptorSetAccelerationStructureNV
structure in the pNext chain of
WriteDescriptorSet. When updating
descriptors with a descriptorType of DESCRIPTOR_TYPE_TENSOR_ARM,
none of the pImageInfo, pBufferInfo, or pTexelBufferView members
are accessed, instead the source data of the descriptor update operation
is taken from the instance of
WriteDescriptorSetTensorARM in the
pNext chain of WriteDescriptorSet.
See Also
VK_VERSION_1_0,
DescriptorGetInfoEXT,
DescriptorPoolSize,
DescriptorSetLayoutBinding,
DescriptorUpdateTemplateEntry,
ImageViewHandleInfoNVX,
MutableDescriptorTypeListEXT,
ResourceDescriptorInfoEXT,
WriteDescriptorSet,
getPhysicalDeviceDescriptorSizeEXT
Constructors
| DescriptorType Int32 |
Bundled Patterns
Instances
newtype DescriptorPoolCreateFlagBits Source #
VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor pool
Description
DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BITspecifies that descriptor sets can return their individual allocations to the pool, i.e. all ofallocateDescriptorSets,freeDescriptorSets, andresetDescriptorPoolare allowed. Otherwise, descriptor sets allocated from the pool must not be individually freed back to the pool, i.e. onlyallocateDescriptorSetsandresetDescriptorPoolare allowed.
DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITspecifies that descriptor sets allocated from this pool can include bindings with theDESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITbit set. It is valid to allocate descriptor sets that have bindings that do not set theDESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITbit from a pool that hasDESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITset.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXTspecifies that this descriptor pool and the descriptor sets allocated from it reside entirely in host memory and cannot be bound. Similar to descriptor sets allocated without this flag, applications can copy-from and copy-to descriptors sets allocated from this descriptor pool. Descriptor sets allocated from this pool are partially exempt from the external synchronization requirement inupdateDescriptorSetWithTemplateKHRandupdateDescriptorSets. Descriptor sets and their descriptors can be updated concurrently in different threads, though the same descriptor must not be updated concurrently by two threads.DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NVspecifies that the implementation should allow the application to allocate more thanDescriptorPoolCreateInfo::maxSetsdescriptor set objects from the descriptor pool as available resources allow. The implementation may use themaxSetsvalue to allocate the initial available sets, but using zero is permitted.DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NVspecifies that the implementation should allow the application to allocate more descriptors from the pool than was specified by theDescriptorPoolSize::descriptorCountfor any descriptor type as specified byDescriptorPoolCreateInfo::poolSizeCountandDescriptorPoolCreateInfo::pPoolSizes, as available resources allow. The implementation may use thedescriptorCountfor each descriptor type to allocate the initial pool, but the application is allowed to set thepoolSizeCountto zero, or any of thedescriptorCountvalues in thepPoolSizesarray to zero.
See Also
Constructors
| DescriptorPoolCreateFlagBits Flags |
Bundled Patterns
Instances
newtype DescriptorSetLayoutCreateFlagBits Source #
VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set layout properties
Description
DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BITspecifies that descriptor sets must not be allocated using this layout, and descriptors are instead pushed bycmdPushDescriptorSet.
DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITspecifies that descriptor sets using this layout must be allocated from a descriptor pool created with theDESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITbit set. Descriptor set layouts created with this bit set have alternate limits for the maximum number of descriptors per-stage and per-pipeline layout. The non-UpdateAfterBind limits only count descriptors in sets created without this flag. The UpdateAfterBind limits count all descriptors, but the limits may be higher than the non-UpdateAfterBind limits.DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NVspecifies that descriptor sets using this layout allows them to be bound with compute pipelines that are created withPIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NVflag set to be used in Device-Generated Commands.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTspecifies that this layout must only be used with descriptor buffers.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXTspecifies that this is a layout only containing immutable samplers that can be bound bycmdBindDescriptorBufferEmbeddedSamplersEXT. Unlike normal immutable samplers, embedded immutable samplers do not require the application to provide them in a descriptor buffer.DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXTspecifies that descriptor sets using this layout must be allocated from a descriptor pool created with theDESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXTbit set. Descriptor set layouts created with this bit have no expressible limit for maximum number of descriptors per-stage. Host descriptor sets are limited only by available host memory, but may be limited for implementation specific reasons. Implementations may limit the number of supported descriptors to UpdateAfterBind limits or non-UpdateAfterBind limits, whichever is larger.DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NVspecifies that binding numbers in descriptor sets using this layout may represent different resources and/or types of resources in each stage.
See Also
Constructors
| DescriptorSetLayoutCreateFlagBits Flags |
Bundled Patterns