Description

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

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 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 dynamicRenderingLocalReadDepthStencilAttachments and dynamicRenderingLocalReadMultisampledAttachments properties.

  • If dynamicRenderingLocalReadDepthStencilAttachments is VK_FALSE, implementations do not support depth/stencil attachment access within dynamic rendering.

  • If dynamicRenderingLocalReadMultisampledAttachments is VK_FALSE, implementations do not support multisampled attachment access within dynamic rendering.

  • If both properties are VK_TRUE, the full functionality of the extension is supported.

Differences Relative to VK_EXT_host_image_copy

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

  • An implementation that has a VK_QUEUE_GRAPHICS_BIT queue must support either:

    • the hostImageCopy feature; or

    • an additional queue that supports 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

In addition to the promoted extensions described above, Vulkan 1.4 added required support for:

New Macros

New Structures

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

See Also

Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

Copyright 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0