Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype VkDescriptorType = VkDescriptorType Int32
- pattern VK_DESCRIPTOR_TYPE_SAMPLER :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_STORAGE_IMAGE :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_STORAGE_BUFFER :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC :: VkDescriptorType
- pattern VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT :: VkDescriptorType
- newtype VkDescriptorSetLayoutCreateFlagBits = VkDescriptorSetLayoutCreateFlagBits VkFlags
- newtype VkDescriptorPoolCreateFlagBits = VkDescriptorPoolCreateFlagBits VkFlags
- pattern VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT :: VkDescriptorPoolCreateFlagBits
- newtype VkDescriptorPoolResetFlags = VkDescriptorPoolResetFlags VkFlags
- type VkDescriptorSet = Ptr VkDescriptorSet_T
- type VkDescriptorPool = Ptr VkDescriptorPool_T
- vkCreateDescriptorSetLayout :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult
- vkDestroyDescriptorSetLayout :: ("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
- vkCreateDescriptorPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult
- vkDestroyDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
- vkResetDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult
- vkAllocateDescriptorSets :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult
- vkFreeDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult
- vkUpdateDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ()
- data VkDescriptorBufferInfo = VkDescriptorBufferInfo {}
- data VkDescriptorImageInfo = VkDescriptorImageInfo {}
- data VkWriteDescriptorSet = VkWriteDescriptorSet {
- vkSType :: VkStructureType
- vkPNext :: Ptr ()
- vkDstSet :: VkDescriptorSet
- vkDstBinding :: Word32
- vkDstArrayElement :: Word32
- vkDescriptorCount :: Word32
- vkDescriptorType :: VkDescriptorType
- vkPImageInfo :: Ptr VkDescriptorImageInfo
- vkPBufferInfo :: Ptr VkDescriptorBufferInfo
- vkPTexelBufferView :: Ptr VkBufferView
- data VkCopyDescriptorSet = VkCopyDescriptorSet {}
- data VkDescriptorSetLayoutBinding = VkDescriptorSetLayoutBinding {}
- data VkDescriptorSetLayoutCreateInfo = VkDescriptorSetLayoutCreateInfo {}
- data VkDescriptorPoolSize = VkDescriptorPoolSize {}
- data VkDescriptorPoolCreateInfo = VkDescriptorPoolCreateInfo {}
- data VkDescriptorSetAllocateInfo = VkDescriptorSetAllocateInfo {}
- type VkDescriptorSetLayoutCreateFlags = VkDescriptorSetLayoutCreateFlagBits
- type VkDescriptorPoolCreateFlags = VkDescriptorPoolCreateFlagBits
Documentation
newtype VkDescriptorType Source #
VkDescriptorType - Specifies the type of a descriptor in a descriptor set
Description
VK_DESCRIPTOR_TYPE_SAMPLER
specifies a sampler descriptor.
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
specifies a combined image sampler descriptor.VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
specifies a sampled image descriptor.VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
specifies a storage image descriptor.VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
specifies a uniform texel buffer descriptor.VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
specifies a storage texel buffer descriptor.VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
specifies a uniform buffer descriptor.VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
specifies a storage buffer descriptor.VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
specifies a dynamic uniform buffer descriptor.VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
specifies a dynamic storage buffer descriptor.VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
specifies a input attachment descriptor.
When a descriptor set is updated via elements of VkWriteDescriptorSet
,
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
VK_DESCRIPTOR_TYPE_SAMPLER
, only thesample
member of each element ofVkWriteDescriptorSet
::pImageInfo
is accessed. - For
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
,VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, orVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, only theimageView
andimageLayout
members of each element ofVkWriteDescriptorSet
::pImageInfo
are accessed. - For
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, all members of each element ofVkWriteDescriptorSet
::pImageInfo
are accessed. - For
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, all members of each element ofVkWriteDescriptorSet
::pBufferInfo
are accessed. - For
VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
orVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
, each element ofVkWriteDescriptorSet
::pTexelBufferView
is accessed.
See Also
VkDescriptorPoolSize
, VkDescriptorSetLayoutBinding
,
VkDescriptorUpdateTemplateEntry
,
VkWriteDescriptorSet
Instances
pattern VK_DESCRIPTOR_TYPE_SAMPLER :: VkDescriptorType Source #
pattern VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE :: VkDescriptorType Source #
pattern VK_DESCRIPTOR_TYPE_STORAGE_IMAGE :: VkDescriptorType Source #
pattern VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER :: VkDescriptorType Source #
pattern VK_DESCRIPTOR_TYPE_STORAGE_BUFFER :: VkDescriptorType Source #
newtype VkDescriptorSetLayoutCreateFlagBits Source #
VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set layout properties
See Also
Instances
newtype VkDescriptorPoolCreateFlagBits Source #
VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor pool
See Also
Instances
pattern VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT :: VkDescriptorPoolCreateFlagBits Source #
VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
specifies that
descriptor sets can return their individual allocations to the pool,
i.e. all of vkAllocateDescriptorSets
, vkFreeDescriptorSets
, and
vkResetDescriptorPool
are allowed. Otherwise, descriptor sets
allocated from the pool must not be individually freed back to the
pool, i.e. only vkAllocateDescriptorSets
and vkResetDescriptorPool
are allowed.
newtype VkDescriptorPoolResetFlags Source #
VkDescriptorPoolResetFlags - Reserved for future use
Description
VkDescriptorPoolResetFlags
is a bitmask type for setting a mask, but
is currently reserved for future use.
See Also
Instances
type VkDescriptorSet = Ptr VkDescriptorSet_T Source #
VkDescriptorSet - Opaque handle to a descriptor set object
See Also
VkCopyDescriptorSet
,
VkObjectTableDescriptorSetEntryNVX
,
VkWriteDescriptorSet
, vkAllocateDescriptorSets
,
vkCmdBindDescriptorSets
,
vkFreeDescriptorSets
,
vkUpdateDescriptorSetWithTemplate
,
vkUpdateDescriptorSetWithTemplateKHR
type VkDescriptorPool = Ptr VkDescriptorPool_T Source #
VkDescriptorPool - Opaque handle to a descriptor pool object
See Also
VkDescriptorSetAllocateInfo
, vkCreateDescriptorPool
,
vkDestroyDescriptorPool
, vkFreeDescriptorSets
,
vkResetDescriptorPool
vkCreateDescriptorSetLayout :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult Source #
vkCreateDescriptorSetLayout - Create a new descriptor set layout
Parameters
device
is the logical device that creates the descriptor set layout.
pCreateInfo
is a pointer to an instance of theVkDescriptorSetLayoutCreateInfo
structure specifying the state of the descriptor set layout object.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.pSetLayout
points to aVkDescriptorSetLayout
handle in which the resulting descriptor set layout object is returned.
Valid Usage (Implicit)
device
must be a validVkDevice
handle
pCreateInfo
must be a valid pointer to a validVkDescriptorSetLayoutCreateInfo
structure- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validVkAllocationCallbacks
structure pSetLayout
must be a valid pointer to aVkDescriptorSetLayout
handle
Return Codes
[Success]
- VK_SUCCESS
[Failure]
- VK_ERROR_OUT_OF_HOST_MEMORY
VK_ERROR_OUT_OF_DEVICE_MEMORY
See Also
VkAllocationCallbacks
,
VkDescriptorSetLayout
,
VkDescriptorSetLayoutCreateInfo
,
VkDevice
vkDestroyDescriptorSetLayout :: ("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO () Source #
vkDestroyDescriptorSetLayout - Destroy a descriptor set layout object
Parameters
device
is the logical device that destroys the descriptor set layout.
descriptorSetLayout
is the descriptor set layout to destroy.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.
Valid Usage
- If
VkAllocationCallbacks
were provided whendescriptorSetLayout
was created, a compatible set of callbacks must be provided here
- If no
VkAllocationCallbacks
were provided whendescriptorSetLayout
was created,pAllocator
must beNULL
Valid Usage (Implicit)
device
must be a validVkDevice
handle
- If
descriptorSetLayout
is notVK_NULL_HANDLE
,descriptorSetLayout
must be a validVkDescriptorSetLayout
handle - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validVkAllocationCallbacks
structure - If
descriptorSetLayout
is a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
descriptorSetLayout
must be externally synchronized
See Also
vkCreateDescriptorPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult Source #
vkCreateDescriptorPool - Creates a descriptor pool object
Parameters
device
is the logical device that creates the descriptor pool.
pCreateInfo
is a pointer to an instance of theVkDescriptorPoolCreateInfo
structure specifying the state of the descriptor pool object.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.pDescriptorPool
points to aVkDescriptorPool
handle in which the resulting descriptor pool object is returned.
Description
pAllocator
controls host memory allocation as described in the Memory
Allocation
chapter.
The created descriptor pool is returned in pDescriptorPool
.
Valid Usage (Implicit)
device
must be a validVkDevice
handle
pCreateInfo
must be a valid pointer to a validVkDescriptorPoolCreateInfo
structure- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validVkAllocationCallbacks
structure pDescriptorPool
must be a valid pointer to aVkDescriptorPool
handle
Return Codes
[Success]
- VK_SUCCESS
[Failure]
- VK_ERROR_OUT_OF_HOST_MEMORY
VK_ERROR_OUT_OF_DEVICE_MEMORY
VK_ERROR_FRAGMENTATION_EXT
See Also
VkAllocationCallbacks
,
VkDescriptorPool
, VkDescriptorPoolCreateInfo
,
VkDevice
vkDestroyDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO () Source #
vkDestroyDescriptorPool - Destroy a descriptor pool object
Parameters
device
is the logical device that destroys the descriptor pool.
descriptorPool
is the descriptor pool to destroy.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.
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
VkAllocationCallbacks
were provided whendescriptorPool
was created, a compatible set of callbacks must be provided here - If no
VkAllocationCallbacks
were provided whendescriptorPool
was created,pAllocator
must beNULL
Valid Usage (Implicit)
device
must be a validVkDevice
handle
- If
descriptorPool
is notVK_NULL_HANDLE
,descriptorPool
must be a validVkDescriptorPool
handle - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validVkAllocationCallbacks
structure - If
descriptorPool
is a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
descriptorPool
must be externally synchronized
See Also
vkResetDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult Source #
vkResetDescriptorPool - Resets a descriptor pool object
Parameters
device
is the logical device that owns the descriptor pool.
descriptorPool
is the descriptor pool to be reset.flags
is reserved for future use.
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)
device
must be a validVkDevice
handle
descriptorPool
must be a validVkDescriptorPool
handleflags
must be0
descriptorPool
must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
descriptorPool
must be externally synchronized
- Host access to any
VkDescriptorSet
objects allocated fromdescriptorPool
must be externally synchronized
Return Codes
[Success]
- VK_SUCCESS
[Failure]
- VK_ERROR_OUT_OF_HOST_MEMORY
VK_ERROR_OUT_OF_DEVICE_MEMORY
See Also
vkAllocateDescriptorSets :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult Source #
vkAllocateDescriptorSets - Allocate one or more descriptor sets
Parameters
device
is the logical device that owns the descriptor pool.
pAllocateInfo
is a pointer to an instance of theVkDescriptorSetAllocateInfo
structure describing parameters of the allocation.pDescriptorSets
is a pointer to an array ofVkDescriptorSet
handles in which the resulting descriptor set objects are returned.
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. However, the descriptor
set can be bound in a command buffer without causing errors or
exceptions. For descriptor set bindings created with the
VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT
bit 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
VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT
bit set, all descriptors
in that binding that are statically used must have been populated
before the descriptor set is
consumed.
Entries that are not used by a pipeline can have uninitialized
descriptors or descriptors of resources that have been destroyed, and
executing a draw or dispatch with such a descriptor set bound does not
cause undefined behavior. This means applications need not populate
unused entries with dummy descriptors.
If a call to vkAllocateDescriptorSets
would cause the total number of
descriptor sets allocated from the pool to exceed the value of
VkDescriptorPoolCreateInfo
::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 vkAllocateDescriptorSets
would cause the number of any given descriptor type to exceed the sum of
all the descriptorCount
members of each element of
VkDescriptorPoolCreateInfo
::pPoolSizes
with a member
equal to that
type. If the allocation fails due to no more space in the descriptor
pool, and not because of system or device memory exhaustion, then
VK_ERROR_OUT_OF_POOL_MEMORY
must be returned.
vkAllocateDescriptorSets
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 VK_NULL_HANDLE
and return
the error.
Valid Usage (Implicit)
device
must be a validVkDevice
handle
pAllocateInfo
must be a valid pointer to a validVkDescriptorSetAllocateInfo
structurepDescriptorSets
must be a valid pointer to an array ofpAllocateInfo
::descriptorSetCountVkDescriptorSet
handles
Host Synchronization
- Host access to
pAllocateInfo
::descriptorPool must be externally synchronized
Return Codes
[Success]
- VK_SUCCESS
[Failure]
- VK_ERROR_OUT_OF_HOST_MEMORY
VK_ERROR_OUT_OF_DEVICE_MEMORY
VK_ERROR_FRAGMENTED_POOL
VK_ERROR_OUT_OF_POOL_MEMORY
See Also
vkFreeDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult Source #
vkFreeDescriptorSets - Free one or more descriptor sets
Parameters
device
is the logical device that owns the descriptor pool.
descriptorPool
is the descriptor pool from which the descriptor sets were allocated.descriptorSetCount
is the number of elements in thepDescriptorSets
array.pDescriptorSets
is an array of handles toVkDescriptorSet
objects.
Description
After a successful call to vkFreeDescriptorSets
, all descriptor sets
in pDescriptorSets
are invalid.
Valid Usage
- All submitted commands that refer to any element of
pDescriptorSets
must have completed execution
pDescriptorSets
must be a valid pointer to an array ofdescriptorSetCount
VkDescriptorSet
handles, each element of which must either be a valid handle orVK_NULL_HANDLE
- Each valid handle in
pDescriptorSets
must have been allocated fromdescriptorPool
descriptorPool
must have been created with theVK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
flag
Valid Usage (Implicit)
device
must be a validVkDevice
handle
descriptorPool
must be a validVkDescriptorPool
handledescriptorSetCount
must be greater than0
descriptorPool
must have been created, allocated, or retrieved fromdevice
- Each element of
pDescriptorSets
that is a valid handle must have been created, allocated, or retrieved fromdescriptorPool
Host Synchronization
- Host access to
descriptorPool
must be externally synchronized
- Host access to each member of
pDescriptorSets
must be externally synchronized
Return Codes
[Success]
- VK_SUCCESS
[Failure]
- VK_ERROR_OUT_OF_HOST_MEMORY
VK_ERROR_OUT_OF_DEVICE_MEMORY
See Also
vkUpdateDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO () Source #
vkUpdateDescriptorSets - Update the contents of a descriptor set object
Parameters
device
is the logical device that updates the descriptor sets.
descriptorWriteCount
is the number of elements in thepDescriptorWrites
array.pDescriptorWrites
is a pointer to an array ofVkWriteDescriptorSet
structures describing the descriptor sets to write to.descriptorCopyCount
is the number of elements in thepDescriptorCopies
array.pDescriptorCopies
is a pointer to an array ofVkCopyDescriptorSet
structures describing the descriptor sets to copy between.
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 VkCopyDescriptorSet
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 VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
or
VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
bits set,
that command buffer becomes
invalid.
Valid Usage
- Descriptor bindings updated by this command which were created
without the
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
orVK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
bits set must not be used by any command that was recorded to a command buffer which is in the pending state.
Valid Usage (Implicit)
device
must be a validVkDevice
handle
- If
descriptorWriteCount
is not0
,pDescriptorWrites
must be a valid pointer to an array ofdescriptorWriteCount
validVkWriteDescriptorSet
structures - If
descriptorCopyCount
is not0
,pDescriptorCopies
must be a valid pointer to an array ofdescriptorCopyCount
validVkCopyDescriptorSet
structures
Host Synchronization
- Host access to
pDescriptorWrites
[].dstSet must be externally synchronized
- Host access to
pDescriptorCopies
[].dstSet must be externally synchronized
See Also
data VkDescriptorBufferInfo Source #
VkDescriptorBufferInfo - Structure specifying descriptor buffer info
Description
Note
When setting range
to VK_WHOLE_SIZE
, the effective range must not
be larger than the maximum range for the descriptor type
([maxUniformBufferRange](https:/www.khronos.orgregistryvulkanspecs1.0-extensionshtml/vkspec.html#features-limits-maxUniformBufferRange)
or
maxStorageBufferRange).
This means that VK_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 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
and
VK_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
offset
must be less than the size ofbuffer
- If
range
is not equal toVK_WHOLE_SIZE
,range
must be greater than0
- If
range
is not equal toVK_WHOLE_SIZE
,range
must be less than or equal to the size ofbuffer
minusoffset
Valid Usage (Implicit)
buffer
must be a validVkBuffer
handle
See Also
VkBuffer
, VkDeviceSize
,
VkWriteDescriptorSet
VkDescriptorBufferInfo | |
|
Instances
Eq VkDescriptorBufferInfo Source # | |
Show VkDescriptorBufferInfo Source # | |
showsPrec :: Int -> VkDescriptorBufferInfo -> ShowS # show :: VkDescriptorBufferInfo -> String # showList :: [VkDescriptorBufferInfo] -> ShowS # | |
Storable VkDescriptorBufferInfo Source # | |
sizeOf :: VkDescriptorBufferInfo -> Int # alignment :: VkDescriptorBufferInfo -> Int # peekElemOff :: Ptr VkDescriptorBufferInfo -> Int -> IO VkDescriptorBufferInfo # pokeElemOff :: Ptr VkDescriptorBufferInfo -> Int -> VkDescriptorBufferInfo -> IO () # peekByteOff :: Ptr b -> Int -> IO VkDescriptorBufferInfo # pokeByteOff :: Ptr b -> Int -> VkDescriptorBufferInfo -> IO () # peek :: Ptr VkDescriptorBufferInfo -> IO VkDescriptorBufferInfo # poke :: Ptr VkDescriptorBufferInfo -> VkDescriptorBufferInfo -> IO () # |
data VkDescriptorImageInfo Source #
VkDescriptorImageInfo - Structure specifying descriptor image info
Description
Members of VkDescriptorImageInfo
that are not used in an update (as
described above) are ignored.
Valid Usage
imageView
must not be 2D or 2D array image view created from a 3D image
imageLayout
must match the actualVkImageLayout
of each subresource accessible fromimageView
at the time this descriptor is accessedIf
sampler
is used and enables sampler Y’CBCR conversion:- The
format
of theimageView
must be the same as theVkFormat
of the image - The
aspectMask
of theimageView
must beVK_IMAGE_ASPECT_COLOR_BIT
- The
components.a
of theimageView
must beVK_COMPONENT_SWIZZLE_IDENTITY
- The
components.r
of theimageView
must beVK_COMPONENT_SWIZZLE_IDENTITY
- The
components.g
of theimageView
must beVK_COMPONENT_SWIZZLE_IDENTITY
- The
components.b
of theimageView
must beVK_COMPONENT_SWIZZLE_IDENTITY
- The
pNext
chain of theimageView
must contain aVkSamplerYcbcrConversionInfo
which has aconversion
which is an identically defined object to theconversion
of theVkSamplerYcbcrConversionInfo
which is in thepNext
chain of thesampler
- The
- If
sampler
is used and does not enable sampler Y’CBCR conversion and theVkFormat
of the image is a multi-planar format, the image must have been created withVK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
, and theaspectMask
of theimageView
must beVK_IMAGE_ASPECT_PLANE_0_BIT
,VK_IMAGE_ASPECT_PLANE_1_BIT
or (for three-plane formats only)VK_IMAGE_ASPECT_PLANE_2_BIT
Valid Usage (Implicit)
- Both of
imageView
, andsampler
that are valid handles must have been created, allocated, or retrieved from the sameVkDevice
See Also
VkDescriptorImageInfo | |
|
Instances
Eq VkDescriptorImageInfo Source # | |
(==) :: VkDescriptorImageInfo -> VkDescriptorImageInfo -> Bool # (/=) :: VkDescriptorImageInfo -> VkDescriptorImageInfo -> Bool # | |
Show VkDescriptorImageInfo Source # | |
showsPrec :: Int -> VkDescriptorImageInfo -> ShowS # show :: VkDescriptorImageInfo -> String # showList :: [VkDescriptorImageInfo] -> ShowS # | |
Storable VkDescriptorImageInfo Source # | |
sizeOf :: VkDescriptorImageInfo -> Int # alignment :: VkDescriptorImageInfo -> Int # peekElemOff :: Ptr VkDescriptorImageInfo -> Int -> IO VkDescriptorImageInfo # pokeElemOff :: Ptr VkDescriptorImageInfo -> Int -> VkDescriptorImageInfo -> IO () # peekByteOff :: Ptr b -> Int -> IO VkDescriptorImageInfo # pokeByteOff :: Ptr b -> Int -> VkDescriptorImageInfo -> IO () # peek :: Ptr VkDescriptorImageInfo -> IO VkDescriptorImageInfo # poke :: Ptr VkDescriptorImageInfo -> VkDescriptorImageInfo -> IO () # |
data VkWriteDescriptorSet 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 VkWriteDescriptorSet
structure, as specified below.
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.
Valid Usage
dstBinding
must be less than or equal to the maximum value ofbinding
of allVkDescriptorSetLayoutBinding
structures specified whendstSet
’s descriptor set layout was created
dstBinding
must be a binding with a non-zerodescriptorCount
- All consecutive bindings updated via a single
VkWriteDescriptorSet
structure, except those with adescriptorCount
of zero, must have identicaldescriptorType
andstageFlags
. - All consecutive bindings updated via a single
VkWriteDescriptorSet
structure, except those with adescriptorCount
of zero, must all either use immutable samplers or must all not use immutable samplers. descriptorType
must match the type ofdstBinding
withindstSet
dstSet
must be a validVkDescriptorSet
handle- The sum of
dstArrayElement
anddescriptorCount
must 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 {html_spec_relative}#descriptorsets-updates-consecutive - If
descriptorType
isVK_DESCRIPTOR_TYPE_SAMPLER
,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
,VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, orVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
,pImageInfo
must be a valid pointer to an array ofdescriptorCount
validVkDescriptorImageInfo
structures - If
descriptorType
isVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
orVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
,pTexelBufferView
must be a valid pointer to an array ofdescriptorCount
validVkBufferView
handles - If
descriptorType
isVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
,pBufferInfo
must be a valid pointer to an array ofdescriptorCount
validVkDescriptorBufferInfo
structures - If
descriptorType
isVK_DESCRIPTOR_TYPE_SAMPLER
orVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, anddstSet
was not allocated with a layout that included immutable samplers fordstBinding
withdescriptorType
, thesampler
member of each element ofpImageInfo
must be a validVkSampler
object - If
descriptorType
isVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
,VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, orVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, theimageView
andimageLayout
members of each element ofpImageInfo
must be a validVkImageView
andVkImageLayout
, respectively - If
descriptorType
isVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, for each descriptor that will be accessed via load or store operations theimageLayout
member for corresponding elements ofpImageInfo
must beVK_IMAGE_LAYOUT_GENERAL
- If
descriptorType
isVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
orVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, theoffset
member of each element ofpBufferInfo
must be a multiple ofVkPhysicalDeviceLimits
::minUniformBufferOffsetAlignment
- If
descriptorType
isVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, theoffset
member of each element ofpBufferInfo
must be a multiple ofVkPhysicalDeviceLimits
::minStorageBufferOffsetAlignment
- If
descriptorType
isVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
, orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, and thebuffer
member of any element ofpBufferInfo
is the handle of a non-sparse buffer, then that buffer must be bound completely and contiguously to a singleVkDeviceMemory
object - If
descriptorType
isVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
orVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, thebuffer
member of each element ofpBufferInfo
must have been created withVK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
set - If
descriptorType
isVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, thebuffer
member of each element ofpBufferInfo
must have been created withVK_BUFFER_USAGE_STORAGE_BUFFER_BIT
set - If
descriptorType
isVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
orVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, therange
member of each element ofpBufferInfo
, or the effective range ifrange
isVK_WHOLE_SIZE
, must be less than or equal toVkPhysicalDeviceLimits
::maxUniformBufferRange
- If
descriptorType
isVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, therange
member of each element ofpBufferInfo
, or the effective range ifrange
isVK_WHOLE_SIZE
, must be less than or equal toVkPhysicalDeviceLimits
::maxStorageBufferRange
- If
descriptorType
isVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
, theVkBuffer
that each element ofpTexelBufferView
was created from must have been created withVK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
set - If
descriptorType
isVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
, theVkBuffer
that each element ofpTexelBufferView
was created from must have been created withVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
set - If
descriptorType
isVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
orVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, theimageView
member of each element ofpImageInfo
must have been created with the identity swizzle - If
descriptorType
isVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
orVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, theimageView
member of each element ofpImageInfo
must have been created withVK_IMAGE_USAGE_SAMPLED_BIT
set - If
descriptorType
isVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
orVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, theimageLayout
member of each element ofpImageInfo
must beVK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
,VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
orVK_IMAGE_LAYOUT_GENERAL
- If
descriptorType
isVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, theimageView
member of each element ofpImageInfo
must have been created withVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
set - If
descriptorType
isVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, theimageView
member of each element ofpImageInfo
must have been created withVK_IMAGE_USAGE_STORAGE_BIT
set - All consecutive bindings updated via a single
VkWriteDescriptorSet
structure, except those with adescriptorCount
of zero, must have identicalVkDescriptorBindingFlagBitsEXT
.
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
pNext
must beNULL
descriptorType
must be a validVkDescriptorType
valuedescriptorCount
must be greater than0
- Both of
dstSet
, and the elements ofpTexelBufferView
that are valid handles must have been created, allocated, or retrieved from the sameVkDevice
See Also
VkBufferView
,
VkDescriptorBufferInfo
, VkDescriptorImageInfo
, VkDescriptorSet
,
VkDescriptorType
, VkStructureType
,
vkCmdPushDescriptorSetKHR
,
vkUpdateDescriptorSets
VkWriteDescriptorSet | |
|
Instances
Eq VkWriteDescriptorSet Source # | |
(==) :: VkWriteDescriptorSet -> VkWriteDescriptorSet -> Bool # (/=) :: VkWriteDescriptorSet -> VkWriteDescriptorSet -> Bool # | |
Show VkWriteDescriptorSet Source # | |
showsPrec :: Int -> VkWriteDescriptorSet -> ShowS # show :: VkWriteDescriptorSet -> String # showList :: [VkWriteDescriptorSet] -> ShowS # | |
Storable VkWriteDescriptorSet Source # | |
sizeOf :: VkWriteDescriptorSet -> Int # alignment :: VkWriteDescriptorSet -> Int # peekElemOff :: Ptr VkWriteDescriptorSet -> Int -> IO VkWriteDescriptorSet # pokeElemOff :: Ptr VkWriteDescriptorSet -> Int -> VkWriteDescriptorSet -> IO () # peekByteOff :: Ptr b -> Int -> IO VkWriteDescriptorSet # pokeByteOff :: Ptr b -> Int -> VkWriteDescriptorSet -> IO () # peek :: Ptr VkWriteDescriptorSet -> IO VkWriteDescriptorSet # poke :: Ptr VkWriteDescriptorSet -> VkWriteDescriptorSet -> IO () # |
data VkCopyDescriptorSet Source #
VkCopyDescriptorSet - Structure specifying a copy descriptor set operation
Valid Usage
srcBinding
must be a valid binding withinsrcSet
- The sum of
srcArrayElement
anddescriptorCount
must 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 {html_spec_relative}#descriptorsets-updates-consecutive dstBinding
must be a valid binding withindstSet
- The sum of
dstArrayElement
anddescriptorCount
must 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 {html_spec_relative}#descriptorsets-updates-consecutive - If
srcSet
is 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 {html_spec_relative}#descriptorsets-updates-consecutive - If
srcSet
’s layout was created with theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
flag set, thendstSet
’s layout must also have been created with theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
flag set - If
srcSet
’s layout was created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
flag set, thendstSet
’s layout must also have been created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
flag set - If the descriptor pool from which
srcSet
was allocated was created with theVK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set, then the descriptor pool from whichdstSet
was allocated must also have been created with theVK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set - If the descriptor pool from which
srcSet
was allocated was created without theVK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set, then the descriptor pool from whichdstSet
was allocated must also have been created without theVK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
pNext
must beNULL
srcSet
must be a validVkDescriptorSet
handledstSet
must be a validVkDescriptorSet
handle- Both of
dstSet
, andsrcSet
must have been created, allocated, or retrieved from the sameVkDevice
See Also
VkCopyDescriptorSet | |
|
Instances
Eq VkCopyDescriptorSet Source # | |
(==) :: VkCopyDescriptorSet -> VkCopyDescriptorSet -> Bool # (/=) :: VkCopyDescriptorSet -> VkCopyDescriptorSet -> Bool # | |
Show VkCopyDescriptorSet Source # | |
showsPrec :: Int -> VkCopyDescriptorSet -> ShowS # show :: VkCopyDescriptorSet -> String # showList :: [VkCopyDescriptorSet] -> ShowS # | |
Storable VkCopyDescriptorSet Source # | |
sizeOf :: VkCopyDescriptorSet -> Int # alignment :: VkCopyDescriptorSet -> Int # peekElemOff :: Ptr VkCopyDescriptorSet -> Int -> IO VkCopyDescriptorSet # pokeElemOff :: Ptr VkCopyDescriptorSet -> Int -> VkCopyDescriptorSet -> IO () # peekByteOff :: Ptr b -> Int -> IO VkCopyDescriptorSet # pokeByteOff :: Ptr b -> Int -> VkCopyDescriptorSet -> IO () # peek :: Ptr VkCopyDescriptorSet -> IO VkCopyDescriptorSet # poke :: Ptr VkCopyDescriptorSet -> VkCopyDescriptorSet -> IO () # |
data VkDescriptorSetLayoutBinding Source #
VkDescriptorSetLayoutBinding - Structure specifying a descriptor set layout binding
Members
binding
is the binding number of this entry and corresponds to a resource of the same binding number in the shader stages.
descriptorType
is aVkDescriptorType
specifying which type of resource descriptors are used for this binding.descriptorCount
is the number of descriptors contained in the binding, accessed in a shader as an array. IfdescriptorCount
is zero this binding entry is reserved and the resource must not be accessed from any stage via this binding within any pipeline using the set layout.stageFlags
member is a bitmask ofVkShaderStageFlagBits
specifying which pipeline shader stages can access a resource for this binding.VK_SHADER_STAGE_ALL
is a shorthand specifying that all defined shader stages, including any additional stages defined by extensions, can access the resource.If a shader stage is not included in
stageFlags
, then a resource must not be accessed from that stage via this binding within any pipeline using the set layout. Other than input attachments which are limited to the fragment shader, there are no limitations on what combinations of stages can use a descriptor binding, and in particular a binding can be used by both graphics stages and the compute stage.
Description
pImmutableSamplers
affects initialization of samplers. IfdescriptorType
specifies aVK_DESCRIPTOR_TYPE_SAMPLER
orVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
type descriptor, thenpImmutableSamplers
can be used to initialize a set of /immutable samplers/. Immutable samplers are permanently bound into the set layout; later binding a sampler into an immutable sampler slot in a descriptor set is not allowed. IfpImmutableSamplers
is notNULL
, then it is considered to be a pointer to an array of sampler handles that will be consumed by the set layout and used for the corresponding binding. IfpImmutableSamplers
isNULL
, then the sampler slots are dynamic and sampler handles must be bound into descriptor sets using this layout. IfdescriptorType
is not one of these descriptor types, thenpImmutableSamplers
is 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 descriptorType
is treated as undefined.
However, all binding numbers between 0 and the maximum binding number in
the VkDescriptorSetLayoutCreateInfo
::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
descriptorType
isVK_DESCRIPTOR_TYPE_SAMPLER
orVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, anddescriptorCount
is not0
andpImmutableSamplers
is notNULL
,pImmutableSamplers
must be a valid pointer to an array ofdescriptorCount
validVkSampler
handles
- If
descriptorCount
is not0
,stageFlags
must be a valid combination ofVkShaderStageFlagBits
values - If
descriptorType
isVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
anddescriptorCount
is not0
, thenstageFlags
must be0
orVK_SHADER_STAGE_FRAGMENT_BIT
Valid Usage (Implicit)
descriptorType
must be a validVkDescriptorType
value
See Also
VkDescriptorSetLayoutCreateInfo
, VkDescriptorType
,
VkSampler
,
VkShaderStageFlags
Instances
data VkDescriptorSetLayoutCreateInfo Source #
VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout
Valid Usage
- The
VkDescriptorSetLayoutBinding
::binding
members of the elements of thepBindings
array must each have different values.
- If
flags
containsVK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then all elements ofpBindings
must not have adescriptorType
ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
- If
flags
containsVK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then the total number of elements of all bindings must be less than or equal toVkPhysicalDevicePushDescriptorPropertiesKHR
::maxPushDescriptors
- If any binding has the
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
bit set,flags
must includeVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
- If any binding has the
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
bit set, then all bindings must not havedescriptorType
ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
pNext
must beNULL
or a pointer to a valid instance ofVkDescriptorSetLayoutBindingFlagsCreateInfoEXT
flags
must be a valid combination ofVkDescriptorSetLayoutCreateFlagBits
values- If
bindingCount
is not0
,pBindings
must be a valid pointer to an array ofbindingCount
validVkDescriptorSetLayoutBinding
structures
See Also
VkDescriptorSetLayoutBinding
, VkDescriptorSetLayoutCreateFlags
,
VkStructureType
,
vkCreateDescriptorSetLayout
,
vkGetDescriptorSetLayoutSupport
,
vkGetDescriptorSetLayoutSupportKHR
VkDescriptorSetLayoutCreateInfo | |
|
Instances
data VkDescriptorPoolSize Source #
VkDescriptorPoolSize - Structure specifying descriptor pool size
Valid Usage
descriptorCount
must be greater than0
Valid Usage (Implicit)
type
must be a validVkDescriptorType
value
See Also
VkDescriptorPoolSize | |
|
Instances
Eq VkDescriptorPoolSize Source # | |
(==) :: VkDescriptorPoolSize -> VkDescriptorPoolSize -> Bool # (/=) :: VkDescriptorPoolSize -> VkDescriptorPoolSize -> Bool # | |
Show VkDescriptorPoolSize Source # | |
showsPrec :: Int -> VkDescriptorPoolSize -> ShowS # show :: VkDescriptorPoolSize -> String # showList :: [VkDescriptorPoolSize] -> ShowS # | |
Storable VkDescriptorPoolSize Source # | |
sizeOf :: VkDescriptorPoolSize -> Int # alignment :: VkDescriptorPoolSize -> Int # peekElemOff :: Ptr VkDescriptorPoolSize -> Int -> IO VkDescriptorPoolSize # pokeElemOff :: Ptr VkDescriptorPoolSize -> Int -> VkDescriptorPoolSize -> IO () # peekByteOff :: Ptr b -> Int -> IO VkDescriptorPoolSize # pokeByteOff :: Ptr b -> Int -> VkDescriptorPoolSize -> IO () # peek :: Ptr VkDescriptorPoolSize -> IO VkDescriptorPoolSize # poke :: Ptr VkDescriptorPoolSize -> VkDescriptorPoolSize -> IO () # |
data VkDescriptorPoolCreateInfo Source #
VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool
Description
If multiple VkDescriptorPoolSize
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 VK_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 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
bit set, descriptor pool creation may fail with the error
VK_ERROR_FRAGMENTATION_EXT
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
maxSets
must be greater than0
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
pNext
must beNULL
flags
must be a valid combination ofVkDescriptorPoolCreateFlagBits
valuespPoolSizes
must be a valid pointer to an array ofpoolSizeCount
validVkDescriptorPoolSize
structurespoolSizeCount
must be greater than0
See Also
VkDescriptorPoolCreateFlags
, VkDescriptorPoolSize
,
VkStructureType
, vkCreateDescriptorPool
VkDescriptorPoolCreateInfo | |
|
Instances
data VkDescriptorSetAllocateInfo Source #
VkDescriptorSetAllocateInfo - Structure specifying the allocation parameters for descriptor sets
Valid Usage
- Each element of
pSetLayouts
must not have been created withVK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
set
- If any element of
pSetLayouts
was created with theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set,descriptorPool
must have been created with theVK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
pNext
must beNULL
or a pointer to a valid instance ofVkDescriptorSetVariableDescriptorCountAllocateInfoEXT
descriptorPool
must be a validVkDescriptorPool
handlepSetLayouts
must be a valid pointer to an array ofdescriptorSetCount
validVkDescriptorSetLayout
handlesdescriptorSetCount
must be greater than0
- Both of
descriptorPool
, and the elements ofpSetLayouts
must have been created, allocated, or retrieved from the sameVkDevice
See Also
VkDescriptorPool
,
VkDescriptorSetLayout
,
VkStructureType
,
vkAllocateDescriptorSets
VkDescriptorSetAllocateInfo | |
|
Instances
type VkDescriptorSetLayoutCreateFlags = VkDescriptorSetLayoutCreateFlagBits Source #
VkDescriptorSetLayoutCreateFlags - Bitmask of VkDescriptorSetLayoutCreateFlagBits
Description
VkDescriptorSetLayoutCreateFlags
is a bitmask type for setting a mask
of zero or more VkDescriptorSetLayoutCreateFlagBits
.
See Also
VkDescriptorSetLayoutCreateFlagBits
, VkDescriptorSetLayoutCreateInfo
type VkDescriptorPoolCreateFlags = VkDescriptorPoolCreateFlagBits Source #
VkDescriptorPoolCreateFlags - Bitmask of VkDescriptorPoolCreateFlagBits
Description
VkDescriptorPoolCreateFlags
is a bitmask type for setting a mask of
zero or more VkDescriptorPoolCreateFlagBits
.