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. AsprotectedMemoryis optional in core Vulkan,pipelineProtectedAccessis only required whenprotectedMemoryis 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:
-
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.