12 KiB
Vulkan extension support
This is a list of the currently supported vulkan extensions, in a bit more readable format than the code.
Maintainers can update this file by updating vk.xml in this folder and running ./check_extensions.sh which will output any new extensions that haven't been filed in a category below. This will also update all_exts.txt which needs to be committed too when this file is updated to keep things in sync.
Supported
VK_AMD_buffer_markerVK_AMD_device_coherent_memoryVK_AMD_display_native_hdrVK_AMD_gcn_shaderVK_AMD_gpu_shader_half_floatVK_AMD_gpu_shader_int16VK_AMD_memory_overallocation_behaviorVK_AMD_mixed_attachment_samplesVK_AMD_negative_viewport_heightVK_AMD_shader_ballotVK_AMD_shader_core_propertiesVK_AMD_shader_explicit_vertex_parameterVK_AMD_shader_fragment_maskVK_AMD_shader_image_load_store_lodVK_AMD_shader_trinary_minmaxVK_AMD_texture_gather_bias_lodVK_ANDROID_external_memory_android_hardware_bufferVK_EXT_4444_formatsVK_EXT_acquire_drm_displayVK_EXT_acquire_xlib_displayVK_EXT_astc_decode_modeVK_EXT_attachment_feedback_loop_dynamic_stateVK_EXT_attachment_feedback_loop_layoutVK_EXT_border_color_swizzleVK_EXT_buffer_device_addressVK_EXT_calibrated_timestampsVK_EXT_color_write_enableVK_EXT_conditional_renderingVK_EXT_conservative_rasterizationVK_EXT_custom_border_colorVK_EXT_debug_markerVK_EXT_debug_reportVK_EXT_debug_utilsVK_EXT_depth_clamp_zero_oneVK_EXT_depth_clip_controlVK_EXT_depth_clip_enableVK_EXT_depth_range_unrestrictedVK_EXT_descriptor_indexingVK_EXT_direct_mode_displayVK_EXT_discard_rectanglesVK_EXT_display_controlVK_EXT_display_surface_counterVK_EXT_extended_dynamic_stateVK_EXT_extended_dynamic_state2VK_EXT_extended_dynamic_state3VK_EXT_external_memory_dma_bufVK_EXT_filter_cubicVK_EXT_fragment_density_mapVK_EXT_fragment_density_map2VK_EXT_fragment_shader_interlockVK_EXT_full_screen_exclusiveVK_EXT_global_priority_queryVK_EXT_global_priorityVK_EXT_graphics_pipeline_libraryVK_EXT_hdr_metadataVK_EXT_headless_surfaceVK_EXT_host_query_resetVK_EXT_image_2d_view_of_3dVK_EXT_image_robustnessVK_EXT_image_view_min_lodVK_EXT_index_type_uint8VK_EXT_inline_uniform_blockVK_EXT_line_rasterizationVK_EXT_load_store_op_noneVK_EXT_memory_budgetVK_EXT_memory_priorityVK_EXT_metal_surfaceVK_EXT_multisampled_render_to_single_sampledVK_EXT_mutable_descriptor_typeVK_EXT_non_seamless_cube_mapVK_EXT_pageable_device_local_memoryVK_EXT_pci_bus_infoVK_EXT_pipeline_creation_cache_controlVK_EXT_pipeline_creation_feedbackVK_EXT_post_depth_coverageVK_EXT_primitive_topology_list_restartVK_EXT_primitives_generated_queryVK_EXT_private_dataVK_EXT_provoking_vertexVK_EXT_queue_family_foreignVK_EXT_rgba10x6_formatsVK_EXT_robustness2VK_EXT_sample_locationsVK_EXT_sampler_filter_minmaxVK_EXT_scalar_block_layoutVK_EXT_separate_stencil_usageVK_EXT_shader_atomic_floatVK_EXT_shader_atomic_float2VK_EXT_shader_demote_to_helper_invocationVK_EXT_shader_image_atomic_int64VK_EXT_shader_stencil_exportVK_EXT_shader_subgroup_ballotVK_EXT_shader_subgroup_voteVK_EXT_shader_viewport_index_layerVK_EXT_subgroup_size_controlVK_EXT_surface_maintenance1VK_EXT_swapchain_colorspaceVK_EXT_swapchain_maintenance1VK_EXT_texel_buffer_alignmentVK_EXT_texture_compression_astc_hdrVK_EXT_tooling_infoVK_EXT_transform_feedbackVK_EXT_validation_cacheVK_EXT_validation_featuresVK_EXT_validation_flagsVK_EXT_vertex_attribute_divisorVK_EXT_vertex_input_dynamic_stateVK_EXT_ycbcr_2plane_444_formatsVK_EXT_ycbcr_image_arraysVK_GGP_frame_tokenVK_GGP_stream_descriptor_surfaceVK_GOOGLE_decorate_stringVK_GOOGLE_display_timingVK_GOOGLE_hlsl_functionality1VK_GOOGLE_user_typeVK_IMG_filter_cubicVK_IMG_format_pvrtcVK_KHR_16bit_storageVK_KHR_8bit_storageVK_KHR_android_surfaceVK_KHR_bind_memory2VK_KHR_buffer_device_addressVK_KHR_copy_commands2VK_KHR_create_renderpass2VK_KHR_dedicated_allocationVK_KHR_depth_stencil_resolveVK_KHR_descriptor_update_templateVK_KHR_device_group_creationVK_KHR_device_groupVK_KHR_display_swapchainVK_KHR_displayVK_KHR_draw_indirect_countVK_KHR_driver_propertiesVK_KHR_dynamic_renderingVK_KHR_external_fence_capabilitiesVK_KHR_external_fence_fdVK_KHR_external_fence_win32VK_KHR_external_fenceVK_KHR_external_memory_capabilitiesVK_KHR_external_memory_fdVK_KHR_external_memory_win32VK_KHR_external_memoryVK_KHR_external_semaphore_capabilitiesVK_KHR_external_semaphore_fdVK_KHR_external_semaphore_win32VK_KHR_external_semaphoreVK_KHR_format_feature_flags2VK_KHR_fragment_shader_barycentricVK_KHR_fragment_shading_rateVK_KHR_get_display_properties2VK_KHR_get_memory_requirements2VK_KHR_get_physical_device_properties2VK_KHR_get_surface_capabilities2VK_KHR_global_priorityVK_KHR_image_format_listVK_KHR_imageless_framebufferVK_KHR_incremental_presentVK_KHR_maintenance1VK_KHR_maintenance2VK_KHR_maintenance3VK_KHR_maintenance4VK_KHR_multiviewVK_KHR_performance_queryVK_KHR_pipeline_executable_propertiesVK_KHR_pipeline_libraryVK_KHR_present_idVK_KHR_present_waitVK_KHR_push_descriptorVK_KHR_relaxed_block_layoutVK_KHR_sampler_mirror_clamp_to_edgeVK_KHR_sampler_ycbcr_conversionVK_KHR_separate_depth_stencil_layoutsVK_KHR_shader_atomic_int64VK_KHR_shader_clockVK_KHR_shader_draw_parametersVK_KHR_shader_float_controlsVK_KHR_shader_float16_int8VK_KHR_shader_integer_dot_productVK_KHR_shader_non_semantic_infoVK_KHR_shader_subgroup_extended_typesVK_KHR_shader_subgroup_uniform_control_flowVK_KHR_shader_terminate_invocationVK_KHR_shared_presentable_imageVK_KHR_spirv_1_4VK_KHR_storage_buffer_storage_classVK_KHR_surface_protected_capabilitiesVK_KHR_surfaceVK_KHR_swapchain_mutable_formatVK_KHR_swapchainVK_KHR_synchronization2VK_KHR_timeline_semaphoreVK_KHR_uniform_buffer_standard_layoutVK_KHR_variable_pointersVK_KHR_vulkan_memory_modelVK_KHR_wayland_surfaceVK_KHR_win32_keyed_mutexVK_KHR_win32_surfaceVK_KHR_workgroup_memory_explicit_layoutVK_KHR_xcb_surfaceVK_KHR_xlib_surfaceVK_KHR_zero_initialize_workgroup_memoryVK_MVK_macos_surfaceVK_NV_compute_shader_derivativesVK_NV_dedicated_allocationVK_NV_external_memory_capabilitiesVK_NV_external_memory_win32VK_NV_external_memoryVK_NV_fragment_shader_barycentricVK_NV_geometry_shader_passthroughVK_NV_sample_mask_override_coverageVK_NV_shader_image_footprintVK_NV_shader_subgroup_partitionedVK_NV_viewport_array2VK_NV_win32_keyed_mutexVK_VALVE_mutable_descriptor_type
Unsupported
KHR extensions will definitely be implemented at some point, though KHR extensions that entail a large amount of work may be deferred. EXT extensions are likely to be implemented in future but current plans or priorities may vary. Vendor extensions likely won't be supported but could be upon request given how much demand there is and ease of implementation.
KHR Extensions
VK_KHR_map_memory2
KHR Portability
The portability subset is only relevant on mac, which is not a supported platform.
VK_KHR_portability_subsetVK_KHR_portability_enumeration
KHR Ray tracing extensions
Ray tracing extensions are now standard and will likely be supported at some point in the future, but they are an immense amount of work to properly support with meaningful tooling - i.e. more than simple raw capture/replay. Because of this and because they are still quite a niche feature they are not a priority to support and will not be until there is enough resources to properly support them, either from myself or an external contributor.
VK_KHR_acceleration_structureVK_KHR_ray_tracing_pipelineVK_KHR_ray_tracing_position_fetchVK_KHR_ray_tracing_maintenance1VK_KHR_ray_queryVK_KHR_deferred_host_operations
EXT Extensions
VK_EXT_blend_operation_advancedVK_EXT_descriptor_bufferVK_EXT_device_address_binding_reportVK_EXT_device_faultVK_EXT_device_memory_reportVK_EXT_dynamic_rendering_unused_attachmentsVK_EXT_external_memory_acquire_unmodifiedVK_EXT_external_memory_hostVK_EXT_image_sliced_view_of_3dVK_EXT_image_compression_controlVK_EXT_image_compression_control_swapchainVK_EXT_image_drm_format_modifierVK_EXT_legacy_ditheringVK_EXT_mesh_shaderVK_EXT_metal_objectsVK_EXT_multi_drawVK_EXT_opacity_micromapVK_EXT_physical_device_drmVK_EXT_pipeline_library_group_handlesVK_EXT_pipeline_protected_accessVK_EXT_pipeline_propertiesVK_EXT_pipeline_robustnessVK_EXT_rasterization_order_attachment_accessVK_EXT_shader_module_identifierVK_EXT_shader_objectVK_EXT_shader_tile_imageVK_EXT_subpass_merge_feedback
Platform/IHV Extensions
ARM
VK_ARM_rasterization_order_attachment_accessVK_ARM_shader_core_builtinsVK_ARM_shader_core_properties
AMD
VK_AMD_pipeline_compiler_controlVK_AMD_rasterization_orderVK_AMD_shader_infoVK_AMD_shader_core_properties2VK_AMD_shader_early_and_late_fragment_tests
Fuschia
VK_FUCHSIA_external_memoryVK_FUCHSIA_external_semaphoreVK_FUCHSIA_buffer_collection
VK_GOOGLE_surfaceless_query
Huawei
VK_HUAWEI_cluster_culling_shaderVK_HUAWEI_subpass_shadingVK_HUAWEI_invocation_mask
Intel
VK_INTEL_shader_integer_functions2VK_INTEL_performance_query
NV
VK_NV_clip_space_w_scalingVK_NV_cooperative_matrixVK_NV_copy_memory_indirectVK_NV_corner_sampled_imageVK_NV_coverage_reduction_modeVK_NV_dedicated_allocation_image_aliasingVK_NV_device_diagnostic_checkpointsVK_NV_device_diagnostics_configVK_NV_device_generated_commandsVK_NV_displacement_micromapVK_NV_external_memory_rdmaVK_NV_fill_rectangleVK_NV_fragment_coverage_to_colorVK_NV_fragment_shading_rate_enumsVK_NV_framebuffer_mixed_samplesVK_NV_inherited_viewport_scissorVK_NV_linear_color_attachmentVK_NV_low_latencyVK_NV_memory_decompressionVK_NV_mesh_shaderVK_NV_optical_flowVK_NV_present_barrierVK_NV_ray_tracing_invocation_reorderVK_NV_ray_tracing_motion_blurVK_NV_representative_fragment_testVK_NV_scissor_exclusiveVK_NV_shader_sm_builtinsVK_NV_shading_rate_imageVK_NV_viewport_swizzle
Qualcomm
VK_QCOM_multiview_per_view_render_areasVK_QCOM_fragment_density_map_offsetVK_QCOM_image_processingVK_QCOM_multiview_per_view_viewportsVK_QCOM_render_pass_shader_resolveVK_QCOM_render_pass_store_opsVK_QCOM_render_pass_transformVK_QCOM_rotated_copy_commandsVK_QCOM_tile_properties
Samsung
VK_SEC_amigo_profiling
Valve
VK_VALVE_descriptor_set_host_mapping
WSI for other platforms
These only make sense to implement if the platform as a whole is supported.
VK_EXT_directfb_surfaceVK_FUCHSIA_imagepipe_surfaceVK_NN_vi_surfaceVK_NV_acquire_winrt_displayVK_QNX_screen_surfaceVK_QNX_external_memory_screen_buffer
Deliberately unsupported extensions
These are expected to never be implemented in their current form.
Complex IHV extensions
VK_NV_ray_tracing
Vulkan Video extensions
VK_KHR_video_queueVK_KHR_video_decode_queueVK_KHR_video_decode_h264VK_KHR_video_decode_h265
System extensions
VK_LUNARG_direct_driver_loading
Deprecated / experimental / IHV
VK_AMD_draw_indirect_countVK_KHR_video_encode_queueVK_EXT_video_encode_h264VK_EXT_video_encode_h265VK_EXT_video_decode_h264VK_EXT_video_decode_h265VK_MVK_ios_surfaceVK_NV_glsl_shaderVK_NVX_binary_importVK_NVX_multiview_per_view_attributesVK_NVX_image_view_handle