529 lines
15 KiB
Plaintext
529 lines
15 KiB
Plaintext
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
|
// Creative Commons Attribution 4.0 International License; see
|
|
// http://creativecommons.org/licenses/by/4.0/
|
|
|
|
[appendix]
|
|
|
|
[[extensions]]
|
|
= Layers & Extensions
|
|
|
|
Extensions to the Vulkan API can: be defined by authors, groups of authors,
|
|
and the Khronos Vulkan Working Group.
|
|
In order not to compromise the readability of the Vulkan Specification, the
|
|
core Specification does not incorporate most extensions.
|
|
The online Registry of extensions is available at URL
|
|
|
|
http://www.khronos.org/registry/vulkan/
|
|
|
|
and allows generating versions of the Specification incorporating different
|
|
extensions.
|
|
|
|
Most of the content previously in this appendix does not specify *use* of
|
|
specific Vulkan extensions and layers, but rather specifies the processes by
|
|
which extensions and layers are created.
|
|
As of version 1.0.21 of the Vulkan Specification, this content has been
|
|
migrated to the <<vulkan-styleguide, Vulkan Documentation and Extensions>>
|
|
document.
|
|
Authors creating extensions and layers must: follow the mandatory procedures
|
|
in that document.
|
|
|
|
The remainder of this appendix documents a set of extensions chosen when
|
|
this document was built.
|
|
Versions of the Specification published in the Registry include:
|
|
|
|
* Core API + mandatory extensions required of all Vulkan implementations.
|
|
* Core API + all registered and published Khronos (`KHR`) extensions.
|
|
* Core API + all registered and published extensions.
|
|
|
|
Extensions are grouped as Khronos `KHR`, Khronos `KHX`, multivendor `EXT`,
|
|
and then alphabetically by author ID.
|
|
Within each group, extensions are listed in alphabetical order by their
|
|
name.
|
|
|
|
[NOTE]
|
|
.Note
|
|
====
|
|
The `KHX` author ID indicates that an extension is experimental, and is
|
|
being considered for standardization in future `KHR` or core Vulkan API
|
|
versions.
|
|
Developers are encouraged to experiment with them and provide feedback, but
|
|
should: not use them as the basis for production applications.
|
|
`KHX` extensions are expected to be supported for a limited time only.
|
|
They may: change their interfaces and behavior in significant ways as a
|
|
result of feedback, and may: be withdrawn or replaced with stable `KHR` or
|
|
core functionality at any time.
|
|
Implementations of these extensions receive limited or no testing when
|
|
submitted to the Khronos conformance process.
|
|
|
|
Some vendors may use an alternate author ID ending in `X` for some of their
|
|
extensions.
|
|
The exact meaning of such an author ID is defined by each vendor, and may
|
|
not be equivalent to `KHX`, but it is likely to indicate a lesser degree of
|
|
interface stability than a non-`X` extension from the same vendor.
|
|
====
|
|
|
|
// Extension appendix sections are included here, grouped by the author ID
|
|
// Adding the section headers here means that there will usually be
|
|
// a bunch of empty sections, which is undesirable.
|
|
|
|
// == Khronos `KHR` Extensions
|
|
//
|
|
|
|
ifdef::VK_KHR_16bit_storage[]
|
|
include::VK_KHR_16bit_storage.txt[]
|
|
endif::VK_KHR_16bit_storage[]
|
|
|
|
ifdef::VK_KHR_android_surface[]
|
|
include::VK_KHR_android_surface.txt[]
|
|
endif::VK_KHR_android_surface[]
|
|
|
|
ifdef::VK_KHR_bind_memory2[]
|
|
include::VK_KHR_bind_memory2.txt[]
|
|
endif::VK_KHR_bind_memory2[]
|
|
|
|
ifdef::VK_KHR_descriptor_update_template[]
|
|
include::VK_KHR_descriptor_update_template.txt[]
|
|
endif::VK_KHR_descriptor_update_template[]
|
|
|
|
ifdef::VK_KHR_dedicated_allocation[]
|
|
include::VK_KHR_dedicated_allocation.txt[]
|
|
endif::VK_KHR_dedicated_allocation[]
|
|
|
|
ifdef::VK_KHR_display[]
|
|
include::VK_KHR_display.txt[]
|
|
endif::VK_KHR_display[]
|
|
|
|
ifdef::VK_KHR_display_swapchain[]
|
|
include::VK_KHR_display_swapchain.txt[]
|
|
endif::VK_KHR_display_swapchain[]
|
|
|
|
ifdef::VK_KHR_external_fence[]
|
|
include::VK_KHR_external_fence.txt[]
|
|
endif::VK_KHR_external_fence[]
|
|
|
|
ifdef::VK_KHR_external_fence_capabilities[]
|
|
include::VK_KHR_external_fence_capabilities.txt[]
|
|
endif::VK_KHR_external_fence_capabilities[]
|
|
|
|
ifdef::VK_KHR_external_fence_fd[]
|
|
include::VK_KHR_external_fence_fd.txt[]
|
|
endif::VK_KHR_external_fence_fd[]
|
|
|
|
ifdef::VK_KHR_external_fence_win32[]
|
|
include::VK_KHR_external_fence_win32.txt[]
|
|
endif::VK_KHR_external_fence_win32[]
|
|
|
|
ifdef::VK_KHR_external_memory[]
|
|
include::VK_KHR_external_memory.txt[]
|
|
endif::VK_KHR_external_memory[]
|
|
|
|
ifdef::VK_KHR_external_memory_capabilities[]
|
|
include::VK_KHR_external_memory_capabilities.txt[]
|
|
endif::VK_KHR_external_memory_capabilities[]
|
|
|
|
ifdef::VK_KHR_external_memory_fd[]
|
|
include::VK_KHR_external_memory_fd.txt[]
|
|
endif::VK_KHR_external_memory_fd[]
|
|
|
|
ifdef::VK_KHR_external_memory_win32[]
|
|
include::VK_KHR_external_memory_win32.txt[]
|
|
endif::VK_KHR_external_memory_win32[]
|
|
|
|
ifdef::VK_KHR_external_semaphore[]
|
|
include::VK_KHR_external_semaphore.txt[]
|
|
endif::VK_KHR_external_semaphore[]
|
|
|
|
ifdef::VK_KHR_external_semaphore_capabilities[]
|
|
include::VK_KHR_external_semaphore_capabilities.txt[]
|
|
endif::VK_KHR_external_semaphore_capabilities[]
|
|
|
|
ifdef::VK_KHR_external_semaphore_fd[]
|
|
include::VK_KHR_external_semaphore_fd.txt[]
|
|
endif::VK_KHR_external_semaphore_fd[]
|
|
|
|
ifdef::VK_KHR_external_semaphore_win32[]
|
|
include::VK_KHR_external_semaphore_win32.txt[]
|
|
endif::VK_KHR_external_semaphore_win32[]
|
|
|
|
ifdef::VK_KHR_get_memory_requirements2[]
|
|
include::VK_KHR_get_memory_requirements2.txt[]
|
|
endif::VK_KHR_get_memory_requirements2[]
|
|
|
|
ifdef::VK_KHR_get_physical_device_properties2[]
|
|
include::VK_KHR_get_physical_device_properties2.txt[]
|
|
endif::VK_KHR_get_physical_device_properties2[]
|
|
|
|
ifdef::VK_KHR_get_surface_capabilities2[]
|
|
include::VK_KHR_get_surface_capabilities2.txt[]
|
|
endif::VK_KHR_get_surface_capabilities2[]
|
|
|
|
ifdef::VK_KHR_image_format_list[]
|
|
include::VK_KHR_image_format_list.txt[]
|
|
endif::VK_KHR_image_format_list[]
|
|
|
|
ifdef::VK_KHR_incremental_present[]
|
|
include::VK_KHR_incremental_present.txt[]
|
|
endif::VK_KHR_incremental_present[]
|
|
|
|
ifdef::VK_KHR_maintenance1[]
|
|
include::VK_KHR_maintenance1.txt[]
|
|
endif::VK_KHR_maintenance1[]
|
|
|
|
ifdef::VK_KHR_maintenance2[]
|
|
include::VK_KHR_maintenance2.txt[]
|
|
endif::VK_KHR_maintenance2[]
|
|
|
|
ifdef::VK_KHR_mir_surface[]
|
|
include::VK_KHR_mir_surface.txt[]
|
|
endif::VK_KHR_mir_surface[]
|
|
|
|
ifdef::VK_KHR_push_descriptor[]
|
|
include::VK_KHR_push_descriptor.txt[]
|
|
endif::VK_KHR_push_descriptor[]
|
|
|
|
ifdef::VK_KHR_relaxed_block_layout[]
|
|
include::VK_KHR_relaxed_block_layout.txt[]
|
|
endif::VK_KHR_relaxed_block_layout[]
|
|
|
|
include::VK_KHR_sampler_mirror_clamp_to_edge.txt[]
|
|
|
|
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
|
include::VK_KHR_sampler_ycbcr_conversion.txt[]
|
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
|
|
|
ifdef::VK_KHR_shader_draw_parameters[]
|
|
include::VK_KHR_shader_draw_parameters.txt[]
|
|
endif::VK_KHR_shader_draw_parameters[]
|
|
|
|
ifdef::VK_KHR_shared_presentable_image[]
|
|
include::VK_KHR_shared_presentable_image.txt[]
|
|
endif::VK_KHR_shared_presentable_image[]
|
|
|
|
ifdef::VK_KHR_storage_buffer_storage_class[]
|
|
include::VK_KHR_storage_buffer_storage_class.txt[]
|
|
endif::VK_KHR_storage_buffer_storage_class[]
|
|
|
|
ifdef::VK_KHR_surface[]
|
|
include::VK_KHR_surface.txt[]
|
|
endif::VK_KHR_surface[]
|
|
|
|
ifdef::VK_KHR_swapchain[]
|
|
include::VK_KHR_swapchain.txt[]
|
|
endif::VK_KHR_swapchain[]
|
|
|
|
ifdef::VK_KHR_variable_pointers[]
|
|
include::VK_KHR_variable_pointers.txt[]
|
|
endif::VK_KHR_variable_pointers[]
|
|
|
|
ifdef::VK_KHR_wayland_surface[]
|
|
include::VK_KHR_wayland_surface.txt[]
|
|
endif::VK_KHR_wayland_surface[]
|
|
|
|
ifdef::VK_KHR_win32_keyed_mutex[]
|
|
include::VK_KHR_win32_keyed_mutex.txt[]
|
|
endif::VK_KHR_win32_keyed_mutex[]
|
|
|
|
ifdef::VK_KHR_win32_surface[]
|
|
include::VK_KHR_win32_surface.txt[]
|
|
endif::VK_KHR_win32_surface[]
|
|
|
|
ifdef::VK_KHR_xcb_surface[]
|
|
include::VK_KHR_xcb_surface.txt[]
|
|
endif::VK_KHR_xcb_surface[]
|
|
|
|
ifdef::VK_KHR_xlib_surface[]
|
|
include::VK_KHR_xlib_surface.txt[]
|
|
endif::VK_KHR_xlib_surface[]
|
|
|
|
// == Khronos `KHX` Extensions
|
|
//
|
|
|
|
ifdef::VK_KHX_device_group[]
|
|
include::VK_KHX_device_group.txt[]
|
|
endif::VK_KHX_device_group[]
|
|
|
|
ifdef::VK_KHX_device_group_creation[]
|
|
include::VK_KHX_device_group_creation.txt[]
|
|
endif::VK_KHX_device_group_creation[]
|
|
|
|
ifdef::VK_KHX_multiview[]
|
|
include::VK_KHX_multiview.txt[]
|
|
endif::VK_KHX_multiview[]
|
|
|
|
// == Multivendor `EXT` Extensions
|
|
//
|
|
// :leveloffset: 2
|
|
|
|
ifdef::VK_EXT_acquire_xlib_display[]
|
|
include::VK_EXT_acquire_xlib_display.txt[]
|
|
endif::VK_EXT_acquire_xlib_display[]
|
|
|
|
ifdef::VK_EXT_blend_operation_advanced[]
|
|
include::VK_EXT_blend_operation_advanced.txt[]
|
|
endif::VK_EXT_blend_operation_advanced[]
|
|
|
|
ifdef::VK_EXT_debug_marker[]
|
|
include::VK_EXT_debug_marker.txt[]
|
|
endif::VK_EXT_debug_marker[]
|
|
|
|
ifdef::VK_EXT_debug_report[]
|
|
include::VK_EXT_debug_report.txt[]
|
|
endif::VK_EXT_debug_report[]
|
|
|
|
ifdef::VK_EXT_depth_range_unrestricted[]
|
|
include::VK_EXT_depth_range_unrestricted.txt[]
|
|
endif::VK_EXT_depth_range_unrestricted[]
|
|
|
|
ifdef::VK_EXT_direct_mode_display[]
|
|
include::VK_EXT_direct_mode_display.txt[]
|
|
endif::VK_EXT_direct_mode_display[]
|
|
|
|
ifdef::VK_EXT_discard_rectangles[]
|
|
include::VK_EXT_discard_rectangles.txt[]
|
|
endif::VK_EXT_discard_rectangles[]
|
|
|
|
ifdef::VK_EXT_display_control[]
|
|
include::VK_EXT_display_control.txt[]
|
|
endif::VK_EXT_display_control[]
|
|
|
|
ifdef::VK_EXT_display_surface_counter[]
|
|
include::VK_EXT_display_surface_counter.txt[]
|
|
endif::VK_EXT_display_surface_counter[]
|
|
|
|
ifdef::VK_EXT_global_priority[]
|
|
include::VK_EXT_global_priority.txt[]
|
|
endif::VK_EXT_global_priority[]
|
|
|
|
ifdef::VK_EXT_hdr_metadata[]
|
|
include::VK_EXT_hdr_metadata.txt[]
|
|
endif::VK_EXT_hdr_metadata[]
|
|
|
|
ifdef::VK_EXT_post_depth_coverage[]
|
|
include::VK_EXT_post_depth_coverage.txt[]
|
|
endif::VK_EXT_post_depth_coverage[]
|
|
|
|
ifdef::VK_EXT_sample_locations[]
|
|
include::VK_EXT_sample_locations.txt[]
|
|
endif::VK_EXT_sample_locations[]
|
|
|
|
ifdef::VK_EXT_sampler_filter_minmax[]
|
|
include::VK_EXT_sampler_filter_minmax.txt[]
|
|
endif::VK_EXT_sampler_filter_minmax[]
|
|
|
|
ifdef::VK_EXT_shader_stencil_export[]
|
|
include::VK_EXT_shader_stencil_export.txt[]
|
|
endif::VK_EXT_shader_stencil_export[]
|
|
|
|
ifdef::VK_EXT_shader_subgroup_ballot[]
|
|
include::VK_EXT_shader_subgroup_ballot.txt[]
|
|
endif::VK_EXT_shader_subgroup_ballot[]
|
|
|
|
ifdef::VK_EXT_shader_subgroup_vote[]
|
|
include::VK_EXT_shader_subgroup_vote.txt[]
|
|
endif::VK_EXT_shader_subgroup_vote[]
|
|
|
|
ifdef::VK_EXT_shader_viewport_index_layer[]
|
|
include::VK_EXT_shader_viewport_index_layer.txt[]
|
|
endif::VK_EXT_shader_viewport_index_layer[]
|
|
|
|
ifdef::VK_EXT_swapchain_colorspace[]
|
|
include::VK_EXT_swapchain_colorspace.txt[]
|
|
endif::VK_EXT_swapchain_colorspace[]
|
|
|
|
ifdef::VK_EXT_validation_flags[]
|
|
include::VK_EXT_validation_flags.txt[]
|
|
endif::VK_EXT_validation_flags[]
|
|
|
|
ifdef::VK_EXT_validation_cache[]
|
|
include::VK_EXT_validation_cache.txt[]
|
|
endif::VK_EXT_validation_cache[]
|
|
|
|
// :leveloffset: 1
|
|
|
|
|
|
// == Advanced Micro Devices `AMD` Vendor Extensions
|
|
//
|
|
// :leveloffset: 2
|
|
|
|
ifdef::VK_AMD_draw_indirect_count[]
|
|
include::VK_AMD_draw_indirect_count.txt[]
|
|
endif::VK_AMD_draw_indirect_count[]
|
|
|
|
ifdef::VK_AMD_gcn_shader[]
|
|
include::VK_AMD_gcn_shader.txt[]
|
|
endif::VK_AMD_gcn_shader[]
|
|
|
|
ifdef::VK_AMD_gpu_shader_half_float[]
|
|
include::VK_AMD_gpu_shader_half_float.txt[]
|
|
endif::VK_AMD_gpu_shader_half_float[]
|
|
|
|
ifdef::VK_AMD_gpu_shader_int16[]
|
|
include::VK_AMD_gpu_shader_int16.txt[]
|
|
endif::VK_AMD_gpu_shader_int16[]
|
|
|
|
ifdef::VK_AMD_mixed_attachment_samples[]
|
|
include::VK_AMD_mixed_attachment_samples.txt[]
|
|
endif::VK_AMD_mixed_attachment_samples[]
|
|
|
|
ifdef::VK_AMD_negative_viewport_height[]
|
|
include::VK_AMD_negative_viewport_height.txt[]
|
|
endif::VK_AMD_negative_viewport_height[]
|
|
|
|
ifdef::VK_AMD_rasterization_order[]
|
|
include::VK_AMD_rasterization_order.txt[]
|
|
endif::VK_AMD_rasterization_order[]
|
|
|
|
ifdef::VK_AMD_shader_ballot[]
|
|
include::VK_AMD_shader_ballot.txt[]
|
|
endif::VK_AMD_shader_ballot[]
|
|
|
|
ifdef::VK_AMD_shader_explicit_vertex_parameter[]
|
|
include::VK_AMD_shader_explicit_vertex_parameter.txt[]
|
|
endif::VK_AMD_shader_explicit_vertex_parameter[]
|
|
|
|
ifdef::VK_AMD_shader_fragment_mask[]
|
|
include::VK_AMD_shader_fragment_mask.txt[]
|
|
endif::VK_AMD_shader_fragment_mask[]
|
|
|
|
ifdef::VK_AMD_shader_image_load_store_lod[]
|
|
include::VK_AMD_shader_image_load_store_lod.txt[]
|
|
endif::VK_AMD_shader_image_load_store_lod[]
|
|
|
|
ifdef::VK_AMD_shader_info[]
|
|
include::VK_AMD_shader_info.txt[]
|
|
endif::VK_AMD_shader_info[]
|
|
|
|
ifdef::VK_AMD_shader_trinary_minmax[]
|
|
include::VK_AMD_shader_trinary_minmax.txt[]
|
|
endif::VK_AMD_shader_trinary_minmax[]
|
|
|
|
ifdef::VK_AMD_texture_gather_bias_lod[]
|
|
include::VK_AMD_texture_gather_bias_lod.txt[]
|
|
endif::VK_AMD_texture_gather_bias_lod[]
|
|
|
|
// :leveloffset: 1
|
|
|
|
|
|
// == Google `GOOGLE` Vendor Extensions
|
|
//
|
|
// :leveloffset: 2
|
|
|
|
ifdef::VK_GOOGLE_display_timing[]
|
|
include::VK_GOOGLE_display_timing.txt[]
|
|
endif::VK_GOOGLE_display_timing[]
|
|
|
|
// :leveloffset: 1
|
|
|
|
|
|
// == Imagination `IMG` Vendor Extensions
|
|
//
|
|
// :leveloffset: 2
|
|
|
|
ifdef::VK_IMG_filter_cubic[]
|
|
include::VK_IMG_filter_cubic.txt[]
|
|
endif::VK_IMG_filter_cubic[]
|
|
|
|
// :leveloffset: 1
|
|
|
|
|
|
// == MoltenVK `MVK` Vendor Extensions
|
|
//
|
|
// :leveloffset: 2
|
|
|
|
ifdef::VK_MVK_ios_surface[]
|
|
include::VK_MVK_ios_surface.txt[]
|
|
endif::VK_MVK_ios_surface[]
|
|
|
|
ifdef::VK_MVK_macos_surface[]
|
|
include::VK_MVK_macos_surface.txt[]
|
|
endif::VK_MVK_macos_surface[]
|
|
|
|
// :leveloffset: 1
|
|
|
|
|
|
// == Nintendo `NN` Vendor Extensions
|
|
//
|
|
// :leveloffset: 2
|
|
|
|
ifdef::VK_NN_vi_surface[]
|
|
include::VK_NN_vi_surface.txt[]
|
|
endif::VK_NN_vi_surface[]
|
|
|
|
|
|
// == NVIDIA `NV` Vendor Extensions
|
|
//
|
|
// :leveloffset: 2
|
|
|
|
ifdef::VK_NV_clip_space_w_scaling[]
|
|
include::VK_NV_clip_space_w_scaling.txt[]
|
|
endif::VK_NV_clip_space_w_scaling[]
|
|
|
|
ifdef::VK_NV_dedicated_allocation[]
|
|
include::VK_NV_dedicated_allocation.txt[]
|
|
endif::VK_NV_dedicated_allocation[]
|
|
|
|
ifdef::VK_NV_external_memory[]
|
|
include::VK_NV_external_memory.txt[]
|
|
endif::VK_NV_external_memory[]
|
|
|
|
ifdef::VK_NV_external_memory_capabilities[]
|
|
include::VK_NV_external_memory_capabilities.txt[]
|
|
endif::VK_NV_external_memory_capabilities[]
|
|
|
|
ifdef::VK_NV_external_memory_win32[]
|
|
include::VK_NV_external_memory_win32.txt[]
|
|
endif::VK_NV_external_memory_win32[]
|
|
|
|
ifdef::VK_NV_fill_rectangle[]
|
|
include::VK_NV_fill_rectangle.txt[]
|
|
endif::VK_NV_fill_rectangle[]
|
|
|
|
ifdef::VK_NV_fragment_coverage_to_color[]
|
|
include::VK_NV_fragment_coverage_to_color.txt[]
|
|
endif::VK_NV_fragment_coverage_to_color[]
|
|
|
|
ifdef::VK_NV_framebuffer_mixed_samples[]
|
|
include::VK_NV_framebuffer_mixed_samples.txt[]
|
|
endif::VK_NV_framebuffer_mixed_samples[]
|
|
|
|
ifdef::VK_NV_geometry_shader_passthrough[]
|
|
include::VK_NV_geometry_shader_passthrough.txt[]
|
|
endif::VK_NV_geometry_shader_passthrough[]
|
|
|
|
ifdef::VK_NV_glsl_shader[]
|
|
include::VK_NV_glsl_shader.txt[]
|
|
endif::VK_NV_glsl_shader[]
|
|
|
|
ifdef::VK_NV_sample_mask_override_coverage[]
|
|
include::VK_NV_sample_mask_override_coverage.txt[]
|
|
endif::VK_NV_sample_mask_override_coverage[]
|
|
|
|
ifdef::VK_NV_viewport_array2[]
|
|
include::VK_NV_viewport_array2.txt[]
|
|
endif::VK_NV_viewport_array2[]
|
|
|
|
ifdef::VK_NV_viewport_swizzle[]
|
|
include::VK_NV_viewport_swizzle.txt[]
|
|
endif::VK_NV_viewport_swizzle[]
|
|
|
|
ifdef::VK_NV_win32_keyed_mutex[]
|
|
include::VK_NV_win32_keyed_mutex.txt[]
|
|
endif::VK_NV_win32_keyed_mutex[]
|
|
|
|
// :leveloffset: 1
|
|
|
|
|
|
// == NVIDIA `NVX` Vendor Extensions
|
|
//
|
|
// :leveloffset: 2
|
|
|
|
ifdef::VK_NVX_device_generated_commands[]
|
|
include::VK_NVX_device_generated_commands.txt[]
|
|
endif::VK_NVX_device_generated_commands[]
|
|
|
|
ifdef::VK_NVX_multiview_per_view_attributes[]
|
|
include::VK_NVX_multiview_per_view_attributes.txt[]
|
|
endif::VK_NVX_multiview_per_view_attributes[]
|
|
|
|
// :leveloffset: 1
|