Feature

VK_VERSION_1_4

Vulkan version 1.4

Vulkan Version 1.4 promoted a number of key extensions into the core API:

VK_KHR_dynamic_rendering_local_read

VK_KHR_global_priority

VK_KHR_index_type_uint8

VK_KHR_line_rasterization

VK_KHR_load_store_op_none

VK_KHR_maintenance5

VK_KHR_maintenance6

VK_KHR_map_memory2

VK_KHR_push_descriptor

VK_KHR_shader_expect_assume

VK_KHR_shader_float_controls2

VK_KHR_shader_subgroup_rotate

VK_KHR_vertex_attribute_divisor

VK_EXT_host_image_copy

VK_EXT_pipeline_protected_access

VK_EXT_pipeline_robustness

All differences in behavior between these extensions and the corresponding Vulkan 1.4 functionality are summarized below.

Differences Relative to VK_KHR_dynamic_rendering_local_read

If the apiext:VK_KHR_dynamic_rendering_local_read extension is not supported, Vulkan 1.4 implementations must: support local read only for storage resources and single sampled color attachments.

Support for reading depth/stencil attachments and multi-sampled attachments are respectively gated behind the new boolean pname:dynamicRenderingLocalReadDepthStencilAttachments and pname:dynamicRenderingLocalReadMultisampledAttachments properties.

* If pname:dynamicRenderingLocalReadDepthStencilAttachments is ename:VK_FALSE, implementations do not support depth/stencil attachment access within dynamic rendering. * If pname:dynamicRenderingLocalReadMultisampledAttachments is ename:VK_FALSE, implementations do not support multisampled attachment access within dynamic rendering. * If both properties are ename:VK_TRUE, the full functionality of the extension is supported.

Differences Relative to VK_EXT_host_image_copy

If the apiext:VK_EXT_host_image_copy extension is not supported, support for it is optional in Vulkan 1.4.

* An implementation that has a ename:VK_QUEUE_GRAPHICS_BIT queue must support either: ** the <<features-hostImageCopy, pname:hostImageCopy>> feature; or ** an additional queue that supports ename:VK_QUEUE_TRANSFER_BIT.

Differences Relative to VK_KHR_push_descriptor

VK_KHR_push_descriptor did not include a feature bit, so a new feature bit has been added to VkPhysicalDeviceVulkan14Features to gate its functionality: pushDescriptor. Enabling this new feature has the same effect as enabling the extension.

Differences Relative to VK_EXT_pipeline_protected_access

VK_EXT_pipeline_protected_access is only useful when the protectedMemory feature is supported. As protectedMemory is optional in core Vulkan, pipelineProtectedAccess is only required when protectedMemory is supported.

Differences Relative to VK_KHR_line_rasterization

The bresenhamLines feature is required, rather than just any one of the line style features.

Differences Relative to VK_KHR_shader_subgroup_rotate

The shaderSubgroupRotateClustered feature is required in addition to shaderSubgroupRotate.

Additional Vulkan 1.4 Feature Support

[[versions-1.4-new-features]] In addition to the promoted extensions described above, Vulkan 1.4 added required support for:

* All queues supporting ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT must: also advertise ename:VK_QUEUE_TRANSFER_BIT. * Clustered subgroup operations must: be advertised in Vulkan 1.4 via setting both ename:VK_SUBGROUP_FEATURE_CLUSTERED_BIT and ename:VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT (as an interaction with the promoted apiext:VK_KHR_shader_subgroup_rotate functionality) in <<limits-subgroupSupportedOperations, pname:supportedOperations>>. * The following features that were optional in earlier versions: ** <<features-fullDrawIndexUint32, pname:fullDrawIndexUint32>> ** <<features-imageCubeArray, pname:imageCubeArray>> ** <<features-independentBlend, pname:independentBlend>> ** <<features-sampleRateShading, pname:sampleRateShading>> ** <<features-drawIndirectFirstInstance, pname:drawIndirectFirstInstance>> ** <<features-depthClamp, pname:depthClamp>> ** <<features-depthBiasClamp, pname:depthBiasClamp>> ** <<features-samplerAnisotropy, pname:samplerAnisotropy>> ** <<features-fragmentStoresAndAtomics, pname:fragmentStoresAndAtomics>> ** <<features-shaderStorageImageExtendedFormats, pname:shaderStorageImageExtendedFormats>> ** <<features-shaderUniformBufferArrayDynamicIndexing, pname:shaderUniformBufferArrayDynamicIndexing>> ** <<features-shaderSampledImageArrayDynamicIndexing, pname:shaderSampledImageArrayDynamicIndexing>> ** <<features-shaderStorageBufferArrayDynamicIndexing, pname:shaderStorageBufferArrayDynamicIndexing>> ** <<features-shaderStorageImageArrayDynamicIndexing, pname:shaderStorageImageArrayDynamicIndexing>> ** <<features-shaderImageGatherExtended, pname:shaderImageGatherExtended>> ** <<features-shaderInt16, pname:shaderInt16>> ** <<features-largePoints, pname:largePoints>> ** <<features-samplerYcbcrConversion, pname:samplerYcbcrConversion>> ** <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>> ** <<features-variablePointers, pname:variablePointers>> ** <<features-variablePointersStorageBuffer, pname:variablePointersStorageBuffer>> ** <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>> ** <<features-scalarBlockLayout, pname:scalarBlockLayout>> ** <<features-shaderUniformTexelBufferArrayDynamicIndexing, pname:shaderUniformTexelBufferArrayDynamicIndexing>> ** <<features-shaderStorageTexelBufferArrayDynamicIndexing, pname:shaderStorageTexelBufferArrayDynamicIndexing>> ** <<features-shaderInt8, pname:shaderInt8>> ** <<features-storageBuffer8BitAccess, pname:storageBuffer8BitAccess>>

New Macros

New Commands

New Structures

New Enums

New Bitmasks

New Enum Constants

  • VK_MAX_GLOBAL_PRIORITY_SIZE
  • Extending VkAttachmentLoadOp:
    • VK_ATTACHMENT_LOAD_OP_NONE
  • Extending VkBufferUsageFlagBits2:
    • VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT
  • Extending VkDescriptorSetLayoutCreateFlagBits:
    • VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT
  • Extending VkDescriptorUpdateTemplateType:
    • VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS
  • Extending VkDynamicState:
    • VK_DYNAMIC_STATE_LINE_STIPPLE
  • Extending VkFormat:
    • VK_FORMAT_A1B5G5R5_UNORM_PACK16
    • VK_FORMAT_A8_UNORM
  • Extending VkFormatFeatureFlagBits2:
    • VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT
  • Extending VkImageLayout:
    • VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ
  • Extending VkImageUsageFlagBits:
    • VK_IMAGE_USAGE_HOST_TRANSFER_BIT
  • Extending VkIndexType:
    • VK_INDEX_TYPE_UINT8
  • Extending VkPipelineCreateFlagBits:
    • VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT
    • VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT
  • Extending VkResult:
    • VK_ERROR_NOT_PERMITTED
  • Extending VkStructureType:
    • VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO
    • VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS
    • VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO
    • VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO
    • VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO
    • VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO
    • VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO
    • VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO
    • VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY
    • VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO
    • VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2
    • VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY
    • VK_STRUCTURE_TYPE_MEMORY_MAP_INFO
    • VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY
    • VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES
    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES
    • VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO
    • VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO
    • VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO
    • VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO
    • VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO
    • VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO
    • VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO
    • VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES
    • VK_STRUCTURE_TYPE_RENDERING_AREA_INFO
    • VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO
    • VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO
    • VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE
    • VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2
  • Extending VkSubgroupFeatureFlagBits:
    • VK_SUBGROUP_FEATURE_ROTATE_BIT
    • VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT