Structures

VkPhysicalDeviceMaintenance7PropertiesKHR

Structure describing various implementation-defined properties introduced with VK_KHR_maintenance7

The VkPhysicalDeviceMaintenance7PropertiesKHR structure is defined as:

typedef struct VkPhysicalDeviceMaintenance7PropertiesKHR {
    VkStructureType sType;
    void* pNext;
    VkBool32 robustFragmentShadingRateAttachmentAccess;
    VkBool32 separateDepthStencilAttachmentAccess;
    uint32_t maxDescriptorSetTotalUniformBuffersDynamic;
    uint32_t maxDescriptorSetTotalStorageBuffersDynamic;
    uint32_t maxDescriptorSetTotalBuffersDynamic;
    uint32_t maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic;
    uint32_t maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic;
    uint32_t maxDescriptorSetUpdateAfterBindTotalBuffersDynamic;
} VkPhysicalDeviceMaintenance7PropertiesKHR;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • robustFragmentShadingRateAttachmentAccess indicates whether the scaled size of a fragment shading rate attachment can be less than the size of the render area. If robustFragmentShadingRateAttachmentAccess is VK_FALSE, the size of the attachment multiplied by the texel size must be greater than or equal to the size of the render area. If it is VK_TRUE and the fragment shading rate attachment was created with VkImageSubresourceRange::baseMipLevel equal to 0, the scaled size can be smaller than the render area, with missing shading rates defined by out of bounds behavior.
  • separateDepthStencilAttachmentAccess indicates support for writing to one aspect of a depth/stencil attachment without performing read-modify-write operations on the other aspect. If this property is VK_TRUE, writes to one aspect must not result in read-modify-write operations on the other aspect. If VK_FALSE, writes to one aspect may result in writes to the other aspect as defined by render pass load operations, render pass store operations and render pass resolve operations.
  • maxDescriptorSetTotalUniformBuffersDynamic is the maximum total count of dynamic uniform buffers that can be included in a pipeline layout. Descriptors with a type of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this limit. Only descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set count against this limit. See Dynamic Uniform Buffer.
  • maxDescriptorSetTotalStorageBuffersDynamic is the maximum total count of dynamic storage buffers that can be included in a pipeline layout. Descriptors with a type of VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this limit. Only descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set count against this limit. See Dynamic Storage Buffer.
  • maxDescriptorSetTotalBuffersDynamic is the maximum total count of dynamic uniform buffers and storage buffers that can be included in a pipeline layout. Descriptors with a type of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this limit. Only descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set count against this limit.
  • maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic is similar to maxDescriptorSetTotalUniformBuffersDynamic but counts descriptors from descriptor sets created with or without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set. While an application can allocate dynamic uniform buffer descriptors from a pool created with VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, and can include dynamic uniform buffer descriptors in descriptor set layouts created with VK_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 with VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT. Therefore this limit has no practical effect and may be zero.
  • maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic is similar to maxDescriptorSetTotalStorageBuffersDynamic but counts descriptors from descriptor sets created with or without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set. While an application can allocate dynamic storage buffer descriptors from a pool created with VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, and can include dynamic storage buffer descriptors in descriptor set layouts created with VK_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 with VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT. Therefore this limit has no practical effect and may be zero.
  • maxDescriptorSetUpdateAfterBindTotalBuffersDynamic is similar to maxDescriptorSetTotalBuffersDynamic but counts descriptors from descriptor sets created with or without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set. While an application can allocate dynamic uniform/storage buffer descriptors from a pool created with the descriptors from a pool created with VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, and can include dynamic uniform/storage buffer descriptors in descriptor set layouts created with VK_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 with VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT. Therefore this limit has no practical effect and may be zero.

If the VkPhysicalDeviceMaintenance7PropertiesKHR 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-VkPhysicalDeviceMaintenance7PropertiesKHR-sType-sType

sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR