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 dynamicRenderingLocalReadDepthStencilAttachmentsanddynamicRenderingLocalReadMultisampledAttachmentsproperties.- 
If dynamicRenderingLocalReadDepthStencilAttachmentsisVK_FALSE, implementations do not support depth/stencil attachment access within dynamic rendering.
- 
If dynamicRenderingLocalReadMultisampledAttachmentsisVK_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_BITqueue must support either:- 
the hostImageCopyfeature; 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 protectedMemoryfeature is supported. As theprotectedMemoryfeature is optional in core Vulkan, thepipelineProtectedAccessfeature is only required when theprotectedMemoryfeature is supported.
- Differences Relative to VK_KHR_line_rasterization
- 
The bresenhamLinesfeature is required, rather than just any one of the line style features.
- Differences Relative to VK_KHR_shader_subgroup_rotate
- 
The shaderSubgroupRotateClusteredfeature is required in addition toshaderSubgroupRotate.
- 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_BITorVK_QUEUE_COMPUTE_BITmust also advertiseVK_QUEUE_TRANSFER_BIT.
- 
Clustered subgroup operations must be advertised in Vulkan 1.4 via setting both VK_SUBGROUP_FEATURE_CLUSTERED_BITandVK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT(as an interaction with the promoted VK_KHR_shader_subgroup_rotate functionality) insupportedOperations.
- 
The following features that were optional in earlier versions: 
 
- 
- Updated Vulkan 1.4 Limit Support
- 
Vulkan 1.4 also requires support for the following updated limits: - 
maxImageDimension1Dis increased from 4096 to 8192
- 
maxImageDimension2Dis increased from 4096 to 8192
- 
maxImageDimension3Dis increased from 256 to 512
- 
maxImageDimensionCubeis increased from 4096 to 8192
- 
maxImageArrayLayersis increased from 256 to 2048
- 
maxUniformBufferRangeis increased from 16384 to 65536
- 
maxPushConstantsSizeis increased from 128 to 256
- 
bufferImageGranularityis decreased from 131072 to 4096
- 
maxBoundDescriptorSetsis increased from 4 to 7
- 
maxPerStageDescriptorUniformBuffersis increased from 12 to 15
- 
maxPerStageResourcesis increased from 128 to 200
- 
maxDescriptorSetUniformBuffersis increased from 72 to 90
- 
maxDescriptorSetStorageBuffersis increased from 24 to 96
- 
maxDescriptorSetStorageImagesis increased from 24 to 144
- 
maxFragmentCombinedOutputResourcesis increased from 4 to 16
- 
maxComputeWorkGroupInvocationsis increased from 128 to 256
- 
maxComputeWorkGroupSizeis increased from (128,128,64) to (256,256,64)
- 
shaderSignedZeroInfNanPreserveFloat16is changed from unspecified toVK_TRUE
- 
shaderSignedZeroInfNanPreserveFloat32is changed from unspecified toVK_TRUE
- 
subTexelPrecisionBitsis increased from 4 to 8
- 
mipmapPrecisionBitsis increased from 4 to 6
- 
maxSamplerLodBiasis increased from 2 to 14
- 
maxViewportDimensionsis increased from (4096,4096) to (7680,7680)
- 
viewportBoundsRangeis increased from (-8192,8191) to (-15360,15359)
- 
maxFramebufferWidthis increased from 4096 to 7680
- 
maxFramebufferHeightis increased from 4096 to 7680
- 
maxColorAttachmentsis increased from 7 to 8
- 
timestampComputeAndGraphicsis changed from unspecified toVK_TRUE
- 
pointSizeRangeis increased from (1.0,64.0 - ULP) to (1.0,256.0 -pointSizeGranularity)
- 
pointSizeGranularityis decreased from 1.0 to 0.125
- 
lineWidthGranularityis decreased from 1.0 to 0.5
- 
maxPushDescriptorsis increased from 16 to 32
- 
standardSampleLocationsis changed from unspecified toVK_TRUE
 
- 
New Structures
- 
Extending VkBindBufferMemoryInfo, VkBindImageMemoryInfo: 
- 
Extending VkBufferViewCreateInfo, VkBufferCreateInfo, VkPhysicalDeviceExternalBufferInfo, VkDescriptorBufferBindingInfoEXT: 
- 
Extending VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, VkRayTracingPipelineCreateInfoNV, VkRayTracingPipelineCreateInfoKHR: 
- 
Extending VkDeviceQueueCreateInfo: 
- 
Extending VkGraphicsPipelineCreateInfo, VkCommandBufferInheritanceInfo: 
- 
Extending VkGraphicsPipelineCreateInfo, VkComputePipelineCreateInfo, VkPipelineShaderStageCreateInfo, VkRayTracingPipelineCreateInfoKHR: 
- 
Extending VkImageFormatProperties2: 
- 
Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo: 
- 
Extending VkPhysicalDeviceProperties2: 
- 
Extending VkPipelineRasterizationStateCreateInfo: 
- 
Extending VkPipelineVertexInputStateCreateInfo: 
- 
Extending VkQueueFamilyProperties2: 
- 
Extending VkSubresourceLayout2: 
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
 
- 
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.