Jon Leech cebb71d062 Change log for May 20, 2017 Vulkan 1.0.50 spec update:
* Bump API patch number and header version number to 50 for this update.

Github Issues:

  * Fix numerous minor issues with the VK_EXT_debug_report extension (public
    issues 478, 483, 486, 489, 490).

Internal Issues:

  * Update flink:vkAllocateDescriptorSets to specify conditions under which
    to return ename:VK_ERROR_FRAGMENTED_POOL or
    ename:VK_ERROR_OUT_OF_POOL_MEMORY instead of
    out-of-host/out-of-device-memory, and improve the
    <<fundamentals-errorcodes, description of those errors (internal issue
    654).
  * Add a NOTE documenting that flink:vkAcquireNextImageKHR can only signal
    a single semaphore, and how to deal with that when multiple physical
    devices in a logical device need to wait on it (internal issue 730).
  * Improve description of pname:pNext chains of
    slink:VkPhysicalDeviceImageFormatInfo2KHR and
    slink:VkImageFormatProperties2KHR (internal issue 814).
  * Clean up math markup issues in the <<textures, Image Operations>>
    chapter (internal issue 818).
  * Update validusage target to use more robust code for preprocessing, by
    making direct use of Asciidoctor's preprocessor. Added uniqueItems check
    to JSON vu schema and add clean_validusage target (internal issue 826).
  * Update style guide to prohibit writing non-self-contained (on a single
    bullet point) Valid Usage statements, and modify offending Valid Usage
    statements in the Specification to match, to assist with automatic
    extraction for the validation layers (internal issue 828).
  * Add ename:VK_VALIDATION_CHECK_SHADERS_EXT to elink:VkValidationCheckEXT
    of the `VK_EXT_validation_flags` extension, to selectively disable
    shader validation.
  * Remove duplicate valid usage statement for slink:VkImageMemoryBarrier.
  * Modify reflow.py script to place VUID tag anchors standalone on a line
    following their corresponding bullet point, and reflow the spec text
    accordingly (this had been pending since the initial tag deployment).

New Extensions:

  * `VK_AMD_texture_gather_bias_lod`
2017-05-20 17:00:50 -07:00

399 lines
11 KiB
Plaintext

// Copyright (c) 2015-2017 The Khronos Group Inc.
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
[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_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_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_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[]
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_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_wayland_surface[]
include::VK_KHR_wayland_surface.txt[]
endif::VK_KHR_wayland_surface[]
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_external_memory_capabilities[]
include::VK_KHX_external_memory_capabilities.txt[]
endif::VK_KHX_external_memory_capabilities[]
ifdef::VK_KHX_external_memory[]
include::VK_KHX_external_memory.txt[]
endif::VK_KHX_external_memory[]
ifdef::VK_KHX_external_memory_win32[]
include::VK_KHX_external_memory_win32.txt[]
endif::VK_KHX_external_memory_win32[]
ifdef::VK_KHX_external_memory_fd[]
include::VK_KHX_external_memory_fd.txt[]
endif::VK_KHX_external_memory_fd[]
ifdef::VK_KHX_win32_keyed_mutex[]
include::VK_KHX_win32_keyed_mutex.txt[]
endif::VK_KHX_win32_keyed_mutex[]
ifdef::VK_KHX_external_semaphore_capabilities[]
include::VK_KHX_external_semaphore_capabilities.txt[]
endif::VK_KHX_external_semaphore_capabilities[]
ifdef::VK_KHX_external_semaphore[]
include::VK_KHX_external_semaphore.txt[]
endif::VK_KHX_external_semaphore[]
ifdef::VK_KHX_external_semaphore_win32[]
include::VK_KHX_external_semaphore_win32.txt[]
endif::VK_KHX_external_semaphore_win32[]
ifdef::VK_KHX_external_semaphore_fd[]
include::VK_KHX_external_semaphore_fd.txt[]
endif::VK_KHX_external_semaphore_fd[]
ifdef::VK_KHX_multiview[]
include::VK_KHX_multiview.txt[]
endif::VK_KHX_multiview[]
// == Multivendor `EXT` Extensions
//
// :leveloffset: 2
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_validation_flags[]
include::VK_EXT_validation_flags.txt[]
endif::VK_EXT_validation_flags[]
ifdef::VK_EXT_direct_mode_display[]
include::VK_EXT_direct_mode_display.txt[]
endif::VK_EXT_direct_mode_display[]
ifdef::VK_EXT_acquire_xlib_display[]
include::VK_EXT_acquire_xlib_display.txt[]
endif::VK_EXT_acquire_xlib_display[]
ifdef::VK_EXT_discard_rectangles[]
include::VK_EXT_discard_rectangles.txt[]
endif::VK_EXT_discard_rectangles[]
ifdef::VK_EXT_display_surface_counter[]
include::VK_EXT_display_surface_counter.txt[]
endif::VK_EXT_display_surface_counter[]
ifdef::VK_EXT_display_control[]
include::VK_EXT_display_control.txt[]
endif::VK_EXT_display_control[]
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_hdr_metadata[]
include::VK_EXT_hdr_metadata.txt[]
endif::VK_EXT_hdr_metadata[]
ifdef::VK_EXT_swapchain_colorspace[]
include::VK_EXT_swapchain_colorspace.txt[]
endif::VK_EXT_swapchain_colorspace[]
// :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_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_capabilities[]
include::VK_NV_external_memory_capabilities.txt[]
endif::VK_NV_external_memory_capabilities[]
ifdef::VK_NV_external_memory[]
include::VK_NV_external_memory.txt[]
endif::VK_NV_external_memory[]
ifdef::VK_NV_external_memory_win32[]
include::VK_NV_external_memory_win32.txt[]
endif::VK_NV_external_memory_win32[]
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_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[]
ifdef::VK_NV_sample_mask_override_coverage[]
include::VK_NV_sample_mask_override_coverage.txt[]
endif::VK_NV_sample_mask_override_coverage[]
// :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