vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Core10.DescriptorSet

Synopsis

Documentation

createDescriptorSetLayout Source #

Arguments

:: forall a io. (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) 
=> Device

device is the logical device that creates the descriptor set layout.

-> DescriptorSetLayoutCreateInfo a

pCreateInfo is a pointer to a DescriptorSetLayoutCreateInfo structure specifying the state of the descriptor set layout object.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io DescriptorSetLayout 

vkCreateDescriptorSetLayout - Create a new descriptor set layout

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_VERSION_1_0, AllocationCallbacks, DescriptorSetLayout, DescriptorSetLayoutCreateInfo, Device

withDescriptorSetLayout :: forall a io r. (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetLayoutCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorSetLayout -> (DescriptorSetLayout -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createDescriptorSetLayout and destroyDescriptorSetLayout

To ensure that destroyDescriptorSetLayout is always called: pass bracket (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.

destroyDescriptorSetLayout Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that destroys the descriptor set layout.

-> DescriptorSetLayout

descriptorSetLayout is the descriptor set layout to destroy.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io () 

vkDestroyDescriptorSetLayout - Destroy a descriptor set layout object

Valid Usage

  • If AllocationCallbacks were provided when descriptorSetLayout was created, a compatible set of callbacks must be provided here
  • If no AllocationCallbacks were provided when descriptorSetLayout was created, pAllocator must be NULL

Valid Usage (Implicit)

  • device must be a valid Device handle
  • If descriptorSetLayout is not NULL_HANDLE, descriptorSetLayout must be a valid DescriptorSetLayout handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • If descriptorSetLayout is a valid handle, it must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to descriptorSetLayout must be externally synchronized

See Also

VK_VERSION_1_0, AllocationCallbacks, DescriptorSetLayout, Device

createDescriptorPool Source #

Arguments

:: forall a io. (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) 
=> Device

device is the logical device that creates the descriptor pool.

-> DescriptorPoolCreateInfo a

pCreateInfo is a pointer to a DescriptorPoolCreateInfo structure specifying the state of the descriptor pool object.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io DescriptorPool 

vkCreateDescriptorPool - Creates a descriptor pool object

Description

The created descriptor pool is returned in pDescriptorPool.

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_VERSION_1_0, AllocationCallbacks, DescriptorPool, DescriptorPoolCreateInfo, Device

withDescriptorPool :: forall a io r. (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorPoolCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorPool -> (DescriptorPool -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createDescriptorPool and destroyDescriptorPool

To ensure that destroyDescriptorPool is always called: pass bracket (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.

destroyDescriptorPool Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that destroys the descriptor pool.

-> DescriptorPool

descriptorPool is the descriptor pool to destroy.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> 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 AllocationCallbacks were provided when descriptorPool was created, a compatible set of callbacks must be provided here
  • If no AllocationCallbacks were provided when descriptorPool was created, pAllocator must be NULL

Valid Usage (Implicit)

  • device must be a valid Device handle
  • If descriptorPool is not NULL_HANDLE, descriptorPool must be a valid DescriptorPool handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • If descriptorPool is a valid handle, it must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to descriptorPool must be externally synchronized

See Also

VK_VERSION_1_0, AllocationCallbacks, DescriptorPool, Device

resetDescriptorPool Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the descriptor pool.

-> DescriptorPool

descriptorPool is the descriptor pool to be reset.

-> DescriptorPoolResetFlags

flags is reserved for future use.

-> io () 

vkResetDescriptorPool - Resets a descriptor pool object

Description

Resetting a descriptor pool recycles all of the resources from all of the descriptor sets allocated from the descriptor pool back to the descriptor pool, and the descriptor sets are implicitly freed.

Valid Usage

  • All uses of descriptorPool (via any allocated descriptor sets) must have completed execution

Valid Usage (Implicit)

  • device must be a valid Device handle
  • descriptorPool must be a valid DescriptorPool handle
  • flags must be 0
  • descriptorPool must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to descriptorPool must be externally synchronized
  • Host access to any DescriptorSet objects allocated from descriptorPool must be externally synchronized

Return Codes

Success

See Also

VK_VERSION_1_0, DescriptorPool, DescriptorPoolResetFlags, Device

allocateDescriptorSets Source #

Arguments

:: forall a io. (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) 
=> Device

device is the logical device that owns the descriptor pool.

-> DescriptorSetAllocateInfo a

pAllocateInfo is a pointer to a DescriptorSetAllocateInfo structure describing parameters of the allocation.

-> 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_BIT 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 DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT bit set, all descriptors in that binding that are statically used must have been populated before the descriptor set is consumed.
  • Descriptor bindings with descriptor type of DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK can 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)

  • device must be a valid Device handle
  • pAllocateInfo must be a valid pointer to a valid DescriptorSetAllocateInfo structure
  • pDescriptorSets must be a valid pointer to an array of pAllocateInfo->descriptorSetCount DescriptorSet handles
  • pAllocateInfo->descriptorSetCount must be greater than 0

Host Synchronization

  • Host access to pAllocateInfo->descriptorPool must be externally synchronized

Return Codes

Success
Failure

See Also

VK_VERSION_1_0, DescriptorSet, DescriptorSetAllocateInfo, Device

withDescriptorSets :: forall a io r. (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetAllocateInfo a -> (io (Vector DescriptorSet) -> (Vector DescriptorSet -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to allocateDescriptorSets and freeDescriptorSets

To ensure that freeDescriptorSets is always called: pass bracket (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.

freeDescriptorSets Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the descriptor pool.

-> DescriptorPool

descriptorPool is the descriptor pool from which the descriptor sets were allocated.

-> ("descriptorSets" ::: Vector DescriptorSet)

pDescriptorSets is a pointer to an array of handles to DescriptorSet objects.

-> io () 

vkFreeDescriptorSets - Free one or more descriptor sets

Description

After calling freeDescriptorSets, all descriptor sets in pDescriptorSets are invalid.

Valid Usage

  • All submitted commands that refer to any element of pDescriptorSets must have completed execution

Valid Usage (Implicit)

  • device must be a valid Device handle
  • descriptorPool must be a valid DescriptorPool handle
  • descriptorSetCount must be greater than 0
  • descriptorPool must have been created, allocated, or retrieved from device
  • Each element of pDescriptorSets that is a valid handle must have been created, allocated, or retrieved from descriptorPool

Host Synchronization

  • Host access to descriptorPool must be externally synchronized
  • Host access to each member of pDescriptorSets must be externally synchronized

Return Codes

Success

See Also

VK_VERSION_1_0, DescriptorPool, DescriptorSet, Device

updateDescriptorSets Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that updates the descriptor sets.

-> ("descriptorWrites" ::: Vector (SomeStruct WriteDescriptorSet))

pDescriptorWrites is a pointer to an array of WriteDescriptorSet structures describing the descriptor sets to write to.

-> ("descriptorCopies" ::: Vector CopyDescriptorSet)

pDescriptorCopies is a pointer to an array of CopyDescriptorSet structures describing the descriptor sets to copy between.

-> io () 

vkUpdateDescriptorSets - Update the contents of a descriptor set object

Description

The operations described by pDescriptorWrites are performed first, followed by the operations described by pDescriptorCopies. Within each array, the operations are performed in the order they appear in the array.

Each element in the pDescriptorWrites array describes an operation updating the descriptor set using descriptors for resources specified in the structure.

Each element in the pDescriptorCopies array is a CopyDescriptorSet structure describing an operation copying descriptors between sets.

If the dstSet member of any element of pDescriptorWrites or pDescriptorCopies is bound, accessed, or modified by any command that was recorded to a command buffer which is currently in the recording or executable state, and any of the descriptor bindings that are updated were not created with the DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT or DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT bits set, that command buffer becomes invalid.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle
  • If descriptorWriteCount is not 0, pDescriptorWrites must be a valid pointer to an array of descriptorWriteCount valid WriteDescriptorSet structures
  • If descriptorCopyCount is not 0, pDescriptorCopies must be a valid pointer to an array of descriptorCopyCount valid CopyDescriptorSet structures

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

  • offset must be less than the size of buffer

Valid Usage (Implicit)

See Also

VK_VERSION_1_0, Buffer, DeviceSize, WriteDescriptorSet

Constructors

DescriptorBufferInfo 

Fields

  • buffer :: Buffer

    buffer is NULL_HANDLE or the buffer resource.

  • offset :: DeviceSize

    offset is the offset in bytes from the start of buffer. Access to buffer memory via this descriptor uses addressing that is relative to this starting offset.

  • range :: DeviceSize

    range is the size in bytes that is used for this descriptor update, or WHOLE_SIZE to use the range from offset to the end of the buffer.

    Note

    When setting range to WHOLE_SIZE, the effective range must not be larger than the maximum range for the descriptor type (maxUniformBufferRange or maxStorageBufferRange). This means that WHOLE_SIZE is not typically useful in the common case where uniform buffer descriptors are suballocated from a buffer that is much larger than maxUniformBufferRange.

Instances

Instances details
Storable DescriptorBufferInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Show DescriptorBufferInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Eq DescriptorBufferInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

FromCStruct DescriptorBufferInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

ToCStruct DescriptorBufferInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Zero DescriptorBufferInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

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

  • imageView must not be a 2D array image view created from a 3D image

Valid Usage (Implicit)

  • Both of imageView, and sampler that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

See Also

VK_VERSION_1_0, DescriptorDataEXT, ImageLayout, ImageView, Sampler, WriteDescriptorSet

Constructors

DescriptorImageInfo 

Fields

Instances

Instances details
Storable DescriptorImageInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Show DescriptorImageInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Eq DescriptorImageInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

FromCStruct DescriptorImageInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

ToCStruct DescriptorImageInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Zero DescriptorImageInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

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, as specified below.

If the nullDescriptor feature is enabled, the buffer, acceleration structure, 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.

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.

Note

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

  • dstBinding must be less than or equal to the maximum value of binding of all DescriptorSetLayoutBinding structures specified when dstSet’s descriptor set layout was created

Valid Usage (Implicit)

See Also

VK_VERSION_1_0, BufferView, DescriptorBufferInfo, DescriptorImageInfo, DescriptorSet, DescriptorType, StructureType, cmdPushDescriptorSetKHR, updateDescriptorSets

Constructors

WriteDescriptorSet 

Fields

Instances

Instances details
Extensible WriteDescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Methods

extensibleTypeName :: String Source #

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

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

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

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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.

Note

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

  • srcBinding must be a valid binding within srcSet

Valid Usage (Implicit)

  • pNext must be NULL
  • srcSet must be a valid DescriptorSet handle
  • dstSet must be a valid DescriptorSet handle
  • Both of dstSet, and srcSet must have been created, allocated, or retrieved from the same Device

See Also

VK_VERSION_1_0, DescriptorSet, StructureType, updateDescriptorSets

Constructors

CopyDescriptorSet 

Fields

  • srcSet :: DescriptorSet

    srcSet, srcBinding, and srcArrayElement are the source set, binding, and array element, respectively. If the descriptor binding identified by srcSet and srcBinding has a descriptor type of DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK then srcArrayElement specifies the starting byte offset within the binding to copy from.

  • srcBinding :: Word32
     
  • srcArrayElement :: Word32
     
  • dstSet :: DescriptorSet

    dstSet, dstBinding, and dstArrayElement are the destination set, binding, and array element, respectively. If the descriptor binding identified by dstSet and dstBinding has a descriptor type of DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK then dstArrayElement specifies the starting byte offset within the binding to copy to.

  • dstBinding :: Word32
     
  • dstArrayElement :: Word32
     
  • descriptorCount :: Word32

    descriptorCount is the number of descriptors to copy from the source to destination. If descriptorCount is greater than the number of remaining array elements in the source or destination binding, those affect consecutive bindings in a manner similar to WriteDescriptorSet above. If the descriptor binding identified by srcSet and srcBinding has a descriptor type of DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK then descriptorCount specifies the number of bytes to copy and the remaining array elements in the source or destination binding refer to the remaining number of bytes in those.

Instances

Instances details
Storable CopyDescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Show CopyDescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Eq CopyDescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

FromCStruct CopyDescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

ToCStruct CopyDescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Zero CopyDescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

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.

Note

The maximum binding number specified should be as compact as possible to avoid wasted memory.

Valid Usage

Valid Usage (Implicit)

See Also

VK_VERSION_1_0, DescriptorSetLayoutCreateInfo, DescriptorType, Sampler, ShaderStageFlags

Constructors

DescriptorSetLayoutBinding 

Fields

  • binding :: Word32

    binding is the binding number of this entry and corresponds to a resource of the same binding number in the shader stages.

  • descriptorType :: DescriptorType

    descriptorType is a DescriptorType specifying which type of resource descriptors are used for this binding.

  • descriptorCount :: Word32

    descriptorCount is the number of descriptors contained in the binding, accessed in a shader as an array, except if descriptorType is DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK in which case descriptorCount is the size in bytes of the inline uniform block. If descriptorCount 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 :: ShaderStageFlags

    stageFlags member is a bitmask of ShaderStageFlagBits specifying which pipeline shader stages can access a resource for this binding. 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.

  • immutableSamplers :: Vector Sampler

    pImmutableSamplers affects initialization of samplers. If descriptorType specifies a DESCRIPTOR_TYPE_SAMPLER or DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER type descriptor, then pImmutableSamplers can be used to initialize a set of immutable samplers. Immutable samplers are permanently bound into the set layout and must not be changed; updating a DESCRIPTOR_TYPE_SAMPLER descriptor with immutable samplers is not allowed and updates to a DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER descriptor with immutable samplers does not modify the samplers (the image views are updated, but the sampler updates are ignored). If pImmutableSamplers is not NULL, then it is a pointer to an array of sampler handles that will be copied into the set layout and used for the corresponding binding. Only the sampler handles are copied; the sampler objects must not be destroyed before the final use of the set layout and any descriptor pools and sets created using it. If pImmutableSamplers is NULL, then the sampler slots are dynamic and sampler handles must be bound into descriptor sets using this layout. If descriptorType is not one of these descriptor types, then pImmutableSamplers is ignored.

data DescriptorSetLayoutCreateInfo (es :: [Type]) Source #

VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout

Valid Usage

Valid Usage (Implicit)

See Also

VK_VERSION_1_0, DescriptorSetLayoutBinding, DescriptorSetLayoutCreateFlags, StructureType, createDescriptorSetLayout, getDescriptorSetLayoutSupport, getDescriptorSetLayoutSupportKHR

Constructors

DescriptorSetLayoutCreateInfo 

Fields

Instances

Instances details
Extensible DescriptorSetLayoutCreateInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

data DescriptorPoolSize Source #

VkDescriptorPoolSize - Structure specifying descriptor pool size

Description

Note

When creating a descriptor pool that will contain descriptors for combined image samplers of multi-planar formats, an application needs to account for non-trivial descriptor consumption when choosing the descriptorCount value, as indicated by SamplerYcbcrConversionImageFormatProperties::combinedImageSamplerDescriptorCount.

Valid Usage

  • descriptorCount must be greater than 0

Valid Usage (Implicit)

See Also

VK_VERSION_1_0, DescriptorPoolCreateInfo, DescriptorType

Constructors

DescriptorPoolSize 

Fields

Instances

Instances details
Storable DescriptorPoolSize Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Show DescriptorPoolSize Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Eq DescriptorPoolSize Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

FromCStruct DescriptorPoolSize Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

ToCStruct DescriptorPoolSize Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Zero DescriptorPoolSize Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

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 struct 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.

Note

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

Valid Usage (Implicit)

See Also

VK_VERSION_1_0, DescriptorPoolCreateFlags, DescriptorPoolSize, StructureType, createDescriptorPool

Constructors

DescriptorPoolCreateInfo 

Fields

Instances

Instances details
Extensible DescriptorPoolCreateInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Methods

extensibleTypeName :: String Source #

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

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

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

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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::apiVersion is less than Vulkan 1.1, descriptorSetCount must not be greater than the number of sets that are currently available for allocation in descriptorPool

Valid Usage (Implicit)

  • pNext must be NULL or a pointer to a valid instance of DescriptorSetVariableDescriptorCountAllocateInfo
  • The sType value of each struct in the pNext chain must be unique
  • descriptorPool must be a valid DescriptorPool handle
  • pSetLayouts must be a valid pointer to an array of descriptorSetCount valid DescriptorSetLayout handles
  • descriptorSetCount must be greater than 0
  • Both of descriptorPool, and the elements of pSetLayouts must have been created, allocated, or retrieved from the same Device

See Also

VK_VERSION_1_0, DescriptorPool, DescriptorSetLayout, StructureType, allocateDescriptorSets

Constructors

DescriptorSetAllocateInfo 

Fields

  • next :: Chain es

    pNext is NULL or a pointer to a structure extending this structure.

  • descriptorPool :: DescriptorPool

    descriptorPool is the pool which the sets will be allocated from.

  • setLayouts :: Vector DescriptorSetLayout

    pSetLayouts is a pointer to an array of descriptor set layouts, with each member specifying how the corresponding descriptor set is allocated.

Instances

Instances details
Extensible DescriptorSetAllocateInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Methods

extensibleTypeName :: String Source #

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

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

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

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

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

Defined in Vulkan.Core10.DescriptorSet

newtype DescriptorSet Source #

Constructors

DescriptorSet Word64 

Instances

Instances details
Storable DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

Show DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

Eq DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

Ord DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

HasObjectType DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

IsHandle DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

Zero DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

newtype DescriptorSetLayout Source #

Instances

Instances details
Storable DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

Show DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

Eq DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

Ord DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

HasObjectType DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

IsHandle DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

Zero DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

newtype DescriptorPool Source #

VkDescriptorPool - Opaque handle to a descriptor pool object

See Also

VK_VERSION_1_0, DescriptorSetAllocateInfo, createDescriptorPool, destroyDescriptorPool, freeDescriptorSets, resetDescriptorPool

Constructors

DescriptorPool Word64 

Instances

Instances details
Storable DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

Show DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

Eq DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

Ord DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

HasObjectType DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

IsHandle DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

Zero DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

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

VK_VERSION_1_0, resetDescriptorPool

Instances

Instances details
Storable DescriptorPoolResetFlags Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolResetFlags

Bits DescriptorPoolResetFlags Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolResetFlags

FiniteBits DescriptorPoolResetFlags Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolResetFlags

Read DescriptorPoolResetFlags Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolResetFlags

Show DescriptorPoolResetFlags Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolResetFlags

Eq DescriptorPoolResetFlags Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolResetFlags

Ord DescriptorPoolResetFlags Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolResetFlags

Zero DescriptorPoolResetFlags Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolResetFlags

newtype DescriptorType Source #

VkDescriptorType - Specifies the type of a descriptor in a descriptor set

Description

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:

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.

See Also

VK_VERSION_1_0, DescriptorGetInfoEXT, DescriptorPoolSize, DescriptorSetLayoutBinding, DescriptorUpdateTemplateEntry, ImageViewHandleInfoNVX, MutableDescriptorTypeListEXT, WriteDescriptorSet

Constructors

DescriptorType Int32 

Instances

Instances details
Storable DescriptorType Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorType

Read DescriptorType Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorType

Show DescriptorType Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorType

Eq DescriptorType Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorType

Ord DescriptorType Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorType

Zero DescriptorType Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorType

newtype DescriptorPoolCreateFlagBits Source #

VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor pool

See Also

VK_VERSION_1_0, DescriptorPoolCreateFlags

Bundled Patterns

pattern DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT :: DescriptorPoolCreateFlagBits

DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT specifies that descriptor sets can return their individual allocations to the pool, i.e. all of allocateDescriptorSets, freeDescriptorSets, and resetDescriptorPool are allowed. Otherwise, descriptor sets allocated from the pool must not be individually freed back to the pool, i.e. only allocateDescriptorSets and resetDescriptorPool are allowed.

pattern DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV :: DescriptorPoolCreateFlagBits

DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV specifies that the implementation should allow the application to allocate more descriptors from the pool than was specified by the DescriptorPoolSize::descriptorCount for any descriptor type as specified by DescriptorPoolCreateInfo::poolSizeCount and DescriptorPoolCreateInfo::pPoolSizes, as available resources allow. The implementation may use the descriptorCount for each descriptor type to allocate the initial pool, but the application is allowed to set the poolSizeCount to zero, or any of the descriptorCount values in the pPoolSizes array to zero.

pattern DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV :: DescriptorPoolCreateFlagBits

DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV specifies that the implementation should allow the application to allocate more than DescriptorPoolCreateInfo::maxSets descriptor set objects from the descriptor pool as available resources allow. The implementation may use the maxSets value to allocate the initial available sets, but using zero is permitted.

pattern DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT :: DescriptorPoolCreateFlagBits

DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT specifies 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 in updateDescriptorSetWithTemplateKHR and updateDescriptorSets. Descriptor sets and their descriptors can be updated concurrently in different threads, though the same descriptor must not be updated concurrently by two threads.

pattern DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT :: DescriptorPoolCreateFlagBits

DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT specifies that descriptor sets allocated from this pool can include bindings with the DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT bit set. It is valid to allocate descriptor sets that have bindings that do not set the DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT bit from a pool that has DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT set.

Instances

Instances details
Storable DescriptorPoolCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits

Bits DescriptorPoolCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits

Methods

(.&.) :: DescriptorPoolCreateFlagBits -> DescriptorPoolCreateFlagBits -> DescriptorPoolCreateFlagBits #

(.|.) :: DescriptorPoolCreateFlagBits -> DescriptorPoolCreateFlagBits -> DescriptorPoolCreateFlagBits #

xor :: DescriptorPoolCreateFlagBits -> DescriptorPoolCreateFlagBits -> DescriptorPoolCreateFlagBits #

complement :: DescriptorPoolCreateFlagBits -> DescriptorPoolCreateFlagBits #

shift :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

rotate :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

zeroBits :: DescriptorPoolCreateFlagBits #

bit :: Int -> DescriptorPoolCreateFlagBits #

setBit :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

clearBit :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

complementBit :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

testBit :: DescriptorPoolCreateFlagBits -> Int -> Bool #

bitSizeMaybe :: DescriptorPoolCreateFlagBits -> Maybe Int #

bitSize :: DescriptorPoolCreateFlagBits -> Int #

isSigned :: DescriptorPoolCreateFlagBits -> Bool #

shiftL :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

unsafeShiftL :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

shiftR :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

unsafeShiftR :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

rotateL :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

rotateR :: DescriptorPoolCreateFlagBits -> Int -> DescriptorPoolCreateFlagBits #

popCount :: DescriptorPoolCreateFlagBits -> Int #

FiniteBits DescriptorPoolCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits

Read DescriptorPoolCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits

Show DescriptorPoolCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits

Eq DescriptorPoolCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits

Ord DescriptorPoolCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits

Zero DescriptorPoolCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits

newtype DescriptorSetLayoutCreateFlagBits Source #

VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set layout properties

See Also

VK_VERSION_1_0, DescriptorSetLayoutCreateFlags

Bundled Patterns

pattern DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT :: DescriptorSetLayoutCreateFlagBits

DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT specifies that descriptor sets using this layout must be allocated from a descriptor pool created with the DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT bit 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.

pattern DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV :: DescriptorSetLayoutCreateFlagBits

DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV specifies that descriptor sets using this layout allows them to be bound with compute pipelines that are created with PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV flag set to be used in Device-Generated Commands.

pattern DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT :: DescriptorSetLayoutCreateFlagBits

DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT specifies that this is a layout only containing immutable samplers that can be bound by cmdBindDescriptorBufferEmbeddedSamplersEXT. Unlike normal immutable samplers, embedded immutable samplers do not require the application to provide them in a descriptor buffer.

pattern DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT :: DescriptorSetLayoutCreateFlagBits

DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT specifies that this layout must only be used with descriptor buffers.

pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR :: DescriptorSetLayoutCreateFlagBits

DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR specifies that descriptor sets must not be allocated using this layout, and descriptors are instead pushed by cmdPushDescriptorSetKHR.

pattern DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT :: DescriptorSetLayoutCreateFlagBits

DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT specifies that descriptor sets using this layout must be allocated from a descriptor pool created with the DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT bit 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.

Instances

Instances details
Storable DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits

Bits DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits

Methods

(.&.) :: DescriptorSetLayoutCreateFlagBits -> DescriptorSetLayoutCreateFlagBits -> DescriptorSetLayoutCreateFlagBits #

(.|.) :: DescriptorSetLayoutCreateFlagBits -> DescriptorSetLayoutCreateFlagBits -> DescriptorSetLayoutCreateFlagBits #

xor :: DescriptorSetLayoutCreateFlagBits -> DescriptorSetLayoutCreateFlagBits -> DescriptorSetLayoutCreateFlagBits #

complement :: DescriptorSetLayoutCreateFlagBits -> DescriptorSetLayoutCreateFlagBits #

shift :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

rotate :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

zeroBits :: DescriptorSetLayoutCreateFlagBits #

bit :: Int -> DescriptorSetLayoutCreateFlagBits #

setBit :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

clearBit :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

complementBit :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

testBit :: DescriptorSetLayoutCreateFlagBits -> Int -> Bool #

bitSizeMaybe :: DescriptorSetLayoutCreateFlagBits -> Maybe Int #

bitSize :: DescriptorSetLayoutCreateFlagBits -> Int #

isSigned :: DescriptorSetLayoutCreateFlagBits -> Bool #

shiftL :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

unsafeShiftL :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

shiftR :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

unsafeShiftR :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

rotateL :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

rotateR :: DescriptorSetLayoutCreateFlagBits -> Int -> DescriptorSetLayoutCreateFlagBits #

popCount :: DescriptorSetLayoutCreateFlagBits -> Int #

FiniteBits DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits

Read DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits

Show DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits

Eq DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits

Ord DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits

Zero DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits