vulkan-3.13.3: Bindings to the Vulkan graphics API.
Safe HaskellNone
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. Descriptors also become undefined if the underlying resource is destroyed. Descriptor sets containing undefined descriptors can still be bound and used, subject to the following conditions:

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 DescriptorPoolInlineUniformBlockCreateInfoEXT::maxInlineUniformBlockBindings used to create the descriptor pool.

If the allocation fails due to no more space in the descriptor pool, and not because of system or device memory exhaustion, then ERROR_OUT_OF_POOL_MEMORY must be returned.

allocateDescriptorSets can be used to create multiple descriptor sets. If the creation of any of those descriptor sets fails, then the implementation must destroy all successfully created descriptor set objects from this command, set all entries of the pDescriptorSets array to NULL_HANDLE and return the error.

Valid Usage (Implicit)

  • 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

Host Synchronization

  • Host access to pDescriptorWrites[].dstSet must be externally synchronized
  • Host access to pDescriptorCopies[].dstSet must be externally synchronized

See Also

VK_VERSION_1_0, CopyDescriptorSet, Device, WriteDescriptorSet

data DescriptorBufferInfo Source #

VkDescriptorBufferInfo - Structure specifying descriptor buffer information

Description

Note

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

For DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC and DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC descriptor types, offset is the base offset from which the dynamic offset is applied and range is the static size used for all dynamic offsets.

Valid Usage

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

Instances

Instances details
Eq DescriptorBufferInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Show DescriptorBufferInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Storable 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 2D or 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, ImageLayout, ImageView, Sampler, WriteDescriptorSet

Constructors

DescriptorImageInfo 

Fields

Instances

Instances details
Eq DescriptorImageInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Show DescriptorImageInfo Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Storable 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_EXT, in which case the source data for the descriptor writes is taken from the WriteDescriptorSetInlineUniformBlockEXT structure included in the pNext chain of WriteDescriptorSet, or if descriptorType is DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, in which case the source data for the descriptor writes is taken from the WriteDescriptorSetAccelerationStructureKHR structure in the pNext chain of WriteDescriptorSet, 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.

Note

The same behavior applies to bindings with a descriptor type of DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT where descriptorCount specifies the number of bytes to update while dstArrayElement specifies the starting byte offset, thus in this case if the dstBinding has a smaller byte size than the sum of dstArrayElement and descriptorCount, then the remainder will be used to update the subsequent binding - dstBinding+1 starting at offset zero. This falls out as a special case of the above rule.

Valid Usage

  • 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]). 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_VALVE and srcBinding is not DESCRIPTOR_TYPE_MUTABLE_VALVE, the new active descriptor type becomes the descriptor type of srcBinding. If both DescriptorSetLayoutBinding for srcBinding and dstBinding are DESCRIPTOR_TYPE_MUTABLE_VALVE, 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_EXT 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_EXT 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_EXT 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
Eq CopyDescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Show CopyDescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Storable 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

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

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_EXT 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
     

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

Methods

extensibleTypeName :: String Source #

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

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

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

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
Eq DescriptorPoolSize Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Show DescriptorPoolSize Source # 
Instance details

Defined in Vulkan.Core10.DescriptorSet

Storable 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_VALVE, a MutableDescriptorTypeCreateInfoVALVE struct in the pNext chain can be used to specify which mutable descriptor types can be allocated from the pool. If present in the pNext chain, MutableDescriptorTypeCreateInfoVALVE::pMutableDescriptorTypeLists[i] specifies which kind of DESCRIPTOR_TYPE_MUTABLE_VALVE descriptors can be allocated from this pool entry. If MutableDescriptorTypeCreateInfoVALVE does not exist in the pNext chain, or MutableDescriptorTypeCreateInfoVALVE::pMutableDescriptorTypeLists[i] is out of range, the descriptor pool allocates enough memory to be able to allocate a DESCRIPTOR_TYPE_MUTABLE_VALVE 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_VALVE 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 MutableDescriptorTypeListVALVE assigned to it is considered to partially overlap any other pool entry which has a MutableDescriptorTypeListVALVE 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

  • maxSets must be greater than 0

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]). 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

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]). 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
Eq DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

Ord DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

Show DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

Storable DescriptorSet Source # 
Instance details

Defined in Vulkan.Core10.Handles

Zero 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

newtype DescriptorSetLayout Source #

Instances

Instances details
Eq DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

Ord DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

Show DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

Storable DescriptorSetLayout Source # 
Instance details

Defined in Vulkan.Core10.Handles

Zero 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

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
Eq DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

Ord DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

Show DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

Storable DescriptorPool Source # 
Instance details

Defined in Vulkan.Core10.Handles

Zero 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

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
Eq DescriptorPoolResetFlags Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolResetFlags

Ord 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

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

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_EXT, none of the pImageInfo, pBufferInfo, or pTexelBufferView members are accessed, instead the source data of the descriptor update operation is taken from the WriteDescriptorSetInlineUniformBlockEXT structure in the pNext chain of WriteDescriptorSet. When updating descriptors with a descriptorType of DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, none of the pImageInfo, pBufferInfo, or pTexelBufferView members are accessed, instead the source data of the descriptor update operation is taken from the WriteDescriptorSetAccelerationStructureKHR structure in the pNext chain of WriteDescriptorSet. 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, DescriptorPoolSize, DescriptorSetLayoutBinding, DescriptorUpdateTemplateEntry, ImageViewHandleInfoNVX, MutableDescriptorTypeListVALVE, WriteDescriptorSet

Constructors

DescriptorType Int32 

Instances

Instances details
Eq DescriptorType Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorType

Ord 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

Storable 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_HOST_ONLY_BIT_VALVE :: DescriptorPoolCreateFlagBits

DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE specifies that this descriptor pool and the descriptor sets allocated from it reside entirely in host memory and cannot be bound. 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
Eq DescriptorPoolCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits

Ord 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

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

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_VALVE :: DescriptorSetLayoutCreateFlagBits

DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE specifies that descriptor sets using this layout must be allocated from a descriptor pool created with the DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE bit set. Descriptor set layouts created with this bit have no expressable 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_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
Eq DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits

Ord 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

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

Zero DescriptorSetLayoutCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits