# VK_VERSION_1_4(3) Manual Page

## Name

VK_VERSION_1_4 - Vulkan version 1.4

Loading… please wait.

## Description

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 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:

  - All queues supporting `VK_QUEUE_GRAPHICS_BIT` or `VK_QUEUE_COMPUTE_BIT` must also advertise `VK_QUEUE_TRANSFER_BIT`.

  - Clustered subgroup operations must be advertised in Vulkan 1.4 via setting both `VK_SUBGROUP_FEATURE_CLUSTERED_BIT` and `VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT` (as an interaction with the promoted VK_KHR_shader_subgroup_rotate functionality) in `supportedOperations`.

  - The following features that were optional in earlier versions:

    - `fullDrawIndexUint32`

    - `imageCubeArray`

    - `independentBlend`

    - `sampleRateShading`

    - `drawIndirectFirstInstance`

    - `depthClamp`

    - `depthBiasClamp`

    - `samplerAnisotropy`

    - `fragmentStoresAndAtomics`

    - `shaderStorageImageExtendedFormats`

    - `shaderUniformBufferArrayDynamicIndexing`

    - `shaderSampledImageArrayDynamicIndexing`

    - `shaderStorageBufferArrayDynamicIndexing`

    - `shaderStorageImageArrayDynamicIndexing`

    - `shaderImageGatherExtended`

    - `shaderInt16`

    - `largePoints`

    - `samplerYcbcrConversion`

    - `storageBuffer16BitAccess`

    - `variablePointers`

    - `variablePointersStorageBuffer`

    - `samplerMirrorClampToEdge`

    - `scalarBlockLayout`

    - `shaderUniformTexelBufferArrayDynamicIndexing`

    - `shaderStorageTexelBufferArrayDynamicIndexing`

    - `shaderInt8`

    - `storageBuffer8BitAccess`

### New Macros

- VK_API_VERSION_1_4

### New Commands

- vkCmdBindDescriptorSets2

- vkCmdBindIndexBuffer2

- vkCmdPushConstants2

- vkCmdPushDescriptorSet

- vkCmdPushDescriptorSet2

- vkCmdPushDescriptorSetWithTemplate

- vkCmdPushDescriptorSetWithTemplate2

- vkCmdSetLineStipple

- vkCmdSetRenderingAttachmentLocations

- vkCmdSetRenderingInputAttachmentIndices

- vkCopyImageToImage

- vkCopyImageToMemory

- vkCopyMemoryToImage

- vkGetDeviceImageSubresourceLayout

- vkGetImageSubresourceLayout2

- vkGetRenderingAreaGranularity

- vkMapMemory2

- vkTransitionImageLayout

- vkUnmapMemory2

### New Structures

- VkBindDescriptorSetsInfo

- VkCopyImageToImageInfo

- VkCopyImageToMemoryInfo

- VkCopyMemoryToImageInfo

- VkDeviceImageSubresourceInfo

- VkHostImageLayoutTransitionInfo

- VkImageSubresource2

- VkImageToMemoryCopy

- VkMemoryMapInfo

- VkMemoryToImageCopy

- VkMemoryUnmapInfo

- VkPushConstantsInfo

- VkPushDescriptorSetInfo

- VkPushDescriptorSetWithTemplateInfo

- VkRenderingAreaInfo

- VkSubresourceLayout2

- VkVertexInputBindingDivisorDescription

- Extending VkBindBufferMemoryInfo, VkBindImageMemoryInfo:

  - VkBindMemoryStatus

- Extending VkBufferViewCreateInfo, VkBufferCreateInfo, VkPhysicalDeviceExternalBufferInfo, VkDescriptorBufferBindingInfoEXT:

  - VkBufferUsageFlags2CreateInfo

- Extending VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, VkRayTracingPipelineCreateInfoNV, VkRayTracingPipelineCreateInfoKHR:

  - VkPipelineCreateFlags2CreateInfo

- Extending VkDeviceQueueCreateInfo:

  - VkDeviceQueueGlobalPriorityCreateInfo

- Extending VkGraphicsPipelineCreateInfo, VkCommandBufferInheritanceInfo:

  - VkRenderingAttachmentLocationInfo

  - VkRenderingInputAttachmentIndexInfo

- Extending VkGraphicsPipelineCreateInfo, VkComputePipelineCreateInfo, VkPipelineShaderStageCreateInfo, VkRayTracingPipelineCreateInfoKHR:

  - VkPipelineRobustnessCreateInfo

- Extending VkImageFormatProperties2:

  - VkHostImageCopyDevicePerformanceQuery

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceDynamicRenderingLocalReadFeatures

  - VkPhysicalDeviceGlobalPriorityQueryFeatures

  - VkPhysicalDeviceHostImageCopyFeatures

  - VkPhysicalDeviceIndexTypeUint8Features

  - VkPhysicalDeviceLineRasterizationFeatures

  - VkPhysicalDeviceMaintenance5Features

  - VkPhysicalDeviceMaintenance6Features

  - VkPhysicalDevicePipelineProtectedAccessFeatures

  - VkPhysicalDevicePipelineRobustnessFeatures

  - VkPhysicalDeviceShaderExpectAssumeFeatures

  - VkPhysicalDeviceShaderFloatControls2Features

  - VkPhysicalDeviceShaderSubgroupRotateFeatures

  - VkPhysicalDeviceVertexAttributeDivisorFeatures

  - VkPhysicalDeviceVulkan14Features

- Extending VkPhysicalDeviceProperties2:

  - VkPhysicalDeviceHostImageCopyProperties

  - VkPhysicalDeviceLineRasterizationProperties

  - VkPhysicalDeviceMaintenance5Properties

  - VkPhysicalDeviceMaintenance6Properties

  - VkPhysicalDevicePipelineRobustnessProperties

  - VkPhysicalDevicePushDescriptorProperties

  - VkPhysicalDeviceVertexAttributeDivisorProperties

  - VkPhysicalDeviceVulkan14Properties

- Extending VkPipelineRasterizationStateCreateInfo:

  - VkPipelineRasterizationLineStateCreateInfo

- Extending VkPipelineVertexInputStateCreateInfo:

  - VkPipelineVertexInputDivisorStateCreateInfo

- Extending VkQueueFamilyProperties2:

  - VkQueueFamilyGlobalPriorityProperties

- Extending VkSubresourceLayout2:

  - VkSubresourceHostMemcpySize

### New Enums

- VkBufferUsageFlagBits2

- VkHostImageCopyFlagBits

- VkLineRasterizationMode

- VkMemoryUnmapFlagBits

- VkPipelineCreateFlagBits2

- VkPipelineRobustnessBufferBehavior

- VkPipelineRobustnessImageBehavior

- VkQueueGlobalPriority

### New Bitmasks

- VkBufferUsageFlags2

- VkHostImageCopyFlags

- VkMemoryUnmapFlags

- VkPipelineCreateFlags2

### 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

VK_VERSION_1_0, VK_VERSION_1_1, VK_VERSION_1_2, VK_VERSION_1_3

## 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

Copyright 2014-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0