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
anddynamicRenderingLocalReadMultisampledAttachments
properties.-
If
dynamicRenderingLocalReadDepthStencilAttachments
isVK_FALSE
, implementations do not support depth/stencil attachment access within dynamic rendering. -
If
dynamicRenderingLocalReadMultisampledAttachments
isVK_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. AsprotectedMemory
is optional in core Vulkan,pipelineProtectedAccess
is only required whenprotectedMemory
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 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_BIT
orVK_QUEUE_COMPUTE_BIT
must also advertiseVK_QUEUE_TRANSFER_BIT
. -
Clustered subgroup operations must be advertised in Vulkan 1.4 via setting both
VK_SUBGROUP_FEATURE_CLUSTERED_BIT
andVK_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:
-
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.