pattern DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT :: DescriptorBindingFlagBits | DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT indicates that if descriptors
in this binding are updated between when the descriptor set is bound in
a command buffer and when that command buffer is submitted to a queue,
then the submission will use the most recently set descriptors for this
binding and the updates do not invalidate the command buffer. Descriptor
bindings created with this flag are also partially exempt from the
external synchronization requirement in
updateDescriptorSetWithTemplateKHR
and updateDescriptorSets . Multiple
descriptors with this flag set can be updated concurrently in
different threads, though the same descriptor must not be updated
concurrently by two threads. Descriptors with this flag set can be
updated concurrently with the set being bound to a command buffer in
another thread, but not concurrently with the set being reset or freed.
|
pattern DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT :: DescriptorBindingFlagBits | DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT indicates that
descriptors in this binding can be updated after a command buffer has
bound this descriptor set, or while a command buffer that uses this
descriptor set is pending execution, as long as the descriptors that are
updated are not used by those command buffers. Descriptor bindings
created with this flag are also partially exempt from the external
synchronization requirement in
updateDescriptorSetWithTemplateKHR
and updateDescriptorSets in the same way
as for DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT . If
DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT is also set, then descriptors
can be updated as long as they are not dynamically used by any shader
invocations. If DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT is not set,
then descriptors can be updated as long as they are not statically
used by any shader invocations.
|
pattern DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT :: DescriptorBindingFlagBits | DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT indicates that descriptors in
this binding that are not dynamically used need not contain valid
descriptors at the time the descriptors are consumed. A descriptor is
dynamically used if any shader invocation executes an instruction that
performs any memory access using the descriptor. If a descriptor is not
dynamically used, any resource referenced by the descriptor is not
considered to be referenced during command execution.
|
pattern DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT :: DescriptorBindingFlagBits | DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT indicates that this
is a variable-sized descriptor binding whose size will be specified
when a descriptor set is allocated using this layout. The value of
descriptorCount is treated as an upper bound on the size of the
binding. This must only be used for the last binding in the descriptor
set layout (i.e. the binding with the largest value of binding ). For
the purposes of counting against limits such as maxDescriptorSet * and
maxPerStageDescriptor *, the full value of descriptorCount is
counted, except for descriptor bindings with a descriptor type of
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK ,
when
DescriptorSetLayoutCreateInfo ::flags
does not contain
DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT .
In this case, descriptorCount specifies the upper bound on the byte
size of the binding; thus it counts against the
maxInlineUniformBlockSize
and
maxInlineUniformTotalSize
limits instead.
|