Skip to content

Vulkan extension support

Baldur Karlsson edited this page Mar 4, 2019 · 11 revisions

Supported extensions

  • VK_AMD_buffer_marker
  • VK_AMD_gcn_shader
  • VK_AMD_gpu_shader_half_float
  • VK_AMD_gpu_shader_int16
  • VK_AMD_mixed_attachment_samples
  • VK_AMD_negative_viewport_height
  • VK_AMD_shader_ballot
  • VK_AMD_shader_core_properties
  • VK_AMD_shader_explicit_vertex_parameter
  • VK_AMD_shader_fragment_mask
  • VK_AMD_shader_image_load_store_lod
  • VK_AMD_shader_trinary_minmax
  • VK_AMD_texture_gather_bias_lod
  • VK_EXT_acquire_xlib_display
  • VK_EXT_astc_decode_mode
  • VK_EXT_calibrated_timestamps
  • VK_EXT_conditional_rendering
  • VK_EXT_conservative_rasterization
  • VK_EXT_debug_marker
  • VK_EXT_debug_report
  • VK_EXT_debug_utils
  • VK_EXT_depth_range_unrestricted
  • VK_EXT_direct_mode_display
  • VK_EXT_discard_rectangles
  • VK_EXT_display_control
  • VK_EXT_display_surface_counter
  • VK_EXT_external_memory_dma_buf
  • VK_EXT_fragment_density_map
  • VK_EXT_global_priority
  • VK_EXT_memory_budget
  • VK_EXT_memory_priority
  • VK_EXT_pci_bus_info
  • VK_EXT_post_depth_coverage
  • VK_EXT_queue_family_foreign
  • VK_EXT_sample_locations
  • VK_EXT_sampler_filter_minmax
  • VK_EXT_scalar_block_layout
  • VK_EXT_separate_stencil_usage
  • VK_EXT_shader_stencil_export
  • VK_EXT_shader_subgroup_ballot
  • VK_EXT_shader_subgroup_vote
  • VK_EXT_shader_viewport_index_layer
  • VK_EXT_swapchain_colorspace
  • VK_EXT_transform_feedback
  • VK_EXT_validation_cache
  • VK_EXT_validation_features
  • VK_EXT_validation_flags
  • VK_EXT_vertex_attribute_divisor
  • VK_KHR_16bit_storage
  • VK_KHR_8bit_storage
  • VK_KHR_android_surface
  • VK_KHR_bind_memory2
  • VK_KHR_create_renderpass2
  • VK_KHR_dedicated_allocation
  • VK_KHR_depth_stencil_resolve
  • VK_KHR_descriptor_update_template
  • VK_KHR_device_group_creation
  • VK_KHR_device_group
  • VK_KHR_display_swapchain
  • VK_KHR_display
  • VK_KHR_draw_indirect_count
  • VK_KHR_driver_properties
  • VK_KHR_external_fence_capabilities
  • VK_KHR_external_fence_fd
  • VK_KHR_external_fence_win32
  • VK_KHR_external_fence
  • VK_KHR_external_memory_capabilities
  • VK_KHR_external_memory_fd
  • VK_KHR_external_memory_win32
  • VK_KHR_external_memory
  • VK_KHR_external_semaphore_capabilities
  • VK_KHR_external_semaphore_fd
  • VK_KHR_external_semaphore_win32
  • VK_KHR_external_semaphore
  • VK_KHR_get_display_properties2
  • VK_KHR_get_memory_requirements2
  • VK_KHR_get_physical_device_properties2
  • VK_KHR_get_surface_capabilities2
  • VK_KHR_image_format_list
  • VK_KHR_incremental_present
  • VK_KHR_maintenance1
  • VK_KHR_maintenance2
  • VK_KHR_maintenance3
  • VK_KHR_multiview
  • VK_KHR_push_descriptor
  • VK_KHR_relaxed_block_layout
  • VK_KHR_sampler_mirror_clamp_to_edge
  • VK_KHR_sampler_ycbcr_conversion
  • VK_KHR_shader_atomic_int64
  • VK_KHR_shader_float16_int8
  • VK_KHR_shader_float_controls
  • VK_KHR_shader_draw_parameters
  • VK_KHR_shared_presentable_image
  • VK_KHR_storage_buffer_storage_class
  • VK_KHR_surface
  • VK_KHR_swapchain
  • VK_KHR_swapchain_mutable_format
  • VK_KHR_variable_pointers
  • VK_KHR_vulkan_memory_model
  • VK_KHR_win32_keyed_mutex
  • VK_KHR_win32_surface
  • VK_KHR_xcb_surface
  • VK_KHR_xlib_surface
  • VK_GOOGLE_decorate_string
  • VK_GOOGLE_hlsl_functionality1
  • VK_IMG_format_pvrtc
  • VK_MVK_macos_surface
  • VK_NV_compute_shader_derivatives
  • VK_NV_dedicated_allocation
  • VK_NV_external_memory_capabilities
  • VK_NV_external_memory_win32
  • VK_NV_external_memory
  • VK_NV_fragment_shader_barycentric
  • VK_NV_geometry_shader_passthrough
  • VK_NV_sample_mask_override_coverage
  • VK_NV_shader_image_footprint
  • VK_NV_shader_subgroup_partitioned
  • VK_NV_viewport_array2
  • VK_NV_win32_keyed_mutex

Possible future supported extensions

KHR extensions will definitely be implemented. EXT extensions are likely to be implemented in future but current plans or priorities may vary. Vendor extensions likely won't but could be given demand/ease of implementation.

KHR Extensions

EXT Extensions

  • VK_EXT_blend_operation_advanced
  • VK_EXT_buffer_device_address
  • VK_EXT_depth_clip_enable
  • VK_EXT_descriptor_indexing
  • VK_EXT_external_memory_host
  • VK_EXT_hdr_metadata
  • VK_EXT_image_drm_format_modifier
  • VK_EXT_inline_uniform_block
  • VK_EXT_filter_cubic
  • VK_EXT_ycbcr_image_arrays

Platform/IHV Extensions

AMD

  • VK_AMD_memory_overallocation_behavior
  • VK_AMD_rasterization_order
  • VK_AMD_shader_info

ANDROID

  • VK_ANDROID_external_memory_android_hardware_buffer
  • VK_ANDROID_native_buffer

IMG

  • VK_IMG_filter_cubic

GOOGLE

  • VK_GOOGLE_display_timing

MVK

  • VK_MVK_moltenvk

NV

  • VK_NV_clip_space_w_scaling
  • VK_NV_cooperative_matrix
  • VK_NV_corner_sampled_image
  • VK_NV_dedicated_allocation_image_aliasing
  • VK_NV_device_diagnostic_checkpoints
  • VK_NV_fill_rectangle
  • VK_NV_fragment_coverage_to_color
  • VK_NV_framebuffer_mixed_samples
  • VK_NV_mesh_shader
  • VK_NV_representative_fragment_test
  • VK_NV_scissor_exclusive
  • VK_NV_shading_rate_image
  • VK_NV_viewport_swizzle

WSI for other platforms

  • VK_EXT_metal_surface
  • VK_KHR_wayland_surface
  • VK_FUCHSIA_imagepipe_surface
  • VK_MVK_ios_surface
  • VK_NN_vi_surface

Deliberately nsupported extensions

These will never be implemented in their current form.

Complex IHV extensions

  • VK_NV_ray_tracing

Deprecated / experimental / IHV

  • VK_KHR_mir_surface
  • VK_AMD_draw_indirect_count
  • VK_NV_glsl_shader
  • VK_NVX_device_generated_commands
  • VK_NVX_multiview_per_view_attributes
  • VK_NVX_image_view_handle

All extensions

For easier tracking, this is a list of all current extensions by number which can easily be regenerated from vk.xml. Every item in this list should be in one of the lists above, so if it's not then it's a new extension and should be filed.

Generate with:

grep '<extension ' vk.xml |
   sed -e '{s#.*name="\([^"]*\)".*number="\([0-9]*\)".*#\2    \1#g}' |
   sed -e '{s#\<[0-9]\>#00&#g}' | sed -e '{s#\<[0-9][0-9]\>#0&#g}' |
   grep -Ev 'extension_[0-9]*$' | grep -v RESERVED
001    VK_KHR_surface
002    VK_KHR_swapchain
003    VK_KHR_display
004    VK_KHR_display_swapchain
005    VK_KHR_xlib_surface
006    VK_KHR_xcb_surface
007    VK_KHR_wayland_surface
008    VK_KHR_mir_surface
009    VK_KHR_android_surface
010    VK_KHR_win32_surface
011    VK_ANDROID_native_buffer
012    VK_EXT_debug_report
013    VK_NV_glsl_shader
014    VK_EXT_depth_range_unrestricted
015    VK_KHR_sampler_mirror_clamp_to_edge
016    VK_IMG_filter_cubic
019    VK_AMD_rasterization_order
021    VK_AMD_shader_trinary_minmax
022    VK_AMD_shader_explicit_vertex_parameter
023    VK_EXT_debug_marker
026    VK_AMD_gcn_shader
027    VK_NV_dedicated_allocation
029    VK_EXT_transform_feedback
031    VK_NVX_image_view_handle
034    VK_AMD_draw_indirect_count
036    VK_AMD_negative_viewport_height
037    VK_AMD_gpu_shader_half_float
038    VK_AMD_shader_ballot
042    VK_AMD_texture_gather_bias_lod
043    VK_AMD_shader_info
047    VK_AMD_shader_image_load_store_lod
051    VK_NV_corner_sampled_image
054    VK_KHR_multiview
055    VK_IMG_format_pvrtc
056    VK_NV_external_memory_capabilities
057    VK_NV_external_memory
058    VK_NV_external_memory_win32
059    VK_NV_win32_keyed_mutex
060    VK_KHR_get_physical_device_properties2
061    VK_KHR_device_group
062    VK_EXT_validation_flags
063    VK_NN_vi_surface
064    VK_KHR_shader_draw_parameters
065    VK_EXT_shader_subgroup_ballot
066    VK_EXT_shader_subgroup_vote
068    VK_EXT_astc_decode_mode
070    VK_KHR_maintenance1
071    VK_KHR_device_group_creation
072    VK_KHR_external_memory_capabilities
073    VK_KHR_external_memory
074    VK_KHR_external_memory_win32
075    VK_KHR_external_memory_fd
076    VK_KHR_win32_keyed_mutex
077    VK_KHR_external_semaphore_capabilities
078    VK_KHR_external_semaphore
079    VK_KHR_external_semaphore_win32
080    VK_KHR_external_semaphore_fd
081    VK_KHR_push_descriptor
082    VK_EXT_conditional_rendering
083    VK_KHR_shader_float16_int8
084    VK_KHR_16bit_storage
085    VK_KHR_incremental_present
086    VK_KHR_descriptor_update_template
087    VK_NVX_device_generated_commands
088    VK_NV_clip_space_w_scaling
089    VK_EXT_direct_mode_display
090    VK_EXT_acquire_xlib_display
091    VK_EXT_display_surface_counter
092    VK_EXT_display_control
093    VK_GOOGLE_display_timing
095    VK_NV_sample_mask_override_coverage
096    VK_NV_geometry_shader_passthrough
097    VK_NV_viewport_array2
098    VK_NVX_multiview_per_view_attributes
099    VK_NV_viewport_swizzle
100    VK_EXT_discard_rectangles
102    VK_EXT_conservative_rasterization
103    VK_EXT_depth_clip_enable
105    VK_EXT_swapchain_colorspace
106    VK_EXT_hdr_metadata
110    VK_KHR_create_renderpass2
112    VK_KHR_shared_presentable_image
113    VK_KHR_external_fence_capabilities
114    VK_KHR_external_fence
115    VK_KHR_external_fence_win32
116    VK_KHR_external_fence_fd
118    VK_KHR_maintenance2
120    VK_KHR_get_surface_capabilities2
121    VK_KHR_variable_pointers
122    VK_KHR_get_display_properties2
123    VK_MVK_ios_surface
124    VK_MVK_macos_surface
125    VK_MVK_moltenvk
126    VK_EXT_external_memory_dma_buf
127    VK_EXT_queue_family_foreign
128    VK_KHR_dedicated_allocation
129    VK_EXT_debug_utils
130    VK_ANDROID_external_memory_android_hardware_buffer
131    VK_EXT_sampler_filter_minmax
132    VK_KHR_storage_buffer_storage_class
133    VK_AMD_gpu_shader_int16
137    VK_AMD_mixed_attachment_samples
138    VK_AMD_shader_fragment_mask
139    VK_EXT_inline_uniform_block
141    VK_EXT_shader_stencil_export
144    VK_EXT_sample_locations
145    VK_KHR_relaxed_block_layout
147    VK_KHR_get_memory_requirements2
148    VK_KHR_image_format_list
149    VK_EXT_blend_operation_advanced
150    VK_NV_fragment_coverage_to_color
153    VK_NV_framebuffer_mixed_samples
154    VK_NV_fill_rectangle
156    VK_EXT_post_depth_coverage
157    VK_KHR_sampler_ycbcr_conversion
158    VK_KHR_bind_memory2
159    VK_EXT_image_drm_format_modifier
161    VK_EXT_validation_cache
162    VK_EXT_descriptor_indexing
163    VK_EXT_shader_viewport_index_layer
165    VK_NV_shading_rate_image
166    VK_NV_ray_tracing
167    VK_NV_representative_fragment_test
169    VK_KHR_maintenance3
170    VK_KHR_draw_indirect_count
171    VK_EXT_filter_cubic
175    VK_EXT_global_priority
178    VK_KHR_8bit_storage
179    VK_EXT_external_memory_host
180    VK_AMD_buffer_marker
181    VK_KHR_shader_atomic_int64
185    VK_EXT_calibrated_timestamps
186    VK_AMD_shader_core_properties
190    VK_AMD_memory_overallocation_behavior
191    VK_EXT_vertex_attribute_divisor
197    VK_KHR_driver_properties
198    VK_KHR_shader_float_controls
199    VK_NV_shader_subgroup_partitioned
200    VK_KHR_depth_stencil_resolve
201    VK_KHR_swapchain_mutable_format
202    VK_NV_compute_shader_derivatives
203    VK_NV_mesh_shader
204    VK_NV_fragment_shader_barycentric
205    VK_NV_shader_image_footprint
206    VK_NV_scissor_exclusive
207    VK_NV_device_diagnostic_checkpoints
212    VK_KHR_vulkan_memory_model
213    VK_EXT_pci_bus_info
215    VK_FUCHSIA_imagepipe_surface
218    VK_EXT_metal_surface
219    VK_EXT_fragment_density_map
222    VK_EXT_scalar_block_layout
224    VK_GOOGLE_hlsl_functionality1
225    VK_GOOGLE_decorate_string
238    VK_EXT_memory_budget
239    VK_EXT_memory_priority
241    VK_NV_dedicated_allocation_image_aliasing
245    VK_EXT_buffer_device_address
247    VK_EXT_separate_stencil_usage
248    VK_EXT_validation_features
250    VK_NV_cooperative_matrix
253    VK_EXT_ycbcr_image_arrays
You can’t perform that action at this time.