mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-01-27 14:45:55 +00:00
cd4de492bf
* Bump API patch number and header version number to 58 for this update. Github Issues: * Update the <<interfaces-resources-descset,Descriptor Set Interface>> section to allow multiple variables with the same descriptor set/binding decorations, and require that all variables that are statically used must be consistent with the pipeline layout. Allow ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER to be used with texture and sampler variables (public issues 522, 524). Internal Issues: * Replace networkx package used for extension dependency generation with a homegrown network dependency traverser (internal issue 713). * Specify in the <<interfaces-fragmentoutput, Fragment Output Interface>> section that if a fragment shader writes integers that cannot be represented in the format of the colour attachment, then the result is undefined (internal issue 893). * Separate malformed valid usage statement for slink:VkPipelineRasterizationStateCreateInfo into two (internal issue 918). * Fix cases where the term 'pNext chain' is incorrectly used in reference to functions, rather than their parameters. Replace 'pNext list' with 'pNext chain'. Fixed typo in the example code of +VK_KHR_dedicated_allocation+ (internal issue 944). * Fix typo in elink:VkExternalSemaphoreHandleTypeFlagBitsKHR enum descriptions, replacing etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR with ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR, and make the description more consistent with VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR (internal issue 950). Other Issues: * Clarify how pipeline stage masks affect <<synchronization-pipeline-stages-masks, access and synchronization scopes>>. * Clarify that dedicated allocations do not allow aliasing in the flink:vkBindBufferMemory and flink:vkBindImageMemory valid usage statements. * Correct specification of pname:dynamicCount for push_constant token in slink:VkIndirectCommandsLayoutNVX. New Extensions: * `VK_EXT_shader_viewport_index_layer`
479 lines
13 KiB
Plaintext
479 lines
13 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.
|
|
====
|
|
|
|
// 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_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_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_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_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_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_sampler_filter_minmax[]
|
|
include::VK_EXT_sampler_filter_minmax.txt[]
|
|
endif::VK_EXT_sampler_filter_minmax[]
|
|
|
|
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[]
|
|
|
|
// :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_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
|