Jon Leech 52d809dd04 Change log for October 13, 2017 Vulkan 1.0.63 spec update:
* Bump API patch number and header version number to 63 for this update.

Github Issues:

  * Add missing valid usage statements for ptext:maxDescriptorSets*,
    ptext:maxPerStageDescriptorInputAttachments, and
    ptext:maxPerStageResources to slink:VkPipelineLayoutCreateInfo.txt,
    flink:VkComputePipelineCreateInfo, and
    flink:VkGraphicsPipelineCreateInfo (public issue 546).
  * Fix typos in ftext:vkCmdDraw*AMD descriptions (public pull request 549).
  * Fixed flink:vkCmdWriteTimestamp so it is not unnecessarily restricted to
    queues supporting graphics or compute operations (public issue 558).
  * Improvements to valid usage generator for output `*Flags` pointer
    parameters and for some `void *` parameters (public pull requests 560,
    562).
  * Document `altlen` attribute in XML schema as valid C99 syntax and tweak
    `vk.xml` to match (public pull request 566).
  * Clarify when pname:fence is signaled by flink:vkQueueSubmit in a more
    obvious place (public issue 577).

Internal Issues:

  * Specify a whitelist of supported SPIR-V Storage Classes in the
    <<spirvenv-module-validation, Validation Rules within a Module>>
    appendix (internal SPIR-V issue 166).
  * Relax the shared semaphore wait timeout requirement in the
    <<synchronization-semaphores-importing, Importing Semaphore Payloads>>
    section (internal issue 820).
  * Update the <<textures-image-level-selection, Image Level(s) Selection>>
    equations so that the parameters returned by the level-of-detail query
    appear explicitly, also fixing the issue that linear filtering would
    select a level below the base level for magnification (internal issue
    926).
  * Disallow creation of a swapchain with zero pname:imageExtent in
    slink:VkSurfaceCapabilitiesKHR and slink:VkSwapchainCreateInfoKHR
    (internal issue 1020).

Other Issues:

  * Clarify in <<textures-operation-validation,Image View Validation>> that
    the layout of subresources in an image view must have a layout that
    matches that written into the descriptor, and that this section is about
    validating image views, not images.

New Extensions:

  * `VK_EXT_global_priority`
2017-10-12 19:57:47 -07:00

519 lines
14 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_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_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