VK_VERSION_1_4
Vulkan Version 1.4 promoted a number of key extensions into the core API:
VK_KHR_dynamic_rendering_local_read
VK_KHR_vertex_attribute_divisor
VK_EXT_pipeline_protected_access
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 apiext: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 pname:dynamicRenderingLocalReadDepthStencilAttachments and pname:dynamicRenderingLocalReadMultisampledAttachments properties.
* If pname:dynamicRenderingLocalReadDepthStencilAttachments is ename:VK_FALSE, implementations do not support depth/stencil attachment access within dynamic rendering. * If pname:dynamicRenderingLocalReadMultisampledAttachments is ename:VK_FALSE, implementations do not support multisampled attachment access within dynamic rendering. * If both properties are ename:VK_TRUE, the full functionality of the extension is supported.
Differences Relative to VK_EXT_host_image_copy
If the apiext:VK_EXT_host_image_copy extension is not supported, support for it is optional in Vulkan 1.4.
* An implementation that has a ename:VK_QUEUE_GRAPHICS_BIT queue must support either: ** the <<features-hostImageCopy, pname:hostImageCopy>> feature; or ** an additional queue that supports ename: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
[[versions-1.4-new-features]] In addition to the promoted extensions described above, Vulkan 1.4 added required support for:
* All queues supporting ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT must: also advertise ename:VK_QUEUE_TRANSFER_BIT. * Clustered subgroup operations must: be advertised in Vulkan 1.4 via setting both ename:VK_SUBGROUP_FEATURE_CLUSTERED_BIT and ename:VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT (as an interaction with the promoted apiext:VK_KHR_shader_subgroup_rotate functionality) in <<limits-subgroupSupportedOperations, pname:supportedOperations>>. * The following features that were optional in earlier versions: ** <<features-fullDrawIndexUint32, pname:fullDrawIndexUint32>> ** <<features-imageCubeArray, pname:imageCubeArray>> ** <<features-independentBlend, pname:independentBlend>> ** <<features-sampleRateShading, pname:sampleRateShading>> ** <<features-drawIndirectFirstInstance, pname:drawIndirectFirstInstance>> ** <<features-depthClamp, pname:depthClamp>> ** <<features-depthBiasClamp, pname:depthBiasClamp>> ** <<features-samplerAnisotropy, pname:samplerAnisotropy>> ** <<features-fragmentStoresAndAtomics, pname:fragmentStoresAndAtomics>> ** <<features-shaderStorageImageExtendedFormats, pname:shaderStorageImageExtendedFormats>> ** <<features-shaderUniformBufferArrayDynamicIndexing, pname:shaderUniformBufferArrayDynamicIndexing>> ** <<features-shaderSampledImageArrayDynamicIndexing, pname:shaderSampledImageArrayDynamicIndexing>> ** <<features-shaderStorageBufferArrayDynamicIndexing, pname:shaderStorageBufferArrayDynamicIndexing>> ** <<features-shaderStorageImageArrayDynamicIndexing, pname:shaderStorageImageArrayDynamicIndexing>> ** <<features-shaderImageGatherExtended, pname:shaderImageGatherExtended>> ** <<features-shaderInt16, pname:shaderInt16>> ** <<features-largePoints, pname:largePoints>> ** <<features-samplerYcbcrConversion, pname:samplerYcbcrConversion>> ** <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>> ** <<features-variablePointers, pname:variablePointers>> ** <<features-variablePointersStorageBuffer, pname:variablePointersStorageBuffer>> ** <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>> ** <<features-scalarBlockLayout, pname:scalarBlockLayout>> ** <<features-shaderUniformTexelBufferArrayDynamicIndexing, pname:shaderUniformTexelBufferArrayDynamicIndexing>> ** <<features-shaderStorageTexelBufferArrayDynamicIndexing, pname:shaderStorageTexelBufferArrayDynamicIndexing>> ** <<features-shaderInt8, pname:shaderInt8>> ** <<features-storageBuffer8BitAccess, pname:storageBuffer8BitAccess>>
New Macros
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:
- 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:
- 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:
- Extending VkPipelineVertexInputStateCreateInfo:
- Extending VkQueueFamilyProperties2:
- Extending VkSubresourceLayout2:
New Enums
- VkBufferUsageFlagBits2
- VkHostImageCopyFlagBits
- VkLineRasterizationMode
- VkMemoryUnmapFlagBits
- VkPipelineCreateFlagBits2
- VkPipelineRobustnessBufferBehavior
- VkPipelineRobustnessImageBehavior
- VkQueueGlobalPriority
New Bitmasks
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