# Interface VulkanPhysicalDeviceFeatures12Type

All Known Implementing Classes:
  `VulkanPhysicalDeviceFeatures12`

@Immutable public interface VulkanPhysicalDeviceFeatures12Type
The features supported by a physical Vulkan 1.2 device.

See Also:
  - "VkPhysicalDeviceVulkan12Features"

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default boolean`
  `bufferDeviceAddress()`
  bufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from vkGetBufferDeviceAddress.
  `default boolean`
  `bufferDeviceAddressCaptureReplay()`
  bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer and device addresses, e.g.
  `default boolean`
  `bufferDeviceAddressMultiDevice()`
  bufferDeviceAddressMultiDevice indicates that the implementation supports the bufferDeviceAddress , rayTracingPipeline and rayQuery features for logical devices created with multiple physical devices.
  `default boolean`
  `descriptorBindingPartiallyBound()`
  descriptorBindingPartiallyBound indicates whether the implementation supports statically using a descriptor set binding in which some descriptors are not valid.
  `default boolean`
  `descriptorBindingSampledImageUpdateAfterBind()`
  descriptorBindingSampledImageUpdateAfterBind indicates whether the implementation supports updating sampled image descriptors after a set is bound.
  `default boolean`
  `descriptorBindingStorageBufferUpdateAfterBind()`
  descriptorBindingStorageBufferUpdateAfterBind indicates whether the implementation supports updating storage buffer descriptors after a set is bound.
  `default boolean`
  `descriptorBindingStorageImageUpdateAfterBind()`
  descriptorBindingStorageImageUpdateAfterBind indicates whether the implementation supports updating storage image descriptors after a set is bound.
  `default boolean`
  `descriptorBindingStorageTexelBufferUpdateAfterBind()`
  descriptorBindingStorageTexelBufferUpdateAfterBind indicates whether the implementation supports updating storage texel buffer descriptors after a set is bound.
  `default boolean`
  `descriptorBindingUniformBufferUpdateAfterBind()`
  descriptorBindingUniformBufferUpdateAfterBind indicates whether the implementation supports updating uniform buffer descriptors after a set is bound.
  `default boolean`
  `descriptorBindingUniformTexelBufferUpdateAfterBind()`
  descriptorBindingUniformTexelBufferUpdateAfterBind indicates whether the implementation supports updating uniform texel buffer descriptors after a set is bound.
  `default boolean`
  `descriptorBindingUpdateUnusedWhilePending()`
  descriptorBindingUpdateUnusedWhilePending indicates whether the implementation supports updating descriptors while the set is in use.
  `default boolean`
  `descriptorBindingVariableDescriptorCount()`
  descriptorBindingVariableDescriptorCount indicates whether the implementation supports descriptor sets with a variable-sized last binding.
  `default boolean`
  `descriptorIndexing()`
  descriptorIndexing indicates whether the implementation supports the minimum set of descriptor indexing features as described in the Feature Requirements section.
  `default boolean`
  `drawIndirectCount()`
  drawIndirectCount indicates whether the implementation supports the vkCmdDrawIndirectCount and vkCmdDrawIndexedIndirectCount functions.
  `default boolean`
  `hostQueryReset()`
  hostQueryReset indicates that the implementation supports resetting queries from the host with vkResetQueryPool.
  `default boolean`
  `imagelessFramebuffer()`
  imagelessFramebuffer indicates that the implementation supports specifying the image view for attachments at render pass begin time via VkRenderPassAttachmentBeginInfo.
  `default boolean`
  `runtimeDescriptorArray()`
  runtimeDescriptorArray indicates whether the implementation supports the SPIR-V RuntimeDescriptorArray capability.
  `default boolean`
  `samplerFilterMinmax()`
  samplerFilterMinmax indicates whether the implementation supports a minimum set of required formats supporting min/max filtering as defined by the filterMinmaxSingleComponentFormats property minimum requirements.
  `default boolean`
  `samplerMirrorClampToEdge()`
  samplerMirrorClampToEdge indicates whether the implementation supports the VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode.
  `default boolean`
  `scalarBlockLayout()`
  scalarBlockLayout indicates that the implementation supports the layout of resource blocks in shaders using scalar alignment.
  `default boolean`
  `separateDepthStencilLayouts()`
  separateDepthStencilLayouts indicates whether the implementation supports a VkImageMemoryBarrier for a depth/stencil image with only one of VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT set, and whether VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL can be used.
  `default boolean`
  `shaderBufferInt64Atomics()`
  shaderBufferInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on buffers.
  `default boolean`
  `shaderFloat16()`
  shaderFloat16 indicates whether 16-bit floats (halfs) are supported in shader code.
  `default boolean`
  `shaderInputAttachmentArrayDynamicIndexing()`
  shaderInputAttachmentArrayDynamicIndexing indicates whether arrays of input attachments can be indexed by dynamically uniform integer expressions in shader code.
  `default boolean`
  `shaderInputAttachmentArrayNonUniformIndexing()`
  shaderInputAttachmentArrayNonUniformIndexing indicates whether arrays of input attachments can be indexed by non-uniform integer expressions in shader code.
  `default boolean`
  `shaderInt8()`
  shaderInt8 indicates whether 8-bit integers (signed and unsigned) are supported in shader code.
  `default boolean`
  `shaderOutputLayer()`
  shaderOutputLayer indicates whether the implementation supports the ShaderLayer SPIR-V capability enabling variables decorated with the Layer built-in to be exported from vertex or tessellation evaluation shaders.
  `default boolean`
  `shaderOutputViewportIndex()`
  shaderOutputViewportIndex indicates whether the implementation supports the ShaderViewportIndex SPIR-V capability enabling variables decorated with the ViewportIndex built-in to be exported from vertex or tessellation evaluation shaders.
  `default boolean`
  `shaderSampledImageArrayNonUniformIndexing()`
  shaderSampledImageArrayNonUniformIndexing indicates whether arrays of samplers or sampled images can be indexed by non-uniform integer expressions in shader code.
  `default boolean`
  `shaderSharedInt64Atomics()`
  shaderSharedInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on shared memory.
  `default boolean`
  `shaderStorageBufferArrayNonUniformIndexing()`
  shaderStorageBufferArrayNonUniformIndexing indicates whether arrays of storage buffers can be indexed by non-uniform integer expressions in shader code.
  `default boolean`
  `shaderStorageImageArrayNonUniformIndexing()`
  shaderStorageImageArrayNonUniformIndexing indicates whether arrays of storage images can be indexed by non-uniform integer expressions in shader code.
  `default boolean`
  `shaderStorageTexelBufferArrayDynamicIndexing()`
  shaderStorageTexelBufferArrayDynamicIndexing indicates whether arrays of storage texel buffers can be indexed by dynamically uniform integer expressions in shader code.
  `default boolean`
  `shaderStorageTexelBufferArrayNonUniformIndexing()`
  shaderStorageTexelBufferArrayNonUniformIndexing indicates whether arrays of storage texel buffers can be indexed by non-uniform integer expressions in shader code.
  `default boolean`
  `shaderSubgroupExtendedTypes()`
  shaderSubgroupExtendedTypes is a boolean specifying whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in group operations with subgroup scope, if the implementation supports the types.
  `default boolean`
  `shaderUniformBufferArrayNonUniformIndexing()`
  shaderUniformBufferArrayNonUniformIndexing indicates whether arrays of uniform buffers can be indexed by non-uniform integer expressions in shader code.
  `default boolean`
  `shaderUniformTexelBufferArrayDynamicIndexing()`
  shaderUniformTexelBufferArrayDynamicIndexing indicates whether arrays of uniform texel buffers can be indexed by dynamically uniform integer expressions in shader code.
  `default boolean`
  `shaderUniformTexelBufferArrayNonUniformIndexing()`
  shaderUniformTexelBufferArrayNonUniformIndexing indicates whether arrays of uniform texel buffers can be indexed by non-uniform integer expressions in shader code.
  `default boolean`
  `storageBuffer8BitAccess()`
  storageBuffer8BitAccess indicates whether objects in the StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration can have 8-bit integer members.
  `default boolean`
  `storagePushConstant8()`
  storagePushConstant8 indicates whether objects in the PushConstant storage class can have 8-bit integer members.
  `default boolean`
  `subgroupBroadcastDynamicId()`
  If subgroupBroadcastDynamicId is VK_TRUE, the “Id” operand of OpGroupNonUniformBroadcast can be dynamically uniform within a subgroup, and the “Index” operand of OpGroupNonUniformQuadBroadcast can be dynamically uniform within the derivative group.
  `default boolean`
  `timelineSemaphore()`
  timelineSemaphore indicates whether semaphores created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE are supported.
  `default boolean`
  `uniformAndStorageBuffer8BitAccess()`
  uniformAndStorageBuffer8BitAccess indicates whether objects in the Uniform storage class with the Block decoration can have 8-bit integer members.
  `default boolean`
  `uniformBufferStandardLayout()`
  uniformBufferStandardLayout indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers.
  `default boolean`
  `vulkanMemoryModel()`
  vulkanMemoryModel indicates whether the Vulkan Memory Model is supported, as defined in Vulkan Memory Model.
  `default boolean`
  `vulkanMemoryModelAvailabilityVisibilityChains()`
  vulkanMemoryModelAvailabilityVisibilityChains indicates whether the Vulkan Memory Model can use availability and visibility chains with more than one element.
  `default boolean`
  `vulkanMemoryModelDeviceScope()`
  vulkanMemoryModelDeviceScope indicates whether the Vulkan Memory Model can use Device scope synchronization.

- ## Method Details

  - ### bufferDeviceAddress

    @Default default boolean bufferDeviceAddress()
    bufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from vkGetBufferDeviceAddress.
    Returns:
      `true` if supported

  - ### bufferDeviceAddressCaptureReplay

    @Default default boolean bufferDeviceAddressCaptureReplay()
    bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay.
    Returns:
      `true` if supported

  - ### bufferDeviceAddressMultiDevice

    @Default default boolean bufferDeviceAddressMultiDevice()
    bufferDeviceAddressMultiDevice indicates that the implementation supports the bufferDeviceAddress , rayTracingPipeline and rayQuery features for logical devices created with multiple physical devices. If this feature is not supported, buffer and acceleration structure addresses must not be queried on a logical device created with more than one physical device.
    Returns:
      `true` if supported

  - ### descriptorBindingPartiallyBound

    @Default default boolean descriptorBindingPartiallyBound()
    descriptorBindingPartiallyBound indicates whether the implementation supports statically using a descriptor set binding in which some descriptors are not valid. If this feature is not enabled, VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT must not be used.
    Returns:
      `true` if supported

  - ### descriptorBindingSampledImageUpdateAfterBind

    @Default default boolean descriptorBindingSampledImageUpdateAfterBind()
    descriptorBindingSampledImageUpdateAfterBind indicates whether the implementation supports updating sampled image descriptors after a set is bound. If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_SAMPLER, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE.
    Returns:
      `true` if supported

  - ### descriptorBindingStorageBufferUpdateAfterBind

    @Default default boolean descriptorBindingStorageBufferUpdateAfterBind()
    descriptorBindingStorageBufferUpdateAfterBind indicates whether the implementation supports updating storage buffer descriptors after a set is bound. If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_STORAGE_BUFFER.
    Returns:
      `true` if supported

  - ### descriptorBindingStorageImageUpdateAfterBind

    @Default default boolean descriptorBindingStorageImageUpdateAfterBind()
    descriptorBindingStorageImageUpdateAfterBind indicates whether the implementation supports updating storage image descriptors after a set is bound. If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_STORAGE_IMAGE.
    Returns:
      `true` if supported

  - ### descriptorBindingStorageTexelBufferUpdateAfterBind

    @Default default boolean descriptorBindingStorageTexelBufferUpdateAfterBind()
    descriptorBindingStorageTexelBufferUpdateAfterBind indicates whether the implementation supports updating storage texel buffer descriptors after a set is bound. If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER.
    Returns:
      `true` if supported

  - ### descriptorBindingUniformBufferUpdateAfterBind

    @Default default boolean descriptorBindingUniformBufferUpdateAfterBind()
    descriptorBindingUniformBufferUpdateAfterBind indicates whether the implementation supports updating uniform buffer descriptors after a set is bound. If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER.
    Returns:
      `true` if supported

  - ### descriptorBindingUniformTexelBufferUpdateAfterBind

    @Default default boolean descriptorBindingUniformTexelBufferUpdateAfterBind()
    descriptorBindingUniformTexelBufferUpdateAfterBind indicates whether the implementation supports updating uniform texel buffer descriptors after a set is bound. If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER.
    Returns:
      `true` if supported

  - ### descriptorBindingUpdateUnusedWhilePending

    @Default default boolean descriptorBindingUpdateUnusedWhilePending()
    descriptorBindingUpdateUnusedWhilePending indicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT must not be used.
    Returns:
      `true` if supported

  - ### descriptorBindingVariableDescriptorCount

    @Default default boolean descriptorBindingVariableDescriptorCount()
    descriptorBindingVariableDescriptorCount indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled, VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT must not be used.
    Returns:
      `true` if supported

  - ### descriptorIndexing

    @Default default boolean descriptorIndexing()
    descriptorIndexing indicates whether the implementation supports the minimum set of descriptor indexing features as described in the Feature Requirements section. Enabling the descriptorIndexing member when vkCreateDevice is called does not imply the other minimum descriptor indexing features are also enabled. Those other descriptor indexing features must be enabled individually as needed by the application.
    Returns:
      `true` if supported

  - ### drawIndirectCount

    @Default default boolean drawIndirectCount()
    drawIndirectCount indicates whether the implementation supports the vkCmdDrawIndirectCount and vkCmdDrawIndexedIndirectCount functions. If this feature is not enabled, these functions must not be used.
    Returns:
      `true` if supported

  - ### hostQueryReset

    @Default default boolean hostQueryReset()
    hostQueryReset indicates that the implementation supports resetting queries from the host with vkResetQueryPool.
    Returns:
      `true` if supported

  - ### imagelessFramebuffer

    @Default default boolean imagelessFramebuffer()
    imagelessFramebuffer indicates that the implementation supports specifying the image view for attachments at render pass begin time via VkRenderPassAttachmentBeginInfo.
    Returns:
      `true` if supported

  - ### runtimeDescriptorArray

    @Default default boolean runtimeDescriptorArray()
    runtimeDescriptorArray indicates whether the implementation supports the SPIR-V RuntimeDescriptorArray capability. If this feature is not enabled, descriptors must not be declared in runtime arrays.
    Returns:
      `true` if supported

  - ### samplerFilterMinmax

    @Default default boolean samplerFilterMinmax()
    samplerFilterMinmax indicates whether the implementation supports a minimum set of required formats supporting min/max filtering as defined by the filterMinmaxSingleComponentFormats property minimum requirements. If this feature is not enabled, then no VkSamplerCreateInfo pNext chain can include a VkSamplerReductionModeCreateInfo structure.
    Returns:
      `true` if supported

  - ### samplerMirrorClampToEdge

    @Default default boolean samplerMirrorClampToEdge()
    samplerMirrorClampToEdge indicates whether the implementation supports the VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode. If this feature is not enabled, the VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode must not be used.
    Returns:
      `true` if supported

  - ### scalarBlockLayout

    @Default default boolean scalarBlockLayout()
    scalarBlockLayout indicates that the implementation supports the layout of resource blocks in shaders using scalar alignment.
    Returns:
      `true` if supported

  - ### separateDepthStencilLayouts

    @Default default boolean separateDepthStencilLayouts()
    separateDepthStencilLayouts indicates whether the implementation supports a VkImageMemoryBarrier for a depth/stencil image with only one of VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT set, and whether VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL can be used.
    Returns:
      `true` if supported

  - ### shaderBufferInt64Atomics

    @Default default boolean shaderBufferInt64Atomics()
    shaderBufferInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on buffers.
    Returns:
      `true` if supported

  - ### shaderFloat16

    @Default default boolean shaderFloat16()
    shaderFloat16 indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare the Float16 capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Float16 SPIR-V capability: Declaring and using 16-bit floats in the Private, Workgroup (for non-Block variables), and Function storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform, StorageBuffer, Input, Output, and PushConstant) is not enabled.
    Returns:
      `true` if supported

  - ### shaderInputAttachmentArrayDynamicIndexing

    @Default default boolean shaderInputAttachmentArrayDynamicIndexing()
    shaderInputAttachmentArrayDynamicIndexing indicates whether arrays of input attachments can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the InputAttachmentArrayDynamicIndexing capability.
    Returns:
      `true` if supported

  - ### shaderInputAttachmentArrayNonUniformIndexing

    @Default default boolean shaderInputAttachmentArrayNonUniformIndexing()
    shaderInputAttachmentArrayNonUniformIndexing indicates whether arrays of input attachments can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the InputAttachmentArrayNonUniformIndexing capability.
    Returns:
      `true` if supported

  - ### shaderInt8

    @Default default boolean shaderInt8()
    shaderInt8 indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare the Int8 capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int8 SPIR-V capability: Declaring and using 8-bit integers in the Private, Workgroup (for non-Block variables), and Function storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform, StorageBuffer, Input, Output, and PushConstant) is not enabled.
    Returns:
      `true` if supported

  - ### shaderOutputLayer

    @Default default boolean shaderOutputLayer()
    shaderOutputLayer indicates whether the implementation supports the ShaderLayer SPIR-V capability enabling variables decorated with the Layer built-in to be exported from vertex or tessellation evaluation shaders. If this feature is not enabled, the Layer built-in decoration must not be used on outputs in vertex or tessellation evaluation shaders.
    Returns:
      `true` if supported

  - ### shaderOutputViewportIndex

    @Default default boolean shaderOutputViewportIndex()
    shaderOutputViewportIndex indicates whether the implementation supports the ShaderViewportIndex SPIR-V capability enabling variables decorated with the ViewportIndex built-in to be exported from vertex or tessellation evaluation shaders. If this feature is not enabled, the ViewportIndex built-in decoration must not be used on outputs in vertex or tessellation evaluation shaders.
    Returns:
      `true` if supported

  - ### shaderSampledImageArrayNonUniformIndexing

    @Default default boolean shaderSampledImageArrayNonUniformIndexing()
    shaderSampledImageArrayNonUniformIndexing indicates whether arrays of samplers or sampled images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_SAMPLER, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the SampledImageArrayNonUniformIndexing capability.
    Returns:
      `true` if supported

  - ### shaderSharedInt64Atomics

    @Default default boolean shaderSharedInt64Atomics()
    shaderSharedInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on shared memory.
    Returns:
      `true` if supported

  - ### shaderStorageBufferArrayNonUniformIndexing

    @Default default boolean shaderStorageBufferArrayNonUniformIndexing()
    shaderStorageBufferArrayNonUniformIndexing indicates whether arrays of storage buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the StorageBufferArrayNonUniformIndexing capability.
    Returns:
      `true` if supported

  - ### shaderStorageImageArrayNonUniformIndexing

    @Default default boolean shaderStorageImageArrayNonUniformIndexing()
    shaderStorageImageArrayNonUniformIndexing indicates whether arrays of storage images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the StorageImageArrayNonUniformIndexing capability.
    Returns:
      `true` if supported

  - ### shaderStorageTexelBufferArrayDynamicIndexing

    @Default default boolean shaderStorageTexelBufferArrayDynamicIndexing()
    shaderStorageTexelBufferArrayDynamicIndexing indicates whether arrays of storage texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the StorageTexelBufferArrayDynamicIndexing capability.
    Returns:
      `true` if supported

  - ### shaderStorageTexelBufferArrayNonUniformIndexing

    @Default default boolean shaderStorageTexelBufferArrayNonUniformIndexing()
    shaderStorageTexelBufferArrayNonUniformIndexing indicates whether arrays of storage texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the StorageTexelBufferArrayNonUniformIndexing capability.
    Returns:
      `true` if supported

  - ### shaderSubgroupExtendedTypes

    @Default default boolean shaderSubgroupExtendedTypes()
    shaderSubgroupExtendedTypes is a boolean specifying whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in group operations with subgroup scope, if the implementation supports the types.
    Returns:
      `true` if supported

  - ### shaderUniformBufferArrayNonUniformIndexing

    @Default default boolean shaderUniformBufferArrayNonUniformIndexing()
    shaderUniformBufferArrayNonUniformIndexing indicates whether arrays of uniform buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the UniformBufferArrayNonUniformIndexing capability.
    Returns:
      `true` if supported

  - ### shaderUniformTexelBufferArrayDynamicIndexing

    @Default default boolean shaderUniformTexelBufferArrayDynamicIndexing()
    shaderUniformTexelBufferArrayDynamicIndexing indicates whether arrays of uniform texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the UniformTexelBufferArrayDynamicIndexing capability.
    Returns:
      `true` if supported

  - ### shaderUniformTexelBufferArrayNonUniformIndexing

    @Default default boolean shaderUniformTexelBufferArrayNonUniformIndexing()
    shaderUniformTexelBufferArrayNonUniformIndexing indicates whether arrays of uniform texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the UniformTexelBufferArrayNonUniformIndexing capability.
    Returns:
      `true` if supported

  - ### storageBuffer8BitAccess

    @Default default boolean storageBuffer8BitAccess()
    storageBuffer8BitAccess indicates whether objects in the StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the StorageBuffer8BitAccess capability.
    Returns:
      `true` if supported

  - ### storagePushConstant8

    @Default default boolean storagePushConstant8()
    storagePushConstant8 indicates whether objects in the PushConstant storage class can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the StoragePushConstant8 capability.
    Returns:
      `true` if supported

  - ### subgroupBroadcastDynamicId

    @Default default boolean subgroupBroadcastDynamicId()
    If subgroupBroadcastDynamicId is VK_TRUE, the “Id” operand of OpGroupNonUniformBroadcast can be dynamically uniform within a subgroup, and the “Index” operand of OpGroupNonUniformQuadBroadcast can be dynamically uniform within the derivative group. If it is VK_FALSE, these operands must be constants.
    Returns:
      `true` if supported

  - ### timelineSemaphore

    @Default default boolean timelineSemaphore()
    timelineSemaphore indicates whether semaphores created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE are supported.
    Returns:
      `true` if supported

  - ### uniformAndStorageBuffer8BitAccess

    @Default default boolean uniformAndStorageBuffer8BitAccess()
    uniformAndStorageBuffer8BitAccess indicates whether objects in the Uniform storage class with the Block decoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the UniformAndStorageBuffer8BitAccess capability.
    Returns:
      `true` if supported

  - ### uniformBufferStandardLayout

    @Default default boolean uniformBufferStandardLayout()
    uniformBufferStandardLayout indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See Standard Buffer Layout.
    Returns:
      `true` if supported

  - ### vulkanMemoryModel

    @Default default boolean vulkanMemoryModel()
    vulkanMemoryModel indicates whether the Vulkan Memory Model is supported, as defined in Vulkan Memory Model. This also indicates whether shader modules can declare the VulkanMemoryModel capability.
    Returns:
      `true` if supported

  - ### vulkanMemoryModelAvailabilityVisibilityChains

    @Default default boolean vulkanMemoryModelAvailabilityVisibilityChains()
    vulkanMemoryModelAvailabilityVisibilityChains indicates whether the Vulkan Memory Model can use availability and visibility chains with more than one element.
    Returns:
      `true` if supported

  - ### vulkanMemoryModelDeviceScope

    @Default default boolean vulkanMemoryModelDeviceScope()
    vulkanMemoryModelDeviceScope indicates whether the Vulkan Memory Model can use Device scope synchronization. This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability.
    Returns:
      `true` if supported