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
dynamicRenderingLocalReadDepthStencilAttachmentsis VK_FALSE, implementations do not support depth/stencil attachment access within dynamic rendering. -
If
dynamicRenderingLocalReadMultisampledAttachmentsis 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
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_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:
-
- 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 to VK_TRUE -
shaderSignedZeroInfNanPreserveFloat32is changed from unspecified to VK_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 to VK_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 to VK_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
-
Extending VkAttachmentLoadOp:
-
Extending VkBufferUsageFlagBits2:
-
Extending VkDescriptorSetLayoutCreateFlagBits:
-
Extending VkDescriptorUpdateTemplateType:
-
Extending VkDynamicState:
-
Extending VkFormat:
-
Extending VkFormatFeatureFlagBits2:
-
Extending VkImageLayout:
-
Extending VkImageUsageFlagBits:
-
Extending VkIndexType:
-
Extending VkPipelineCreateFlagBits:
-
Extending VkResult:
-
Extending VkStructureType:
-
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_PROPERTIES
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_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_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO
-
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO
-
Extending VkSubgroupFeatureFlagBits:
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.