| Profiles | VP_D3D12_FL_11_0_baseline | VP_D3D12_FL_11_1_baseline | VP_D3D12_FL_12_0_baseline | VP_D3D12_FL_12_0_optimal | VP_D3D12_FL_12_1_baseline | VP_D3D12_FL_12_2_baseline | VP_D3D12_FL_12_2_optimal | VP_D3D12_maximum_nv | VP_D3D12_maximum_radv |
|---|---|---|---|---|---|---|---|---|---|
| Label | Minimum baseline (FL 11.0) | FL 11.1 baseline | FL 12.0 baseline | FL 12.0 optimal configuration | FL 12.1 baseline | FL 12.2 baseline | FL 12.2 optimal | NVIDIA latest | RADV latest |
| Description | Minimum baseline to create a device at all. | Minimum baseline to create a device with FL 11.1. | Minimum baseline to create a device with FL 12.0. | Requirement to create a FL 12.0 device with optimal performance. Shader model 6.6 and optimal descriptor model. | Minimum baseline to create a device with FL 12.1. | Minimum baseline to create a device with FL 12.2 (TODO: missing sampler feedback). | Requirement to create a FL 12.2 device with optimal performance (TODO: missing sampler feedback). Shader model 6.6 and optimal descriptor model. | Represents the maximum feature set vkd3d-proton takes advantage of on NVIDIA. Expected to be supported on latest beta drivers on Turing+. | Represents the maximum feature set vkd3d-proton takes advantage of on RADV. Expected to be supported on latest Mesa Git on RDNA2+. |
| Version | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| Required API version | 1.3.204 | 1.3.204 | 1.3.204 | 1.3.204 | 1.3.204 | 1.3.204 | 1.3.204 | 1.3.204 | 1.3.204 |
| Required profiles | |||||||||
| Fallback profiles | - | - | - | - | - | - | - | - | - |
| Profiles | VP_D3D12_FL_11_0_baseline | VP_D3D12_FL_11_1_baseline | VP_D3D12_FL_12_0_baseline | VP_D3D12_FL_12_0_optimal | VP_D3D12_FL_12_1_baseline | VP_D3D12_FL_12_2_baseline | VP_D3D12_FL_12_2_optimal | VP_D3D12_maximum_nv | VP_D3D12_maximum_radv |
|---|---|---|---|---|---|---|---|---|---|
| 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 | 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 | 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 | 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 | 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 | 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 | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_8bit_storage | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_acceleration_structure | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_bind_memory2 | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_buffer_device_address | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_calibrated_timestamps | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_compute_shader_derivatives | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_copy_commands2 | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_KHR_create_renderpass2 | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 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 | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_deferred_host_operations | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_depth_stencil_resolve | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 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 | 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 | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_draw_indirect_count | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_driver_properties | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_dynamic_rendering | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 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 | 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 | 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 | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_format_feature_flags2 | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_KHR_fragment_shader_barycentric | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_fragment_shading_rate | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_get_memory_requirements2 | 1.1 Core | 1.1 Core | 1.1 Core | 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 | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_imageless_framebuffer | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 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 | 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 | 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 | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_maintenance4 | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_KHR_maintenance5 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_maintenance6 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_maintenance7 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_maintenance8 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_multiview | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_pipeline_library | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_present_id | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_present_wait | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_push_descriptor | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_ray_query | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_ray_tracing_maintenance1 | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_ray_tracing_pipeline | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_relaxed_block_layout | 1.1 Core | 1.1 Core | 1.1 Core | 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 | 1.2 Core | 1.2 Core | 1.2 Core | 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 | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_separate_depth_stencil_layouts | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_shader_atomic_int64 | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 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 | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_shader_float16_int8 | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_shader_float_controls | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_shader_integer_dot_product | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_KHR_shader_maximal_reconvergence | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_shader_non_semantic_info | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_KHR_shader_quad_control | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_shader_subgroup_extended_types | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_shader_terminate_invocation | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_KHR_spirv_1_4 | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 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 | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_swapchain | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_synchronization2 | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_KHR_timeline_semaphore | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_unified_image_layouts | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_uniform_buffer_standard_layout | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 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 | 1.1 Core | 1.1 Core | 1.1 Core |
| VK_KHR_vulkan_memory_model | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_KHR_zero_initialize_workgroup_memory | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_4444_formats | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_conditional_rendering | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_conservative_rasterization | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_custom_border_color | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_depth_bias_control | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_depth_clip_enable | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_descriptor_buffer | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_descriptor_indexing | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_EXT_device_generated_commands | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_dynamic_rendering_unused_attachments | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_EXT_extended_dynamic_state | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_extended_dynamic_state2 | 1.3 Core | 1.3 Core | 1.3 Core | :heavy_check_mark: | 1.3 Core | 1.3 Core | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_external_memory_host | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_fragment_shader_interlock | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
| VK_EXT_graphics_pipeline_library | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_host_query_reset | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_EXT_image_compression_control | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_EXT_image_robustness | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_image_sliced_view_of_3d | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_image_view_min_lod | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_inline_uniform_block | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_line_rasterization | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_memory_priority | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_mesh_shader | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_mutable_descriptor_type | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_pageable_device_local_memory | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: |
| VK_EXT_pipeline_creation_cache_control | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_pipeline_creation_feedback | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_pipeline_library_group_handles | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_private_data | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_robustness2 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_sampler_filter_minmax | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_EXT_scalar_block_layout | 1.2 Core | 1.2 Core | 1.2 Core | :heavy_check_mark: | 1.2 Core | 1.2 Core | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_separate_stencil_usage | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_EXT_shader_demote_to_helper_invocation | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_shader_image_atomic_int64 | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_shader_module_identifier | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_shader_stencil_export | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_EXT_shader_viewport_index_layer | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_EXT_subgroup_size_control | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_swapchain_maintenance1 | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_texel_buffer_alignment | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_texture_compression_astc_hdr | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_tooling_info | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_transform_feedback | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_vertex_attribute_divisor | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_ycbcr_2plane_444_formats | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core | 1.3 Core |
| VK_EXT_zero_initialize_device_memory | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_AMD_buffer_marker | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_AMD_device_coherent_memory | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_AMD_draw_indirect_count | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core | 1.2 Core |
| VK_AMD_shader_core_properties | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_AMD_shader_core_properties2 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_MESA_image_alignment_control | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_NVX_binary_import | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: |
| VK_NVX_image_view_handle | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: |
| VK_NV_device_diagnostic_checkpoints | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: |
| VK_NV_raw_access_chains | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: |
| VK_NV_shader_sm_builtins | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: |
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.
| Profiles | VP_D3D12_FL_11_0_baseline | VP_D3D12_FL_11_1_baseline | VP_D3D12_FL_12_0_baseline | VP_D3D12_FL_12_0_optimal | VP_D3D12_FL_12_1_baseline | VP_D3D12_FL_12_2_baseline | VP_D3D12_FL_12_2_optimal | VP_D3D12_maximum_nv | VP_D3D12_maximum_radv |
|---|---|---|---|---|---|---|---|---|---|
| Vulkan 1.0 | |||||||||
| depthBiasClamp | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| depthBounds | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| depthClamp | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| drawIndirectFirstInstance | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| dualSrcBlend | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| fillModeNonSolid | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| fragmentStoresAndAtomics | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| fullDrawIndexUint32 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| geometryShader | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| imageCubeArray | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| independentBlend | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| logicOp | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| multiDrawIndirect | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| multiViewport | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| occlusionQueryPrecise | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| pipelineStatisticsQuery | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| robustBufferAccess | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| sampleRateShading | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| samplerAnisotropy | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderClipDistance | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderCullDistance | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderFloat64 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| shaderImageGatherExtended | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderInt16 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderInt64 | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderResourceMinLod | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderResourceResidency | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderSampledImageArrayDynamicIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderStorageBufferArrayDynamicIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderStorageImageArrayDynamicIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderStorageImageExtendedFormats | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderStorageImageWriteWithoutFormat | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderUniformBufferArrayDynamicIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| sparseBinding | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| sparseResidencyAliased | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| sparseResidencyBuffer | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| sparseResidencyImage2D | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| sparseResidencyImage3D | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| tessellationShader | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| textureCompressionBC | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| vertexPipelineStoresAndAtomics | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Vulkan 1.1 | |||||||||
| shaderDrawParameters | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Vulkan 1.2 | |||||||||
| bufferDeviceAddress | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorBindingPartiallyBound | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorBindingSampledImageUpdateAfterBind | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorBindingStorageBufferUpdateAfterBind | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorBindingStorageImageUpdateAfterBind | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorBindingStorageTexelBufferUpdateAfterBind | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorBindingUniformTexelBufferUpdateAfterBind | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorBindingUpdateUnusedWhilePending | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorBindingVariableDescriptorCount | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| drawIndirectCount | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| hostQueryReset | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| runtimeDescriptorArray | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| samplerFilterMinmax | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| samplerMirrorClampToEdge | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| scalarBlockLayout | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
| separateDepthStencilLayouts | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderBufferInt64Atomics | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderFloat16 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| shaderInt8 | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderOutputLayer | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderOutputViewportIndex | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderSampledImageArrayNonUniformIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderSharedInt64Atomics | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderStorageBufferArrayNonUniformIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderStorageImageArrayNonUniformIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderStorageTexelBufferArrayDynamicIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderStorageTexelBufferArrayNonUniformIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderSubgroupExtendedTypes | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| shaderUniformTexelBufferArrayDynamicIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderUniformTexelBufferArrayNonUniformIndexing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| timelineSemaphore | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| uniformBufferStandardLayout | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| vulkanMemoryModel | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| vulkanMemoryModelDeviceScope | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Vulkan 1.3 | |||||||||
| computeFullSubgroups | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| dynamicRendering | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| maintenance4 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| pipelineCreationCacheControl | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderDemoteToHelperInvocation | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| shaderIntegerDotProduct | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| subgroupSizeControl | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| synchronization2 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Vulkan 1.4 | |||||||||
| bresenhamLines | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| maintenance5 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| maintenance6 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| rectangularLines | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| smoothLines | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| vertexAttributeInstanceRateDivisor | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| vertexAttributeInstanceRateZeroDivisor | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_acceleration_structure | |||||||||
| accelerationStructure | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_buffer_device_address | |||||||||
| bufferDeviceAddress | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_compute_shader_derivatives | |||||||||
| computeDerivativeGroupLinear | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_dynamic_rendering | |||||||||
| dynamicRendering | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_fragment_shader_barycentric | |||||||||
| fragmentShaderBarycentric | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_fragment_shading_rate | |||||||||
| attachmentFragmentShadingRate | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| pipelineFragmentShadingRate | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| primitiveFragmentShadingRate | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_line_rasterization | |||||||||
| bresenhamLines | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| rectangularLines | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| smoothLines | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| VK_KHR_maintenance4 | |||||||||
| maintenance4 | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_maintenance5 | |||||||||
| maintenance5 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_maintenance6 | |||||||||
| maintenance6 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_maintenance7 | |||||||||
| maintenance7 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_maintenance8 | |||||||||
| maintenance8 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_present_id | |||||||||
| presentId | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_present_wait | |||||||||
| presentWait | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_ray_query | |||||||||
| rayQuery | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_ray_tracing_maintenance1 | |||||||||
| rayTracingMaintenance1 | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| rayTracingPipelineTraceRaysIndirect2 | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_ray_tracing_pipeline | |||||||||
| rayTracingPipeline | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| rayTracingPipelineTraceRaysIndirect | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| rayTraversalPrimitiveCulling | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_robustness2 | |||||||||
| nullDescriptor | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| robustBufferAccess2 | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| robustImageAccess2 | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_separate_depth_stencil_layouts | |||||||||
| separateDepthStencilLayouts | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_shader_atomic_int64 | |||||||||
| shaderBufferInt64Atomics | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
| shaderSharedInt64Atomics | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
| VK_KHR_shader_float16_int8 | |||||||||
| shaderFloat16 | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| shaderInt8 | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
| VK_KHR_shader_integer_dot_product | |||||||||
| shaderIntegerDotProduct | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
| VK_KHR_shader_maximal_reconvergence | |||||||||
| shaderMaximalReconvergence | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_shader_quad_control | |||||||||
| shaderQuadControl | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_shader_subgroup_extended_types | |||||||||
| shaderSubgroupExtendedTypes | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| VK_KHR_synchronization2 | |||||||||
| synchronization2 | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_timeline_semaphore | |||||||||
| timelineSemaphore | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_unified_image_layouts | |||||||||
| unifiedImageLayouts | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_KHR_uniform_buffer_standard_layout | |||||||||
| uniformBufferStandardLayout | :x: | :x: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_vertex_attribute_divisor | |||||||||
| vertexAttributeInstanceRateDivisor | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| vertexAttributeInstanceRateZeroDivisor | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_KHR_vulkan_memory_model | |||||||||
| vulkanMemoryModel | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| vulkanMemoryModelDeviceScope | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_EXT_conditional_rendering | |||||||||
| conditionalRendering | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_custom_border_color | |||||||||
| customBorderColorWithoutFormat | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| customBorderColors | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_depth_bias_control | |||||||||
| depthBiasControl | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| leastRepresentableValueForceUnormRepresentation | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_depth_clip_enable | |||||||||
| depthClipEnable | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_descriptor_buffer | |||||||||
| descriptorBuffer | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| descriptorBufferPushDescriptors | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_descriptor_indexing | |||||||||
| descriptorBindingPartiallyBound | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| descriptorBindingSampledImageUpdateAfterBind | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| descriptorBindingStorageBufferUpdateAfterBind | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| descriptorBindingStorageImageUpdateAfterBind | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| descriptorBindingStorageTexelBufferUpdateAfterBind | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| descriptorBindingUniformTexelBufferUpdateAfterBind | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| descriptorBindingUpdateUnusedWhilePending | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| descriptorBindingVariableDescriptorCount | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| runtimeDescriptorArray | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| shaderSampledImageArrayNonUniformIndexing | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| shaderStorageBufferArrayNonUniformIndexing | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| shaderStorageImageArrayNonUniformIndexing | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| shaderStorageTexelBufferArrayDynamicIndexing | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| shaderStorageTexelBufferArrayNonUniformIndexing | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| shaderUniformTexelBufferArrayDynamicIndexing | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| shaderUniformTexelBufferArrayNonUniformIndexing | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_EXT_device_generated_commands | |||||||||
| deviceGeneratedCommands | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_dynamic_rendering_unused_attachments | |||||||||
| dynamicRenderingUnusedAttachments | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_EXT_extended_dynamic_state2 | |||||||||
| extendedDynamicState2 | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| extendedDynamicState2PatchControlPoints | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_fragment_shader_interlock | |||||||||
| fragmentShaderPixelInterlock | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
| fragmentShaderSampleInterlock | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
| VK_EXT_graphics_pipeline_library | |||||||||
| graphicsPipelineLibrary | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_host_query_reset | |||||||||
| hostQueryReset | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_EXT_image_compression_control | |||||||||
| imageCompressionControl | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_EXT_image_sliced_view_of_3d | |||||||||
| imageSlicedViewOf3D | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_image_view_min_lod | |||||||||
| minLod | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_line_rasterization | |||||||||
| bresenhamLines | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| rectangularLines | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| smoothLines | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_memory_priority | |||||||||
| memoryPriority | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_mesh_shader | |||||||||
| meshShader | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| primitiveFragmentShadingRateMeshShader | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| taskShader | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_mutable_descriptor_type | |||||||||
| mutableDescriptorType | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_pageable_device_local_memory | |||||||||
| pageableDeviceLocalMemory | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: |
| VK_EXT_pipeline_creation_cache_control | |||||||||
| pipelineCreationCacheControl | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
| VK_EXT_pipeline_library_group_handles | |||||||||
| pipelineLibraryGroupHandles | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_robustness2 | |||||||||
| nullDescriptor | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| robustBufferAccess2 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| robustImageAccess2 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_scalar_block_layout | |||||||||
| scalarBlockLayout | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_shader_demote_to_helper_invocation | |||||||||
| shaderDemoteToHelperInvocation | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: |
| VK_EXT_shader_image_atomic_int64 | |||||||||
| shaderImageInt64Atomics | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_shader_module_identifier | |||||||||
| shaderModuleIdentifier | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_subgroup_size_control | |||||||||
| computeFullSubgroups | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
| subgroupSizeControl | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
| VK_EXT_swapchain_maintenance1 | |||||||||
| swapchainMaintenance1 | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_transform_feedback | |||||||||
| geometryStreams | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| transformFeedback | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_vertex_attribute_divisor | |||||||||
| vertexAttributeInstanceRateDivisor | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| vertexAttributeInstanceRateZeroDivisor | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| VK_EXT_zero_initialize_device_memory | |||||||||
| zeroInitializeDeviceMemory | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| VK_AMD_device_coherent_memory | |||||||||
| deviceCoherentMemory | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_MESA_image_alignment_control | |||||||||
| imageAlignmentControl | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
| VK_NV_compute_shader_derivatives | |||||||||
| computeDerivativeGroupLinear | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
| VK_NV_fragment_shader_barycentric | |||||||||
| fragmentShaderBarycentric | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :warning: | :warning: |
| VK_NV_raw_access_chains | |||||||||
| shaderRawAccessChains | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: |
| VK_VALVE_mutable_descriptor_type | |||||||||
| mutableDescriptorType | :x: | :x: | :x: | :warning: | :x: | :x: | :warning: | :warning: | :warning: |
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.
| Profiles | VP_D3D12_FL_11_0_baseline | VP_D3D12_FL_11_1_baseline | VP_D3D12_FL_12_0_baseline | VP_D3D12_FL_12_0_optimal | VP_D3D12_FL_12_1_baseline | VP_D3D12_FL_12_2_baseline | VP_D3D12_FL_12_2_optimal | VP_D3D12_maximum_nv | VP_D3D12_maximum_radv |
|---|---|---|---|---|---|---|---|---|---|
| Vulkan 1.0 | |||||||||
| bufferImageGranularity (min,mul) | 65536 | 65536 | 65536 | 65536 | 65536 | 65536 | 65536 | 65536 | 65536 |
| maxPushConstantsSize (max) | - | - | - | 256 | - | - | - | - | - |
| residencyAlignedMipSize (not) | - | - | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE |
| residencyNonResidentStrict (max) | - | - | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| residencyStandard2DBlockShape (max) | - | - | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| residencyStandard3DBlockShape (max) | - | - | - | - | - | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| Vulkan 1.1 | |||||||||
| subgroupSize (max,pot) | 1 | 1 | - | - | - | - | - | - | - |
| subgroupSupportedOperations | (VK_SUBGROUP_FEATURE_BASIC_BIT) | (VK_SUBGROUP_FEATURE_BASIC_BIT) | (VK_SUBGROUP_FEATURE_BALLOT_BIT | VK_SUBGROUP_FEATURE_BASIC_BIT | VK_SUBGROUP_FEATURE_VOTE_BIT | VK_SUBGROUP_FEATURE_SHUFFLE_BIT | VK_SUBGROUP_FEATURE_QUAD_BIT | VK_SUBGROUP_FEATURE_ARITHMETIC_BIT) | - |
| subgroupSupportedStages | - | - | (VK_SHADER_STAGE_COMPUTE_BIT | VK_SHADER_STAGE_FRAGMENT_BIT) | - | (VK_SHADER_STAGE_COMPUTE_BIT | VK_SHADER_STAGE_FRAGMENT_BIT) | (VK_SHADER_STAGE_COMPUTE_BIT | VK_SHADER_STAGE_FRAGMENT_BIT) |
| Vulkan 1.2 | |||||||||
| denormBehaviorIndependence (exact) | - | - | - | - | - | - | - | - | VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY |
| filterMinmaxSingleComponentFormats (max) | - | - | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| maxPerStageDescriptorUpdateAfterBindSampledImages (max) | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 |
| maxPerStageDescriptorUpdateAfterBindStorageBuffers (max) | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 |
| maxPerStageDescriptorUpdateAfterBindStorageImages (max) | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 |
| robustBufferAccessUpdateAfterBind (max) | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| shaderDenormFlushToZeroFloat32 (max) | - | - | - | - | - | - | - | - | VK_TRUE |
| shaderDenormPreserveFloat16 (max) | - | - | - | - | - | - | - | - | VK_TRUE |
| shaderDenormPreserveFloat32 (max) | - | - | - | - | - | - | - | - | VK_TRUE |
| shaderDenormPreserveFloat64 (max) | - | - | - | - | - | - | - | - | VK_TRUE |
| Vulkan 1.3 | |||||||||
| requiredSubgroupSizeStages | - | - | - | (VK_SHADER_STAGE_COMPUTE_BIT) | - | - | (VK_SHADER_STAGE_COMPUTE_BIT) | (VK_SHADER_STAGE_COMPUTE_BIT) | (VK_SHADER_STAGE_COMPUTE_BIT) |
| storageTexelBufferOffsetSingleTexelAlignment (exact) | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| uniformTexelBufferOffsetSingleTexelAlignment (exact) | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| Vulkan 1.4 | |||||||||
| maxPushDescriptors (max) | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 |
| VK_KHR_fragment_shading_rate | |||||||||
| fragmentShadingRateNonTrivialCombinerOps (max) | - | - | - | - | - | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| VK_KHR_push_descriptor | |||||||||
| maxPushDescriptors (max) | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 |
| VK_KHR_shader_float_controls | |||||||||
| denormBehaviorIndependence (exact) | - | - | - | - | - | - | - | - | VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY |
| shaderDenormFlushToZeroFloat32 (max) | - | - | - | - | - | - | - | - | VK_TRUE |
| shaderDenormPreserveFloat16 (max) | - | - | - | - | - | - | - | - | VK_TRUE |
| shaderDenormPreserveFloat32 (max) | - | - | - | - | - | - | - | - | VK_TRUE |
| shaderDenormPreserveFloat64 (max) | - | - | - | - | - | - | - | - | VK_TRUE |
| VK_EXT_conservative_rasterization | |||||||||
| degenerateTrianglesRasterized (exact) | - | - | - | - | - | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| fullyCoveredFragmentShaderInputVariable (max) | - | - | - | - | - | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| VK_EXT_custom_border_color | |||||||||
| maxCustomBorderColorSamplers (max) | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 |
| VK_EXT_descriptor_indexing | |||||||||
| maxPerStageDescriptorUpdateAfterBindSampledImages (max) | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 |
| maxPerStageDescriptorUpdateAfterBindStorageBuffers (max) | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 |
| maxPerStageDescriptorUpdateAfterBindStorageImages (max) | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 |
| robustBufferAccessUpdateAfterBind (max) | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| VK_EXT_graphics_pipeline_library | |||||||||
| graphicsPipelineLibraryFastLinking (max) | - | - | - | VK_TRUE | - | - | VK_TRUE | VK_TRUE | VK_TRUE |
| graphicsPipelineLibraryIndependentInterpolationDecoration (max) | - | - | - | VK_TRUE | - | - | VK_TRUE | VK_TRUE | VK_TRUE |
| VK_EXT_sampler_filter_minmax | |||||||||
| filterMinmaxSingleComponentFormats (max) | - | - | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| VK_EXT_subgroup_size_control | |||||||||
| requiredSubgroupSizeStages | - | - | - | (VK_SHADER_STAGE_COMPUTE_BIT) | - | - | (VK_SHADER_STAGE_COMPUTE_BIT) | (VK_SHADER_STAGE_COMPUTE_BIT) | (VK_SHADER_STAGE_COMPUTE_BIT) |
| VK_EXT_texel_buffer_alignment | |||||||||
| storageTexelBufferOffsetSingleTexelAlignment (exact) | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| uniformTexelBufferOffsetSingleTexelAlignment (exact) | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| VK_EXT_transform_feedback | |||||||||
| transformFeedbackDraw (max) | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE |
| transformFeedbackQueries (max) | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE | VK_TRUE |
| transformFeedbackRasterizationStreamSelect (max) | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE |
| transformFeedbackStreamsLinesTriangles (max) | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE | VK_FALSE |
| Profiles | VP_D3D12_FL_11_0_baseline | VP_D3D12_FL_11_1_baseline | VP_D3D12_FL_12_0_baseline | VP_D3D12_FL_12_0_optimal | VP_D3D12_FL_12_1_baseline | VP_D3D12_FL_12_2_baseline | VP_D3D12_FL_12_2_optimal | VP_D3D12_maximum_nv | VP_D3D12_maximum_radv |
|---|---|---|---|---|---|---|---|---|---|
| Queue family #0 | |||||||||
| queueCount (max) | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||
| queueFlags | (VK_QUEUE_SPARSE_BINDING_BIT) | (VK_QUEUE_SPARSE_BINDING_BIT) | (VK_QUEUE_SPARSE_BINDING_BIT) | (VK_QUEUE_SPARSE_BINDING_BIT) | (VK_QUEUE_SPARSE_BINDING_BIT) | (VK_QUEUE_SPARSE_BINDING_BIT) | (VK_QUEUE_SPARSE_BINDING_BIT) | ||
| Queue family #1 | |||||||||
| queueFlags | (VK_QUEUE_TRANSFER_BIT) | (VK_QUEUE_TRANSFER_BIT) | (VK_QUEUE_TRANSFER_BIT) | (VK_QUEUE_TRANSFER_BIT) | |||||
| timestampValidBits (bits) | 1 | 1 | 1 | 1 |
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.
| Profiles | VP_D3D12_FL_11_0_baseline | VP_D3D12_FL_11_1_baseline | VP_D3D12_FL_12_0_baseline | VP_D3D12_FL_12_0_optimal | VP_D3D12_FL_12_1_baseline | VP_D3D12_FL_12_2_baseline | VP_D3D12_FL_12_2_optimal | VP_D3D12_maximum_nv | VP_D3D12_maximum_radv |
|---|---|---|---|---|---|---|---|---|---|
| VK_FORMAT_A2B10G10R10_UNORM_PACK32 | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R16G16B16A16_SFLOAT | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R16G16B16A16_SNORM | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R16G16B16A16_UNORM | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R16G16_SFLOAT | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R16G16_SNORM | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R16G16_UNORM | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R32G32B32_SFLOAT | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R32G32_SFLOAT | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R8G8B8A8_SNORM | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R8G8B8A8_UNORM | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R8G8_SNORM | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | |||||
| VK_FORMAT_R8G8_UNORM | |||||||||
| bufferFeatures | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) | (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) |