Structures
VkPhysicalDeviceDescriptorIndexingProperties
Structure describing descriptor indexing properties that can be supported by an implementation
The VkPhysicalDeviceDescriptorIndexingProperties structure is defined
as:
typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
VkStructureType sType;
void* pNext;
uint32_t maxUpdateAfterBindDescriptorsInAllPools;
VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
VkBool32 robustBufferAccessUpdateAfterBind;
VkBool32 quadDivergentImplicitLod;
uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;
uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;
uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;
uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;
uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;
uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;
uint32_t maxPerStageUpdateAfterBindResources;
uint32_t maxDescriptorSetUpdateAfterBindSamplers;
uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;
uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;
uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
uint32_t maxDescriptorSetUpdateAfterBindSampledImages;
uint32_t maxDescriptorSetUpdateAfterBindStorageImages;
uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
} VkPhysicalDeviceDescriptorIndexingProperties;
pub struct PhysicalDeviceDescriptorIndexingProperties {
s_type: vk::StructureType,
p_next: *mut c_void,
max_update_after_bind_descriptors_in_all_pools: u32,
shader_uniform_buffer_array_non_uniform_indexing_native: vk::Bool32,
shader_sampled_image_array_non_uniform_indexing_native: vk::Bool32,
shader_storage_buffer_array_non_uniform_indexing_native: vk::Bool32,
shader_storage_image_array_non_uniform_indexing_native: vk::Bool32,
shader_input_attachment_array_non_uniform_indexing_native: vk::Bool32,
robust_buffer_access_update_after_bind: vk::Bool32,
quad_divergent_implicit_lod: vk::Bool32,
max_per_stage_descriptor_update_after_bind_samplers: u32,
max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
max_per_stage_descriptor_update_after_bind_sampled_images: u32,
max_per_stage_descriptor_update_after_bind_storage_images: u32,
max_per_stage_descriptor_update_after_bind_input_attachments: u32,
max_per_stage_update_after_bind_resources: u32,
max_descriptor_set_update_after_bind_samplers: u32,
max_descriptor_set_update_after_bind_uniform_buffers: u32,
max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
max_descriptor_set_update_after_bind_storage_buffers: u32,
max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
max_descriptor_set_update_after_bind_sampled_images: u32,
max_descriptor_set_update_after_bind_storage_images: u32,
max_descriptor_set_update_after_bind_input_attachments: u32,
}
typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
type PhysicalDeviceDescriptorIndexingPropertiesEXT = vk::PhysicalDeviceDescriptorIndexingProperties;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.- EXTENSION LIMITS MAXUPDATEAFTERBINDDESCRIPTORSINALLPOOLS
maxUpdateAfterBindDescriptorsInAllPoolsis the maximum number of descriptors (summed over all descriptor types) that can be created across all pools that are created with theVK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITbit set. Pool creation may fail when this limit is exceeded, or when the space this limit represents is unable to satisfy a pool creation due to fragmentation. - EXTENSION LIMITS SHADERUNIFORMBUFFERARRAYNONUNIFORMINDEXINGNATIVE
shaderUniformBufferArrayNonUniformIndexingNativeis a boolean value indicating whether uniform buffer descriptors natively support non-uniform indexing. If this isVK_FALSE, then a single dynamic instance of an instruction that non-uniformly indexes an array of uniform buffers may execute multiple times in order to access all the descriptors. - EXTENSION LIMITS SHADERSAMPLEDIMAGEARRAYNONUNIFORMINDEXINGNATIVE
shaderSampledImageArrayNonUniformIndexingNativeis a boolean value indicating whether sampler and image descriptors natively support non-uniform indexing. If this isVK_FALSE, then a single dynamic instance of an instruction that non-uniformly indexes an array of samplers or images may execute multiple times in order to access all the descriptors. - EXTENSION LIMITS SHADERSTORAGEBUFFERARRAYNONUNIFORMINDEXINGNATIVE
shaderStorageBufferArrayNonUniformIndexingNativeis a boolean value indicating whether storage buffer descriptors natively support non-uniform indexing. If this isVK_FALSE, then a single dynamic instance of an instruction that non-uniformly indexes an array of storage buffers may execute multiple times in order to access all the descriptors. - EXTENSION LIMITS SHADERSTORAGEIMAGEARRAYNONUNIFORMINDEXINGNATIVE
shaderStorageImageArrayNonUniformIndexingNativeis a boolean value indicating whether storage image descriptors natively support non-uniform indexing. If this isVK_FALSE, then a single dynamic instance of an instruction that non-uniformly indexes an array of storage images may execute multiple times in order to access all the descriptors. - EXTENSION LIMITS SHADERINPUTATTACHMENTARRAYNONUNIFORMINDEXINGNATIVE
shaderInputAttachmentArrayNonUniformIndexingNativeis a boolean value indicating whether input attachment descriptors natively support non-uniform indexing. If this isVK_FALSE, then a single dynamic instance of an instruction that non-uniformly indexes an array of input attachments may execute multiple times in order to access all the descriptors. - EXTENSION LIMITS ROBUSTBUFFERACCESSUPDATEAFTERBIND
robustBufferAccessUpdateAfterBindis a boolean value indicating whetherrobustBufferAccesscan be enabled on a device simultaneously withdescriptorBindingUniformBufferUpdateAfterBind,descriptorBindingStorageBufferUpdateAfterBind,descriptorBindingUniformTexelBufferUpdateAfterBind, and/ordescriptorBindingStorageTexelBufferUpdateAfterBind. If this isVK_FALSE, then eitherrobustBufferAccessmust be disabled or all of these update-after-bind features must be disabled. Similarly, if this property isVK_FALSE, robustness must not be enabled through the VkPipelineRobustnessCreateInfo mechanism. - EXTENSION LIMITS QUADDIVERGENTIMPLICITLOD
quadDivergentImplicitLodis a boolean value indicating whether implicit LOD calculations for image operations have well-defined results when the image and/or sampler objects used for the instruction are not uniform within a quad. See Derivative Image Operations. - EXTENSION LIMITS MAXPERSTAGEDESCRIPTORUPDATEAFTERBINDSAMPLERS
maxPerStageDescriptorUpdateAfterBindSamplersis similar tomaxPerStageDescriptorSamplersbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXPERSTAGEDESCRIPTORUPDATEAFTERBINDUNIFORMBUFFERS
maxPerStageDescriptorUpdateAfterBindUniformBuffersis similar tomaxPerStageDescriptorUniformBuffersbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXPERSTAGEDESCRIPTORUPDATEAFTERBINDSTORAGEBUFFERS
maxPerStageDescriptorUpdateAfterBindStorageBuffersis similar tomaxPerStageDescriptorStorageBuffersbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXPERSTAGEDESCRIPTORUPDATEAFTERBINDSAMPLEDIMAGES
maxPerStageDescriptorUpdateAfterBindSampledImagesis similar tomaxPerStageDescriptorSampledImagesbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXPERSTAGEDESCRIPTORUPDATEAFTERBINDSTORAGEIMAGES
maxPerStageDescriptorUpdateAfterBindStorageImagesis similar tomaxPerStageDescriptorStorageImagesbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXPERSTAGEDESCRIPTORUPDATEAFTERBINDINPUTATTACHMENTS
maxPerStageDescriptorUpdateAfterBindInputAttachmentsis similar tomaxPerStageDescriptorInputAttachmentsbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXPERSTAGEUPDATEAFTERBINDRESOURCES
maxPerStageUpdateAfterBindResourcesis similar tomaxPerStageResourcesbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXDESCRIPTORSETUPDATEAFTERBINDSAMPLERS
maxDescriptorSetUpdateAfterBindSamplersis similar tomaxDescriptorSetSamplersbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXDESCRIPTORSETUPDATEAFTERBINDUNIFORMBUFFERS
maxDescriptorSetUpdateAfterBindUniformBuffersis similar tomaxDescriptorSetUniformBuffersbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXDESCRIPTORSETUPDATEAFTERBINDUNIFORMBUFFERSDYNAMIC
maxDescriptorSetUpdateAfterBindUniformBuffersDynamicis similar tomaxDescriptorSetUniformBuffersDynamicbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. While an application can allocate dynamic uniform buffer descriptors from a pool created withVK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, and can include dynamic uniform buffer descriptors in descriptor set layouts created withVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, bindings for these descriptors must not be present in any descriptor set layout that includes bindings created withVK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT. Therefore this limit has no practical effect and may be zero. - EXTENSION LIMITS MAXDESCRIPTORSETUPDATEAFTERBINDSTORAGEBUFFERS
maxDescriptorSetUpdateAfterBindStorageBuffersis similar tomaxDescriptorSetStorageBuffersbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXDESCRIPTORSETUPDATEAFTERBINDSTORAGEBUFFERSDYNAMIC
maxDescriptorSetUpdateAfterBindStorageBuffersDynamicis similar tomaxDescriptorSetStorageBuffersDynamicbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. While an application can allocate dynamic storage buffer descriptors from a pool created withVK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, and can include dynamic storage buffer descriptors in descriptor set layouts created withVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, bindings for these descriptors must not be present in any descriptor set layout that includes bindings created withVK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT. Therefore this limit has no practical effect and may be zero. - EXTENSION LIMITS MAXDESCRIPTORSETUPDATEAFTERBINDSAMPLEDIMAGES
maxDescriptorSetUpdateAfterBindSampledImagesis similar tomaxDescriptorSetSampledImagesbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXDESCRIPTORSETUPDATEAFTERBINDSTORAGEIMAGES
maxDescriptorSetUpdateAfterBindStorageImagesis similar tomaxDescriptorSetStorageImagesbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. - EXTENSION LIMITS MAXDESCRIPTORSETUPDATEAFTERBINDINPUTATTACHMENTS
maxDescriptorSetUpdateAfterBindInputAttachmentsis similar tomaxDescriptorSetInputAttachmentsbut counts descriptors from descriptor sets created with or without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set. While an application can allocate input attachment descriptors from a pool created withVK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, and can include dynamic uniform buffer descriptors in descriptor set layouts created withVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, bindings for these descriptors must not be created withVK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT. Therefore this limit only exists to allow implementations exposing a higher limit for input attachment descriptors in a pipeline layout including any descriptor set layouts created withVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITthan in a pipeline layout not including any descriptor set layouts created withVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITand may be zero to indicate that only themaxDescriptorSetInputAttachmentsapplies.
If the VkPhysicalDeviceDescriptorIndexingProperties structure is included in the pNext chain of the
VkPhysicalDeviceProperties2 structure passed to
vkGetPhysicalDeviceProperties2, it is filled in with each
corresponding implementation-dependent property.
Valid Usage (Implicit)
VUID-VkPhysicalDeviceDescriptorIndexingProperties-sType-sType
sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES