Files
UnrealEngine/Engine/Source/ThirdParty/Vulkan/profiles/unreal_profile_doc.md
2025-05-18 13:04:45 +08:00

44 KiB

LunarG

Copyright (c) 2021-2024 LunarG, Inc.

Creative Commons

Vulkan Profiles Definitions

Vulkan Profiles List

Profiles VP_UE_Vulkan_ES3_1_Android VP_UE_Vulkan_SM5 VP_UE_Vulkan_SM5_Android VP_UE_Vulkan_SM5_Android_RT VP_UE_Vulkan_SM6 VP_UE_Vulkan_SM6_RT
Label Epic Games - Unreal Engine - Android Vulkan - ES 3.1 Epic Games - Unreal Engine - Desktop Vulkan SM5 Epic Games - Unreal Engine - Android Vulkan SM5 Epic Games - Unreal Engine - Android Vulkan SM5 with RayTracing Epic Games - Unreal Engine - Desktop Vulkan SM6 Epic Games - Unreal Engine - Desktop Vulkan RT
Description A profile that describes the minimum requirements of the engine for using ES 3.1 feature level with Vulkan on Android. A profile that describes the minimum requirements of the engine for using Vulkan. A profile that describes the minimum requirements of the engine for using Vulkan on Android. A profile that describes the RayTracing requirements of the engine with Vulkan on Android. A profile that describes the requirements of the engine for using Vulkan in SM6. A profile that describes the RayTracing requirements of the engine with Vulkan.
Version 1 1 1 1 1 1
Required API version 1.1.0 1.1.0 1.1.0 1.2.0 1.3.0 1.3.0
Required profiles
Fallback profiles - - - - - -

Vulkan Profiles Extensions

  • ✔️ indicates that the extension is defined in the profile
  • "X.X Core" indicates that the extension is not defined in the profile but the extension is promoted to the specified core API version that is smaller than or equal to the minimum required API version of the profile
  • indicates that the extension is neither defined in the profile nor it is promoted to a core API version that is smaller than or equal to the minimum required API version of the profile
Profiles VP_UE_Vulkan_ES3_1_Android VP_UE_Vulkan_SM5 VP_UE_Vulkan_SM5_Android VP_UE_Vulkan_SM5_Android_RT VP_UE_Vulkan_SM6 VP_UE_Vulkan_SM6_RT
Instance extensions
VK_KHR_device_group_creation 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_external_fence_capabilities 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_external_memory_capabilities 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_external_semaphore_capabilities 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_get_physical_device_properties2 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
Device extensions
VK_KHR_16bit_storage 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_8bit_storage 1.2 Core 1.2 Core 1.2 Core
VK_KHR_acceleration_structure ✔️ ✔️
VK_KHR_bind_memory2 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_buffer_device_address ✔️ ✔️ ✔️
VK_KHR_compute_shader_derivatives ✔️ ✔️
VK_KHR_copy_commands2 1.3 Core 1.3 Core
VK_KHR_create_renderpass2 1.2 Core 1.2 Core 1.2 Core
VK_KHR_dedicated_allocation 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_deferred_host_operations ✔️ ✔️
VK_KHR_depth_stencil_resolve 1.2 Core 1.2 Core 1.2 Core
VK_KHR_descriptor_update_template 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_device_group 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_draw_indirect_count 1.2 Core 1.2 Core 1.2 Core
VK_KHR_driver_properties 1.2 Core 1.2 Core 1.2 Core
VK_KHR_dynamic_rendering 1.3 Core 1.3 Core
VK_KHR_external_fence 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_external_memory 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_external_semaphore 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_format_feature_flags2 1.3 Core 1.3 Core
VK_KHR_get_memory_requirements2 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_image_format_list 1.2 Core 1.2 Core 1.2 Core
VK_KHR_imageless_framebuffer 1.2 Core 1.2 Core 1.2 Core
VK_KHR_maintenance1 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_maintenance2 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_maintenance3 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_maintenance4 ✔️ ✔️
VK_KHR_multiview 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_pipeline_library ✔️ ✔️
VK_KHR_ray_query ✔️ ✔️
VK_KHR_ray_tracing_pipeline ✔️
VK_KHR_ray_tracing_position_fetch ✔️
VK_KHR_relaxed_block_layout 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_sampler_mirror_clamp_to_edge 1.2 Core 1.2 Core 1.2 Core
VK_KHR_sampler_ycbcr_conversion 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_separate_depth_stencil_layouts 1.2 Core ✔️ ✔️
VK_KHR_shader_atomic_int64 1.2 Core ✔️ ✔️
VK_KHR_shader_draw_parameters 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_shader_float16_int8 1.2 Core 1.2 Core 1.2 Core
VK_KHR_shader_float_controls ✔️ 1.2 Core ✔️
VK_KHR_shader_integer_dot_product 1.3 Core 1.3 Core
VK_KHR_shader_non_semantic_info 1.3 Core 1.3 Core
VK_KHR_shader_subgroup_extended_types 1.2 Core 1.2 Core 1.2 Core
VK_KHR_shader_terminate_invocation 1.3 Core 1.3 Core
VK_KHR_spirv_1_4 ✔️ 1.2 Core ✔️
VK_KHR_storage_buffer_storage_class 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_synchronization2 ✔️ ✔️
VK_KHR_timeline_semaphore 1.2 Core ✔️ ✔️
VK_KHR_uniform_buffer_standard_layout 1.2 Core 1.2 Core 1.2 Core
VK_KHR_variable_pointers 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core 1.1 Core
VK_KHR_vulkan_memory_model 1.2 Core 1.2 Core 1.2 Core
VK_KHR_zero_initialize_workgroup_memory 1.3 Core 1.3 Core
VK_EXT_4444_formats 1.3 Core 1.3 Core
VK_EXT_calibrated_timestamps ✔️ ✔️
VK_EXT_descriptor_buffer ✔️ ✔️
VK_EXT_descriptor_indexing 1.2 Core ✔️ ✔️
VK_EXT_extended_dynamic_state 1.3 Core 1.3 Core
VK_EXT_extended_dynamic_state2 1.3 Core 1.3 Core
VK_EXT_host_query_reset 1.2 Core 1.2 Core ✔️
VK_EXT_image_robustness 1.3 Core 1.3 Core
VK_EXT_inline_uniform_block 1.3 Core 1.3 Core
VK_EXT_mesh_shader ✔️ ✔️
VK_EXT_mutable_descriptor_type ✔️ ✔️
VK_EXT_pipeline_creation_cache_control 1.3 Core 1.3 Core
VK_EXT_pipeline_creation_feedback 1.3 Core 1.3 Core
VK_EXT_private_data 1.3 Core 1.3 Core
VK_EXT_sampler_filter_minmax 1.2 Core 1.2 Core 1.2 Core
VK_EXT_scalar_block_layout ✔️ ✔️ ✔️
VK_EXT_separate_stencil_usage 1.2 Core 1.2 Core 1.2 Core
VK_EXT_shader_demote_to_helper_invocation 1.3 Core 1.3 Core
VK_EXT_shader_image_atomic_int64 ✔️ ✔️
VK_EXT_shader_viewport_index_layer 1.2 Core 1.2 Core 1.2 Core
VK_EXT_subgroup_size_control 1.3 Core 1.3 Core
VK_EXT_texel_buffer_alignment 1.3 Core 1.3 Core
VK_EXT_texture_compression_astc_hdr 1.3 Core 1.3 Core
VK_EXT_tooling_info 1.3 Core 1.3 Core
VK_EXT_ycbcr_2plane_444_formats 1.3 Core 1.3 Core
VK_AMD_draw_indirect_count 1.2 Core 1.2 Core 1.2 Core

Vulkan Profile Features

Note

: The table below only contains features explicitly defined by the corresponding profile. Further features may be supported by the profiles in accordance to the requirements defined in the "Feature Requirements" section of the appropriate version of the Vulkan API Specification.

  • ✔️ indicates that the feature is defined in the profile (hover over the symbol to view the structure and corresponding extension or core API version where the feature is defined in the profile)
  • ⚠️ indicates that the feature is not defined in the profile but an equivalent feature is (hover over the symbol to view the structure and corresponding extension or core API version where the feature is defined in the profile)
  • indicates that neither the feature nor an equivalent feature is defined in the profile
Profiles VP_UE_Vulkan_ES3_1_Android VP_UE_Vulkan_SM5 VP_UE_Vulkan_SM5_Android VP_UE_Vulkan_SM5_Android_RT VP_UE_Vulkan_SM6 VP_UE_Vulkan_SM6_RT
Vulkan 1.0
fragmentStoresAndAtomics ✔️ ✔️ ✔️ ✔️
shaderInt64 ✔️ ✔️
Vulkan 1.2
bufferDeviceAddress ✔️ ✔️
descriptorBindingPartiallyBound ⚠️ ⚠️
descriptorBindingUpdateUnusedWhilePending ⚠️ ⚠️
descriptorBindingVariableDescriptorCount ⚠️ ⚠️
hostQueryReset ⚠️
runtimeDescriptorArray ⚠️ ⚠️
scalarBlockLayout ⚠️ ⚠️ ⚠️
separateDepthStencilLayouts ✔️ ✔️
shaderBufferInt64Atomics ✔️ ✔️
timelineSemaphore ⚠️ ⚠️
Vulkan 1.3
maintenance4 ✔️ ✔️
synchronization2 ✔️ ✔️
VK_KHR_acceleration_structure
accelerationStructure ✔️ ✔️
descriptorBindingAccelerationStructureUpdateAfterBind ✔️ ✔️
VK_KHR_buffer_device_address
bufferDeviceAddress ⚠️ ⚠️
VK_KHR_compute_shader_derivatives
computeDerivativeGroupLinear ✔️ ✔️
VK_KHR_maintenance4
maintenance4 ⚠️ ⚠️
VK_KHR_ray_query
rayQuery ✔️ ✔️
VK_KHR_ray_tracing_pipeline
rayTracingPipeline ✔️
rayTraversalPrimitiveCulling ✔️
VK_KHR_ray_tracing_position_fetch
rayTracingPositionFetch ✔️
VK_KHR_separate_depth_stencil_layouts
separateDepthStencilLayouts ⚠️ ⚠️
VK_KHR_shader_atomic_int64
shaderBufferInt64Atomics ⚠️ ⚠️
VK_KHR_synchronization2
synchronization2 ⚠️ ⚠️
VK_KHR_timeline_semaphore
timelineSemaphore ✔️ ✔️
VK_EXT_descriptor_buffer
descriptorBuffer ✔️ ✔️
VK_EXT_descriptor_indexing
descriptorBindingPartiallyBound ✔️ ✔️
descriptorBindingUpdateUnusedWhilePending ✔️ ✔️
descriptorBindingVariableDescriptorCount ✔️ ✔️
runtimeDescriptorArray ✔️ ✔️
VK_EXT_host_query_reset
hostQueryReset ✔️
VK_EXT_mesh_shader
meshShader ✔️ ✔️
multiviewMeshShader ✔️ ✔️
taskShader ✔️ ✔️
VK_EXT_mutable_descriptor_type
mutableDescriptorType ✔️ ✔️
VK_EXT_scalar_block_layout
scalarBlockLayout ✔️ ✔️ ✔️
VK_EXT_shader_image_atomic_int64
shaderImageInt64Atomics ✔️ ✔️
VK_NV_compute_shader_derivatives
computeDerivativeGroupLinear ⚠️ ⚠️
VK_VALVE_mutable_descriptor_type
mutableDescriptorType ⚠️ ⚠️

Vulkan Profile Limits (Properties)

Note

: The table below only contains properties/limits explicitly defined by the corresponding profile. Further properties/limits may be supported by the profiles in accordance to the requirements defined in the "Limit Requirements" section of the appropriate version of the Vulkan API Specification.

  • "valueWithRegularFont" indicates that the limit/property is defined in the profile (hover over the value to view the structure and corresponding extension or core API version where the limit/property is defined in the profile)
  • "valueWithItalicFont" indicates that the limit/property is not defined in the profile but an equivalent limit/property is (hover over the symbol to view the structure and corresponding extension or core API version where the limit/property is defined in the profile)
  • "-" indicates that neither the limit/property nor an equivalent limit/property is defined in the profile
Profiles VP_UE_Vulkan_ES3_1_Android VP_UE_Vulkan_SM5 VP_UE_Vulkan_SM5_Android VP_UE_Vulkan_SM5_Android_RT VP_UE_Vulkan_SM6 VP_UE_Vulkan_SM6_RT
Vulkan 1.0
maxBoundDescriptorSets (max) - 4 - 7 9 9
timestampComputeAndGraphics - - - - VK_TRUE VK_TRUE
VK_EXT_mesh_shader
maxMeshWorkGroupInvocations (max) - - - - 128 128

Vulkan Profile Queue Families

  • "valueWithRegularFont" indicates that the queue family property is defined in the profile (hover over the value to view the structure and corresponding extension or core API version where the queue family property is defined in the profile)
  • "valueWithItalicFont" indicates that the queue family property is not defined in the profile but an equivalent queue family property is (hover over the symbol to view the structure and corresponding extension or core API version where the queue family property is defined in the profile)
  • "-" indicates that neither the queue family property nor an equivalent queue family property is defined in the profile
  • Empty cells next to the properties of a particular queue family definition section indicate that the profile does not have a corresponding queue family definition
Profiles VP_UE_Vulkan_ES3_1_Android VP_UE_Vulkan_SM5 VP_UE_Vulkan_SM5_Android VP_UE_Vulkan_SM5_Android_RT VP_UE_Vulkan_SM6 VP_UE_Vulkan_SM6_RT

Vulkan Profile Formats

Note

: The table below only contains formats and properties explicitly defined by the corresponding profile. Further formats and properties may be supported by the profiles in accordance to the requirements defined in the "Required Format Support" section of the appropriate version of the Vulkan API Specification.

  • "valueWithRegularFont" indicates that the format property is defined in the profile (hover over the value to view the structure and corresponding extension or core API version where the format property is defined in the profile)
  • "valueWithItalicFont" indicates that the format property is not defined in the profile but an equivalent format property is (hover over the symbol to view the structure and corresponding extension or core API version where the format property is defined in the profile)
  • "-" indicates that neither the format property nor an equivalent format property is defined in the profile
  • Empty cells next to the properties of a particular format definition section indicate that the profile does not have a corresponding format definition
Profiles VP_UE_Vulkan_ES3_1_Android VP_UE_Vulkan_SM5 VP_UE_Vulkan_SM5_Android VP_UE_Vulkan_SM5_Android_RT VP_UE_Vulkan_SM6 VP_UE_Vulkan_SM6_RT
VK_FORMAT_R64_UINT
optimalTilingFeatures (VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT) (VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT)

Vulkan Profile Video Profiles

The table below lists the video profiles (or class of video profiles) that any profile defines requirements for. Video profile names take the following form:

"(General|[<codec>] <category>) [([<subsampling>] [<bits>])] [<codecSpecificProfileInfo>]"

  • "General" refers to general requirements for all video profiles.
  • <category> is the category of the video profile requirements (e.g. "Decode" or "Encode").
  • <codec> identifies the specific codec (e.g. H.264, H.265, AV1) the requirements apply to. If not indicated, the requirements apply to all supported video profiles falling in the specified category.
  • <subsampling> indicates the chroma subsampling (e.g. 4:2:0, 4:2:2, 4:4:4, or monochrome). If not indicated, the requirements apply to all supported chroma subsampling modes.
  • <bits> indicates the luma and chroma bit depth (e.g. 8-bit, 10-bit, or e.g. 10:8-bit for mixed bit depths). If not indicated, the requirements apply to all supported bit depths. Partial, luma-only or chroma-only "wildcard" requirements are indicated with an asterisk in place of the corresponding bit depth (e.g. 10:*-bit or *:8-bit).
  • <codecSpecificProfileInfo> indicates additional codec-specific video profile information (e.g. "Main", "High"). If not indicated, the requirements apply to all video profiles of the codec.
  • ✔️ indicates that the profile defines requirements for the video profile (or class of video profiles)
  • indicates that that the profile does not define requirements for the video profile (or class of video profiles)
Profiles VP_UE_Vulkan_ES3_1_Android VP_UE_Vulkan_SM5 VP_UE_Vulkan_SM5_Android VP_UE_Vulkan_SM5_Android_RT VP_UE_Vulkan_SM6 VP_UE_Vulkan_SM6_RT