summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Leech <oddhack@sonic.net>2017-09-04 03:06:55 -0700
committerJon Leech <oddhack@sonic.net>2017-09-04 03:06:55 -0700
commitdf88ded281466e08fcef9730ec5600f0f5535bce (patch)
tree823de83d2f354eba3fa675b0fb015e718dc636b7
parentbbb637d6dbe78a5d8c1c8f8f2129353b0e4dc1dc (diff)
downloadvulkan-spec-df88ded281466e08fcef9730ec5600f0f5535bce.zip
vulkan-spec-df88ded281466e08fcef9730ec5600f0f5535bce.tar.xz
Change log for September 5, 2017 Vulkan 1.0.60 spec update:
* Bump API patch number and header version number to 60 for this update. Github Issues: * Document that <<queries-timestamps, Timestamp Queries>> can only be meaningfully compared when they are written from the same queue (public issue 216). * Document that the `<extension>` tag `type` attribute is required for non-disabled extensions (derived from, but does not close public issue 354). * Clean up registry schema length attribute descriptions to be consistent and correct (public issue 555). Internal Issues: * Replace as much of the hand-written extension appendix metadata as possible with asciidoc includes generated from corresponding attributes of +vk.xml+, and enhance the style guide to match. This avoids inconsistencies between +vk.xml+ and the appendices, and produces a more uniform style (internal issue 137). * Remove the generated extDependency.{py,sh} files from the tree and create them dynamically on demand instead, reducing merge conflicts (internal issue 713). * Add a prototype tool for generating in-place difference markup for sections guarded by asciidoc conditionals, and new syntax for open blocks to support it (internal issue 833). * Remove unnecessary restriction of etext:*SYNC_FD_BIT_KHR external handle types to the same physical device in the slink:VkPhysicalDeviceIDPropertiesKHR, flink:VkImportMemoryWin32HandleInfoKHR, slink:VkImportFenceWin32HandleInfoKHR, slink:VkImportFenceFdInfoKHR, slink:VkImportSemaphoreWin32HandleInfoKHR, slink:VkImportSemaphoreFdInfoKHR <<external-memory-handle-types-compatibility, External memory handle types compatibility>>, <<external-semaphore-handle-types-compatibility, External semaphore handle types compatibility>>, and <<external-fence-handle-types-compatibility, External fence handle types compatibility>> sections (internal issue 956). Other Issues: * Remove dependency of +VK_KHX_device_group+ on +VK_KHR_swapchain+ (there is an interaction, but not a strict dependency), and add a new `extension` attribute to the `<require` XML tag to allow classifying a subset of interfaces of an extension as requiring another extension. Update the registry schema and documentation accordingly. New Extensions: * `VK_AMD_shader_fragment_mask` (and related `GL_AMD_shader_fragment_mask` GLSL extension) * `VK_EXT_sample_locations` * `VK_EXT_validation_cache`
-rw-r--r--.gitignore1
-rw-r--r--doc/specs/misc/GL_AMD_shader_fragment_mask.txt134
-rw-r--r--doc/specs/vulkan/Makefile37
-rw-r--r--doc/specs/vulkan/README.adoc51
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt16
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_gcn_shader.txt26
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_gpu_shader_half_float.txt26
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt21
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt19
-rwxr-xr-xdoc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt16
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt26
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt26
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_shader_fragment_mask.txt102
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt26
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt21
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_acquire_xlib_display.txt19
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt20
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_debug_marker.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_debug_report.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt24
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_direct_mode_display.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt22
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_display_control.txt20
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_display_surface_counter.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_hdr_metadata.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt26
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_sample_locations.txt91
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_shader_stencil_export.txt23
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt23
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt23
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt41
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_swapchain_colorspace.txt16
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_validation_cache.txt55
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_validation_flags.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_GOOGLE_display_timing.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_16bit_storage.txt26
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_android_surface.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_display.txt19
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt19
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_fence.txt16
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt16
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_memory.txt19
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt16
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_get_surface_capabilities2.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_incremental_present.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_mir_surface.txt19
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt16
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt15
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt30
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_shared_presentable_image.txt21
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt24
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_surface.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_swapchain.txt19
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt29
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_wayland_surface.txt20
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_win32_surface.txt20
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_xcb_surface.txt20
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_xlib_surface.txt20
-rw-r--r--doc/specs/vulkan/appendices/VK_KHX_device_group.txt19
-rw-r--r--doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_KHX_multiview.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_MVK_ios_surface.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_MVK_macos_surface.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_NN_vi_surface.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_NVX_device_generated_commands.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt21
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt17
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_external_memory.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt18
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt19
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt20
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt20
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt21
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt30
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt15
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt31
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt27
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt21
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt19
-rw-r--r--doc/specs/vulkan/appendices/boilerplate.txt3
-rw-r--r--doc/specs/vulkan/appendices/credits.txt4
-rw-r--r--doc/specs/vulkan/appendices/extensions.txt12
-rw-r--r--doc/specs/vulkan/appendices/glossary.txt19
-rw-r--r--doc/specs/vulkan/appendices/spirvenv.txt6
-rw-r--r--doc/specs/vulkan/chapters/VK_EXT_validation_cache/shader-module-validation-cache.txt21
-rw-r--r--doc/specs/vulkan/chapters/debugging.txt3
-rw-r--r--doc/specs/vulkan/chapters/devsandqueues.txt27
-rw-r--r--doc/specs/vulkan/chapters/drawing.txt48
-rw-r--r--doc/specs/vulkan/chapters/features.txt161
-rw-r--r--doc/specs/vulkan/chapters/fundamentals.txt6
-rw-r--r--doc/specs/vulkan/chapters/interfaces.txt5
-rw-r--r--doc/specs/vulkan/chapters/memory.txt55
-rw-r--r--doc/specs/vulkan/chapters/pipelines.txt65
-rw-r--r--doc/specs/vulkan/chapters/primsrast.txt171
-rw-r--r--doc/specs/vulkan/chapters/queries.txt10
-rw-r--r--doc/specs/vulkan/chapters/renderpass.txt160
-rw-r--r--doc/specs/vulkan/chapters/resources.txt39
-rw-r--r--doc/specs/vulkan/chapters/shaders.txt263
-rw-r--r--doc/specs/vulkan/chapters/synchronization.txt60
-rw-r--r--doc/specs/vulkan/config/.gitignore3
-rw-r--r--doc/specs/vulkan/config/extDependency.py56
-rw-r--r--doc/specs/vulkan/config/extDependency.sh56
-rw-r--r--doc/specs/vulkan/config/extension-highlighter.rb20
-rw-r--r--doc/specs/vulkan/config/extension-highlighter/extension.rb250
-rwxr-xr-xdoc/specs/vulkan/config/makeSubmit.py6
-rw-r--r--doc/specs/vulkan/config/tilde_open_block.rb66
-rwxr-xr-xdoc/specs/vulkan/genRelease6
-rw-r--r--doc/specs/vulkan/images/fragment_mask.pngbin0 -> 31820 bytes
-rwxr-xr-xdoc/specs/vulkan/makeAllExts1
-rwxr-xr-xdoc/specs/vulkan/makeExt1
-rwxr-xr-xdoc/specs/vulkan/makeKHR1
-rwxr-xr-xdoc/specs/vulkan/makeKHRAndKHX1
-rwxr-xr-xdoc/specs/vulkan/reflow.py22
-rw-r--r--doc/specs/vulkan/registry.txt51
-rw-r--r--doc/specs/vulkan/style/extensions.txt28
-rw-r--r--src/ext_loader/vulkan_ext.c182
-rwxr-xr-xsrc/spec/extDependency.py3
-rw-r--r--src/spec/extensionmetadocgenerator.py181
-rwxr-xr-xsrc/spec/genvk.py26
-rw-r--r--src/spec/registry.rnc6
-rw-r--r--src/spec/vk.xml257
-rw-r--r--src/vulkan/vulkan.h195
141 files changed, 3016 insertions, 1829 deletions
diff --git a/.gitignore b/.gitignore
index 5e7c51a..9990d37 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,6 +40,7 @@ __pycache__
doc/specs/vulkan/api
doc/specs/vulkan/hostsynctable
doc/specs/vulkan/validity
+doc/specs/vulkan/appendices/meta
# Files generated by extraction from spec source
doc/specs/vulkan/man/PFN*.txt
diff --git a/doc/specs/misc/GL_AMD_shader_fragment_mask.txt b/doc/specs/misc/GL_AMD_shader_fragment_mask.txt
new file mode 100644
index 0000000..633cb27
--- /dev/null
+++ b/doc/specs/misc/GL_AMD_shader_fragment_mask.txt
@@ -0,0 +1,134 @@
+Name
+
+ AMD_shader_fragment_mask
+
+Name Strings
+
+ GL_AMD_shader_fragment_mask
+
+Contact
+
+ Aaron Hagan, AMD (aaron.hagan 'at' amd.com)
+
+Contributors
+
+ Aaron Hagan, AMD
+ Timothy Lottes, AMD
+ Daniel Rakos, AMD
+
+Status
+
+ Pending
+
+Version
+
+ Last Modified Date: 08/07/2017
+ Author Revision: 2
+
+Number
+
+ TBD
+
+Dependencies
+
+ This extension is written against the OpenGL Shading Language
+ Specification, Version 4.50.
+
+Overview
+
+ This extension introduces new GLSL built-in functions enabling more
+ efficient read access to fragment mask compressed multisampled color
+ images. Implementations supporting this extension can avoid storing
+ identical sample color values inside a single pixel. This is achieved
+ by introducing the concept of color fragments and fragment masks.
+
+ Color fragments are storage units inside a single pixel of a multisampled
+ color image that can hold a unique color value. Each pixel then has a
+ fragment mask which contains per sample indices that map a given color
+ sample to a particular color fragment.
+
+ This extension enables fetching the fragment mask and individual color
+ fragments from a multisampled color image.
+
+IP Status
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ None.
+
+Modifications to the OpenGL Shading Language Specification, Version 4.50
+
+ Including the following line in a shader can be used to control the
+ language features described in this extension:
+
+ #extension GL_AMD_shader_fmask : <behavior>
+
+ where <behavior> is as specified in section 3.3.
+
+ New preprocessor #defines are added to the OpenGL Shading Language:
+
+ #define GL_AMD_shader_fragement_mask 1
+
+Additions to Chapter 8 of the OpenGL Shading Language (GLSL) Specification,
+version 4.30 (Built-in functions)
+
+ Add to the table of functions 8.9.2, "Texel Lookup Functions", p. 164
+
+ +-----------------------------------+-------------------------------------+
+ | Syntax | Description |
+ +-----------------------------------+-------------------------------------+
+ | uint fragmentMaskFetchAMD( | Returns the fragment mask from a |
+ | gsampler2DMS sampler, | multisampled color image. The |
+ | ivec2 P) | fragment mask is a single uint where|
+ | | each subsequent 4 bit specifies the |
+ | uint fragmentMaskFetchAMD( | color fragment index corresponding |
+ | gsampler2DMSArray sampler, | to the color sample, starting from |
+ | ivec3 P) | the least significant bit. |
+ | | |
+ | uint fragmentMaskFetchAMD( | |
+ | gsubpassInputMS subpass) | |
+ +-----------------------------------+-------------------------------------+
+ | gvec4 fragmentFetchAMD( | Fetches a color fragment with a |
+ | gsampler2DMS sampler, | correspoding fragment mask value. |
+ | ivec2 P, | |
+ | uint fragIndex) | |
+ | | |
+ | gvec4 fragmentFetchAMD( | |
+ | gsampler2DMSArray sampler, | |
+ | ivec3 P, | |
+ | uint fragIndex)| |
+ | | |
+ | gvec4 fragmentFetchAMD( | |
+ | gsubpassInputMS subpass, | |
+ | uint fragIndex) | |
+ +-----------------------------------+-------------------------------------+
+
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None.
+
+GLX Protocol
+
+ None.
+
+Errors
+
+ None.
+
+Issues
+
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- ---------- -------- -----------------------------------------------
+ 2 08/07/2017 ahagan Cleanup and prepared for posting.
+
+ 1 04/24/2017 ahagan Initial draft.
diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile
index bbfab7f..0c0bb3f 100644
--- a/doc/specs/vulkan/Makefile
+++ b/doc/specs/vulkan/Makefile
@@ -22,7 +22,7 @@
# asciidoc and generator script arguments $(EXTATTRIBS) and
# $(EXTOPTIONS).
-EXTS := $(sort VK_KHR_sampler_mirror_clamp_to_edge $(EXTENSIONS))
+EXTS := $(sort VK_KHR_sampler_mirror_clamp_to_edge $(EXTENSIONS) $(DIFFEXTENSIONS))
EXTATTRIBS := $(foreach ext,$(EXTS),-a $(ext))
EXTOPTIONS := $(foreach ext,$(EXTS),-extension $(ext))
@@ -87,7 +87,7 @@ VERBOSE =
# $(EXTENSIONS))
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
-SPECREVISION = 1.0.59
+SPECREVISION = 1.0.60
# Spell out RFC2822 format as not all date commands support -R
SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`)
@@ -114,7 +114,7 @@ ATTRIBOPTS = -a revnumber="$(SPECREVISION)" \
-a stem=latexmath \
$(EXTATTRIBS)
-ADOCEXTS = -r $(CURDIR)/config/vulkan-macros.rb
+ADOCEXTS = -r $(CURDIR)/config/vulkan-macros.rb -r $(CURDIR)/config/tilde_open_block.rb
ADOCOPTS = -d book $(ATTRIBOPTS) $(NOTEOPTS) $(VERBOSE) $(ADOCEXTS)
ADOCHTMLEXTS = -r $(CURDIR)/config/katex_replace.rb
@@ -143,7 +143,10 @@ SPECSRC := vkspec.txt
# should work in extension branches to pull in those files as well.
SPECFILES = $(wildcard chapters/[A-Za-z]*.txt appendices/[A-Za-z]*.txt chapters/*/[A-Za-z]*.txt appendices/*/[A-Za-z]*.txt)
GENINCLUDE = $(wildcard api/*/[A-Za-z]*.txt validity/*/[A-Za-z]*.txt hostsynctable/*.txt)
-GENDEPENDS = api/timeMarker validity/timeMarker hostsynctable/timeMarker
+# Shorthand for where the extension appendix generated files go
+METADIR = appendices/meta
+# Generated dependencies of the spec
+GENDEPENDS = api/timeMarker validity/timeMarker hostsynctable/timeMarker $(METADIR)/timeMarker
# All non-format-specific dependencies
COMMONDOCS = $(SPECFILES) $(GENINCLUDE) $(GENDEPENDS)
@@ -166,6 +169,12 @@ $(HTMLDIR)/vkspec.html: KATEXDIR = ../katex
$(HTMLDIR)/vkspec.html: $(SPECSRC) $(COMMONDOCS) katexinst
$(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ $(SPECSRC)
+diff_html: $(HTMLDIR)/diff.html $(SPECSRC) $(COMMONDOCS)
+
+$(HTMLDIR)/diff.html: KATEXDIR = ../katex
+$(HTMLDIR)/diff.html: $(SPECSRC) $(COMMONDOCS) katexinst
+ $(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) -a diff_extensions="$(DIFFEXTENSIONS)" -r $(CURDIR)/config/extension-highlighter.rb --trace -o $@ $(SPECSRC)
+
pdf: $(PDFDIR)/vkspec.pdf $(SPECSRC) $(COMMONDOCS)
$(PDFDIR)/vkspec.pdf: $(SPECSRC) $(COMMONDOCS)
@@ -238,7 +247,8 @@ clean_checks:
$(QUIET)$(RMRF) $(CHECKDIR)
clean_generated:
- $(QUIET)$(RMRF) api/* hostsynctable/* validity/* vkapi.py
+ $(QUIET)$(RMRF) api/* hostsynctable/* validity/* $(METADIR)/* vkapi.py
+ $(QUIET)$(RM) config/extDependency.stamp config/extDependency.pyc config/extDependency.sh config/extDependency.py
$(QUIET)$(RM) man/apispec.txt $(LOGFILE) man/[Vv][Kk]*.txt man/PFN*.txt
$(QUIET)$(RMRF) $(PDFMATHDIR)
@@ -363,6 +373,7 @@ checklinks: vkapi.py
# api/timeMarker - proxy for 'apiincludes' - API include files under api/*/*.txt
# hostsynctable/timeMarker - proxy for host sync table include files under hostsynctable/*.txt
# validity/timeMarker - proxy for API validity include files under validity/*/*.txt
+# appendices/meta/timeMarker - proxy for extension appendix metadata include files under appendices/*.txt
#
# $(EXTOPTIONS) specifies the extensions which are included in these
# targets, and is set above based on $(EXTENSIONS).
@@ -393,17 +404,27 @@ validity/timeMarker: $(VKXML) $(GENVK)
$(QUIET)$(MKDIR) validity
$(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o validity validinc
+extinc: $(METADIR)/timeMarker
+
+$(METADIR)/timeMarker: $(VKXML) $(GENVK)
+ $(QUIET)$(MKDIR) $(METADIR)
+ $(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o $(METADIR) extinc
+
# Debugging aid - generate all files from registry XML
# This leaves out config/extDependency.sh intentionally as it only
# needs to be updated when the extension dependencies in vk.xml change.
-generated: vkapi.py api/timeMarker hostsynctable/timeMarker validity/timeMarker
+generated: vkapi.py api/timeMarker hostsynctable/timeMarker validity/timeMarker $(METADIR)/timeMarker
# Extension dependencies derived from vk.xml
# Both Bash and Python versions are generated
+config/extDependency.sh: config/extDependency.stamp
+config/extDependency.py: config/extDependency.stamp
+
DEPSCRIPT = $(REGISTRY)/extDependency.py
-config/extDependency.sh: $(VKXML) $(DEPSCRIPT)
- $(PYTHON) $(DEPSCRIPT) -registry $(VKXML) \
+config/extDependency.stamp: $(VKXML) $(DEPSCRIPT)
+ $(QUIET)$(PYTHON) $(DEPSCRIPT) -registry $(VKXML) \
-outscript config/extDependency.sh \
-outpy config/extDependency.py
+ $(QUIET)touch $@
diff --git a/doc/specs/vulkan/README.adoc b/doc/specs/vulkan/README.adoc
index 02f0995..68731d9 100644
--- a/doc/specs/vulkan/README.adoc
+++ b/doc/specs/vulkan/README.adoc
@@ -35,6 +35,8 @@ targets, or they can individually be found as follows:
** `pdf` - PDF in `$(OUTDIR)/pdf/vkspec.pdf`
* "`Vulkan Documentation and Extensions`" guide:
** `styleguide` - Single-file HTML5 in `$(OUTDIR)/styleguide.html`
+ * Diff spec:
+ ** `diff_html` - Single-file HTML5 in `$(OUTDIR)/html/diff.html`
* Reference pages:
** `manhtml` - Single-file HTML in `$(OUTDIR)/apispec.html`
** `manpdf` - Single-file PDF in `$(OUTDIR)/apispec.html`
@@ -76,15 +78,16 @@ as described below
[[building-extensions]]
=== Building With Extensions Included
-We now use a "`single-branch model`", where extensions are included in the
-same `1.0` branch as the core Specification, instead of the older model
-where each extension lived in a separate Git branch.
-Whether a given extension is generated in the output depends on asciidoc and
-generator script options being specified.
+Extensions are defined in the same source as the core Specification, but
+are only conditionally included in the output.
+Asciidoctor http://asciidoctor.org/docs/user-manual/#attributes[attributes]
+of the same name as the extension are used to define whether the extension
+is included or not - defining such an attribute will cause the output to
+include the text for that extension.
-The extensions included are those specified as a space-separated list of
-extension names (e.g. `VK_KHR_surface`) in the Makefile variable
-`$(EXTENSIONS)`, normally set on the make command line.
+When building the specification, the extensions included are those specified
+as a space-separated list of extension names (e.g. `VK_KHR_surface`) in the
+Makefile variable `$(EXTENSIONS)`, normally set on the make command line.
When changing the list of extensions, it is critical to remove all generated
files using the `clean_generated` Makefile target, as the contents of
generated files depends on `$(EXTENSIONS)`.
@@ -101,13 +104,6 @@ or more specified targets for specified extensions:
Khronox Experimental (`VK_KHX_*`) extensions enabled.
Usage is `makeKHRAndKHX target(s)`.
-Before using these scripts, if you have changed `src/spec/vk.xml` since
-checking out your repository, first
-
- $ make config/extDependency.sh
-
-to rebuild extension dependencies.
-
The Makefile variable `$(APITITLE)` defines an additional string which is
appended to the specification title.
When building with extensions enabled, this should be set to something like
@@ -115,6 +111,31 @@ When building with extensions enabled, this should be set to something like
The `makeExt`, `makeKHR`, and `makeKHRAndKHX` scripts already do this.
+[[building-diff]]
+==== Building A Highlighted Extension Diff
+
+The "diff_html" target in the makefile can be used to generate a version of
+the specification which highlights changes made to the specification by the
+inclusion of a particular set of extensions.
+
+Extensions in the "EXTENSIONS" attribute defines the base extensions to be
+enabled by the specification, and these will not be highlighted in the
+output.
+Extensions in the "DIFFEXTENSIONS" attribute defines the set of extensions
+whose changes to the text will be highlighted when they are enabled.
+Any extensions in both environment variables will be treated as if they were
+only included in DIFFEXTENSIONS.
+The DIFFEXTENSIONS environment variable can be used alongside the make*
+scripts in this repository.
+
+In the resulting html document, content that has been added by one of the
+extensions will be highlighted with a lime background, and content that was
+removed will be highlighted with a pink background.
+Each section has an anchor of "#differenceN", with an arrow (=>) at the end
+of each section which links to the next difference section.
+The first diff section is "difference1".
+
+
[[building-test]]
=== Alternate and Test Builds
diff --git a/doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt b/doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt
index ebfa24c..e256c97 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt
@@ -1,20 +1,9 @@
-[[VK_AMD_draw_indirect_count]]
-== VK_AMD_draw_indirect_count
+include::meta/VK_AMD_draw_indirect_count.txt[]
-*Name String*::
- +VK_AMD_draw_indirect_count+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 34
*Last Modified Date*::
2016-08-23
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Matthaeus G.
Chajdas, AMD
@@ -22,9 +11,6 @@
- Graham Sellers, AMD
- Daniel Rakos, AMD
- Dominik Witczak, AMD
-*Contacts*::
- - Matthaeus G.
- Chajdas, AMD (matthaeus.chajdas@amd.com)
This extension allows an application to source the number of draw calls for
indirect draw calls from a buffer.
diff --git a/doc/specs/vulkan/appendices/VK_AMD_gcn_shader.txt b/doc/specs/vulkan/appendices/VK_AMD_gcn_shader.txt
index 64e5fcb..c601bf4 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_gcn_shader.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_gcn_shader.txt
@@ -1,31 +1,27 @@
-[[VK_AMD_gcn_shader]]
-== VK_AMD_gcn_shader
+include::meta/VK_AMD_gcn_shader.txt[]
-*Name String*::
- +VK_AMD_gcn_shader+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 26
*Last Modified Date*::
2016-05-30
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.15 of the Vulkan API.
*Contributors*::
- Dominik Witczak, AMD
- Daniel Rakos, AMD
- Rex Xu, AMD
- Graham Sellers, AMD
-*Contacts*::
- - Dominik Witczak, AMD (dominik.witczak@amd.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * +SPV_AMD_gcn_shader+
+ * https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_gcn_shader.html[+SPV_AMD_gcn_shader+]
+
+ifdef::editing-notes[]
+[NOTE]
+.editing-note
+==================
+Shouldn't the SPV extension be in the Interactions and External Dependencies
+block?
+==================
+endif::editing-notes[]
=== Version History
diff --git a/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_half_float.txt b/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_half_float.txt
index 1e55da1..8bf1a0b 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_half_float.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_half_float.txt
@@ -1,20 +1,9 @@
-[[VK_AMD_gpu_shader_half_float]]
-== VK_AMD_gpu_shader_half_float
+include::meta/VK_AMD_gpu_shader_half_float.txt[]
-*Name String*::
- +VK_AMD_gpu_shader_half_float+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 37
*Last Modified Date*::
2016-09-21
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.27 of the Vulkan API.
*Contributors*::
- Daniel Rakos, AMD
- Dominik Witczak, AMD
@@ -22,12 +11,19 @@
- Graham Sellers, AMD
- Qun Lin, AMD
- Rex Xu, AMD
-*Contacts*::
- - Dominik Witczak, AMD (Dominik.Witczak@amd.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * +SPV_AMD_gpu_shader_half_float+
+ * https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_gpu_shader_half_float.html[+SPV_AMD_gpu_shader_half_float+]
+
+ifdef::editing-notes[]
+[NOTE]
+.editing-note
+==================
+Shouldn't the SPV extension be in the Interactions and External Dependencies
+block?
+==================
+endif::editing-notes[]
=== Version History
diff --git a/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt b/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt
index 776dd8f..8da7050 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt
@@ -1,20 +1,13 @@
-[[VK_AMD_gpu_shader_int16]]
-== VK_AMD_gpu_shader_int16
+include::meta/VK_AMD_gpu_shader_int16.txt[]
-*Name String*::
- +VK_AMD_gpu_shader_int16+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 133
*Last Modified Date*::
06/08/2017
-*Revision*:: 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires the SPV_AMD_gpu_shader_int16 SPIR-V extension.
+*Interactions and External Dependencies*::
+ - Requires the
+ https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_gpu_shader_int16.html[+SPV_AMD_gpu_shader_int16+]
+ SPIR-V extension.
*Contributors*::
- Daniel Rakos, AMD
- Dominik Witczak, AMD
@@ -23,12 +16,10 @@
- Rex Xu, AMD
- Timothy Lottes, AMD
- Zhi Cai, AMD
-*Contacts*::
- - Qun Lin, AMD (quentin.lin@amd.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * SPV_AMD_gpu_shader_int16
+ * +SPV_AMD_gpu_shader_int16+
=== Version History
diff --git a/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt b/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt
index e32d030..3146d3b 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt
@@ -1,30 +1,15 @@
-[[VK_AMD_mixed_attachment_samples]]
-== VK_AMD_mixed_attachment_samples
-
-*Name String*::
- +VK_AMD_mixed_attachment_samples+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 137
+include::meta/VK_AMD_mixed_attachment_samples.txt[]
+
*Status*::
Complete
*Last Modified Date*::
2017-07-24
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Mais Alnasser, AMD
- Matthaeus G.
Chajdas, AMD
- Maciej Jesionowski, AMD
- Daniel Rakos, AMD
-*Contacts*::
- - Matthaeus G.
- Chajdas (matthaeus.chajdas@amd.com)
-*Overview*::
This extension enables applications to use multisampled rendering with a
depth/stencil sample count that is larger than the color sample count.
diff --git a/doc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt b/doc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt
index eeaa4e9..4dcf770 100755
--- a/doc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt
@@ -1,28 +1,14 @@
-[[VK_AMD_negative_viewport_height]]
-== VK_AMD_negative_viewport_height
+include::meta/VK_AMD_negative_viewport_height.txt[]
-*Name String*::
- +VK_AMD_negative_viewport_height+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 36
*Last Modified Date*::
2016-09-02
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Matthaeus G.
Chajdas, AMD
- Graham Sellers, AMD
- Baldur Karlsson
-*Contacts*::
- - Matthaeus G.
- Chajdas, AMD (matthaeus.chajdas@amd.com)
This extension allows an application to specify a negative viewport height.
The result is that the viewport transformation will flip along the y-axis.
diff --git a/doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt b/doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt
index 270f9da..ef3ef6a 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt
@@ -1,20 +1,9 @@
-[[VK_AMD_rasterization_order]]
-== VK_AMD_rasterization_order
-
-*Name String*::
- +VK_AMD_rasterization_order+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 19
+include::meta/VK_AMD_rasterization_order.txt[]
+
*Last Modified Date*::
2016-04-25
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.11 of the Vulkan API.
*Contributors*::
- Matthaeus G.
Chajdas, AMD
@@ -22,8 +11,6 @@
- Daniel Rakos, AMD
- Graham Sellers, AMD
- Dominik Witczak, AMD
-*Contacts*::
- - Daniel Rakos, AMD
This extension introduces the possibility for the application to control the
order of primitive rasterization.
diff --git a/doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt b/doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt
index ad21587..20e9e5b 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt
@@ -1,20 +1,9 @@
-[[VK_AMD_shader_ballot]]
-== VK_AMD_shader_ballot
+include::meta/VK_AMD_shader_ballot.txt[]
-*Name String*::
- +VK_AMD_shader_ballot+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 38
*Last Modified Date*::
2016-09-19
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.27 of the Vulkan API.
*Contributors*::
- Qun Lin, AMD
- Graham Sellers, AMD
@@ -23,12 +12,19 @@
- Dominik Witczak, AMD
- Matthäus G.
Chajdas, AMD
-*Contacts*::
- - Dominik Witczak, AMD (Dominik.Witczak@amd.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * +SPV_AMD_shader_ballot+
+ * https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_shader_ballot.html[+SPV_AMD_shader_ballot+]
+
+ifdef::editing-notes[]
+[NOTE]
+.editing-note
+==================
+Shouldn't the SPV extension be in the Interactions and External Dependencies
+block?
+==================
+endif::editing-notes[]
=== Version History
diff --git a/doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt b/doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt
index 2382e81..65e2679 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt
@@ -1,20 +1,9 @@
-[[VK_AMD_shader_explicit_vertex_parameter]]
-== VK_AMD_shader_explicit_vertex_parameter
+include::meta/VK_AMD_shader_explicit_vertex_parameter.txt[]
-*Name String*::
- +VK_AMD_shader_explicit_vertex_parameter+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 22
*Last Modified Date*::
2016-05-10
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.11 of the Vulkan API.
*Contributors*::
- Matthaeus G.
Chajdas, AMD
@@ -22,12 +11,19 @@
- Daniel Rakos, AMD
- Graham Sellers, AMD
- Rex Xu, AMD
-*Contacts*::
- - Qun Lin, AMD (quentin.lin@amd.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * +SPV_AMD_shader_explicit_vertex_parameter+
+ * https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_shader_explicit_vertex_parameter.html[+SPV_AMD_shader_explicit_vertex_parameter+]
+
+ifdef::editing-notes[]
+[NOTE]
+.editing-note
+==================
+Shouldn't the SPV extension be in the Interactions and External Dependencies
+block?
+==================
+endif::editing-notes[]
=== Version History
diff --git a/doc/specs/vulkan/appendices/VK_AMD_shader_fragment_mask.txt b/doc/specs/vulkan/appendices/VK_AMD_shader_fragment_mask.txt
new file mode 100644
index 0000000..36c3cdb
--- /dev/null
+++ b/doc/specs/vulkan/appendices/VK_AMD_shader_fragment_mask.txt
@@ -0,0 +1,102 @@
+include::meta/VK_AMD_shader_fragment_mask.txt[]
+
+*Last Modified Date*::
+ 2017-08-16
+*IP Status*::
+ No known IP claims.
+*Dependencies*::
+ - Requires the
+ https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_fragment_mask.html[+SPV_AMD_fragment_mask+]
+ SPIR-V extension.
+*Contributors*::
+ - Aaron Hagan, AMD
+ - Daniel Rakos, AMD
+ - Timothy Lottes, AMD
+*Overview*::
++
+--
+This extension provides efficient read access to the fragment mask in
+compressed multisampled color surfaces.
+The fragment mask is a lookup table that associates color samples with color
+fragment values.
+
+The fragment mask can be fetched with a call to pname:fragmentMaskFetchAMD
+from a shader, which returns a single uint where each subsequent 4 bit
+specifies the color fragment index corresponding to the color sample,
+starting from the least significant bit.
+For example, when 8 color samples are used, the color fragment index for
+color sample 0 will be in bits 0-3 of the fragment mask, for color sample 7
+the index will be in bits 28-31.
+
+The color fragment for a particular color sample may then be fetched with
+the correspoding fragment mask value using the pname:fragmentFetchAMD shader
+function.
+--
+
+=== New Object Types
+
+None.
+
+=== New Enum Constants
+
+None.
+
+=== New Enums
+
+None.
+
+=== New SPIR-V Capabilities
+
+* <<spirvenv-capabilities-table-shaderfragmentmaskamd,code:ShaderFragmentMaskAMD>>
+
+
+=== New Structures
+
+None.
+
+=== New Functions
+
+None.
+
+=== Examples
+
+This example shows a shader that queries the fragment mask from a
+multisampled compressed surface and uses it to query fragment values.
+
+[source,c++]
+----------------------------------------
+#version 450 core
+
+#extension GL_AMD_shader_fragment_mask: enable
+
+layout(binding = 0) uniform sampler2DMS s2DMS;
+layout(binding = 1) uniform isampler2DMSArray is2DMSArray;
+
+layout(binding = 2, input_attachment_index = 0) uniform usubpassInputMS usubpassMS;
+
+layout(location = 0) out vec4 fragColor;
+
+void main()
+{
+ vec4 fragOne = vec4(0.0);
+
+ uint fragMask = fragmentMaskFetchAMD(s2DMS, ivec2(2, 3));
+ uint fragIndex = (fragMask & 0xF0) >> 4;
+ fragOne += fragmentFetchAMD(s2DMS, ivec2(2, 3), 1);
+
+ fragMask = fragmentMaskFetchAMD(is2DMSArray, ivec3(2, 3, 1));
+ fragIndex = (fragMask & 0xF0) >> 4;
+ fragOne += fragmentFetchAMD(is2DMSArray, ivec3(2, 3, 1), fragIndex);
+
+ fragMask = fragmentMaskFetchAMD(usubpassMS);
+ fragIndex = (fragMask & 0xF0) >> 4;
+ fragOne += fragmentFetchAMD(usubpassMS, fragIndex);
+
+ fragColor = fragOne;
+}
+----------------------------------------
+
+=== Version History
+
+ * Revision 1, 2017-08-16 (Aaron Hagan)
+ - Initial draft
diff --git a/doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt b/doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt
index 6d55e65..c6acd16 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt
@@ -1,20 +1,9 @@
-[[VK_AMD_shader_trinary_minmax]]
-== VK_AMD_shader_trinary_minmax
+include::meta/VK_AMD_shader_trinary_minmax.txt[]
-*Name String*::
- +VK_AMD_shader_trinary_minmax+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 21
*Last Modified Date*::
2016-05-10
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.11 of the Vulkan API.
*Contributors*::
- Matthaeus G.
Chajdas, AMD
@@ -22,12 +11,19 @@
- Daniel Rakos, AMD
- Graham Sellers, AMD
- Rex Xu, AMD
-*Contacts*::
- - Qun Lin, AMD (quentin.lin@amd.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * +SPV_AMD_shader_trinary_minmax+
+ * https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_shader_trinary_minmax.html[+SPV_AMD_shader_trinary_minmax+]
+
+ifdef::editing-notes[]
+[NOTE]
+.editing-note
+==================
+Shouldn't the SPV extension be in the Interactions and External Dependencies
+block?
+==================
+endif::editing-notes[]
=== Version History
diff --git a/doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt b/doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt
index 9aba64d..f5f4581 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt
@@ -1,21 +1,10 @@
-[[VK_AMD_texture_gather_bias_lod]]
-== VK_AMD_texture_gather_bias_lod
-
-*Name String*::
- +VK_AMD_texture_gather_bias_lod+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 42
+include::meta/VK_AMD_texture_gather_bias_lod.txt[]
+
*Last Modified Date*::
03/21/2017
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_get_physical_device_properties2+.
+*Interactions and External Dependencies*::
- Requires the
https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_texture_gather_bias_lod.html[+SPV_AMD_texture_gather_bias_lod+]
SPIR-V extension.
@@ -28,14 +17,12 @@
- Qun Lin, AMD
- Rex Xu, AMD
- Timothy Lottes, AMD
-*Contacts*::
- - Rex Xu, AMD (Rex.Xu@amd.com)
This extension adds two related features.
Firstly, support for the following SPIR-V extension in Vulkan is added:
- * SPV_AMD_texture_gather_bias_lod
+ * +SPV_AMD_texture_gather_bias_lod+
Secondly, the extension allows the application to query, which formats can
be used together with the new function prototypes introduced by the SPIR-V
diff --git a/doc/specs/vulkan/appendices/VK_EXT_acquire_xlib_display.txt b/doc/specs/vulkan/appendices/VK_EXT_acquire_xlib_display.txt
index 3bd9ab9..3960ea2 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_acquire_xlib_display.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_acquire_xlib_display.txt
@@ -1,22 +1,9 @@
-[[VK_EXT_acquire_xlib_display]]
-== VK_EXT_acquire_xlib_display
-
-*Name String*::
- +VK_EXT_acquire_xlib_display+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 90
+include::meta/VK_EXT_acquire_xlib_display.txt[]
+
*Last Modified Date*::
2016-12-13
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.37 of the Vulkan API.
- - Requires +VK_KHR_display+.
- - Requires +VK_EXT_direct_mode_display+.
*Contributors*::
- Dave Airlie, Red Hat
- Pierre Boudier, NVIDIA
@@ -25,8 +12,6 @@
- Pierre-Loup Griffais, Valve
- Liam Middlebrook, NVIDIA
- Daniel Vetter, Intel
-*Contacts*::
- - James Jones, NVIDIA (jajones 'at' nvidia.com)
This extension allows an application to take exclusive control on a display
currently associated with an X11 screen.
diff --git a/doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt b/doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt
index 20360bb..83886ca 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt
@@ -1,25 +1,11 @@
-[[VK_EXT_blend_operation_advanced]]
-== VK_EXT_blend_operation_advanced
-
-*Name String*::
- VK_EXT_blend_operation_advanced
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 149
+include::meta/VK_EXT_blend_operation_advanced.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2017-06-12
-*Revision*::
- 2
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
*Contributors*::
- Jeff Bolz, NVIDIA
-*Contact*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension adds a number of "`advanced`" blending operations that can:
be used to perform new color blending operations, many of which are more
diff --git a/doc/specs/vulkan/appendices/VK_EXT_debug_marker.txt b/doc/specs/vulkan/appendices/VK_EXT_debug_marker.txt
index cbef298..e4476f4 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_debug_marker.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_debug_marker.txt
@@ -1,28 +1,14 @@
-[[VK_EXT_debug_marker]]
-== VK_EXT_debug_marker
-
-*Name String*::
- +VK_EXT_debug_marker+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 23
+include::meta/VK_EXT_debug_marker.txt[]
+
*Last Modified Date*::
2017-01-31
-*Revision*::
- 4
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.11 of the Vulkan API.
- - Requires +VK_EXT_debug_report+.
*Contributors*::
- Baldur Karlsson
- Dan Ginsburg, Valve
- Jon Ashburn, LunarG
- Kyle Spagnoli, NVIDIA
-*Contacts*::
- - Baldur Karlsson
The +VK_EXT_debug_marker+ extension is a device extension.
It introduces concepts of object naming and tagging, for better tracking of
diff --git a/doc/specs/vulkan/appendices/VK_EXT_debug_report.txt b/doc/specs/vulkan/appendices/VK_EXT_debug_report.txt
index 2b5ca0c..f123fb1 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_debug_report.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_debug_report.txt
@@ -1,27 +1,14 @@
-[[VK_EXT_debug_report]]
-== VK_EXT_debug_report
-
-*Name String*::
- +VK_EXT_debug_report+
-*Extension Type*::
- Instance
-*Registered Extension Number*::
- 12
+include::meta/VK_EXT_debug_report.txt[]
+
*Last Modified Date*::
2017-04-27
-*Revision*::
- 8
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.27 of the Vulkan API.
*Contributors*::
- Courtney Goeltzenleuchter, LunarG
- Dan Ginsburg, Valve
- Jon Ashburn, LunarG
- Mark Lobodzinski, LunarG
-*Contacts*::
- - Courtney Goeltzenleuchter
Due to the nature of the Vulkan interface, there is very little error
information available to the developer and application.
diff --git a/doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt b/doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt
index 7304172..6253618 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt
@@ -1,28 +1,13 @@
-[[VK_EXT_depth_range_unrestricted]]
-== VK_EXT_depth_range_unrestricted
-*Name String*::
- VK_EXT_depth_range_unrestricted
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 14
+include::meta/VK_EXT_depth_range_unrestricted.txt[]
+
*Status*::
Draft
-*Last Modified Data*::
+*Last Modified Date*::
2017-06-22
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
*Contributors*::
- Daniel Koch, NVIDIA
- Jeff Bolz, NVIDIA
-*Contact*::
- - Piers Daniell (pdaniell 'at' nvidia.com)
-*Overview*::
-+
---
+
This extension removes the slink:VkViewport pname:minDepth and
pname:maxDepth restrictions that the values must be between `0.0` and `1.0`,
inclusive.
@@ -31,7 +16,6 @@ slink:VkPipelineDepthStencilStateCreateInfo pname:minDepthBounds and
pname:maxDepthBounds.
Finally it removes the restriction on the pname:depth value in
slink:VkClearDepthStencilValue.
---
=== New Object Types
None.
diff --git a/doc/specs/vulkan/appendices/VK_EXT_direct_mode_display.txt b/doc/specs/vulkan/appendices/VK_EXT_direct_mode_display.txt
index 2a65130..d2cab7a 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_direct_mode_display.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_direct_mode_display.txt
@@ -1,29 +1,15 @@
-[[VK_EXT_direct_mode_display]]
-== VK_EXT_direct_mode_display
-
-*Name String*::
- +VK_EXT_direct_mode_display+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 89
+include::meta/VK_EXT_direct_mode_display.txt[]
+
*Last Modified Date*::
2016-12-13
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.37 of the Vulkan API.
- - Requires +VK_KHR_display+
*Contributors*::
- Pierre Boudier, NVIDIA
- James Jones, NVIDIA
- Damien Leone, NVIDIA
- Pierre-Loup Griffais, Valve
- Liam Middlebrook, NVIDIA
-*Contacts*::
- - James Jones, NVIDIA (jajones 'at' nvidia.com)
This is extension, along with related platform exentions, allows
applications to take exclusive control of displays associated with a native
diff --git a/doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt b/doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt
index 859f628..0e1615d 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt
@@ -1,28 +1,12 @@
-[[VK_EXT_discard_rectangles]]
-== VK_EXT_discard_rectangles
-
-*Name String*::
- VK_EXT_discard_rectangles
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 100
+include::meta/VK_EXT_discard_rectangles.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2016-12-22
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
- - Requires
- <<VK_KHR_get_physical_device_properties2,VK_KHR_get_physical_device_properties2>>.
*Contributors*::
- Daniel Koch, NVIDIA
- Jeff Bolz, NVIDIA
-*Contact*::
- - Piers Daniell (pdaniell 'at' nvidia.com)
This extension provides additional orthogonally aligned "discard rectangles"
specified in framebuffer-space coordinates that restrict rasterization of
diff --git a/doc/specs/vulkan/appendices/VK_EXT_display_control.txt b/doc/specs/vulkan/appendices/VK_EXT_display_control.txt
index a252dcb..301c708 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_display_control.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_display_control.txt
@@ -1,31 +1,15 @@
-[[VK_EXT_display_control]]
-== VK_EXT_display_control
-
-*Name String*::
- +VK_EXT_display_control+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 92
+include::meta/VK_EXT_display_control.txt[]
+
*Last Modified Date*::
2016-12-13
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.37 of the Vulkan API.
- - Requires +VK_KHR_display+
- - Requires +VK_EXT_display_surface_counter+
- - Requires +VK_KHR_swapchain+
*Contributors*::
- Pierre Boudier, NVIDIA
- James Jones, NVIDIA
- Damien Leone, NVIDIA
- Pierre-Loup Griffais, Valve
- Daniel Vetter, Intel
-*Contacts*::
- - James Jones, NVIDIA (jajones 'at' nvidia.com)
This extension defines a set of utility functions for use with the
+VK_KHR_display+ and +VK_KHR_display_swapchain+ extensions.
diff --git a/doc/specs/vulkan/appendices/VK_EXT_display_surface_counter.txt b/doc/specs/vulkan/appendices/VK_EXT_display_surface_counter.txt
index 1594a66..b8ac054 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_display_surface_counter.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_display_surface_counter.txt
@@ -1,29 +1,15 @@
-[[VK_EXT_display_surface_counter]]
-== VK_EXT_display_surface_counter
-
-*Name String*::
- +VK_EXT_display_surface_counter+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 91
+include::meta/VK_EXT_display_surface_counter.txt[]
+
*Last Modified Date*::
2016-12-13
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.37 of the Vulkan API.
- - Requires +VK_KHR_display+
*Contributors*::
- Pierre Boudier, NVIDIA
- James Jones, NVIDIA
- Damien Leone, NVIDIA
- Pierre-Loup Griffais, Valve
- Daniel Vetter, Intel
-*Contacts*::
- - James Jones, NVIDIA (jajones 'at' nvidia.com)
This is extension defines a vertical blanking period counter associated with
display surfaces.
diff --git a/doc/specs/vulkan/appendices/VK_EXT_hdr_metadata.txt b/doc/specs/vulkan/appendices/VK_EXT_hdr_metadata.txt
index e4df8e9..feaa26d 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_hdr_metadata.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_hdr_metadata.txt
@@ -1,25 +1,11 @@
-[[VK_EXT_hdr_metadata]]
-== VK_EXT_hdr_metadata
-
-*Name String*::
- +VK_EXT_hdr_metadata+
-*Extension Type*::
- Device
-*Registered Extension Number*::
- 106
+include::meta/VK_EXT_hdr_metadata.txt[]
+
*Last Modified Date*::
2017-03-04
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires +VK_KHR_surface+.
*Contributors*::
- Courtney Goeltzenleuchter, Google
-*Contacts*::
- - Courtney Goeltzenleuchter, Google
This extension defines two new structures and a function to assign SMPTE
(the Society of Motion Picture and Television Engineers) 2086 metadata and
diff --git a/doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt b/doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt
index 0e0268b..f568b52 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt
@@ -1,36 +1,24 @@
-[[VK_EXT_post_depth_coverage]]
-== VK_EXT_post_depth_coverage
-*Name String*::
- VK_EXT_post_depth_coverage
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 156
+include::meta/VK_EXT_post_depth_coverage.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2017-07-17
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
+*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_post_depth_coverage.html[+SPV_KHR_post_depth_coverage+]
SPIR-V extension.
- This extension requires
- https://www.opengl.org/registry/specs/ARB/post_depth_coverage.txt[+GL_ARB_post_depth_coverage+]
+ https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_post_depth_coverage.txt[+GL_ARB_post_depth_coverage+]
or
- https://www.opengl.org/registry/specs/EXT/post_depth_coverage.txt[+GL_EXT_post_depth_coverage+]
+ https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_post_depth_coverage.txt[+GL_EXT_post_depth_coverage+]
for GLSL-based source languages.
*Contributors*::
- Jeff Bolz, NVIDIA
-*Contact*::
- - Daniel Koch (dkoch 'at' nvidia.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * SPV_KHR_post_depth_coverage
+ * +SPV_KHR_post_depth_coverage+
which allows the fragment shader to control whether values in the
code:SampleMask built-in input variable reflect the coverage after the
diff --git a/doc/specs/vulkan/appendices/VK_EXT_sample_locations.txt b/doc/specs/vulkan/appendices/VK_EXT_sample_locations.txt
new file mode 100644
index 0000000..4b7b272
--- /dev/null
+++ b/doc/specs/vulkan/appendices/VK_EXT_sample_locations.txt
@@ -0,0 +1,91 @@
+include::meta/VK_EXT_sample_locations.txt[]
+
+*Last Modified Date*::
+ 2017-08-02
+*Contributors*::
+ - Mais Alnasser, AMD
+ - Matthaeus G.
+ Chajdas, AMD
+ - Maciej Jesionowski, AMD
+ - Daniel Rakos, AMD
+ - Slawomir Grajewski, Intel
+ - Jeff Bolz, NVIDIA
+ - Bill Licea-Kane, Qualcomm
+
+This extension allows an application to modify the locations of samples
+within a pixel used in rasterization.
+Additionally, it allows applications to specify different sample locations
+for each pixel in a group of adjacent pixels, which can: increase
+antialiasing quality (particularly if a custom resolve shader is used that
+takes advantage of these different locations).
+
+It is common for implementations to optimize the storage of depth values by
+storing values that can: be used to reconstruct depth at each sample
+location, rather than storing separate depth values for each sample.
+For example, the depth values from a single triangle may: be represented
+using plane equations.
+When the depth value for a sample is needed, it is automatically evaluated
+at the sample location.
+Modifying the sample locations causes the reconstruction to no longer
+evaluate the same depth values as when the samples were originally
+generated, thus the depth aspect of a depth/stencil attachment must: be
+cleared before rendering to it using different sample locations.
+
+Some implementations may: need to evaluate depth image values while
+performing image layout transitions.
+To accommodate this, instances of the slink:VkSampleLocationsInfoEXT
+structure can: be specified for each situation where an explicit or
+automatic layout transition has to take place.
+slink:VkSampleLocationsInfoEXT can: be chained from
+slink:VkImageMemoryBarrier structures to provide sample locations for layout
+transitions performed by flink:vkCmdWaitEvents and
+flink:VkCmdPipelineBarrier calls, and
+slink:VkRenderPassSampleLocationsBeginInfoEXT can: be chained from
+slink:VkRenderPassBeginInfo to provide sample locations for layout
+transitions performed implicitly by a render pass instance.
+
+=== New Object Types
+
+None.
+
+=== New Enum Constants
+
+ * Extending elink:VkImageCreateFlagBits:
+ ** ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
+ * Extending elink:VkStructureType:
+ ** ename:VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT
+ ** ename:VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT
+ ** ename:VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT
+ ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
+ ** ename:VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
+ * Extending elink:VkDynamicState:
+ ** ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
+
+=== New Enums
+
+None.
+
+=== New Structures
+
+ * slink:VkSampleLocationEXT
+ * slink:VkSampleLocationsInfoEXT
+ * slink:VkAttachmentSampleLocationsEXT
+ * slink:VkSubpassSampleLocationsEXT
+ * slink:VkRenderPassSampleLocationsBeginInfoEXT
+ * slink:VkPipelineSampleLocationsStateCreateInfoEXT
+ * slink:VkPhysicalDeviceSampleLocationsPropertiesEXT
+ * slink:VkMultisamplePropertiesEXT
+
+=== New Functions
+
+ * flink:vkCmdSetSampleLocationsEXT
+ * flink:vkGetPhysicalDeviceMultisamplePropertiesEXT
+
+=== Issues
+
+None.
+
+=== Version History
+
+ * Revision 1, 2017-08-02 (Daniel Rakos)
+ - Internal revisions
diff --git a/doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt b/doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt
index e67c441..0d65bc1 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt
@@ -1,28 +1,14 @@
-[[VK_EXT_sampler_filter_minmax]]
-== VK_EXT_sampler_filter_minmax
-
-*Name String*::
- +VK_EXT_sampler_filter_minmax+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 131
+include::meta/VK_EXT_sampler_filter_minmax.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2017-05-19
-*Revision*::
- 2
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +<<VK_KHR_get_physical_device_properties2>>+.
*Contributors*::
- Jeff Bolz, NVIDIA
- Piers Daniell, NVIDIA
-*Contacts*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
In unextended Vulkan, minification and magnification filters such as LINEAR
allow sampled image lookups to return a filtered texel value produced by
diff --git a/doc/specs/vulkan/appendices/VK_EXT_shader_stencil_export.txt b/doc/specs/vulkan/appendices/VK_EXT_shader_stencil_export.txt
index 05b67b0..7df0dbe 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_shader_stencil_export.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_shader_stencil_export.txt
@@ -1,31 +1,20 @@
-[[VK_EXT_shader_stencil_export]]
-== VK_EXT_shader_stencil_export
+include::meta/VK_EXT_shader_stencil_export.txt[]
-*Name String*::
- +VK_EXT_shader_stencil_export+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 141
*Last Modified Date*::
07/19/2017
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires the +SPV_EXT_shader_stencil_export+ SPIR-V extension.
+*Interactions and External Dependencies*::
+ - Requires the
+ https://www.khronos.org/registry/spir-v/extensions/EXT/SPV_EXT_shader_stencil_export.html[+SPV_EXT_shader_stencil_export+]
+ SPIR-V extension.
*Contributors*::
- Dominik Witczak, AMD
- Daniel Rakos, AMD
- Rex Xu, AMD
-*Contacts*::
- - Dominik Witczak, AMD (dominik.witczak@amd.com)
-*Overview*::
This extension adds support for the SPIR-V extension
-+SPV_EXT_shader_stencil_export+ providing a mechanism whereby a shader may
++SPV_EXT_shader_stencil_export+, providing a mechanism whereby a shader may
generate the stencil reference value per invocation.
When stencil testing is enabled, this allows the test to be performed
against the value generated in the shader.
diff --git a/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt b/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt
index c079475..c4b378c 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt
@@ -1,39 +1,26 @@
-[[VK_EXT_shader_subgroup_ballot]]
-== VK_EXT_shader_subgroup_ballot
-
-*Name String*::
- +VK_EXT_shader_subgroup_ballot+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 65
+include::meta/VK_EXT_shader_subgroup_ballot.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-11-28
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
+*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_shader_ballot.html[+SPV_KHR_shader_ballot+]
SPIR-V extension.
- This extension requires the
- https://www.opengl.org/registry/specs/ARB/shader_ballot.txt[+GL_ARB_shader_ballot+]
+ https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_ballot.txt[+GL_ARB_shader_ballot+]
extension for GLSL source languages.
*Contributors*::
- Jeff Bolz, NVIDIA
- Neil Henning, Codeplay
- Daniel Koch, NVIDIA Corporation
-*Contact*::
- - Daniel Koch (dkoch 'at' nvidia.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * SPV_KHR_shader_ballot
+ * +SPV_KHR_shader_ballot+
This extension provides the ability for a group of invocations, which
execute in parallel, to do limited forms of cross-invocation communication
diff --git a/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt b/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt
index 508b1b9..a7f1cf3 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt
@@ -1,38 +1,25 @@
-[[VK_EXT_shader_subgroup_vote]]
-== VK_EXT_shader_subgroup_vote
-
-*Name String*::
- +VK_EXT_shader_subgroup_vote+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 66
+include::meta/VK_EXT_shader_subgroup_vote.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-11-28
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
+*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_subgroup_vote.html[+SPV_KHR_subgroup_vote+]
SPIR-V extension.
- This extension requires the
- https://www.opengl.org/registry/specs/ARB/shader_group_vote.txt[+GL_ARB_shader_group_vote+]
+ https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_group_vote.txt[+GL_ARB_shader_group_vote+]
extension for GLSL source languages.
*Contributors*::
- Neil Henning, Codeplay
- Daniel Koch, NVIDIA Corporation
-*Contact*::
- - Daniel Koch (dkoch 'at' nvidia.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * SPV_KHR_subgroup_vote
+ * +SPV_KHR_subgroup_vote+
This extension provides new SPIR-V instructions:
diff --git a/doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt b/doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt
index 6fbcdc0..097a96e 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt
@@ -1,33 +1,21 @@
-[[VK_EXT_shader_viewport_index_layer]]
-== VK_EXT_shader_viewport_index_layer
-
-*Name String*::
- +VK_EXT_shader_viewport_index_layer+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 163
+include::meta/VK_EXT_shader_viewport_index_layer.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2017-08-08
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
+*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/EXT/SPV_EXT_shader_viewport_index_layer.html[+SPV_EXT_shader_viewport_index_layer+]
SPIR-V extension.
- This extension requires the
- https://www.opengl.org/registry/specs/ARB/shader_viewport_layer_array.txt[+GL_ARB_shader_viewport_layer_array+],
- https://www.opengl.org/registry/specs/AMD/vertex_shader_layer.txt[+GL_AMD_vertex_shader_layer+],
- https://www.opengl.org/registry/specs/AMD/vertex_shader_viewport_index.txt[+GL_AMD_vertex_shader_viewport_index+],
+ https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_viewport_layer_array.txt[+GL_ARB_shader_viewport_layer_array+],
+ https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_layer.txt[+GL_AMD_vertex_shader_layer+],
+ https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_viewport_index.txt[+GL_AMD_vertex_shader_viewport_index+],
or
- https://www.opengl.org/registry/specs/NV/viewport_array2.txt[+GL_NV_viewport_array2+]
+ https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt[+GL_NV_viewport_array2+]
extensions for GLSL source languages.
- - This extension requires the pname:geometryShader and pname:multiViewport
- features.
+ - This extension requires the pname:multiViewport feature.
- This extension interacts with the pname:tessellationShader feature.
*Contributors*::
- Piers Daniell, NVIDIA
@@ -35,11 +23,10 @@
- Jan-Harald Fredriksen, ARM
- Daniel Rakos, AMD
- Slawomir Grajeswki, Intel
-*Contact*::
- - Daniel Koch (dkoch 'at' nvidia.com)
This extension adds support for the code:ShaderViewportIndexLayerEXT
-capability from the SPV_EXT_shader_viewport_index_layer extension in Vulkan.
+capability from the +SPV_EXT_shader_viewport_index_layer+ extension in
+Vulkan.
This extension allows variables decorated with the code:Layer and
code:ViewportIndex built-ins to be exported from vertex or tessellation
@@ -49,9 +36,9 @@ When using GLSL source-based shading languages, the code:gl_ViewportIndex
and code:gl_Layer built-in variables map to the SPIR-V code:ViewportIndex
and code:Layer built-in decorations, respectively.
Behaviour of these variables is extended as described in the
-GL_ARB_shader_viewport_layer_array (or the precursor
-GL_AMD_vertex_shader_layer, AMD_vertex_shader_viewport_index, and
-GL_NV_viewport_array2 extensions).
++GL_ARB_shader_viewport_layer_array+ (or the precursor
++GL_AMD_vertex_shader_layer+, +GL_AMD_vertex_shader_viewport_index+, and
++GL_NV_viewport_array2 extensions+).
ifdef::VK_NV_viewport_array2[]
[NOTE]
diff --git a/doc/specs/vulkan/appendices/VK_EXT_swapchain_colorspace.txt b/doc/specs/vulkan/appendices/VK_EXT_swapchain_colorspace.txt
index e851570..c22068b 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_swapchain_colorspace.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_swapchain_colorspace.txt
@@ -1,25 +1,11 @@
-[[VK_EXT_swapchain_colorspace]]
-== VK_EXT_swapchain_colorspace
+include::meta/VK_EXT_swapchain_colorspace.txt[]
-*Name String*::
- +VK_EXT_swapchain_colorspace+
-*Extension Type*::
- Instance
-*Registered Extension Number*::
- 105
*Last Modified Date*::
2017-03-15
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires +VK_KHR_surface+
*Contributors*::
- Courtney Goeltzenleuchter, Google
-*Contacts*::
- - Courtney Goeltzenleuchter, Google
=== New Enum Constants
diff --git a/doc/specs/vulkan/appendices/VK_EXT_validation_cache.txt b/doc/specs/vulkan/appendices/VK_EXT_validation_cache.txt
new file mode 100644
index 0000000..c786cf2
--- /dev/null
+++ b/doc/specs/vulkan/appendices/VK_EXT_validation_cache.txt
@@ -0,0 +1,55 @@
+include::meta/VK_EXT_validation_cache.txt[]
+*Last Modified Date*::
+ 2017-08-29
+*IP Status*::
+ No known IP claims.
+*Contributors*::
+ - Cort Stratton, Google
+ - Chris Forbes, Google
+
+This extension provides a mechanism for caching the results of potentially
+expensive internal validation operations across multiple runs of a Vulkan
+application.
+At the core is the slink:VkValidationCacheEXT object type, which is managed
+similarly to the existing slink:VkPipelineCache.
+
+The new struct slink:VkShaderModuleValidationCacheCreateInfoEXT can be
+included in the pname:pNext chain at flink:vkCreateShaderModule time.
+It contains a slink:VkValidationCacheEXT to use when validating the
+slink:VkShaderModule.
+
+=== New Object Types
+
+ * slink:VkValidationCacheEXT
+
+=== New Enum Constants
+
+ * Extending elink:VkStructureType:
+ ** ename:VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
+ ** ename:VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
+
+=== New Enums
+
+ * elink:VkValidationCacheHeaderVersionEXT
+ * elink:VkValidationCacheCreateFlagsEXT
+
+=== New Structures
+
+ * slink:VkValidationCacheCreateInfoEXT
+ * slink:VkShaderModuleValidationCacheCreateInfoEXT
+
+=== New Functions
+
+ * flink:vkCreateValidationCacheEXT
+ * flink:vkDestroyValidationCacheEXT
+ * flink:vkMergeValidationCachesEXT
+ * flink:vkGetValidationCacheDataEXT
+
+=== Issues
+
+None.
+
+=== Version History
+
+ * Revision 1, 2017-08-29 (Cort Stratton)
+ - Initial draft
diff --git a/doc/specs/vulkan/appendices/VK_EXT_validation_flags.txt b/doc/specs/vulkan/appendices/VK_EXT_validation_flags.txt
index b6ff3d6..98323a9 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_validation_flags.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_validation_flags.txt
@@ -1,25 +1,12 @@
-[[VK_EXT_validation_flags]]
-== VK_EXT_validation_flags
-
-*Name String*::
- +VK_EXT_validation_flags+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 62
+include::meta/VK_EXT_validation_flags.txt[]
+
*Last Modified Date*::
2016-09-06
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0.25 of the Vulkan API.
*Contributors*::
- Tobin Ehlis, Google
- Courtney Goeltzenleuchter, Google
-*Contacts*::
- - Tobin Ehlis, Google (tobine@google.com)
This extension provides the slink:VkValidationFlagsEXT struct that can be
included in the pname:pNext chain of the slink:VkInstanceCreateInfo
diff --git a/doc/specs/vulkan/appendices/VK_GOOGLE_display_timing.txt b/doc/specs/vulkan/appendices/VK_GOOGLE_display_timing.txt
index 7b11df7..701eb10 100644
--- a/doc/specs/vulkan/appendices/VK_GOOGLE_display_timing.txt
+++ b/doc/specs/vulkan/appendices/VK_GOOGLE_display_timing.txt
@@ -2,29 +2,15 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_GOOGLE_display_timing]]
-== VK_GOOGLE_display_timing
-
-*Name String*::
- +VK_GOOGLE_display_timing+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 93
+include::meta/VK_GOOGLE_display_timing.txt[]
+
*Last Modified Date*::
2017-02-14
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires +VK_KHR_swapchain+.
*Contributors*::
- Ian Elliott, Google
- Jesse Hall, Google
-*Contacts*::
- - Ian Elliott, Google
This device extension allows an application that uses the +VK_KHR_swapchain+
extension to obtain information about the presentation engine's display, to
diff --git a/doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt b/doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt
index 23f38e7..308153d 100644
--- a/doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt
+++ b/doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt
@@ -1,24 +1,11 @@
-[[VK_IMG_filter_cubic]]
-== VK_IMG_filter_cubic
-
-*Name String*::
- +VK_IMG_filter_cubic+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 16
+include::meta/VK_IMG_filter_cubic.txt[]
+
*Status*::
Final
*Last Modified Date*::
2016-02-23
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Tobias Hector, Imagination Technologies
-*Contacts*::
- - Tobias Hector (tobias.hector@imgtec.com)
+VK_IMG_filter_cubic+ adds an additional, high quality cubic filtering mode
to Vulkan, using a Catmull-Rom bicubic filter.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_16bit_storage.txt b/doc/specs/vulkan/appendices/VK_KHR_16bit_storage.txt
index 663943f..8d16c9f 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_16bit_storage.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_16bit_storage.txt
@@ -2,29 +2,15 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_16bit_storage]]
-== VK_KHR_16bit_storage
+include::meta/VK_KHR_16bit_storage.txt[]
-*Name String*::
- +VK_KHR_16bit_storage+
-*Extension Type*::
- Device
-*Registered Extension Number*::
- 84
+*Interactions and External Dependencies*::
+ - This extension requires
+ https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.html[+SPV_KHR_16bit_storage+]
*Last Modified Date*::
2017-03-23
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires
- https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.html[SPV_KHR_16bit_storage].
- - This extension requires
- <<VK_KHR_get_physical_device_properties2,VK_KHR_get_physical_device_properties2>>.
- - This extension requires
- <<VK_KHR_storage_buffer_storage_class,VK_KHR_storage_buffer_storage_class>>.
*Contributors*::
- Alexander Galazin, ARM
- Jan-Harald Fredriksen, ARM
@@ -34,8 +20,6 @@
- Daniel Koch, Nvidia
- David Neto, Google
- John Kessenich, Google
-*Contacts*::
- - Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com)
The +VK_KHR_16bit_storage+ extension allows use of 16-bit types in shader
input and output interfaces, and push constant blocks.
@@ -57,6 +41,7 @@ assignment and component assignment rules.
* slink:VkPhysicalDevice16BitStorageFeaturesKHR
=== New SPIR-V Capabilities
+
* <<spirvenv-capabilities-table-16bitstorage,code:StorageBuffer16BitAccess>>
* <<spirvenv-capabilities-table-16bitstorage,code:UniformAndStorageBuffer16BitAccess>>
* <<spirvenv-capabilities-table-16bitstorage,code:StoragePushConstant16>>
@@ -65,5 +50,6 @@ assignment and component assignment rules.
=== Issues
=== Version History
+
* Revision 1, 2017-03-23 (Alexander Galazin)
- Initial draft
diff --git a/doc/specs/vulkan/appendices/VK_KHR_android_surface.txt b/doc/specs/vulkan/appendices/VK_KHR_android_surface.txt
index 493ff11..6579025 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_android_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_android_surface.txt
@@ -2,24 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_android_surface]]
-== VK_KHR_android_surface
-
-*Name String*::
- +VK_KHR_android_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 9
+include::meta/VK_KHR_android_surface.txt[]
+
*Last Modified Date*::
2016-01-14
-*Revision*::
- 6
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_surface+.
*Contributors*::
- Patrick Doane, Blizzard
- Jason Ekstrand, Intel
@@ -37,8 +25,6 @@
- Ray Smith, ARM
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
-*Contacts*::
- - Jesse Hall, Google
The +VK_KHR_android_surface+ extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
diff --git a/doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt b/doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt
index a0dbe8a..87c292e 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt
@@ -2,31 +2,17 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_dedicated_allocation]]
-== VK_KHR_dedicated_allocation
-
-*Name String*::
- +VK_KHR_dedicated_allocation+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 128
+include::meta/VK_KHR_dedicated_allocation.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2017-08-07
-*Revision*::
- 3
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_get_memory_requirements2+.
*Contributors*::
- Jeff Bolz, NVIDIA
- Jason Ekstrand, Intel
-*Contacts*::
- - Jason Ekstrand (jason.ekstrand 'at' intel.com)
This extension enables resources to be bound to a dedicated allocation,
rather than suballocated.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt b/doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt
index 2828e64..25f5ef6 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt
@@ -2,31 +2,19 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_descriptor_update_template]]
-== VK_KHR_descriptor_update_template
-
-*Name String*::
- +VK_KHR_descriptor_update_template+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 86
+include::meta/VK_KHR_descriptor_update_template.txt[]
+
*Status*::
In Work
*Last Modified Date*::
2016-01-11
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
+*Interactions and External Dependencies*::
- Interacts with +VK_KHR_push_descriptor+
*Contributors*::
- Jeff Bolz, NVIDIA
- Michael Worcester, Imagination Technologies
-*Contact*::
- - Markus Tavenrath (matavenrath 'at' nvidia.com)
Applications may wish to update a fixed set of descriptors in a large number
of descriptors sets very frequently, i.e. during initializaton phase or if
diff --git a/doc/specs/vulkan/appendices/VK_KHR_display.txt b/doc/specs/vulkan/appendices/VK_KHR_display.txt
index ef2a2ed..62e4fe7 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_display.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_display.txt
@@ -2,34 +2,19 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_display]]
-== VK_KHR_display
-
-*Name String*::
- +VK_KHR_display+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 3
+include::meta/VK_KHR_display.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2017-03-13
-*Revision*::
- 23
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_surface+.
*Contributors*::
- James Jones, NVIDIA
- Norbert Nopper, Freescale
- Jeff Vigil, Qualcomm
- Daniel Rakos, AMD
-*Contacts*::
- - James Jones (jajones 'at' nvidia.com)
- - Norbert Nopper (Norbert.Nopper 'at' freescale.com)
This extension provides the API to enumerate displays and available modes on
a given device.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt b/doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt
index c895f16..1646e18 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt
@@ -2,33 +2,18 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_display_swapchain]]
-== VK_KHR_display_swapchain
-
-*Name String*::
- +VK_KHR_display_swapchain+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 4
+include::meta/VK_KHR_display_swapchain.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2017-03-13
-*Revision*::
- 10
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_swapchain+.
- - Requires +VK_KHR_display+.
*Contributors*::
- James Jones, NVIDIA
- Jeff Vigil, Qualcomm
- Jesse Hall, Google
-*Contacts*::
- - James Jones (jajones 'at' nvidia.com)
This extension provides an API to create a swapchain directly on a device's
display without any underlying window system.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_fence.txt b/doc/specs/vulkan/appendices/VK_KHR_external_fence.txt
index f8118f0..f1aded8 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_fence.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_fence.txt
@@ -2,34 +2,20 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_fence]]
-== VK_KHR_external_fence
+include::meta/VK_KHR_external_fence.txt[]
-*Name String*::
- +VK_KHR_external_fence+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 114
*Status*::
Draft
*Last Modified Date*::
2017-05-08
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Depends on +VK_KHR_external_fence_capabilities+.
*Contributors*::
- Jesse Hall, Google
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
- Cass Everitt, Oculus
- Contributors to <<VK_KHR_external_semaphore,VK_KHR_external_semaphore>>
-*Contact*::
- Jesse Hall (jessehall 'at' google.com)
An application using external memory may wish to synchronize access to that
memory using fences.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt b/doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt
index 5359c6f..473b455 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt
@@ -2,26 +2,14 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_fence_capabilities]]
-== VK_KHR_external_fence_capabilities
+include::meta/VK_KHR_external_fence_capabilities.txt[]
-*Name String*::
- +VK_KHR_external_fence_capabilities+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 113
*Status*::
Draft
*Last Modified Date*::
2017-05-08
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Depends on +VK_KHR_get_physical_device_properties2+.
*Contributors*::
- Jesse Hall, Google
- James Jones, NVIDIA
@@ -30,9 +18,6 @@
- Contributors to
<<VK_KHR_external_semaphore_capabilities,VK_KHR_external_semaphore_capablities>>
-*Contact*::
- Jesse Hall (jessehall 'at' google.com)
-
An application may wish to reference device fences in multiple Vulkan
logical devices or instances, in multiple processes, and/or in multiple
APIs.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt b/doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt
index 05d3507..113c2e1 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt
@@ -2,26 +2,14 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_fence_fd]]
-== VK_KHR_external_fence_fd
+include::meta/VK_KHR_external_fence_fd.txt[]
-*Name String*::
- +VK_KHR_external_fence_fd+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 116
*Status*::
Draft
*Last Modified Date*::
2017-05-08
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Depends on +VK_KHR_external_fence_capabilities+.
*Contributors*::
- Jesse Hall, Google
- James Jones, NVIDIA
@@ -29,8 +17,6 @@
- Cass Everitt, Oculus
- Contributors to
<<VK_KHR_external_semaphore_fd,VK_KHR_external_semaphore_fd>>
-*Contact*::
- Jesse Hall (jessehall 'at' google.com)
An application using external memory may wish to synchronize access to that
memory using fences.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt b/doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt
index b56b1d9..ad5518b 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt
@@ -2,26 +2,14 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_fence_win32]]
-== VK_KHR_external_fence_win32
-
-*Name String*::
- +VK_KHR_external_fence_win32+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 115
+include::meta/VK_KHR_external_fence_win32.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2017-05-08
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Depends on +VK_KHR_external_fence_capabilities+.
*Contributors*::
- Jesse Hall, Google
- James Jones, NVIDIA
@@ -29,8 +17,6 @@
- Cass Everitt, Oculus
- Contributors to
<<VK_KHR_external_semaphore_win32,VK_KHR_external_semaphore_win32>>
-*Contact*::
- Jesse Hall (jessehall 'at' google.com)
An application using external memory may wish to synchronize access to that
memory using fences.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_memory.txt b/doc/specs/vulkan/appendices/VK_KHR_external_memory.txt
index 295f3b5..4ac9cef 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_memory.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_memory.txt
@@ -2,26 +2,15 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_memory]]
-== VK_KHR_external_memory
-
-*Name String*::
- +VK_KHR_external_memory+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 73
+include::meta/VK_KHR_external_memory.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-10-20
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_external_memory_capabilities+.
+*Interactions and External Dependencies*::
- Interacts with +VK_KHR_dedicated_allocation+.
- Interacts with +VK_NV_dedicated_allocation+.
*Contributors*::
@@ -36,8 +25,6 @@
- Carsten Rohde, NVIDIA
- Ray Smith, ARM
- Chad Versace, Google
-*Contact*::
- James Jones (jajones 'at' nvidia.com)
An application may wish to reference device memory in multiple Vulkan
logical devices or instances, in multiple processes, and/or in multiple
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt b/doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt
index 58aac0b..3219901 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt
@@ -2,24 +2,15 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_memory_capabilities]]
-== VK_KHR_external_memory_capabilities
-
-*Name String*::
- +VK_KHR_external_memory_capabilities+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 72
+include::meta/VK_KHR_external_memory_capabilities.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-10-17
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
+*Interactions and External Dependencies*::
- This extension is written against version 1.0 of the Vulkan API.
- Requires +VK_KHR_get_physical_device_properties2+.
- Interacts with +VK_KHR_dedicated_allocation+.
@@ -28,8 +19,6 @@
- Ian Elliot, Google
- Jesse Hall, Google
- James Jones, NVIDIA
-*Contact*::
- James Jones (jajones 'at' nvidia.com)
An application may wish to reference device memory in multiple Vulkan
logical devices or instances, in multiple processes, and/or in multiple
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt b/doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt
index b9a4d23..314ef9a 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt
@@ -2,31 +2,17 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_memory_fd]]
-== VK_KHR_external_memory_fd
-
-*Name String*::
- +VK_KHR_external_memory_fd+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 75
+include::meta/VK_KHR_external_memory_fd.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-10-21
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_external_memory+.
*Contributors*::
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
-*Contact*::
- James Jones (jajones 'at' nvidia.com)
An application may wish to reference device memory in multiple Vulkan
logical devices or instances, in multiple processes, and/or in multiple
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt b/doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt
index d8cb716..abe6a9f 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt
@@ -2,32 +2,18 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_memory_win32]]
-== VK_KHR_external_memory_win32
-
-*Name String*::
- +VK_KHR_external_memory_win32+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 74
+include::meta/VK_KHR_external_memory_win32.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-10-21
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_external_memory+.
*Contributors*::
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
- Carsten Rohde, NVIDIA
-*Contact*::
- James Jones (jajones 'at' nvidia.com)
An application may wish to reference device memory in multiple Vulkan
logical devices or instances, in multiple processes, and/or in multiple
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt
index 15009cb..66ac2ab 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt
@@ -2,26 +2,14 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_semaphore]]
-== VK_KHR_external_semaphore
-
-*Name String*::
- +VK_KHR_external_semaphore+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 78
+include::meta/VK_KHR_external_semaphore.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-10-21
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_external_semaphore_capabilities+.
*Contributors*::
- Jason Ekstrand, Intel
- Jesse Hall, Google
@@ -31,8 +19,6 @@
- Matthew Netsch, Qualcomm Technologies, Inc.
- Ray Smith, ARM
- Chad Versace, Google
-*Contact*::
- James Jones (jajones 'at' nvidia.com)
An application using external memory may wish to synchronize access to that
memory using semaphores.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt
index 2fd39b2..3a9d3ff 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt
@@ -2,32 +2,18 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_semaphore_capabilities]]
-== VK_KHR_external_semaphore_capabilities
+include::meta/VK_KHR_external_semaphore_capabilities.txt[]
-*Name String*::
- +VK_KHR_external_semaphore_capabilities+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 77
*Status*::
Draft
*Last Modified Date*::
2016-10-20
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_get_physical_device_properties2+.
*Contributors*::
- Jesse Hall, Google
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
-*Contact*::
- James Jones (jajones 'at' nvidia.com)
An application may wish to reference device semaphores in multiple Vulkan
logical devices or instances, in multiple processes, and/or in multiple
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt
index 06d55df..a8893d1 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt
@@ -2,33 +2,19 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_semaphore_fd]]
-== VK_KHR_external_semaphore_fd
-
-*Name String*::
- +VK_KHR_external_semaphore_fd+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 80
+include::meta/VK_KHR_external_semaphore_fd.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-10-21
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_external_semaphore_capabilities+.
*Contributors*::
- Jesse Hall, Google
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
- Carsten Rohde, NVIDIA
-*Contact*::
- James Jones (jajones 'at' nvidia.com)
An application using external memory may wish to synchronize access to that
memory using semaphores.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt
index 3a7c1cc..95af221 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt
@@ -2,32 +2,18 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_external_semaphore_win32]]
-== VK_KHR_external_semaphore_win32
-
-*Name String*::
- +VK_KHR_external_semaphore_win32+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 79
+include::meta/VK_KHR_external_semaphore_win32.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-10-21
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_external_semaphore_capabilities+.
*Contributors*::
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
- Carsten Rohde, NVIDIA
-*Contact*::
- James Jones (jajones 'at' nvidia.com)
An application using external memory may wish to synchronize access to that
memory using semaphores.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt b/doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt
index 3ddb6ce..c4299c2 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt
@@ -2,31 +2,18 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_get_memory_requirements2]]
-== VK_KHR_get_memory_requirements2
-
-*Name String*::
- +VK_KHR_get_memory_requirements2+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 147
+include::meta/VK_KHR_get_memory_requirements2.txt[]
+
*Status*::
Complete.
*Last Modified Date*::
2017-03-23
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Jason Ekstrand, Intel
- Jeff Bolz, NVIDIA
- Jesse Hall, Google
-*Contacts*::
- - Jason Ekstrand (jason.ekstrand 'at' intel.com)
This extension provides new entry points to query memory requirements of
images and buffers in a way that can be easily extended by other extensions,
diff --git a/doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt b/doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt
index 8f0af83..ed2ce39 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt
@@ -2,30 +2,17 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_get_physical_device_properties2]]
-== VK_KHR_get_physical_device_properties2
-
-*Name String*::
- +VK_KHR_get_physical_device_properties2+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 60
+include::meta/VK_KHR_get_physical_device_properties2.txt[]
+
*Status*::
Complete.
*Last Modified Date*::
2016-11-02
-*Revision*::
- 2
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Jeff Bolz, NVIDIA
- Ian Elliott, Google
-*Contacts*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension provides new entry points to query device features, device
properties, and format properties in a way that can be easily extended by
diff --git a/doc/specs/vulkan/appendices/VK_KHR_get_surface_capabilities2.txt b/doc/specs/vulkan/appendices/VK_KHR_get_surface_capabilities2.txt
index 4f117f5..94f2248 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_get_surface_capabilities2.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_get_surface_capabilities2.txt
@@ -2,30 +2,16 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_get_surface_capabilities2]]
-== VK_KHR_get_surface_capabilities2
-
-*Name String*::
- +VK_KHR_get_surface_capabilities2+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 120
+include::meta/VK_KHR_get_surface_capabilities2.txt[]
+
*Last Modified Date*::
2017-02-27
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires +VK_KHR_surface+.
*Contributors*::
- Ian Elliott, Google
- James Jones, NVIDIA
- Alon Or-bach, Samsung
-*Contacts*::
- - James Jones, NVIDIA
This extension provides new entry points to query device surface
capabilities in a way that can be easily extended by other extensions,
diff --git a/doc/specs/vulkan/appendices/VK_KHR_incremental_present.txt b/doc/specs/vulkan/appendices/VK_KHR_incremental_present.txt
index 1fa2edc..d9510e3 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_incremental_present.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_incremental_present.txt
@@ -2,24 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_incremental_present]]
-== VK_KHR_incremental_present
-
-*Name String*::
- +VK_KHR_incremental_present+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 85
+include::meta/VK_KHR_incremental_present.txt[]
+
*Last Modified Date*::
2016-11-02
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_swapchain+ (revision 68).
*Contributors*::
- Ian Elliott, Google
- Jesse Hall, Google
@@ -30,8 +18,6 @@
- Mika Isojarvi, Google
- Jeff Juliano, NVIDIA
- Jeff Bolz, NVIDIA
-*Contacts*::
- - Ian Elliott, Google
This device extension extends slink:vkQueuePresentKHR, from the
+VK_KHR_swapchain+ extension, allowing an application to specify a list of
diff --git a/doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt b/doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt
index 3fb4bd5..a46cc04 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt
@@ -2,23 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_maintenance1]]
-== VK_KHR_maintenance1
-
-*Name String*::
- +VK_KHR_maintenance1+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 70
+include::meta/VK_KHR_maintenance1.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-10-26
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Dan Ginsburg, Valve
- Daniel Koch, NVIDIA
@@ -34,9 +23,6 @@
- Slawomir Grajewski, Intel
- Tobias Hector, Imagination Technologies
- Tom Olson, ARM
-*Contacts*::
- - Piers Daniell (pdaniell 'at' nvidia.com)
-*Overview*::
+VK_KHR_maintenance1+ adds a collection of minor features that were
intentionally left out or overlooked from the original Vulkan 1.0 release.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_mir_surface.txt b/doc/specs/vulkan/appendices/VK_KHR_mir_surface.txt
index e7916a8..ec4f64b 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_mir_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_mir_surface.txt
@@ -2,24 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_mir_surface]]
-== VK_KHR_mir_surface
-
-*Name String*::
- +VK_KHR_mir_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 8
+include::meta/VK_KHR_mir_surface.txt[]
+
*Last Modified Date*::
2015-11-28
-*Revision*::
- 4
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_surface+.
*Contributors*::
- Patrick Doane, Blizzard
- Jason Ekstrand, Intel
@@ -37,9 +25,6 @@
- Ray Smith, ARM
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
-*Contacts*::
- - Jesse Hall, Google
- - Ian Elliott, LunarG
The +VK_KHR_mir_surface+ extension is an instance extension.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt b/doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt
index 6a3aa4f..80daba6 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt
@@ -2,31 +2,17 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_push_descriptor]]
-== VK_KHR_push_descriptor
-
-*Name String*::
- +VK_KHR_push_descriptor+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 81
+include::meta/VK_KHR_push_descriptor.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2016-10-15
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_get_physical_device_properties2+.
*Contributors*::
- Jeff Bolz, NVIDIA
- Michael Worcester, Imagination Technologies
-*Contacts*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension allows descriptors to be written into the command buffer,
with the implementation being responsible for managing their memory.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt b/doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt
index 9c62533..9c75b13 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt
@@ -2,30 +2,16 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_relaxed_block_layout]]
-== VK_KHR_relaxed_block_layout
+include::meta/VK_KHR_relaxed_block_layout.txt[]
-*Name String*::
- +VK_KHR_relaxed_block_layout+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 145
*Status*::
Complete
*Last Modified Date*::
2017-03-26
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - Written against version 1.0 of the Vulkan API
- - Requires Vulkan 1.0
*Contributors*::
- John Kessenich, Google
-*Contacts*::
- - John Kessenich (johnkessenich 'at' google.com)
The +VK_KHR_relaxed_block_layout+ extension allows implementations to
indicate they can support more variation in block code:Offset decorations.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt
index f2e5126..2ed2fef 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt
@@ -2,27 +2,14 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_sampler_mirror_clamp_to_edge]]
-== VK_KHR_sampler_mirror_clamp_to_edge
+include::meta/VK_KHR_sampler_mirror_clamp_to_edge.txt[]
-*Name String*::
- +VK_KHR_sampler_mirror_clamp_to_edge+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 15
*Status*::
Final
*Last Modified Date*::
2016-02-16
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Tobias Hector, Imagination Technologies
-*Contacts*::
- - Tobias Hector (tobias.hector@imgtec.com)
+VK_KHR_sampler_mirror_clamp_to_edge+ extends the set of sampler address
modes to include an additional mode
diff --git a/doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt b/doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt
index c95f711..341826f 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt
@@ -2,28 +2,21 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_shader_draw_parameters]]
-== VK_KHR_shader_draw_parameters
-
-*Name String*::
- +VK_KHR_shader_draw_parameters+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 64
+include::meta/VK_KHR_shader_draw_parameters.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2016-10-05
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires Vulkan 1.0.
- - Requires the +SPV_KHR_shader_draw_parameters+ SPIR-V extension.
- - Requires +GL_ARB_shader_draw_parameters+ for GLSL source languages.
+*Interactions and External Dependencies*::
+ - Requires the
+ https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_shader_draw_parameters.html[+SPV_KHR_shader_draw_parameters+]
+ SPIR-V extension.
+ - Requires
+ https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_draw_parameters.txt[+GL_ARB_shader_draw_parameters+]
+ for GLSL source languages.
*Contributors*::
- Daniel Koch, NVIDIA Corporation
- Jeff Bolz, NVIDIA
@@ -31,9 +24,6 @@
- Jan-Harald Fredriksen, ARM
- John Kessenich, Google
- Stuart Smith, IMG
-*Contact*::
- - Daniel Koch (dkoch 'at' nvidia.com)
-*Overview*::
This extension adds support for the following SPIR-V extension in Vulkan:
diff --git a/doc/specs/vulkan/appendices/VK_KHR_shared_presentable_image.txt b/doc/specs/vulkan/appendices/VK_KHR_shared_presentable_image.txt
index 2e982cc..42f4d66 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_shared_presentable_image.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_shared_presentable_image.txt
@@ -2,27 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_shared_presentable_image]]
-== VK_KHR_shared_presentable_image
-
-*Name String*::
- +VK_KHR_shared_presentable_image+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 112
+include::meta/VK_KHR_shared_presentable_image.txt[]
+
*Last Modified Date*::
2017-03-20
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires +VK_KHR_swapchain+.
- - This extension requires +VK_KHR_surface+.
- - This extension requires +VK_KHR_get_physical_device_properties2+.
- - This extension requires +VK_KHR_get_surface_capabilities2+.
*Contributors*::
- Alon Or-bach, Samsung Electronics
- Ian Elliott, Google
@@ -37,8 +22,6 @@
- Michael Worcester, Imagination Technologies
- Cass Everitt, Oculus
- Johannes Van Waveren, Oculus
-*Contacts*::
- - Alon Or-bach, Samsung Electronics
This extension extends +VK_KHR_swapchain+ to enable creation of a shared
presentable image.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt b/doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt
index 24bbb8a..245b80d 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt
@@ -2,39 +2,25 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_storage_buffer_storage_class]]
-== VK_KHR_storage_buffer_storage_class
-
-*Name String*::
- +VK_KHR_storage_buffer_storage_class+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 132
+include::meta/VK_KHR_storage_buffer_storage_class.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2017-03-23
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
+*Interactions and External Dependencies*::
- This extension requires the
- https://gitlab.khronos.org/spirv/spirv-extensions/blob/master/SPV_KHR_storage_buffer_storage_class.asciidoc[SPV_KHR_storage_buffer_storage_class]
+ https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_storage_buffer_storage_class.html[+SPV_KHR_storage_buffer_storage_class+]
SPIR-V extension.
-
*Contributors*::
- Alexander Galazin, ARM
- David Neto, Google
-*Contact*::
- - Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * SPV_KHR_storage_buffer_storage_class
+ * +SPV_KHR_storage_buffer_storage_class+
This extension provides a new SPIR-V code:StorageBuffer storage class.
A code:Block-decorated object in this class is equivalent to a
diff --git a/doc/specs/vulkan/appendices/VK_KHR_surface.txt b/doc/specs/vulkan/appendices/VK_KHR_surface.txt
index c6b7a92..45647cf 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_surface.txt
@@ -2,23 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_surface]]
-== VK_KHR_surface
-
-*Name String*::
- +VK_KHR_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 1
+include::meta/VK_KHR_surface.txt[]
+
*Last Modified Date*::
2016-08-25
-*Revision*::
- 25
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Patrick Doane, Blizzard
- Ian Elliott, LunarG
@@ -32,9 +21,6 @@
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
- Jason Ekstrand, Intel
-*Contacts*::
- - James Jones, NVIDIA
- - Ian Elliott, LunarG
The +VK_KHR_surface+ extension is an instance extension.
It introduces slink:VkSurfaceKHR objects, which abstract native platform
diff --git a/doc/specs/vulkan/appendices/VK_KHR_swapchain.txt b/doc/specs/vulkan/appendices/VK_KHR_swapchain.txt
index bb6001b..d96edbf 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_swapchain.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_swapchain.txt
@@ -2,24 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_swapchain]]
-== VK_KHR_swapchain
-
-*Name String*::
- +VK_KHR_swapchain+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 2
+include::meta/VK_KHR_swapchain.txt[]
+
*Last Modified Date*::
2016-05-04
-*Revision*::
- 68
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires +VK_KHR_surface+.
*Contributors*::
- Patrick Doane, Blizzard
- Ian Elliott, LunarG
@@ -37,9 +25,6 @@
- Matthaeus G.
Chajdas, AMD
- Ray Smith, ARM
-*Contacts*::
- - James Jones, NVIDIA
- - Ian Elliott, LunarG
The +VK_KHR_swapchain+ extension is the device-level companion to the
+VK_KHR_surface+ extension.
diff --git a/doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt b/doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt
index d247d00..7060ac0 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt
@@ -2,32 +2,15 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_variable_pointers]]
-== VK_KHR_variable_pointers
-
-*Name String*::
- VK_KHR_variable_pointers
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 121
+include::meta/VK_KHR_variable_pointers.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2017-03-14
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - Written against version 1.0 of the Vulkan API
- - Requires Vulkan 1.0
- - Requires the
- <<VK_KHR_get_physical_device_properties2,VK_KHR_get_physical_device_properties2>>
- extension
- - Requires the
- <<VK_KHR_storage_buffer_storage_class,VK_KHR_storage_buffer_storage_class>>
- extension
+*Interactions and External Dependencies*::
- Requires the
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_variable_pointers.html[+SPV_KHR_variable_pointers+]
SPIR-V extension.
@@ -41,9 +24,6 @@
- Stephen Clarke, Imagination Technologies
- Jason Ekstrand, Intel
- Jesse Hall, Google
-*Contacts*::
- - Jesse Hall (jessehall 'at' google.com)
- - John Kessenich (johnkessenich 'at' google.com)
The +VK_KHR_variable_pointers+ extension allows implementations to indicate
their level of support for the +SPV_KHR_variable_pointers+ SPIR-V extension.
@@ -57,10 +37,12 @@ implementations of this extension.
The second, +VariablePointers+, is optional.
=== New Enum Constants
+
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR
=== New Structures
+
* slink:VkPhysicalDeviceVariablePointerFeaturesKHR
=== New SPIR-V Capabilities
@@ -92,5 +74,6 @@ supported in all stages.
extensions.
=== Version History
+
* Revision 1, 2017-03-14 (Jesse Hall and John Kessenich)
- Internal revisions
diff --git a/doc/specs/vulkan/appendices/VK_KHR_wayland_surface.txt b/doc/specs/vulkan/appendices/VK_KHR_wayland_surface.txt
index f301f37..98840f3 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_wayland_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_wayland_surface.txt
@@ -2,24 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_wayland_surface]]
-== VK_KHR_wayland_surface
-
-*Name String*::
- +VK_KHR_wayland_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 7
+include::meta/VK_KHR_wayland_surface.txt[]
+
*Last Modified Date*::
2015-11-28
-*Revision*::
- 6
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires +VK_KHR_surface+.
*Contributors*::
- Patrick Doane, Blizzard
- Jason Ekstrand, Intel
@@ -37,10 +25,6 @@
- Ray Smith, ARM
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
-*Contacts*::
- - Jesse Hall, Google
- - Ian Elliott, LunarG
-
The +VK_KHR_wayland_surface+ extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
diff --git a/doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt b/doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt
index 229f10f..df7ab66 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt
@@ -2,32 +2,18 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_win32_keyed_mutex]]
-== VK_KHR_win32_keyed_mutex
-
-*Name String*::
- +VK_KHR_win32_keyed_mutex+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 76
+include::meta/VK_KHR_win32_keyed_mutex.txt[]
+
*Status*::
Draft
*Last Modified Date*::
2016-10-21
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_external_memory+.
*Contributors*::
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
- Carsten Rohde, NVIDIA
-*Contact*::
- Carsten Rohde (crohde 'at' nvidia.com)
Applications that wish to import Direct3D 11 memory objects into the Vulkan
API may wish to use the native keyed mutex mechanism to synchronize access
diff --git a/doc/specs/vulkan/appendices/VK_KHR_win32_surface.txt b/doc/specs/vulkan/appendices/VK_KHR_win32_surface.txt
index df8bc27..b499b72 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_win32_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_win32_surface.txt
@@ -2,24 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_win32_surface]]
-== VK_KHR_win32_surface
-
-*Name String*::
- +VK_KHR_win32_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 10
+include::meta/VK_KHR_win32_surface.txt[]
+
*Last Modified Date*::
2017-04-24
-*Revision*::
- 6
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires +VK_KHR_surface+.
*Contributors*::
- Patrick Doane, Blizzard
- Jason Ekstrand, Intel
@@ -37,10 +25,6 @@
- Ray Smith, ARM
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
-*Contacts*::
- - Jesse Hall, Google
- - Ian Elliott, LunarG
-
The +VK_KHR_win32_surface+ extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
diff --git a/doc/specs/vulkan/appendices/VK_KHR_xcb_surface.txt b/doc/specs/vulkan/appendices/VK_KHR_xcb_surface.txt
index 730a900..713c635 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_xcb_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_xcb_surface.txt
@@ -2,24 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_xcb_surface]]
-== VK_KHR_xcb_surface
-
-*Name String*::
- +VK_KHR_xcb_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 6
+include::meta/VK_KHR_xcb_surface.txt[]
+
*Last Modified Date*::
2015-11-28
-*Revision*::
- 6
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_surface+.
*Contributors*::
- Patrick Doane, Blizzard
- Jason Ekstrand, Intel
@@ -37,10 +25,6 @@
- Ray Smith, ARM
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
-*Contacts*::
- - Jesse Hall, Google
- - Ian Elliott, LunarG
-
The +VK_KHR_xcb_surface+ extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
diff --git a/doc/specs/vulkan/appendices/VK_KHR_xlib_surface.txt b/doc/specs/vulkan/appendices/VK_KHR_xlib_surface.txt
index 61a45c3..de1162d 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_xlib_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_xlib_surface.txt
@@ -2,24 +2,12 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHR_xlib_surface]]
-== VK_KHR_xlib_surface
-
-*Name String*::
- +VK_KHR_xlib_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 5
+include::meta/VK_KHR_xlib_surface.txt[]
+
*Last Modified Date*::
2015-11-28
-*Revision*::
- 6
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_surface+.
*Contributors*::
- Patrick Doane, Blizzard
- Jason Ekstrand, Intel
@@ -37,10 +25,6 @@
- Ray Smith, ARM
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
-*Contacts*::
- - Jesse Hall, Google
- - Ian Elliott, LunarG
-
The +VK_KHR_xlib_surface+ extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
diff --git a/doc/specs/vulkan/appendices/VK_KHX_device_group.txt b/doc/specs/vulkan/appendices/VK_KHX_device_group.txt
index 14a83a0..44e894f 100644
--- a/doc/specs/vulkan/appendices/VK_KHX_device_group.txt
+++ b/doc/specs/vulkan/appendices/VK_KHX_device_group.txt
@@ -2,31 +2,16 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHX_device_group]]
-== VK_KHX_device_group
-
-*Name String*::
- +VK_KHX_device_group+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 61
+include::meta/VK_KHX_device_group.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2016-10-19
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_swapchain+ revision 68.
- - Requires +VK_KHX_device_group_creation+ revision 1.
*Contributors*::
- Jeff Bolz, NVIDIA
-*Contacts*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension provides functionality to use a logical device that consists
of multiple physical devices, as created with the
diff --git a/doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt b/doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt
index b7480be..2ad8baf 100644
--- a/doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt
+++ b/doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt
@@ -2,29 +2,16 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHX_device_group_creation]]
-== VK_KHX_device_group_creation
-
-*Name String*::
- +VK_KHX_device_group_creation+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 71
+include::meta/VK_KHX_device_group_creation.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2016-10-19
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Jeff Bolz, NVIDIA
-*Contacts*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension provides instance-level commands to enumerate groups of
physical devices, and to create a logical device from a subset of one of
diff --git a/doc/specs/vulkan/appendices/VK_KHX_multiview.txt b/doc/specs/vulkan/appendices/VK_KHX_multiview.txt
index c7d9b5d..f51f28f 100644
--- a/doc/specs/vulkan/appendices/VK_KHX_multiview.txt
+++ b/doc/specs/vulkan/appendices/VK_KHX_multiview.txt
@@ -2,30 +2,16 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_KHX_multiview]]
-== VK_KHX_multiview
-
-*Name String*::
- +VK_KHX_multiview+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 54
+include::meta/VK_KHX_multiview.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2016-10-28
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_get_physical_device_properties2+.
*Contributors*::
- Jeff Bolz, NVIDIA
-*Contacts*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension has the same goal as the OpenGL ES +GL_OVR_multiview+
extension - it enables rendering to multiple "`views`" by recording a single
diff --git a/doc/specs/vulkan/appendices/VK_MVK_ios_surface.txt b/doc/specs/vulkan/appendices/VK_MVK_ios_surface.txt
index 7c6f092..6f1cd40 100644
--- a/doc/specs/vulkan/appendices/VK_MVK_ios_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_MVK_ios_surface.txt
@@ -2,28 +2,14 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_MVK_ios_surface]]
-== VK_MVK_ios_surface
-
-*Name String*::
- +VK_MVK_ios_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 123
+include::meta/VK_MVK_ios_surface.txt[]
+
*Last Modified Date*::
2017-02-24
-*Revision*::
- 2
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_surface+.
*Contributors*::
- Bill Hollings, The Brenwill Workshop Ltd.
-*Contacts*::
- - Bill Hollings, The Brenwill Workshop Ltd.
The +VK_MVK_ios_surface+ extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
diff --git a/doc/specs/vulkan/appendices/VK_MVK_macos_surface.txt b/doc/specs/vulkan/appendices/VK_MVK_macos_surface.txt
index 2e46cb7..1665334 100644
--- a/doc/specs/vulkan/appendices/VK_MVK_macos_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_MVK_macos_surface.txt
@@ -2,28 +2,14 @@
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
-[[VK_MVK_macos_surface]]
-== VK_MVK_macos_surface
-
-*Name String*::
- +VK_MVK_macos_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 124
+include::meta/VK_MVK_macos_surface.txt[]
+
*Last Modified Date*::
2017-02-24
-*Revision*::
- 2
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_surface+.
*Contributors*::
- Bill Hollings, The Brenwill Workshop Ltd.
-*Contacts*::
- - Bill Hollings, The Brenwill Workshop Ltd.
The +VK_MVK_macos_surface+ extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
diff --git a/doc/specs/vulkan/appendices/VK_NN_vi_surface.txt b/doc/specs/vulkan/appendices/VK_NN_vi_surface.txt
index 821cdb5..9f519ba 100644
--- a/doc/specs/vulkan/appendices/VK_NN_vi_surface.txt
+++ b/doc/specs/vulkan/appendices/VK_NN_vi_surface.txt
@@ -1,28 +1,14 @@
-[[VK_NN_vi_surface]]
-== VK_NN_vi_surface
-
-*Name String*::
- +VK_NN_vi_surface+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 63
+include::meta/VK_NN_vi_surface.txt[]
+
*Last Modified Date*::
2016-12-2
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_KHR_surface+.
*Contributors*::
- Mathias Heyer, NVIDIA
- Michael Chock, NVIDIA
- Yasuhiro Yoshioka, Nintendo
- Daniel Koch, NVIDIA
-*Contacts*::
- - Mathias Heyer, NVIDIA
The +VK_NN_vi_surface+ extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
diff --git a/doc/specs/vulkan/appendices/VK_NVX_device_generated_commands.txt b/doc/specs/vulkan/appendices/VK_NVX_device_generated_commands.txt
index 3b5c2b8..b22f354 100644
--- a/doc/specs/vulkan/appendices/VK_NVX_device_generated_commands.txt
+++ b/doc/specs/vulkan/appendices/VK_NVX_device_generated_commands.txt
@@ -1,18 +1,7 @@
-[[VK_NVX_device_generated_commands]]
-== VK_NVX_device_generated_commands
-
-*Name String*::
- +VK_NVX_device_generated_commands+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 87
+include::meta/VK_NVX_device_generated_commands.txt[]
+
*Last Modified Date*::
2017-07-25
-*Revision*::
- 3
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Pierre Boudier, NVIDIA
- Christoph Kubisch, NVIDIA
@@ -22,9 +11,6 @@
- Detlef Roettger, NVIDIA
- Daniel Koch, NVIDIA
- Chris Hebert, NVIDIA
-*Contacts*::
- - Pierre Boudier, NVIDIA (pboudier@nvidia.com)
- - Christoph Kubisch, NVIDIA (ckubisch@nvidia.com)
This extension allows the device to generate a number of critical commands
for command buffers.
diff --git a/doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt b/doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt
index eab3d07..f0bc94e 100644
--- a/doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt
+++ b/doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt
@@ -1,37 +1,22 @@
-[[VK_NVX_multiview_per_view_attributes]]
-== VK_NVX_multiview_per_view_attributes
-
-*Name String*::
- +VK_NVX_multiview_per_view_attributes+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 98
+include::meta/VK_NVX_multiview_per_view_attributes.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2017-01-13
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
+*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/NV/SPV_NVX_multiview_per_view_attributes.html[+SPV_NVX_multiview_per_view_attributes+]
SPIR-V extension.
- This extension requires the +GL_NVX_multiview_per_view_attributes+
extension for GLSL source languages.
- - Requires
- <<VK_KHR_get_physical_device_properties2,VK_KHR_get_physical_device_properties2>>
- and <<VK_KHX_multiview,VK_KHX_multiview>>.
- This extension interacts with
<<VK_NV_viewport_array2,VK_NV_viewport_array2>>.
*Contributors*::
- Jeff Bolz, NVIDIA
- Daniel Koch, NVIDIA
-*Contacts*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension adds a new way to write shaders to be used with multiview
subpasses, where the attributes for all views are written out by a single
diff --git a/doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt b/doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt
index e7ebde7..cb0fa6b 100644
--- a/doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt
@@ -1,25 +1,12 @@
-[[VK_NV_clip_space_w_scaling]]
-== VK_NV_clip_space_w_scaling
-
-*Name String*::
- +VK_NV_clip_space_w_scaling+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 88
+include::meta/VK_NV_clip_space_w_scaling.txt[]
+
*Status*::
Complete.
*Last Modified Date*::
2017-02-15
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Eric Werness, NVIDIA
- Kedarnath Thangudu, NVIDIA
-*Contacts*::
- - Eric Werness (ewerness 'at' nvidia.com)
Virtual Reality (VR) applications often involve a post-processing step to
apply a "barrel" distortion to the rendered image to correct the
diff --git a/doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt b/doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt
index c3387e9..98b41d2 100644
--- a/doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt
@@ -1,26 +1,13 @@
-[[VK_NV_dedicated_allocation]]
-== VK_NV_dedicated_allocation
-
-*Name String*::
- +VK_NV_dedicated_allocation+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 27
+include::meta/VK_NV_dedicated_allocation.txt[]
+
*Status*::
Draft.
*Last Modified Date*::
2016-05-31
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Jeff Bolz, NVIDIA
-*Contacts*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension allows device memory to be allocated for a particular buffer
or image resource, which on some devices can significantly improve the
diff --git a/doc/specs/vulkan/appendices/VK_NV_external_memory.txt b/doc/specs/vulkan/appendices/VK_NV_external_memory.txt
index 11ccbf8..5f0a765 100644
--- a/doc/specs/vulkan/appendices/VK_NV_external_memory.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_external_memory.txt
@@ -1,28 +1,14 @@
-[[VK_NV_external_memory]]
-== VK_NV_external_memory
-
-*Name String*::
- +VK_NV_external_memory+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 57
+include::meta/VK_NV_external_memory.txt[]
+
*Status*::
Complete
*Last Modified Date*::
2016-08-19
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_NV_external_memory_capabilities+.
*Contributors*::
- James Jones, NVIDIA
- Carsten Rohde, NVIDIA
-*Contact*::
- - James Jones (jajones 'at' nvidia.com)
Applications may wish to export memory to other Vulkan instances or other
APIs, or import memory from other Vulkan instances or other APIs to enable
diff --git a/doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt b/doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt
index 8382184..3fecc0d 100644
--- a/doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt
@@ -1,28 +1,16 @@
-[[VK_NV_external_memory_capabilities]]
-== VK_NV_external_memory_capabilities
-
-*Name String*::
- +VK_NV_external_memory_capabilities+
-*Extension Type*::
- Instance extension
-*Registered Extension Number*::
- 56
+include::meta/VK_NV_external_memory_capabilities.txt[]
+
*Status*::
Complete
*Last Modified Date*::
2016-08-19
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
+*Interactions and External Dependencies*::
- Interacts with +VK_KHR_dedicated_allocation+.
- Interacts with +VK_NV_dedicated_allocation+.
*Contributors*::
- James Jones, NVIDIA
-*Contact*::
- James Jones (jajones 'at' nvidia.com)
Applications may wish to import memory from the Direct 3D API, or export
memory to other Vulkan instances.
diff --git a/doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt b/doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt
index 66ec365..ef97bd3 100644
--- a/doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt
@@ -1,29 +1,14 @@
-[[VK_NV_external_memory_win32]]
-== VK_NV_external_memory_win32
-
-*Name String*::
- +VK_NV_external_memory_win32+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 58
+include::meta/VK_NV_external_memory_win32.txt[]
+
*Status*::
Complete
*Last Modified Date*::
2016-08-19
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_NV_external_memory_capabilities+.
- - Requires +VK_NV_external_memory+.
*Contributors*::
- James Jones, NVIDIA
- Carsten Rohde, NVIDIA
-*Contact*::
- - James Jones (jajones 'at' nvidia.com)
Applications may wish to export memory to other Vulkan instances or other
APIs, or import memory from other Vulkan instances or other APIs to enable
diff --git a/doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt b/doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt
index f894229..d393e9a 100644
--- a/doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt
@@ -1,25 +1,11 @@
-[[VK_NV_fill_rectangle]]
-== VK_NV_fill_rectangle
-
-*Name String*::
- +VK_NV_fill_rectangle+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 154
+include::meta/VK_NV_fill_rectangle.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2017-05-22
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
*Contributors*::
- Jeff Bolz, NVIDIA
-*Contact*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension adds a new elink:VkPolygonMode enum where a triangle is
rasterized by computing and filling its axis-aligned screen-space bounding
diff --git a/doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt b/doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt
index e51e7a6..3a71bff 100644
--- a/doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt
@@ -1,25 +1,11 @@
-[[VK_NV_fragment_coverage_to_color]]
-== VK_NV_fragment_coverage_to_color
-
-*Name String*::
- +VK_NV_fragment_coverage_to_color+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 150
+include::meta/VK_NV_fragment_coverage_to_color.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2017-05-21
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
*Contributors*::
- Jeff Bolz, NVIDIA
-*Contact*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
This extension allows the fragment coverage value, represented as an integer
bitmask, to be substituted for a color output being written to a
diff --git a/doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt b/doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt
index ce73f38..6d40cef 100644
--- a/doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt
@@ -1,24 +1,11 @@
-[[VK_NV_framebuffer_mixed_samples]]
-== VK_NV_framebuffer_mixed_samples
-
-*Name String*::
- VK_NV_framebuffer_mixed_samples
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 153
+include::meta/VK_NV_framebuffer_mixed_samples.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2017-06-04
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
*Contributors*::
-*Contact*::
- - Jeff Bolz (jbolz 'at' nvidia.com)
+ - Jeff Bolz, NVIDIA
This extension allows multisample rendering with a raster and depth/stencil
sample count that is larger than the color sample count.
diff --git a/doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt b/doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt
index b3c61d4..5bdd409 100644
--- a/doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt
@@ -1,36 +1,24 @@
-[[VK_NV_geometry_shader_passthrough]]
-== VK_NV_geometry_shader_passthrough
-*Name String*::
- VK_NV_geometry_shader_passthrough
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 96
+include::meta/VK_NV_geometry_shader_passthrough.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2017-02-15
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
+*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/NV/SPV_NV_geometry_shader_passthrough.html[+SPV_NV_geometry_shader_passthrough+]
SPIR-V extension.
- This extension requires the
- https://www.opengl.org/registry/specs/NV/geometry_shader_passthrough.txt[+GL_NV_geometry_shader_passthrough+]
+ https://www.khronos.org/registry/OpenGL/extensions/NV/NV_geometry_shader_passthrough.txt[+GL_NV_geometry_shader_passthrough+]
extension for GLSL source languages.
- This extension requires the pname:geometryShader feature.
*Contributors*::
- Piers Daniell, NVIDIA
- Jeff Bolz, NVIDIA
-*Contact*::
- - Daniel Koch (dkoch 'at' nvidia.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * SPV_NV_geometry_shader_passthrough
+ * +SPV_NV_geometry_shader_passthrough+
Geometry shaders provide the ability for applications to process each
primitive sent through the graphics pipeline using a programmable shader.
@@ -48,11 +36,11 @@ Adding this to a geometry shader input variable indicates that the values of
this input are copied to the corresponding vertex of the output primitive.
When using GLSL source-based shading languages, the code:passthrough layout
-qualifier from GL_NV_geometry_shader_passthrough maps to the
+qualifier from +GL_NV_geometry_shader_passthrough+ maps to the
code:PassthroughNV decoration.
To use the code:passthrough layout, in GLSL the
-GL_NV_geometry_shader_passthrough extension must be enabled.
-Behaviour is described in the GL_NV_geometry_shader_passthrough extension
++GL_NV_geometry_shader_passthrough+ extension must be enabled.
+Behaviour is described in the +GL_NV_geometry_shader_passthrough+ extension
specification.
=== New Object Types
diff --git a/doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt b/doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt
index 6dc1461..03c417e 100644
--- a/doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt
@@ -1,26 +1,13 @@
-[[VK_NV_glsl_shader]]
-== VK_NV_glsl_shader
+include::meta/VK_NV_glsl_shader.txt[]
-*Name String*::
- +VK_NV_glsl_shader+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 13
*Status*::
Draft.
*Last Modified Date*::
2016-02-14
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
- Piers Daniell, NVIDIA
-*Contacts*::
- - Piers Daniell (pdaniell 'at' nvidia.com)
This extension allows GLSL shaders written to the +GL_KHR_vulkan_glsl+
extension specification to be used instead of SPIR-V.
diff --git a/doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt b/doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt
index de4997a..f4fae91 100644
--- a/doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt
@@ -1,38 +1,25 @@
-[[VK_NV_sample_mask_override_coverage]]
-== VK_NV_sample_mask_override_coverage
-
-*Name String*::
- +VK_NV_sample_mask_override_coverage+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 95
+include::meta/VK_NV_sample_mask_override_coverage.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2016-12-08
-*Revision*::
- 1
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
+*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/NV/SPV_NV_sample_mask_override_coverage.html[+SPV_NV_sample_mask_override_coverage+]
SPIR-V extension.
- This extension requires the
- https://www.opengl.org/registry/specs/NV/sample_mask_override_coverage.txt[+GL_NV_sample_mask_override_coverage+]
+ https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_mask_override_coverage.txt[+GL_NV_sample_mask_override_coverage+]
extension for GLSL source languages.
*Contributors*::
- Daniel Koch, NVIDIA
- Jeff Bolz, NVIDIA
-*Contact*::
- - Piers Daniell (pdaniell 'at' nvidia.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * SPV_NV_sample_mask_override_coverage
+ * +SPV_NV_sample_mask_override_coverage+
The extension provides access to the code:OverrideCoverageNV decoration
under the code:SampleMaskOverrideCoverageNV capability.
@@ -41,11 +28,11 @@ decoration allows the shader to modify the coverage mask and affect which
samples are used to process the fragment.
When using GLSL source-based shader languages, the code:override_coverage
-layout qualifier from GL_NV_sample_mask_override_coverage maps to the
+layout qualifier from +GL_NV_sample_mask_override_coverage+ maps to the
code:OverrideCoverageNV decoration.
To use the code:override_coverage layout qualifier in GLSL the
-GL_NV_sample_mask_override_coverage extension must be enabled.
-Behavior is described in the GL_NV_sample_mask_override_coverage extension
++GL_NV_sample_mask_override_coverage+ extension must be enabled.
+Behavior is described in the +GL_NV_sample_mask_override_coverage+ extension
spec.
=== New Object Types
diff --git a/doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt b/doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt
index 99ea1bd..f0568af 100644
--- a/doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt
@@ -1,26 +1,15 @@
-[[VK_NV_viewport_array2]]
-== VK_NV_viewport_array2
-
-*Name String*::
- +VK_NV_viewport_array2+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 97
+include::meta/VK_NV_viewport_array2.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2017-02-15
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
+*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/NV/SPV_NV_viewport_array2.html[+SPV_NV_viewport_array2+]
SPIR-V extension.
- This extension requires the
- https://www.opengl.org/registry/specs/NV/viewport_array2.txt[+GL_NV_viewport_array2+]
+ https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt[+GL_NV_viewport_array2+]
extension for GLSL source languages.
- This extension requires the pname:geometryShader and pname:multiViewport
features.
@@ -28,12 +17,10 @@
*Contributors*::
- Piers Daniell, NVIDIA
- Jeff Bolz, NVIDIA
-*Contact*::
- - Daniel Koch (dkoch 'at' nvidia.com)
This extension adds support for the following SPIR-V extension in Vulkan:
- * SPV_NV_viewport_array2
+ * +SPV_NV_viewport_array2+
which allows a single primitive to be broadcast to multiple viewports and/or
multiple layers.
@@ -59,7 +46,7 @@ When using GLSL source-based shading languages, the code:gl_ViewportMask[]
built-in output variable and code:viewport_relative layout qualifier from
+GL_NV_viewport_array2+ map to the code:ViewportMaskNV and
code:ViewportRelativeNV decorations, respectively.
-Behaviour is described in the GL_NV_viewport_array2 extension
+Behaviour is described in the +GL_NV_viewport_array2+ extension
specificiation.
ifdef::VK_EXT_shader_viewport_index_layer[]
diff --git a/doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt b/doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt
index 972f877..10fae0a 100644
--- a/doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt
@@ -1,28 +1,15 @@
-[[VK_NV_viewport_swizzle]]
-== VK_NV_viewport_swizzle
-
-*Name String*::
- +VK_NV_viewport_swizzle+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 99
+include::meta/VK_NV_viewport_swizzle.txt[]
+
*Status*::
Complete
-*Last Modified Data*::
+*Last Modified Date*::
2016-12-22
-*Revision*::
- 1
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - This extension requires Vulkan 1.0.
+*Interactions and External Dependencies*::
- This extension requires pname:multiViewport and pname:geometryShader
features to be useful.
*Contributors*::
- Daniel Koch, NVIDIA
- Jeff Bolz, NVIDIA
-*Contact*::
- - Piers Daniell (pdaniell 'at' nvidia.com)
This extension provides a new per-viewport swizzle that can modify the
position of primitives sent to each viewport.
diff --git a/doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt b/doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt
index 119cb80..854f8ce 100644
--- a/doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt
@@ -1,29 +1,14 @@
-[[VK_NV_win32_keyed_mutex]]
-== VK_NV_win32_keyed_mutex
-
-*Name*::
- +VK_NV_win32_keyed_mutex+
-*Extension Type*::
- Device extension
-*Registered Extension Number*::
- 59
+include::meta/VK_NV_win32_keyed_mutex.txt[]
+
*Status*::
Complete
*Last Modified Date*::
2016-08-19
-*Revision*::
- 2
*IP Status*::
No known IP claims.
-*Dependencies*::
- - This extension is written against version 1.0 of the Vulkan API.
- - Requires +VK_NV_external_memory_capabilities+
- - Requires +VK_NV_external_memory_win32+
*Contributors*::
- James Jones, NVIDIA
- Carsten Rohde, NVIDIA
-*Contact*::
- - Carsten Rohde (crohde 'at' nvidia.com)
Applications that wish to import Direct3D 11 memory objects into the Vulkan
API may wish to use the native keyed mutex mechanism to synchronize access
diff --git a/doc/specs/vulkan/appendices/boilerplate.txt b/doc/specs/vulkan/appendices/boilerplate.txt
index ef1628e..f380974 100644
--- a/doc/specs/vulkan/appendices/boilerplate.txt
+++ b/doc/specs/vulkan/appendices/boilerplate.txt
@@ -87,6 +87,9 @@ ifdef::VK_KHX_device_group[]
include::../api/flags/VkPeerMemoryFeatureFlagsKHX.txt[]
endif::VK_KHX_device_group[]
include::../api/flags/VkPipelineCacheCreateFlags.txt[]
+ifdef::VK_EXT_validation_cache[]
+include::../api/flags/VkValidationCacheCreateFlagsEXT.txt[]
+endif::VK_EXT_validation_cache[]
include::../api/flags/VkPipelineColorBlendStateCreateFlags.txt[]
ifdef::VK_NV_fragment_coverage_to_color[]
include::../api/flags/VkPipelineCoverageToColorStateCreateFlagsNV.txt[]
diff --git a/doc/specs/vulkan/appendices/credits.txt b/doc/specs/vulkan/appendices/credits.txt
index 2bf4049..3cb92ca 100644
--- a/doc/specs/vulkan/appendices/credits.txt
+++ b/doc/specs/vulkan/appendices/credits.txt
@@ -78,7 +78,7 @@ their name.
* Jeff Vigil, Qualcomm Technologies, Inc.
* Jens Owen, LunarG
* Jeremy Hayes, LunarG
- * Jesse Barker, ARM
+ * Jesse Barker, Unity
* Jesse Hall, Google
* Johannes van Waveren, Oculus VR
* John Kessenich, Google (SPIR-V and GLSL for Vulkan spec author)
@@ -115,7 +115,7 @@ their name.
* Neil Henning, Codeplay Software Ltd.
* Neil Trevett, NVIDIA
* Nick Penwarden, Epic Games
- * Niklas Smedberg, Epic Games
+ * Niklas Smedberg, Unity
* Norbert Nopper, Freescale
* Pat Brown, NVIDIA
* Patrick Doane, Blizzard Entertainment
diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt
index e805140..7cc49fd 100644
--- a/doc/specs/vulkan/appendices/extensions.txt
+++ b/doc/specs/vulkan/appendices/extensions.txt
@@ -276,6 +276,10 @@ 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[]
@@ -304,6 +308,10 @@ 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
@@ -347,6 +355,10 @@ 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_trinary_minmax[]
include::VK_AMD_shader_trinary_minmax.txt[]
endif::VK_AMD_shader_trinary_minmax[]
diff --git a/doc/specs/vulkan/appendices/glossary.txt b/doc/specs/vulkan/appendices/glossary.txt
index 3bdc7b4..49c3daf 100644
--- a/doc/specs/vulkan/appendices/glossary.txt
+++ b/doc/specs/vulkan/appendices/glossary.txt
@@ -147,6 +147,12 @@ Color Attachment::
A subpass attachment point, or image view, that is the target of
fragment color outputs and blending.
+ifdef::VK_AMD_shader_fragment_mask[]
+Color Fragment::
+ A unique color value within a pixel of a multisampled color image.
+ The _fragment mask_ will contain indices to the _color fragment_.
+endif::VK_AMD_shader_fragment_mask[]
+
Color Renderable Format::
A elink:VkFormat where ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT is
set in the pname:optimalTilingFeatures or pname:linearTilingFeatures
@@ -422,6 +428,11 @@ Fragment Input Attachment Interface::
storage class and a decoration of code:InputAttachmentIndex, which
receive values from input attachments.
+ifdef::VK_AMD_shader_fragment_mask[]
+Fragment Mask::
+ A lookup table that associates color samples with color fragment values.
+endif::VK_AMD_shader_fragment_mask[]
+
Fragment Output Interface::
A fragment shader entry point's variables with code:Output storage
class, which output to color and/or depth/stencil attachments.
@@ -1063,6 +1074,14 @@ Vertex Input Attribute::
shader by reading data from a vertex input binding and converting it to
the attribute's format.
+ifdef::VK_EXT_validation_cache[]
+Validation Cache::
+ An object that can: be used to collect and retrieve validation results
+ from the validation layers, and can: be populated with previously
+ retrieved results in order to accelerate the validation process.
+ Represented by a slink:VkValidationCacheEXT object.
+endif::VK_EXT_validation_cache[]
+
Vertex Input Binding::
A graphics pipeline resource that is bound to a buffer and includes
state that affects addressing calculations within that buffer.
diff --git a/doc/specs/vulkan/appendices/spirvenv.txt b/doc/specs/vulkan/appendices/spirvenv.txt
index a2d21e2..886c6c1 100644
--- a/doc/specs/vulkan/appendices/spirvenv.txt
+++ b/doc/specs/vulkan/appendices/spirvenv.txt
@@ -192,14 +192,14 @@ endif::VK_KHR_shader_draw_parameters[]
ifdef::VK_KHR_16bit_storage[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the
-https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.html[SPV_KHR_16bit_storage]
+https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.html[+SPV_KHR_16bit_storage+]
SPIR-V extension.
endif::VK_KHR_16bit_storage[]
ifdef::VK_KHR_storage_buffer_storage_class[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the
-https://gitlab.khronos.org/spirv/spirv-extensions/blob/master/SPV_KHR_storage_buffer_storage_class.asciidoc[SPV_KHR_storage_buffer_storage_class]
+https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_storage_buffer_storage_class.html[+SPV_KHR_storage_buffer_storage_class+]
SPIR-V extension.
endif::VK_KHR_storage_buffer_storage_class[]
@@ -318,7 +318,7 @@ ifdef::VK_KHR_16bit_storage[]
can: be used for the code:FPRoundingMode decoration.
** The code:FPRoundingMode decoration can: only be used for the
floating-point conversion instructions as described in the
- https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.html[SPV_KHR_16bit_storage]
+ https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.html[+SPV_KHR_16bit_storage+]
SPIR-V extension.
endif::VK_KHR_16bit_storage[]
* code:OpTypeRuntimeArray must: only be used for the last member of an
diff --git a/doc/specs/vulkan/chapters/VK_EXT_validation_cache/shader-module-validation-cache.txt b/doc/specs/vulkan/chapters/VK_EXT_validation_cache/shader-module-validation-cache.txt
new file mode 100644
index 0000000..2f37e4e
--- /dev/null
+++ b/doc/specs/vulkan/chapters/VK_EXT_validation_cache/shader-module-validation-cache.txt
@@ -0,0 +1,21 @@
+[open,refpage='VkShaderModuleValidationCacheCreateInfoEXT',desc='Specify validation cache to use during shader module creation',type='structs']
+--
+
+To use a slink:VkValidationCacheEXT to cache shader validation results, add
+a slink:VkShaderModuleValidationCacheCreateInfoEXT to the pname:pNext chain
+of the slink:VkShaderModuleCreateInfo structure, specifying the cache object
+to use.
+
+The VkShaderModuleValidationCacheCreateInfoEXT struct is defined as:
+
+include::../../api/structs/VkShaderModuleValidationCacheCreateInfoEXT.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:validationCache is the validation cache object from which the
+ results of prior validation attempts will be written, and to which new
+ validation results for this VkShaderModule will be written (if not
+ already present).
+
+include::../../validity/structs/VkShaderModuleValidationCacheCreateInfoEXT.txt[]
+--
diff --git a/doc/specs/vulkan/chapters/debugging.txt b/doc/specs/vulkan/chapters/debugging.txt
index af5117a..b467288 100644
--- a/doc/specs/vulkan/chapters/debugging.txt
+++ b/doc/specs/vulkan/chapters/debugging.txt
@@ -65,6 +65,9 @@ ifdef::VK_NVX_device_generated_commands[]
| ename:VK_OBJECT_TYPE_OBJECT_TABLE_NVX | slink:VkObjectTableNVX
| ename:VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX | slink:VkIndirectCommandsLayoutNVX
endif::VK_NVX_device_generated_commands[]
+ifdef::VK_EXT_validation_cache[]
+| ename:VK_OBJECT_TYPE_VALIDATION_CACHE_EXT | slink:VkValidationCacheEXT
+endif::VK_EXT_validation_cache[]
|====
--
diff --git a/doc/specs/vulkan/chapters/devsandqueues.txt b/doc/specs/vulkan/chapters/devsandqueues.txt
index a2ed53f..6cdc98f 100644
--- a/doc/specs/vulkan/chapters/devsandqueues.txt
+++ b/doc/specs/vulkan/chapters/devsandqueues.txt
@@ -248,11 +248,28 @@ include::../api/structs/VkPhysicalDeviceIDPropertiesKHR.txt[]
pname:deviceUUID must: be immutable for a given device across instances,
processes, driver APIs, driver versions, and system reboots.
-pname:driverUUID must: be identical in all driver components that support
-sharing external objects between eachother.
-Applications can: compare this value across instance and process boundaries,
-and can: make similar queries in external APIs to determine whether they are
-capable of sharing memory objects and resources using them with the device.
+Applications can: compare the pname:driverUUID value across instance and
+process boundaries, and can: make similar queries in external APIs to
+determine whether they are capable of sharing memory objects and resources
+using them with the device.
+
+pname:deviceUUID and/or pname:driverUUID must: be used to determine whether
+a particular external object can be shared between driver components, where
+such a restriction exists as defined in the compatibility table for the
+particular object type:
+
+ifdef::VK_KHR_external_memory_capabilities[]
+ * <<external-memory-handle-types-compatibility,External memory handle
+ types compatibility>>
+endif::VK_KHR_external_memory_capabilities[]
+ifdef::VK_KHR_external_semaphore_capabilities[]
+ * <<external-semaphore-handle-types-compatibility,External semaphore
+ handle types compatibility>>
+endif::VK_KHR_external_semaphore_capabilities[]
+ifdef::VK_KHR_external_fence_capabilities[]
+ * <<external-fence-handle-types-compatibility,External fence handle types
+ compatibility>>
+endif::VK_KHR_external_fence_capabilities[]
If pname:deviceLUIDValid is ename:VK_FALSE, the contents of pname:deviceLUID
and pname:deviceNodeMask are undefined.
diff --git a/doc/specs/vulkan/chapters/drawing.txt b/doc/specs/vulkan/chapters/drawing.txt
index 5651f9e..a9aa337 100644
--- a/doc/specs/vulkan/chapters/drawing.txt
+++ b/doc/specs/vulkan/chapters/drawing.txt
@@ -651,6 +651,14 @@ ifdef::VK_KHX_multiview[]
enabled, the maximum instance index must: be less than or equal to
slink:VkPhysicalDeviceMultiviewPropertiesKHX::pname:maxMultiviewInstanceIndex.
endif::VK_KHX_multiview[]
+ifdef::VK_EXT_sample_locations[]
+ * [[VUID-vkCmdDraw-sampleLocationsEnable-01512]]
+ If the currently bound graphics pipeline was created with
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
+ set to ename:VK_TRUE and the current subpass has a depth/stencil
+ attachment, then that attachment must: have been created with the
+ ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+endif::VK_EXT_sample_locations[]
****
include::../validity/protos/vkCmdDraw.txt[]
@@ -822,6 +830,14 @@ ifdef::VK_KHX_multiview[]
enabled, the maximum instance index must: be less than or equal to
slink:VkPhysicalDeviceMultiviewPropertiesKHX::pname:maxMultiviewInstanceIndex.
endif::VK_KHX_multiview[]
+ifdef::VK_EXT_sample_locations[]
+ * [[VUID-vkCmdDrawIndexed-sampleLocationsEnable-01513]]
+ If the currently bound graphics pipeline was created with
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
+ set to ename:VK_TRUE and the current subpass has a depth/stencil
+ attachment, then that attachment must: have been created with the
+ ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+endif::VK_EXT_sample_locations[]
****
include::../validity/protos/vkCmdDrawIndexed.txt[]
@@ -999,6 +1015,14 @@ ifdef::VK_KHX_multiview[]
enabled, the maximum instance index must: be less than or equal to
slink:VkPhysicalDeviceMultiviewPropertiesKHX::pname:maxMultiviewInstanceIndex.
endif::VK_KHX_multiview[]
+ifdef::VK_EXT_sample_locations[]
+ * [[VUID-vkCmdDrawIndirect-sampleLocationsEnable-01514]]
+ If the currently bound graphics pipeline was created with
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
+ set to ename:VK_TRUE and the current subpass has a depth/stencil
+ attachment, then that attachment must: have been created with the
+ ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+endif::VK_EXT_sample_locations[]
****
include::../validity/protos/vkCmdDrawIndirect.txt[]
@@ -1196,6 +1220,14 @@ ifdef::VK_KHX_multiview[]
enabled, the maximum instance index must: be less than or equal to
slink:VkPhysicalDeviceMultiviewPropertiesKHX::pname:maxMultiviewInstanceIndex.
endif::VK_KHX_multiview[]
+ifdef::VK_EXT_sample_locations[]
+ * [[VUID-vkCmdDrawIndirectCountAMD-sampleLocationsEnable-01515]]
+ If the currently bound graphics pipeline was created with
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
+ set to ename:VK_TRUE and the current subpass has a depth/stencil
+ attachment, then that attachment must: have been created with the
+ ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+endif::VK_EXT_sample_locations[]
****
include::../validity/protos/vkCmdDrawIndirectCountAMD.txt[]
@@ -1376,6 +1408,14 @@ ifdef::VK_KHX_multiview[]
enabled, the maximum instance index must: be less than or equal to
slink:VkPhysicalDeviceMultiviewPropertiesKHX::pname:maxMultiviewInstanceIndex.
endif::VK_KHX_multiview[]
+ifdef::VK_EXT_sample_locations[]
+ * [[VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-01516]]
+ If the currently bound graphics pipeline was created with
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
+ set to ename:VK_TRUE and the current subpass has a depth/stencil
+ attachment, then that attachment must: have been created with the
+ ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+endif::VK_EXT_sample_locations[]
****
include::../validity/protos/vkCmdDrawIndexedIndirect.txt[]
@@ -1582,6 +1622,14 @@ ifdef::VK_KHX_multiview[]
enabled, the maximum instance index must: be less than or equal to
slink:VkPhysicalDeviceMultiviewPropertiesKHX::pname:maxMultiviewInstanceIndex.
endif::VK_KHX_multiview[]
+ifdef::VK_EXT_sample_locations[]
+ * [[VUID-vkCmdDrawIndexedIndirectCountAMD-sampleLocationsEnable-01517]]
+ If the currently bound graphics pipeline was created with
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
+ set to ename:VK_TRUE and the current subpass has a depth/stencil
+ attachment, then that attachment must: have been created with the
+ ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+endif::VK_EXT_sample_locations[]
****
include::../validity/protos/vkCmdDrawIndexedIndirectCountAMD.txt[]
diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt
index ba65732..61566d8 100644
--- a/doc/specs/vulkan/chapters/features.txt
+++ b/doc/specs/vulkan/chapters/features.txt
@@ -1699,6 +1699,52 @@ it is filled with the implementation-dependent limits.
endif::VK_EXT_discard_rectangles[]
+ifdef::VK_EXT_sample_locations[]
+
+[open,refpage='VkPhysicalDeviceSampleLocationsPropertiesEXT',desc='Structure describing sample location limits that can be supported by an implementation',type='structs']
+--
+
+The sname:VkPhysicalDeviceSampleLocationsPropertiesEXT structure is defined
+as:
+
+include::../api/structs/VkPhysicalDeviceSampleLocationsPropertiesEXT.txt[]
+
+The members of the sname:VkPhysicalDeviceSampleLocationsPropertiesEXT
+structure describe the following implementation-dependent limits:
+
+ * [[features-limits-sampleLocationSampleCounts]]
+ pname:sampleLocationSampleCounts is a bitmask of
+ elink:VkSampleCountFlagBits indicating the sample counts supporting
+ custom sample locations.
+ * [[features-limits-maxSampleLocationGridSize]]
+ pname:maxSampleLocationGridSize is the maximum size of the pixel grid in
+ which sample locations can: vary that is supported for all sample counts
+ in pname:sampleLocationSampleCounts.
+ * [[features-limits-sampleLocationCoordinateRange]]
+ pname:sampleLocationCoordinateRange[2] is the range of supported sample
+ location coordinates.
+ * [[features-limits-sampleLocationSubPixelBits]]
+ pname:sampleLocationSubPixelBits is the number of bits of subpixel
+ precision for sample locations.
+ * [[features-limits-variableSampleLocations]]
+ pname:variableSampleLocations indicates whether the sample locations
+ used by all pipelines that will be bound to a command buffer during a
+ subpass must: match.
+ If set to ename:VK_TRUE, the implementation supports variable sample
+ locations in a subpass.
+ If set to ename:VK_FALSE, then the sample locations must: stay constant
+ in any given subpass.
+
+include::../validity/structs/VkPhysicalDeviceSampleLocationsPropertiesEXT.txt[]
+
+If the sname:VkPhysicalDeviceSampleLocationsPropertiesEXT structure is
+included in the pname:pNext chain of slink:VkPhysicalDeviceProperties2KHR,
+it is filled with the implementation-dependent limits.
+
+--
+
+endif::VK_EXT_sample_locations[]
+
ifdef::VK_NVX_multiview_per_view_attributes[]
[open,refpage='VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',desc='Structure describing multiview limits that can be supported by an implementation',type='structs']
@@ -2097,6 +2143,13 @@ endif::VK_KHX_multiview[]
ifdef::VK_EXT_discard_rectangles[]
| pname:maxDiscardRectangles | 0 | 4 | min
endif::VK_EXT_discard_rectangles[]
+ifdef::VK_EXT_sample_locations[]
+| pname:sampleLocationSampleCounts | - | ename:VK_SAMPLE_COUNT_4_BIT | min
+| pname:maxSampleLocationGridSize | - | (1,1) | min
+| pname:sampleLocationCoordinateRange | - | (0.0, 0.9375) | (max,min)
+| pname:sampleLocationSubPixelBits | - | 4 | min
+| pname:variableSampleLocations | - |false| implementation dependent
+endif::VK_EXT_sample_locations[]
ifdef::VK_NVX_multiview_per_view_attributes[]
| pname:perViewPositionAllComponents | - | - | implementation dependent
endif::VK_NVX_multiview_per_view_attributes[]
@@ -2170,6 +2223,62 @@ It may: not be possible to reach this limit in every stage.
control, tessellation evaluation, geometry, fragment, compute).
+ifdef::VK_EXT_sample_locations[]
+
+[[features-limits-multisample]]
+== Additional Multisampling Capabilities
+
+[open,refpage='vkGetPhysicalDeviceMultisamplePropertiesEXT',desc='Report sample count specific multisampling capabilities of a physical device',type='protos']
+--
+
+In addition to the minimum capabilities described in the previous section
+(<<features-limits,Limits>>), implementations may: support additional
+multisampling capabilities specific to a particular sample count.
+
+To query additional sample count specific multisampling capabilities, call:
+
+include::../api/protos/vkGetPhysicalDeviceMultisamplePropertiesEXT.txt[]
+
+ * pname:physicalDevice is the physical device from which to query the
+ additional multisampling capabilities.
+ * pname:samples is the sample count to query the capabilities for.
+ * pname:pMultisampleProperties is a pointer to a structure of type
+ slink:VkMultisamplePropertiesEXT, in which information about the
+ additional multisampling capabilities specific to the sample count is
+ returned.
+
+include::../validity/protos/vkGetPhysicalDeviceMultisamplePropertiesEXT.txt[]
+--
+
+[open,refpage='VkMultisamplePropertiesEXT',desc='Structure returning information about sample count specific additional multisampling capabilities',type='structs']
+--
+
+The sname:VkMultisamplePropertiesEXT structure is defined as
+
+include::../api/structs/VkMultisamplePropertiesEXT.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:maxSampleLocationGridSize is the maximum size of the pixel grid in
+ which sample locations can: vary.
+
+include::../validity/structs/VkMultisamplePropertiesEXT.txt[]
+--
+
+If the sample count for which additional multisampling capabilities are
+requested using fname:vkGetPhysicalDeviceMultisamplePropertiesEXT is set
+in sname:VkPhysicalDeviceSampleLocationsEXT::
+<<features-limits-sampleLocationSampleCounts,
+pname:sampleLocationSampleCounts>> the pname:width and pname:height members
+of sname:VkMultisamplePropertiesEXT::pname:maxSampleLocationGridSize must:
+be greater than or equal to the corresponding members of
+sname:VkPhysicalDeviceSampleLocationsEXT::
+<<features-limits-maxSampleLocationGridSize,pname:maxSampleLocationGridSize>>,
+respectively, otherwise both members must: be `0`.
+
+endif::VK_EXT_sample_locations[]
+
+
[[features-formats]]
== Formats
@@ -4356,6 +4465,25 @@ include::../api/enums/VkExternalMemoryHandleTypeFlagBitsKHR.txt[]
referring to a Direct3D 12 committed resource.
It owns a reference to the memory used by the Direct3D resource.
+<<<
+
+Some external memory handle types can only be shared within the same
+underlying physical device and/or the same driver version, as defined in the
+following table:
+
+[[external-memory-handle-types-compatibility]]
+.External memory handle types compatibility
+|====
+| Handle type | sname:VkPhysicalDeviceIDPropertiesKHR::pname:driverUUID | sname:VkPhysicalDeviceIDPropertiesKHR::pname:deviceUUID
+| ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR | Must match | Must match
+|====
+
--
[open,refpage='VkExternalImageFormatPropertiesKHR',desc='Structure specifying supported external handle properties',type='structs']
@@ -4716,6 +4844,23 @@ file descriptor, or are prepared to deal with the system-defined operation
failures resulting from using the wrong type.
====
+<<<
+
+Some external semaphore handle types can only be shared within the same
+underlying physical device and/or the same driver version, as defined in the
+following table:
+
+[[external-semaphore-handle-types-compatibility]]
+.External semaphore handle types compatibility
+|====
+| Handle type | sname:VkPhysicalDeviceIDPropertiesKHR::pname:driverUUID | sname:VkPhysicalDeviceIDPropertiesKHR::pname:deviceUUID
+| ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR | No restriction | No restriction
+|====
+
--
[open,refpage='VkExternalSemaphorePropertiesKHR',desc='Structure describing supported external semaphore handle features',type='structs']
@@ -4860,6 +5005,22 @@ include::../api/enums/VkExternalFenceHandleTypeFlagBitsKHR.txt[]
any type of sync or fence FD supported by the native system they are
running on.
+<<<
+
+Some external fence handle types can only be shared within the same
+underlying physical device and/or the same driver version, as defined in the
+following table:
+
+[[external-fence-handle-types-compatibility]]
+.External fence handle types compatibility
+|====
+| Handle type | sname:VkPhysicalDeviceIDPropertiesKHR::pname:driverUUID | sname:VkPhysicalDeviceIDPropertiesKHR::pname:deviceUUID
+| ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR | Must match | Must match
+| ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR | No restriction | No restriction
+|====
+
--
[open,refpage='VkExternalFencePropertiesKHR',desc='Structure describing supported external fence handle features',type='structs']
diff --git a/doc/specs/vulkan/chapters/fundamentals.txt b/doc/specs/vulkan/chapters/fundamentals.txt
index 1bed718..98fa8ac 100644
--- a/doc/specs/vulkan/chapters/fundamentals.txt
+++ b/doc/specs/vulkan/chapters/fundamentals.txt
@@ -296,6 +296,9 @@ passed into:
* sname:VkShaderModule
* sname:VkPipelineCache
+ifdef::VK_EXT_validation_cache[]
+ * sname:VkValidationCacheEXT
+endif::VK_EXT_validation_cache[]
A sname:VkRenderPass object passed as a parameter to create another object
is not further accessed by that object after the duration of the command it
@@ -409,6 +412,9 @@ be destroyed:
** sname:VkCommandPool
** sname:VkCommandBuffer
** sname:VkDeviceMemory
+ifdef::VK_EXT_validation_cache[]
+ * sname:VkValidationCacheEXT
+endif::VK_EXT_validation_cache[]
* sname:VkPhysicalDevice objects cannot: be explicitly destroyed.
Instead, they are implicitly destroyed when the sname:VkInstance object
they are retrieved from is destroyed.
diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt
index 64439b1..f70a36d 100644
--- a/doc/specs/vulkan/chapters/interfaces.txt
+++ b/doc/specs/vulkan/chapters/interfaces.txt
@@ -1677,6 +1677,11 @@ shaders.
+
The variable decorated with code:SamplePosition must: be declared using the
code:Input storage class.
+ifdef::VK_EXT_sample_locations[]
+If the current pipeline uses <<primrast-samplelocations, custom sample
+locations>> the value of any variable decorated with the code:SamplePosition
+built-in decoration is undefined.
+endif::VK_EXT_sample_locations[]
+
The variable decorated with code:SamplePosition must: be declared as a
two-component vector of 32-bit floating-point values.
diff --git a/doc/specs/vulkan/chapters/memory.txt b/doc/specs/vulkan/chapters/memory.txt
index 958d255..f71c1cc 100644
--- a/doc/specs/vulkan/chapters/memory.txt
+++ b/doc/specs/vulkan/chapters/memory.txt
@@ -255,7 +255,11 @@ include::../api/enums/VkSystemAllocationScope.txt[]
scoped to the lifetime of the Vulkan object that is being created or
used.
* ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE specifies that the allocation is
- scoped to the lifetime of a sname:VkPipelineCache object.
+ scoped to the lifetime of a sname:VkPipelineCache
+ifdef::VK_EXT_validation_cache[]
+ or sname:VkValidationCacheEXT
+endif::VK_EXT_validation_cache[]
+ object.
* ename:VK_SYSTEM_ALLOCATION_SCOPE_DEVICE specifies that the allocation is
scoped to the lifetime of the Vulkan device.
* ename:VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE specifies that the allocation
@@ -281,10 +285,13 @@ available:
used.
Else,
* If an allocation is associated with an object of type
+ifdef::VK_EXT_validation_cache[]
+ sname:VkValidationCacheEXT or
+endif::VK_EXT_validation_cache[]
sname:VkPipelineCache, the allocator will use the
ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE allocation scope.
- The most specific allocator available is used (pipeline cache, else
- device, else instance).
+ The most specific allocator available is used (cache, else device, else
+ instance).
Else,
* If an allocation is scoped to the lifetime of an object, that object is
being created or manipulated by the command, and that object's type is
@@ -386,8 +393,16 @@ situations:
from:
** fname:vkCreatePipelineCache
** fname:vkMergePipelineCaches for pname:dstCache
- ** fname:vkCreateGraphicsPipelines for pname:pPipelineCache
- ** fname:vkCreateComputePipelines for pname:pPipelineCache
+ ** fname:vkCreateGraphicsPipelines for pname:pipelineCache
+ ** fname:vkCreateComputePipelines for pname:pipelineCache
+ifdef::VK_EXT_validation_cache[]
+ * Allocations scoped to a sname:VkValidationCacheEXT may: only be
+ allocated from:
+ ** fname:vkCreateValidationCacheEXT
+ ** fname:vkMergeValidationCachesEXT for pname:dstCache
+ ** fname:vkCreateShaderModule for pname:validationCache in
+ sname:VkShaderModuleValidationCacheCreateInfoEXT
+endif::VK_EXT_validation_cache[]
* Allocations scoped to a sname:VkDescriptorPool may: only be allocated
from:
** any command that takes the pool as a direct argument
@@ -412,6 +427,10 @@ pname:pfnFree may: be called in the following situations:
allocates such memory.
* Allocations scoped to a sname:VkPipelineCache may: be freed from
fname:vkDestroyPipelineCache.
+ifdef::VK_EXT_validation_cache[]
+ * Allocations scoped to a sname:VkValidationCacheEXT may: be freed from
+ fname:vkDestroyValidationCacheEXT.
+endif::VK_EXT_validation_cache[]
* Allocations scoped to a sname:VkDescriptorPool may: be freed from
** any command that takes the pool as a direct argument
* Allocations scoped to a sname:VkCommandPool may: be freed from:
@@ -1165,9 +1184,9 @@ include::../validity/structs/VkExportMemoryWin32HandleInfoKHR.txt[]
[open,refpage='VkImportMemoryWin32HandleInfoKHR',desc='import Win32 memory created on the same physical device',type='structs']
--
-To import memory created on the same underlying physical device from a
-Windows handle, add a slink:VkImportMemoryWin32HandleInfoKHR structure to
-the pname:pNext chain of the slink:VkMemoryAllocateInfo structure.
+To import memory from a Windows handle, add a
+slink:VkImportMemoryWin32HandleInfoKHR structure to the pname:pNext chain of
+the slink:VkMemoryAllocateInfo structure.
The sname:VkImportMemoryWin32HandleInfoKHR structure is defined as:
@@ -1221,6 +1240,16 @@ sname:VkDeviceMemory object.
must: be a valid handle of the type specified by pname:handleType.
* [[VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441]]
if pname:handle is not `NULL`, pname:name must be `NULL`.
+ * [[VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518]]
+ If pname:handle is not `NULL`, it must: obey any requirements listed for
+ pname:handleType in
+ <<external-memory-handle-types-compatibility,external memory handle
+ types compatibility>>.
+ * [[VUID-VkImportMemoryWin32HandleInfoKHR-name-01519]]
+ If pname:name is not `NULL`, it must: obey any requirements listed for
+ pname:handleType in
+ <<external-memory-handle-types-compatibility,external memory handle
+ types compatibility>>.
****
include::../validity/structs/VkImportMemoryWin32HandleInfoKHR.txt[]
@@ -1336,9 +1365,9 @@ ifdef::VK_KHR_external_memory_fd[]
[open,refpage='VkImportMemoryFdInfoKHR',desc='import memory created on the same physical device from a file descriptor',type='structs']
--
-To import memory created on the same underlying physical device from a POSIX
-file descriptor handle, add a slink:VkImportMemoryFdInfoKHR structure to the
-pname:pNext chain of the slink:VkMemoryAllocateInfo structure.
+To import memory from a POSIX file descriptor handle, add a
+slink:VkImportMemoryFdInfoKHR structure to the pname:pNext chain of the
+slink:VkMemoryAllocateInfo structure.
The sname:VkImportMemoryFdInfoKHR structure is defined as:
include::../api/structs/VkImportMemoryFdInfoKHR.txt[]
@@ -1374,6 +1403,10 @@ sname:VkDeviceMemory object.
* [[VUID-VkImportMemoryFdInfoKHR-handleType-00670]]
If pname:handleType is not `0`, pname:fd must: be a valid handle of the
type specified by pname:handleType.
+ * [[VUID-VkImportMemoryFdInfoKHR-fd-01520]]
+ pname:fd must: obey any requirements listed for pname:handleType in
+ <<external-memory-handle-types-compatibility,external memory handle
+ types compatibility>>.
****
include::../validity/structs/VkImportMemoryFdInfoKHR.txt[]
diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt
index b98b83a..ad3a4bf 100644
--- a/doc/specs/vulkan/chapters/pipelines.txt
+++ b/doc/specs/vulkan/chapters/pipelines.txt
@@ -650,6 +650,44 @@ ifndef::VK_EXT_depth_range_unrestricted[]
ename:VK_TRUE, the pname:minDepthBounds and pname:maxDepthBounds members
of pname:pDepthStencil must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
+ifdef::VK_EXT_sample_locations[]
+ * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521]]
+ If no element of the pname:pDynamicStates member of pname:pDynamicState
+ is ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and the
+ pname:sampleLocationsEnable member of a
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT structure chained to
+ the pname:pNext chain of pname:pMultisampleState is ename:VK_TRUE,
+ pname:sampleLocationsInfo.sampleLocationGridSize.width must: evenly
+ divide
+ slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.width as
+ returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a
+ pname:samples parameter equaling pname:rasterizationSamples
+ * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522]]
+ If no element of the pname:pDynamicStates member of pname:pDynamicState
+ is ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and the
+ pname:sampleLocationsEnable member of a
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT structure chained to
+ the pname:pNext chain of pname:pMultisampleState is ename:VK_TRUE,
+ pname:sampleLocationsInfo.sampleLocationGridSize.height must: evenly
+ divide
+ slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.height as
+ returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a
+ pname:samples parameter equaling pname:rasterizationSamples
+ * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523]]
+ If no element of the pname:pDynamicStates member of pname:pDynamicState
+ is ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and the
+ pname:sampleLocationsEnable member of a
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT structure chained to
+ the pname:pNext chain of pname:pMultisampleState is ename:VK_TRUE,
+ pname:sampleLocationsInfo.sampleLocationsPerPixel must: equal
+ pname:rasterizationSamples
+ * [[VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524]]
+ If the pname:sampleLocationsEnable member of a
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT structure chained to
+ the pname:pNext chain of pname:pMultisampleState is ename:VK_TRUE, the
+ fragment shader code must: not statically use the extended instruction
+ code:InterpolateAtSample
+endif::VK_EXT_sample_locations[]
* [[VUID-VkGraphicsPipelineCreateInfo-layout-00756]]
pname:layout must: be
<<descriptorsets-pipelinelayout-consistency,consistent>> with all
@@ -866,6 +904,16 @@ ifdef::VK_EXT_discard_rectangles[]
pname:discardRectangleCount members of
sname:VkPipelineDiscardRectangleStateCreateInfoEXT.
endif::VK_EXT_discard_rectangles[]
+ifdef::VK_EXT_sample_locations[]
+ * ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT specifies that the
+ pname:sampleLocationsInfo state in
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT will be ignored and
+ must: be set dynamically with flink:vkCmdSetSampleLocationsEXT before
+ any draw or clear commands.
+ Enabling custom sample locations is still indicated by the
+ pname:sampleLocationsEnable member of
+ sname:VkPipelineSampleLocationsStateCreateInfoEXT.
+endif::VK_EXT_sample_locations[]
--
@@ -1529,6 +1577,23 @@ No other commands are affected by the pipeline state.
to this function with a graphics pipeline after transitioning to the
current subpass, then the sample count specified by this pipeline must:
match that set in the previous pipeline
+ifdef::VK_EXT_sample_locations[]
+ * [[VUID-vkCmdBindPipeline-variableSampleLocations-01525]]
+ If
+ slink:VkPhysicalDeviceSampleLocationsPropertiesEXT::pname:variableSampleLocations
+ is ename:VK_FALSE, and pname:pipeline is a graphics pipeline created
+ with a slink:VkPipelineSampleLocationsStateCreateInfoEXT structure
+ having its pname:sampleLocationsEnable member set to ename:VK_TRUE but
+ without ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT enabled then the
+ current render pass instance must: have been begun by specifying a
+ slink:VkRenderPassSampleLocationsBeginInfoEXT structure whose
+ pname:pPostSubpassSampleLocations member contains an element with a
+ pname:subpassIndex matching the current subpass index and the
+ pname:sampleLocationsInfo member of that element must: match the
+ pname:sampleLocationsInfo specified in
+ slink:VkPipelineSampleLocationsStateCreateInfoEXT when the pipeline was
+ created
+endif::VK_EXT_sample_locations[]
****
include::../validity/protos/vkCmdBindPipeline.txt[]
diff --git a/doc/specs/vulkan/chapters/primsrast.txt b/doc/specs/vulkan/chapters/primsrast.txt
index 186a4a6..1d86d1e 100644
--- a/doc/specs/vulkan/chapters/primsrast.txt
+++ b/doc/specs/vulkan/chapters/primsrast.txt
@@ -387,6 +387,177 @@ pixel.
[eq]#(0.0625, 0.0)#
|====
+ifdef::VK_AMD_shader_fragment_mask[]
+Color images created with multiple samples per pixel use a compression
+technique where there are two arrays of data associated with each pixel.
+The first array contains one element per sample where each element stores an
+index to the second array defining the _fragment mask_ of the pixel.
+The second array contains one element per _color fragment_ and each element
+stores a unique color value in the format of the image.
+With this compression technique it's not always necessary to actually use
+unique storage locations for each color sample: when multiple samples share
+the same color value the fragment mask may: have two samples referring to
+the same color fragment.
+The number of color fragments is determined by the pname:samples member of
+the slink:VkImageCreateInfo structure used to create the image.
+The +VK_AMD_shader_fragment_mask+ device extension provides shader
+instructions enabling the application to get direct access to the fragment
+mask and the individual color fragment values.
+
+[[vk-amd-shader-fragment-mask-diagram]]
+image::images/fragment_mask.png[align="center",title="Fragment Mask",{fullimagewidth},align="center"]
+
+endif::VK_AMD_shader_fragment_mask[]
+
+ifdef::VK_EXT_sample_locations[]
+
+[[primrast-samplelocations]]
+== Custom Sample Locations
+
+[open,refpage='VkPipelineSampleLocationsStateCreateInfoEXT',desc='Structure specifying sample locations for a pipeline',type='structs']
+--
+
+Applications can: also control the sample locations used for rasterization.
+
+If the pname:pNext chain of the slink:VkPipelineMultisampleStateCreateInfo
+structure specified at pipeline creation time includes an instance of the
+sname:VkPipelineSampleLocationsStateCreateInfoEXT structure, then that
+structure controls the sample locations used when rasterizing primitives
+with the pipeline.
+
+The sname:VkPipelineSampleLocationsStateCreateInfoEXT structure is defined
+as:
+
+include::../api/structs/VkPipelineSampleLocationsStateCreateInfoEXT.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:sampleLocationsEnable controls whether custom sample locations are
+ used.
+ If pname:sampleLocationsEnable is ename:VK_FALSE, the default sample
+ locations are used and the values specified in pname:sampleLocationsInfo
+ are ignored.
+ * pname:sampleLocationsInfo is the sample locations to use during
+ rasterization if pname:sampleLocationsEnable is ename:VK_TRUE and the
+ graphics pipeline isn't created with
+ ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT.
+
+include::../validity/structs/VkPipelineSampleLocationsStateCreateInfoEXT.txt[]
+--
+
+[open,refpage='VkSampleLocationsInfoEXT',desc='Structure specifying a set of sample locations',type='structs']
+--
+
+The sname:VkSampleLocationsInfoEXT structure is defined as:
+
+include::../api/structs/VkSampleLocationsInfoEXT.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:sampleLocationsPerPixel is a elink:VkSampleCountFlagBits
+ specifying the number of sample locations per pixel.
+ * pname:sampleLocationGridSize is the size of the sample location grid to
+ select custom sample locations for.
+ * pname:sampleLocationsCount is the number of sample locations in
+ pname:pSampleLocations.
+ * pname:pSampleLocations is an array of pname:sampleLocationsCount
+ slink:VkSampleLocationEXT structures.
+
+This structure can: be used either to specify the sample locations to be
+used for rendering or to specify the set of sample locations an image
+subresource has been last rendered with for the purposes of layout
+transitions of depth/stencil images created with
+ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT.
+
+The sample locations in pname:pSampleLocations specify
+pname:sampleLocationsPerPixel number of sample locations for each pixel in
+the grid of the size specified in pname:sampleLocationGridSize.
+The sample location for sample [eq]#i# at the pixel grid location
+[eq]#(x,y)# is taken from [eq]#pname:pSampleLocations[(x + y *
+pname:sampleLocationGridSize.width)
+* pname:sampleLocationsPerPixel + i]#.
+
+.Valid Usage
+****
+ * [[VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526]]
+ pname:sampleLocationsPerPixel must: be a bit value that is set in
+ slink:VkPhysicalDeviceSampleLocationsPropertiesEXT::pname:sampleLocationSampleCounts
+ * [[VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527]]
+ pname:sampleLocationsCount must: equal
+ [eq]#pname:sampleLocationsPerPixel * pname:sampleLocationGridSize.width
+ * pname:sampleLocationGridSize.height#
+****
+
+include::../validity/structs/VkSampleLocationsInfoEXT.txt[]
+--
+
+[open,refpage='VkSampleLocationEXT',desc='Structure specifying the coordinates of a sample location',type='structs']
+--
+
+The sname:VkSampleLocationEXT structure is defined as:
+
+include::../api/structs/VkSampleLocationEXT.txt[]
+
+ * pname:x is the horizontal coordinate of the sample's location.
+ * pname:y is the vertical coordinate of the sample's location.
+
+The domain space of the sample location coordinates has an upper-left origin
+within the pixel in framebuffer space.
+
+The values specified in a sname:VkSampleLocationEXT structure are always
+clamped to the implementation-dependent sample location coordinate range
+[eq]#[pname:sampleLocationCoordinateRange[0],pname:sampleLocationCoordinateRange[1]]#
+that can: be queried by chaining the
+slink:VkPhysicalDeviceSampleLocationsPropertiesEXT structure to the
+pname:pNext chain of slink:VkPhysicalDeviceProperties2KHR.
+
+include::../validity/structs/VkSampleLocationEXT.txt[]
+--
+
+[open,refpage='vkCmdSetSampleLocationsEXT',desc='Set the dynamic sample locations state',type='protos']
+--
+The custom sample locations used for rasterization when
+sname:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
+is ename:VK_TRUE are specified by the
+sname:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsInfo
+property of the currently bound graphics pipeline, if the pipeline was not
+created with ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT enabled.
+
+Otherwise, the sample locations used for rasterization are set by calling
+fname:vkCmdSetSampleLocationsEXT:
+
+include::../api/protos/vkCmdSetSampleLocationsEXT.txt[]
+
+ * pname:commandBuffer is the command buffer into which the command will be
+ recorded.
+ * pname:pSampleLocationsInfo is the sample locations state to set.
+
+.Valid Usage
+****
+ * [[VUID-vkCmdSetSampleLocationsEXT-None-01528]]
+ The currently bound graphics pipeline must: have been created with the
+ ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled
+ * [[VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529]]
+ The pname:sampleLocationsPerPixel member of pname:pSampleLocationsInfo
+ must: equal the pname:rasterizationSamples member of the
+ slink:VkPipelineMultisampleStateCreateInfo structure the currently bound
+ graphics pipeline has been created with
+ * [[VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530]]
+ If
+ slink:VkPhysicalDeviceSampleLocationsPropertiesEXT::pname:variableSampleLocations
+ is ename:VK_FALSE then the current render pass must: have been begun by
+ specifying a slink:VkRenderPassSampleLocationsBeginInfoEXT structure
+ whose pname:pPostSubpassSampleLocations member contains an element with
+ a pname:subpassIndex matching the current subpass index and the
+ pname:sampleLocationsInfo member of that element must: match the sample
+ locations state pointed to by pname:pSampleLocationsInfo
+****
+
+include::../validity/protos/vkCmdSetSampleLocationsEXT.txt[]
+--
+
+endif::VK_EXT_sample_locations[]
+
[[primsrast-sampleshading]]
== Sample Shading
diff --git a/doc/specs/vulkan/chapters/queries.txt b/doc/specs/vulkan/chapters/queries.txt
index 2fc43dc..acbdfaa 100644
--- a/doc/specs/vulkan/chapters/queries.txt
+++ b/doc/specs/vulkan/chapters/queries.txt
@@ -957,6 +957,16 @@ While fname:vkCmdWriteTimestamp can: be called inside or outside of a render
pass instance, flink:vkCmdCopyQueryPoolResults must: only be called outside
of a render pass instance.
+Timestamps may: only be meaningfully compared if they are written by
+commands submitted to the same queue.
+
+[NOTE]
+.Note
+====
+An example of such a comparison is determining the execution time of a
+sequence of commands.
+====
+
ifdef::VK_KHX_multiview[]
If fname:vkCmdWriteTimestamp is called while executing a render pass
diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt
index 0587001..7373c8f 100644
--- a/doc/specs/vulkan/chapters/renderpass.txt
+++ b/doc/specs/vulkan/chapters/renderpass.txt
@@ -1125,6 +1125,43 @@ visibility operations for all dependencies with a pname:dstSubpass equal to
ename:VK_SUBPASS_EXTERNAL, where pname:srcSubpass uses any aliased
attachment.
+ifdef::VK_EXT_sample_locations[]
+
+The image layout of the depth aspect of a depth/stencil attachment referring
+to an image created with
+ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT is dependent
+on the last sample locations used to render to the attachment, thus
+automatic layout transitions use the sample locations state specified in
+slink:VkRenderPassSampleLocationsBeginInfoEXT.
+
+Automatic layout transitions of an attachment referring to a depth/stencil
+image created with
+ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT use the
+sample locations the image subresource range referenced by the attachment
+was last rendered with.
+If the current render pass does not use the attachment as a depth/stencil
+attachment in any subpass that happens-before, the automatic layout
+transition uses the sample locations state specified in the
+pname:sampleLocationsInfo member of the element of the
+sname:VkRenderPassSampleLocationsBeginInfoEXT::pname:pAttachmentInitialSampleLocations
+array for which the pname:attachmentIndex member equals the attachment index
+of the attachment, if one is specified.
+Otherwise, the automatic layout transition uses the sample locations state
+specified in the pname:sampleLocationsInfo member of the element of the
+sname:VkRenderPassSampleLocationsBeginInfoEXT::pname:pPostSubpassSampleLocations
+array for which the pname:subpassIndex member equals the index of the
+subpass that last used the attachment as a depth/stencil attachment, if one
+is specified.
+
+If no sample locations state has been specified for an automatic layout
+transition performed on an attachment referring to a depth/stencil image
+created with ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
+the contents of the depth aspect of the depth/stencil attachment become
+undefined as if the layout of the attachment was transitioned from the
+ename:VK_IMAGE_LAYOUT_UNDEFINED layout.
+
+endif::VK_EXT_sample_locations[]
+
If two subpasses use the same attachment in different layouts, and both
layouts are read-only, no subpass dependency needs to be specified between
those subpasses.
@@ -1599,6 +1636,129 @@ pass.
include::../validity/structs/VkRenderPassBeginInfo.txt[]
--
+ifdef::VK_EXT_sample_locations[]
+
+[open,refpage='VkRenderPassSampleLocationsBeginInfoEXT',desc='Structure specifying sample locations to use for the layout transition of custom sample locations compatible depth/stencil attachments',type='structs']
+--
+
+The image layout of the depth aspect of a depth/stencil attachment referring
+to an image created with
+ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT is dependent
+on the last sample locations used to render to the image subresource, thus
+preserving the contents of such depth/stencil attachments across subpass
+boundaries requires the application to specify these sample locations
+whenever a layout transition of the attachment may: occur.
+This information can: be provided by chaining an instance of the
+sname:VkRenderPassSampleLocationsBeginInfoEXT structure to the pname:pNext
+chain of sname:VkRenderPassBeginInfo.
+
+The sname:VkRenderPassSampleLocationsBeginInfoEXT structure is defined as:
+
+include::../api/structs/VkRenderPassSampleLocationsBeginInfoEXT.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:attachmentInitialSampleLocationsCount is the number of elements in
+ the pname:pAttachmentInitialSampleLocations array.
+ * pname:pAttachmentInitialSampleLocations is an array of
+ pname:attachmentInitialSampleLocationsCount
+ slink:VkAttachmentSampleLocationsEXT structures specifying the
+ attachment indices and their corresponding sample location state.
+ Each element of pname:pAttachmentInitialSampleLocations can: specify the
+ sample location state to use in the automatic layout transition
+ performed to transition a depth/stencil attachment from the initial
+ layout of the attachment to the image layout specified for the
+ attachment in the first subpass using it.
+ * pname:postSubpassSampleLocationsCount is the number of elements in the
+ pname:pPostSubpassSampleLocations array.
+ * pname:pPostSubpassSampleLocations is an array of
+ pname:postSubpassSampleLocationsCount slink:VkSubpassSampleLocationsEXT
+ structures specifying the subpass indices and their corresponding sample
+ location state.
+ Each element of pname:pPostSubpassSampleLocations can: specify the
+ sample location state to use in the automatic layout transition
+ performed to transition the depth/stencil attachment used by the
+ specified subpass to the image layout specified in a dependent subpass
+ or to the final layout of the attachment in case the specified subpass
+ is the last subpass using that attachment.
+ In addition, if
+ slink:VkPhysicalDeviceSampleLocationsPropertiesEXT::pname:variableSampleLocations
+ is ename:VK_FALSE, each element of pname:pPostSubpassSampleLocations
+ must: specify the sample location state that matches the sample
+ locations used by all pipelines that will be bound to a command buffer
+ during the specified subpass.
+ If pname:variableSampleLocations is ename:VK_TRUE, the sample locations
+ used for rasterization do not depend on
+ pname:pPostSubpassSampleLocations.
+
+include::../validity/structs/VkRenderPassSampleLocationsBeginInfoEXT.txt[]
+--
+
+[open,refpage='VkAttachmentSampleLocationsEXT',desc='Structure specifying the sample locations state to use in the initial layout transition of attachments',type='structs']
+--
+
+The sname:VkAttachmentSampleLocationsEXT structure is defined as:
+
+include::../api/structs/VkAttachmentSampleLocationsEXT.txt[]
+
+ * pname:attachmentIndex is the index of the attachment for which the
+ sample locations state is provided.
+ * pname:sampleLocationsInfo is the sample locations state to use for the
+ layout transition of the given attachment from the initial layout of the
+ attachment to the image layout specified for the attachment in the first
+ subpass using it.
+
+If the image referenced by the framebuffer attachment at index
+pname:attachmentIndex was not created with
+ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT then the
+values specified in pname:sampleLocationsInfo are ignored.
+
+.Valid Usage
+****
+ * [[VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531]]
+ pname:attachmentIndex must: be less than the pname:attachmentCount
+ specified in slink:VkRenderPassCreateInfo the render pass specified by
+ slink:VkRenderPassBeginInfo::pname:renderPass was created with
+****
+
+include::../validity/structs/VkAttachmentSampleLocationsEXT.txt[]
+--
+
+[open,refpage='VkSubpassSampleLocationsEXT',desc='Structure specifying the sample locations state to use for layout transitions of attachments performed after a given subpass',type='structs']
+--
+
+The sname:VkSubpassSampleLocationsEXT structure is defined as:
+
+include::../api/structs/VkSubpassSampleLocationsEXT.txt[]
+
+ * pname:subpassIndex is the index of the subpass for which the sample
+ locations state is provided.
+ * pname:sampleLocationsInfo is the sample locations state to use for the
+ layout transition of the depth/stencil attachment away from the image
+ layout the attachment is used with in the subpass specified in
+ pname:subpassIndex.
+
+If the image referenced by the depth/stencil attachment used in the subpass
+identified by pname:subpassIndex was not created with
+ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT or if the
+subpass does not use a depth/stencil attachment, and
+slink:VkPhysicalDeviceSampleLocationsPropertiesEXT::pname:variableSampleLocations
+is ename:VK_TRUE then the values specified in pname:sampleLocationsInfo are
+ignored.
+
+.Valid Usage
+****
+ * [[VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532]]
+ pname:subpassIndex must: be less than the pname:subpassCount specified
+ in slink:VkRenderPassCreateInfo the render pass specified by
+ slink:VkRenderPassBeginInfo::pname::renderPass was created with
+****
+
+include::../validity/structs/VkSubpassSampleLocationsEXT.txt[]
+--
+
+endif::VK_EXT_sample_locations[]
+
[open,refpage='VkSubpassContents',desc='Specify how commands in the first subpass of a render pass are provided',type='enums']
--
diff --git a/doc/specs/vulkan/chapters/resources.txt b/doc/specs/vulkan/chapters/resources.txt
index cd44238..318b798 100644
--- a/doc/specs/vulkan/chapters/resources.txt
+++ b/doc/specs/vulkan/chapters/resources.txt
@@ -906,6 +906,12 @@ ifdef::VK_NV_external_memory[slink:VkExternalMemoryImageCreateInfoNV]
structure whose pname:handleTypes member is not `0`, pname:initialLayout
must: be ename:VK_IMAGE_LAYOUT_UNDEFINED
endif::VK_KHR_external_memory,VK_NV_external_memory[]
+ifdef::VK_EXT_sample_locations[]
+ * [[VUID-VkImageCreateInfo-flags-01533]]
+ If pname:flags contains
+ ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
+ pname:format must: be a depth or depth/stencil format
+endif::VK_EXT_sample_locations[]
****
include::../validity/structs/VkImageCreateInfo.txt[]
@@ -1114,6 +1120,12 @@ ifdef::VK_KHX_device_group[]
This flag also has the effect of making the image use the standard
sparse image block dimensions.
endif::VK_KHX_device_group[]
+ifdef::VK_EXT_sample_locations[]
+ * ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
+ specifies that an image with a depth or depth/stencil format can: be
+ used with custom sample locations when used as a depth/stencil
+ attachment.
+endif::VK_EXT_sample_locations[]
If any of the bits ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or
@@ -1470,6 +1482,33 @@ subresource need not be preserved).
The new layout used in a transition must: not be
ename:VK_IMAGE_LAYOUT_UNDEFINED or ename:VK_IMAGE_LAYOUT_PREINITIALIZED.
+ifdef::VK_EXT_sample_locations[]
+
+The image layout of each image subresource of a depth/stencil image created
+with ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT is
+dependent on the last sample locations used to render to the image
+subresource as a depth/stencil attachment, thus applications must: provide
+the same sample locations that were last used to render to the given image
+subresource whenever a layout transition of the image subresource happens,
+otherwise the contents of the depth aspect of the image subresource become
+undefined.
+
+In addition, depth reads from a depth/stencil attachment referring to an
+image subresource range of a depth/stencil image created with
+ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT using
+different sample locations than what have been last used to perform depth
+writes to the image subresources of the same image subresource range produce
+undefined results.
+
+Similarly, depth writes to a depth/stencil attachment referring to an image
+subresource range of a depth/stencil image created with
+ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT using
+different sample locations than what have been last used to perform depth
+writes to the image subresources of the same image subresource range make
+the contents of the depth aspect of those image subresources undefined.
+
+endif::VK_EXT_sample_locations[]
+
--
diff --git a/doc/specs/vulkan/chapters/shaders.txt b/doc/specs/vulkan/chapters/shaders.txt
index b00f11e..d755247 100644
--- a/doc/specs/vulkan/chapters/shaders.txt
+++ b/doc/specs/vulkan/chapters/shaders.txt
@@ -150,6 +150,11 @@ endif::VK_NV_glsl_shader[]
include::../validity/structs/VkShaderModuleCreateInfo.txt[]
--
+ifdef::VK_EXT_validation_cache[]
+include::VK_EXT_validation_cache/shader-module-validation-cache.txt[]
+endif::VK_EXT_validation_cache[]
+
+
[open,refpage='vkDestroyShaderModule',desc='Destroy a shader module module',type='protos']
--
@@ -672,3 +677,261 @@ of invocations generated by a single primitive (point, line, or triangle),
including any helper invocations generated by that primitive.
Derivatives are undefined for a sampled image instruction if the instruction
is in flow control that is not uniform across the derivative group.
+
+ifdef::VK_EXT_validation_cache[]
+[[shaders-validation-cache]]
+== Validation Cache
+
+[open,refpage='VkValidationCacheEXT',desc='Opaque handle to a validation cache object',type='handles']
+--
+
+Validation cache objects allow the result of internal validation to be
+reused, both within a single application run and between multiple runs.
+Reuse within a single run is achieved by passing the same validation cache
+object when creating supported Vulkan objects.
+Reuse across runs of an application is achieved by retrieving validation
+cache contents in one run of an application, saving the contents, and using
+them to preinitialize a validation cache on a subsequent run.
+The contents of the validation cache objects are managed by the validation
+layers.
+Applications can: manage the host memory consumed by a validation cache
+object and control the amount of data retrieved from a validation cache
+object.
+
+Validation cache objects are represented by sname:VkValidationCacheEXT
+handles:
+
+include::../api/handles/VkValidationCacheEXT.txt[]
+
+--
+
+[open,refpage='vkCreateValidationCacheEXT',desc='Creates a new validation cache',type='protos']
+--
+
+To create validation cache objects, call:
+
+include::../api/protos/vkCreateValidationCacheEXT.txt[]
+
+ * pname:device is the logical device that creates the validation cache
+ object.
+ * pname:pCreateInfo is a pointer to a sname:VkValidationCacheCreateInfoEXT
+ structure that contains the initial parameters for the validation cache
+ object.
+ * pname:pAllocator controls host memory allocation as described in the
+ <<memory-allocation, Memory Allocation>> chapter.
+ * pname:pValidationCache is a pointer to a sname:VkValidationCacheEXT
+ handle in which the resulting validation cache object is returned.
+
+[NOTE]
+.Note
+====
+Applications can: track and manage the total host memory size of a
+validation cache object using the pname:pAllocator.
+Applications can: limit the amount of data retrieved from a validation cache
+object in fname:vkGetValidationCacheDataEXT.
+Implementations should: not internally limit the total number of entries
+added to a validation cache object or the total host memory consumed.
+====
+
+Once created, a validation cache can: be passed to the
+fname:vkCreateShaderModule command as part of the
+sname:VkShaderModuleCreateInfo pname:pNext chain.
+If a sname:VkShaderModuleValidationCacheCreateInfoEXT object is part of the
+sname:VkShaderModuleCreateInfo::pname:pNext chain, and its
+pname:validationCache field is not dlink:VK_NULL_HANDLE, the implementation
+will query it for possible reuse opportunities and update it with new
+content.
+The use of the validation cache object in these commands is internally
+synchronized, and the same validation cache object can: be used in multiple
+threads simultaneously.
+
+[NOTE]
+.Note
+====
+Implementations should: make every effort to limit any critical sections to
+the actual accesses to the cache, which is expected to be significantly
+shorter than the duration of the fname:vkCreateShaderModule command.
+====
+
+include::../validity/protos/vkCreateValidationCacheEXT.txt[]
+--
+
+[open,refpage='VkValidationCacheCreateInfoEXT',desc='Structure specifying parameters of a newly created validation cache',type='structs']
+--
+
+The sname:VkValidationCacheCreateInfoEXT structure is defined as:
+
+include::../api/structs/VkValidationCacheCreateInfoEXT.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:flags is reserved for future use.
+ * pname:initialDataSize is the number of bytes in pname:pInitialData.
+ If pname:initialDataSize is zero, the validation cache will initially be
+ empty.
+ * pname:pInitialData is a pointer to previously retrieved validation cache
+ data.
+ If the validation cache data is incompatible (as defined below) with the
+ device, the validation cache will be initially empty.
+ If pname:initialDataSize is zero, pname:pInitialData is ignored.
+
+.Valid Usage
+****
+ * [[VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534]]
+ If pname:initialDataSize is not `0`, it must: be equal to the size of
+ pname:pInitialData, as returned by fname:vkGetValidationCacheDataEXT
+ when pname:pInitialData was originally retrieved
+ * [[VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535]]
+ If pname:initialDataSize is not `0`, pname:pInitialData must: have been
+ retrieved from a previous call to fname:vkGetValidationCacheDataEXT
+****
+
+include::../validity/structs/VkValidationCacheCreateInfoEXT.txt[]
+--
+
+[open,refpage='vkMergeValidationCachesEXT',desc='Combine the data stores of validation caches',type='protos']
+--
+
+Validation cache objects can: be merged using the command:
+
+include::../api/protos/vkMergeValidationCachesEXT.txt[]
+
+ * pname:device is the logical device that owns the validation cache
+ objects.
+ * pname:dstCache is the handle of the validation cache to merge results
+ into.
+ * pname:srcCacheCount is the length of the pname:pSrcCaches array.
+ * pname:pSrcCaches is an array of validation cache handles, which will be
+ merged into pname:dstCache.
+ The previous contents of pname:dstCache are included after the merge.
+
+[NOTE]
+.Note
+====
+The details of the merge operation are implementation dependent, but
+implementations should: merge the contents of the specified validation
+caches and prune duplicate entries.
+====
+
+.Valid Usage
+****
+ * [[VUID-vkMergeValidationCachesEXT-dstCache-01536]]
+ pname:dstCache must: not appear in the list of source caches
+****
+
+include::../validity/protos/vkMergeValidationCachesEXT.txt[]
+--
+
+[open,refpage='vkGetValidationCacheDataEXT',desc='Get the data store from a validation cache',type='protos']
+--
+
+Data can: be retrieved from a validation cache object using the command:
+
+include::../api/protos/vkGetValidationCacheDataEXT.txt[]
+
+ * pname:device is the logical device that owns the validation cache.
+ * pname:validationCache is the validation cache to retrieve data from.
+ * pname:pDataSize is a pointer to a value related to the amount of data in
+ the validation cache, as described below.
+ * pname:pData is either `NULL` or a pointer to a buffer.
+
+If pname:pData is `NULL`, then the maximum size of the data that can: be
+retrieved from the validation cache, in bytes, is returned in
+pname:pDataSize.
+Otherwise, pname:pDataSize must: point to a variable set by the user to the
+size of the buffer, in bytes, pointed to by pname:pData, and on return the
+variable is overwritten with the amount of data actually written to
+pname:pData.
+
+If pname:pDataSize is less than the maximum size that can: be retrieved by
+the validation cache, at most pname:pDataSize bytes will be written to
+pname:pData, and fname:vkGetValidationCacheDataEXT will return
+ename:VK_INCOMPLETE.
+Any data written to pname:pData is valid and can: be provided as the
+pname:pInitialData member of the sname:VkValidationCacheCreateInfoEXT
+structure passed to fname:vkCreateValidationCacheEXT.
+
+Two calls to fname:vkGetValidationCacheDataEXT with the same parameters
+must: retrieve the same data unless a command that modifies the contents of
+the cache is called between them.
+
+[[validation-cache-header]]
+Applications can: store the data retrieved from the validation cache, and
+use these data, possibly in a future run of the application, to populate new
+validation cache objects.
+The results of validation, however, may: depend on the vendor ID, device ID,
+driver version, and other details of the device.
+To enable applications to detect when previously retrieved data is
+incompatible with the device, the initial bytes written to pname:pData must:
+be a header consisting of the following members:
+
+.Layout for validation cache header version ename:VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
+[width="85%",cols="8%,21%,71%",options="header"]
+|====
+| Offset | Size | Meaning
+| 0 | 4 | length in bytes of the entire validation cache header
+ written as a stream of bytes, with the least
+ significant byte first
+| 4 | 4 | a elink:VkValidationCacheHeaderVersionEXT value
+ written as a stream of bytes, with the least
+ significant byte first
+| 8 | ename:VK_UUID_SIZE | a layer commit ID expressed as a UUID, which uniquely
+ identifies the version of the validation layers used
+ to generate these validation results
+|====
+
+The first four bytes encode the length of the entire validation cache
+header, in bytes.
+This value includes all fields in the header including the validation cache
+version field and the size of the length field.
+
+The next four bytes encode the validation cache version, as described for
+elink:VkValidationCacheHeaderVersionEXT.
+A consumer of the validation cache should: use the cache version to
+interpret the remainder of the cache header.
+
+If pname:pDataSize is less than what is necessary to store this header,
+nothing will be written to pname:pData and zero will be written to
+pname:pDataSize.
+
+include::../validity/protos/vkGetValidationCacheDataEXT.txt[]
+--
+
+[open,refpage='VkValidationCacheHeaderVersionEXT',desc='Encode validation cache version',type='enums',xrefs='vkCreateValdiationCacheEXT vkGetValidationCacheDataEXT']
+--
+Possible values of the second group of four bytes in the header returned by
+flink:vkGetValidationCacheDataEXT, encoding the validation cache version,
+are:
+
+include::../api/enums/VkValidationCacheHeaderVersionEXT.txt[]
+
+ * ename:VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT specifies version one
+ of the validation cache.
+--
+
+[open,refpage='vkDestroyValidationCacheEXT',desc='Destroy a validation cache object',type='protos']
+--
+
+To destroy a validation cache, call:
+
+include::../api/protos/vkDestroyValidationCacheEXT.txt[]
+
+ * pname:device is the logical device that destroys the validation cache
+ object.
+ * pname:validationCache is the handle of the validation cache to destroy.
+ * pname:pAllocator controls host memory allocation as described in the
+ <<memory-allocation, Memory Allocation>> chapter.
+
+.Valid Usage
+****
+ * [[VUID-vkDestroyValidationCacheEXT-validationCache-01537]]
+ If sname:VkAllocationCallbacks were provided when pname:validationCache
+ was created, a compatible set of callbacks must: be provided here
+ * [[VUID-vkDestroyValidationCacheEXT-validationCache-01538]]
+ If no sname:VkAllocationCallbacks were provided when
+ pname:validationCache was created, pname:pAllocator must: be `NULL`
+****
+
+include::../validity/protos/vkDestroyValidationCacheEXT.txt[]
+--
+endif::VK_EXT_validation_cache[]
diff --git a/doc/specs/vulkan/chapters/synchronization.txt b/doc/specs/vulkan/chapters/synchronization.txt
index 5e7855a..c5ee068 100644
--- a/doc/specs/vulkan/chapters/synchronization.txt
+++ b/doc/specs/vulkan/chapters/synchronization.txt
@@ -1611,9 +1611,6 @@ The handle types supported by pname:handleType are:
pname:handleType must: be a value included in the
<<synchronization-fence-handletypes-win32, Handle Types Supported by
VkImportFenceWin32HandleInfoKHR>> table.
- * [[VUID-VkImportFenceWin32HandleInfoKHR-handleType-01458]]
- The fence from which pname:handleType or pname:name was exported must:
- have been created on the same underlying physical device as pname:fence.
* [[VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459]]
If pname:handleType is not
ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR, pname:name
@@ -1627,6 +1624,14 @@ The handle types supported by pname:handleType are:
must: be a valid handle of the type specified by pname:handleType.
* [[VUID-VkImportFenceWin32HandleInfoKHR-handle-01462]]
If pname:handle is not `NULL`, pname:name must be `NULL`.
+ * [[VUID-VkImportFenceWin32HandleInfoKHR-handle-01539]]
+ If pname:handle is not `NULL`, it must: obey any requirements listed for
+ pname:handleType in <<external-fence-handle-types-compatibility,external
+ fence handle types compatibility>>.
+ * [[VUID-VkImportFenceWin32HandleInfoKHR-name-01540]]
+ If pname:name is not `NULL`, it must: obey any requirements listed for
+ pname:handleType in <<external-fence-handle-types-compatibility,external
+ fence handle types compatibility>>.
****
include::../validity/structs/VkImportFenceWin32HandleInfoKHR.txt[]
@@ -1697,9 +1702,10 @@ The handle types supported by pname:handleType are:
pname:handleType must: be a value included in the
<<synchronization-fence-handletypes-fd, Handle Types Supported by
VkImportFenceFdInfoKHR>> table.
- * [[VUID-VkImportFenceFdInfoKHR-handleType-01465]]
- The fence from which pname:handleType was exported must: have been
- created on the same underlying physical device as pname:fence.
+ * [[VUID-VkImportFenceFdInfoKHR-fd-01541]]
+ pname:fd must: obey any requirements listed for pname:handleType in
+ <<external-fence-handle-types-compatibility,external fence handle types
+ compatibility>>.
****
If pname:handleType is ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR,
@@ -2462,10 +2468,6 @@ The handle types supported by pname:handleType are:
pname:handleType must: be a value included in the
<<synchronization-semaphore-handletypes-win32,Handle Types Supported by
VkImportSemaphoreWin32HandleInfoKHR>> table.
- * [[VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01141]]
- The semaphore from which pname:handleType or pname:name was exported
- must: have been created on the same underlying physical device as
- pname:semaphore.
* [[VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466]]
If pname:handleType is not
ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR or
@@ -2480,6 +2482,16 @@ The handle types supported by pname:handleType are:
must: be a valid handle of the type specified by pname:handleType.
* [[VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469]]
If pname:handle is not `NULL`, pname:name must be `NULL`.
+ * [[VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542]]
+ If pname:handle is not `NULL`, it must: obey any requirements listed for
+ pname:handleType in
+ <<external-semaphore-handle-types-compatibility,external semaphore
+ handle types compatibility>>.
+ * [[VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543]]
+ If pname:name is not `NULL`, it must: obey any requirements listed for
+ pname:handleType in
+ <<external-semaphore-handle-types-compatibility,external semaphore
+ handle types compatibility>>.
****
include::../validity/structs/VkImportSemaphoreWin32HandleInfoKHR.txt[]
@@ -2554,9 +2566,10 @@ The handle types supported by pname:handleType are:
pname:handleType must: be a value included in the
<<synchronization-semaphore-handletypes-fd,Handle Types Supported by
VkImportSemaphoreFdInfoKHR>> table.
- * [[VUID-VkImportSemaphoreFdInfoKHR-handleType-01144]]
- The semaphore from which pname:handleType was exported must: have been
- created on the same underlying physical device as pname:semaphore.
+ * [[VUID-VkImportSemaphoreFdInfoKHR-fd-01544]]
+ pname:fd must: obey any requirements listed for pname:handleType in
+ <<external-semaphore-handle-types-compatibility,external semaphore
+ handle types compatibility>>.
****
include::../validity/structs/VkImportSemaphoreFdInfoKHR.txt[]
@@ -3575,6 +3588,27 @@ including those performed by <<renderpass, render passes>>.
In effect there is an implicit execution dependency from each such layout
transition to all layout transitions previously submitted to the same queue.
+ifdef::VK_EXT_sample_locations[]
+
+The image layout of each image subresource of a depth/stencil image created
+with ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT is
+dependent on the last sample locations used to render to the image
+subresource as a depth/stencil attachment, thus when the pname:image member
+of an sname:VkImageMemoryBarrier is an image created with this flag the
+application can: chain a slink:VkSampleLocationsInfoEXT structure to the
+pname:pNext chain of sname:VkImageMemoryBarrier to specify the sample
+locations to use during the image layout transition.
+
+If the sname:VkSampleLocationsInfoEXT structure in the pname:pNext chain of
+sname:VkImageMemoryBarrier does not match the sample location state last
+used to render to the image subresource range specified by
+pname:subresourceRange or if no sname:VkSampleLocationsInfoEXT structure is
+in the pname:pNext chain of sname:VkImageMemoryBarrier then the contents of
+the given image subresource range becomes undefined as if pname:oldLayout
+would equal ename:VK_IMAGE_LAYOUT_UNDEFINED.
+
+endif::VK_EXT_sample_locations[]
+
.Valid Usage
****
* [[VUID-VkImageMemoryBarrier-oldLayout-01197]]
diff --git a/doc/specs/vulkan/config/.gitignore b/doc/specs/vulkan/config/.gitignore
new file mode 100644
index 0000000..20bd068
--- /dev/null
+++ b/doc/specs/vulkan/config/.gitignore
@@ -0,0 +1,3 @@
+/extDependency.py
+/extDependency.sh
+/extDependency.stamp
diff --git a/doc/specs/vulkan/config/extDependency.py b/doc/specs/vulkan/config/extDependency.py
deleted file mode 100644
index 5b89f4d..0000000
--- a/doc/specs/vulkan/config/extDependency.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env python
-# Generated from src/spec/extDependency.py
-# Specify maps of all extensions required by an enabled extension
-
-extensions = {}
-extensions['VK_AMD_texture_gather_bias_lod'] = [ 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_EXT_acquire_xlib_display'] = [ 'VK_EXT_direct_mode_display', 'VK_KHR_display', 'VK_KHR_surface' ]
-extensions['VK_EXT_debug_marker'] = [ 'VK_EXT_debug_report' ]
-extensions['VK_EXT_direct_mode_display'] = [ 'VK_KHR_display', 'VK_KHR_surface' ]
-extensions['VK_EXT_discard_rectangles'] = [ 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_EXT_display_control'] = [ 'VK_EXT_display_surface_counter', 'VK_KHR_display', 'VK_KHR_surface', 'VK_KHR_swapchain' ]
-extensions['VK_EXT_display_surface_counter'] = [ 'VK_KHR_display', 'VK_KHR_surface' ]
-extensions['VK_EXT_sampler_filter_minmax'] = [ 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_EXT_swapchain_colorspace'] = [ 'VK_KHR_surface' ]
-extensions['VK_GOOGLE_display_timing'] = [ 'VK_KHR_surface', 'VK_KHR_swapchain' ]
-extensions['VK_KHR_16bit_storage'] = [ 'VK_KHR_get_physical_device_properties2', 'VK_KHR_storage_buffer_storage_class' ]
-extensions['VK_KHR_android_surface'] = [ 'VK_KHR_surface' ]
-extensions['VK_KHR_display'] = [ 'VK_KHR_surface' ]
-extensions['VK_KHR_display_swapchain'] = [ 'VK_KHR_display', 'VK_KHR_surface', 'VK_KHR_swapchain' ]
-extensions['VK_KHR_external_fence'] = [ 'VK_KHR_external_fence_capabilities', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_fence_capabilities'] = [ 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_fence_fd'] = [ 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_fence_win32'] = [ 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_memory'] = [ 'VK_KHR_external_memory_capabilities', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_memory_capabilities'] = [ 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_memory_fd'] = [ 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_memory_win32'] = [ 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_semaphore'] = [ 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_semaphore_capabilities'] = [ 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_semaphore_fd'] = [ 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_external_semaphore_win32'] = [ 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_get_surface_capabilities2'] = [ 'VK_KHR_surface' ]
-extensions['VK_KHR_incremental_present'] = [ 'VK_KHR_surface', 'VK_KHR_swapchain' ]
-extensions['VK_KHR_mir_surface'] = [ 'VK_KHR_surface' ]
-extensions['VK_KHR_push_descriptor'] = [ 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_shared_presentable_image'] = [ 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_surface', 'VK_KHR_swapchain' ]
-extensions['VK_KHR_swapchain'] = [ 'VK_KHR_surface' ]
-extensions['VK_KHR_variable_pointers'] = [ 'VK_KHR_get_physical_device_properties2', 'VK_KHR_storage_buffer_storage_class' ]
-extensions['VK_KHR_wayland_surface'] = [ 'VK_KHR_surface' ]
-extensions['VK_KHR_win32_keyed_mutex'] = [ 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_win32', 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_KHR_win32_surface'] = [ 'VK_KHR_surface' ]
-extensions['VK_KHR_xcb_surface'] = [ 'VK_KHR_surface' ]
-extensions['VK_KHR_xlib_surface'] = [ 'VK_KHR_surface' ]
-extensions['VK_KHX_device_group'] = [ 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHX_device_group_creation' ]
-extensions['VK_KHX_multiview'] = [ 'VK_KHR_get_physical_device_properties2' ]
-extensions['VK_MVK_ios_surface'] = [ 'VK_KHR_surface' ]
-extensions['VK_MVK_macos_surface'] = [ 'VK_KHR_surface' ]
-extensions['VK_NN_vi_surface'] = [ 'VK_KHR_surface' ]
-extensions['VK_NV_external_memory'] = [ 'VK_NV_external_memory_capabilities' ]
-extensions['VK_NV_external_memory_win32'] = [ 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities' ]
-extensions['VK_NV_win32_keyed_mutex'] = [ 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32' ]
-
-# Define lists of all / KHR / KHX extensions
-allExts = [ 'VK_AMD_draw_indirect_count', '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_rasterization_order', 'VK_AMD_shader_ballot', 'VK_AMD_shader_explicit_vertex_parameter', 'VK_AMD_shader_trinary_minmax', 'VK_AMD_texture_gather_bias_lod', 'VK_EXT_acquire_xlib_display', 'VK_EXT_blend_operation_advanced', 'VK_EXT_debug_marker', 'VK_EXT_debug_report', '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_hdr_metadata', 'VK_EXT_post_depth_coverage', 'VK_EXT_sampler_filter_minmax', '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_validation_flags', 'VK_GOOGLE_display_timing', 'VK_IMG_filter_cubic', 'VK_IMG_format_pvrtc', 'VK_KHR_16bit_storage', 'VK_KHR_android_surface', 'VK_KHR_dedicated_allocation', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_external_fence_fd', 'VK_KHR_external_fence_win32', 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_fd', 'VK_KHR_external_memory_win32', 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_external_semaphore_fd', 'VK_KHR_external_semaphore_win32', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_relaxed_block_layout', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_storage_buffer_storage_class', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_variable_pointers', 'VK_KHR_wayland_surface', 'VK_KHR_win32_keyed_mutex', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface', 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_multiview', 'VK_MVK_ios_surface', 'VK_MVK_macos_surface', 'VK_NN_vi_surface', 'VK_NVX_device_generated_commands', 'VK_NVX_multiview_per_view_attributes', 'VK_NV_clip_space_w_scaling', 'VK_NV_dedicated_allocation', 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32', 'VK_NV_fill_rectangle', 'VK_NV_fragment_coverage_to_color', 'VK_NV_framebuffer_mixed_samples', 'VK_NV_geometry_shader_passthrough', 'VK_NV_glsl_shader', 'VK_NV_sample_mask_override_coverage', 'VK_NV_viewport_array2', 'VK_NV_viewport_swizzle', 'VK_NV_win32_keyed_mutex' ]
-khrExts = [ 'VK_KHR_16bit_storage', 'VK_KHR_android_surface', 'VK_KHR_dedicated_allocation', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_external_fence_fd', 'VK_KHR_external_fence_win32', 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_fd', 'VK_KHR_external_memory_win32', 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_external_semaphore_fd', 'VK_KHR_external_semaphore_win32', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_relaxed_block_layout', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_storage_buffer_storage_class', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_variable_pointers', 'VK_KHR_wayland_surface', 'VK_KHR_win32_keyed_mutex', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface' ]
-khxExts = [ 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_multiview' ]
diff --git a/doc/specs/vulkan/config/extDependency.sh b/doc/specs/vulkan/config/extDependency.sh
deleted file mode 100644
index 2da3202..0000000
--- a/doc/specs/vulkan/config/extDependency.sh
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/bash
-# Generated from src/spec/extDependency.py
-# Specify maps of all extensions required by an enabled extension
-
-declare -A extensions
-extensions[VK_AMD_texture_gather_bias_lod]="VK_KHR_get_physical_device_properties2"
-extensions[VK_EXT_acquire_xlib_display]="VK_EXT_direct_mode_display VK_KHR_display VK_KHR_surface"
-extensions[VK_EXT_debug_marker]="VK_EXT_debug_report"
-extensions[VK_EXT_direct_mode_display]="VK_KHR_display VK_KHR_surface"
-extensions[VK_EXT_discard_rectangles]="VK_KHR_get_physical_device_properties2"
-extensions[VK_EXT_display_control]="VK_EXT_display_surface_counter VK_KHR_display VK_KHR_surface VK_KHR_swapchain"
-extensions[VK_EXT_display_surface_counter]="VK_KHR_display VK_KHR_surface"
-extensions[VK_EXT_sampler_filter_minmax]="VK_KHR_get_physical_device_properties2"
-extensions[VK_EXT_swapchain_colorspace]="VK_KHR_surface"
-extensions[VK_GOOGLE_display_timing]="VK_KHR_surface VK_KHR_swapchain"
-extensions[VK_KHR_16bit_storage]="VK_KHR_get_physical_device_properties2 VK_KHR_storage_buffer_storage_class"
-extensions[VK_KHR_android_surface]="VK_KHR_surface"
-extensions[VK_KHR_display]="VK_KHR_surface"
-extensions[VK_KHR_display_swapchain]="VK_KHR_display VK_KHR_surface VK_KHR_swapchain"
-extensions[VK_KHR_external_fence]="VK_KHR_external_fence_capabilities VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_fence_capabilities]="VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_fence_fd]="VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_fence_win32]="VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_memory]="VK_KHR_external_memory_capabilities VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_memory_capabilities]="VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_memory_fd]="VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_memory_win32]="VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_semaphore]="VK_KHR_external_semaphore_capabilities VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_semaphore_capabilities]="VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_semaphore_fd]="VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_external_semaphore_win32]="VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_get_surface_capabilities2]="VK_KHR_surface"
-extensions[VK_KHR_incremental_present]="VK_KHR_surface VK_KHR_swapchain"
-extensions[VK_KHR_mir_surface]="VK_KHR_surface"
-extensions[VK_KHR_push_descriptor]="VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_shared_presentable_image]="VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_surface VK_KHR_swapchain"
-extensions[VK_KHR_swapchain]="VK_KHR_surface"
-extensions[VK_KHR_variable_pointers]="VK_KHR_get_physical_device_properties2 VK_KHR_storage_buffer_storage_class"
-extensions[VK_KHR_wayland_surface]="VK_KHR_surface"
-extensions[VK_KHR_win32_keyed_mutex]="VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_win32 VK_KHR_get_physical_device_properties2"
-extensions[VK_KHR_win32_surface]="VK_KHR_surface"
-extensions[VK_KHR_xcb_surface]="VK_KHR_surface"
-extensions[VK_KHR_xlib_surface]="VK_KHR_surface"
-extensions[VK_KHX_device_group]="VK_KHR_surface VK_KHR_swapchain VK_KHX_device_group_creation"
-extensions[VK_KHX_multiview]="VK_KHR_get_physical_device_properties2"
-extensions[VK_MVK_ios_surface]="VK_KHR_surface"
-extensions[VK_MVK_macos_surface]="VK_KHR_surface"
-extensions[VK_NN_vi_surface]="VK_KHR_surface"
-extensions[VK_NV_external_memory]="VK_NV_external_memory_capabilities"
-extensions[VK_NV_external_memory_win32]="VK_NV_external_memory VK_NV_external_memory_capabilities"
-extensions[VK_NV_win32_keyed_mutex]="VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32"
-
-# Define lists of all / KHR / KHX extensions
-allExts="VK_AMD_draw_indirect_count 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_rasterization_order VK_AMD_shader_ballot VK_AMD_shader_explicit_vertex_parameter VK_AMD_shader_trinary_minmax VK_AMD_texture_gather_bias_lod VK_EXT_acquire_xlib_display VK_EXT_blend_operation_advanced VK_EXT_debug_marker VK_EXT_debug_report 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_hdr_metadata VK_EXT_post_depth_coverage VK_EXT_sampler_filter_minmax 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_validation_flags VK_GOOGLE_display_timing VK_IMG_filter_cubic VK_IMG_format_pvrtc VK_KHR_16bit_storage VK_KHR_android_surface VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_fence_fd VK_KHR_external_fence_win32 VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_swapchain VK_KHR_variable_pointers VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_multiview VK_MVK_ios_surface VK_MVK_macos_surface VK_NN_vi_surface VK_NVX_device_generated_commands VK_NVX_multiview_per_view_attributes VK_NV_clip_space_w_scaling VK_NV_dedicated_allocation VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32 VK_NV_fill_rectangle VK_NV_fragment_coverage_to_color VK_NV_framebuffer_mixed_samples VK_NV_geometry_shader_passthrough VK_NV_glsl_shader VK_NV_sample_mask_override_coverage VK_NV_viewport_array2 VK_NV_viewport_swizzle VK_NV_win32_keyed_mutex"
-khrExts="VK_KHR_16bit_storage VK_KHR_android_surface VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_fence_fd VK_KHR_external_fence_win32 VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_swapchain VK_KHR_variable_pointers VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface"
-khxExts="VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_multiview"
diff --git a/doc/specs/vulkan/config/extension-highlighter.rb b/doc/specs/vulkan/config/extension-highlighter.rb
new file mode 100644
index 0000000..eebabd1
--- /dev/null
+++ b/doc/specs/vulkan/config/extension-highlighter.rb
@@ -0,0 +1,20 @@
+# Copyright (c) 2016-2017 The Khronos Group Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+RUBY_ENGINE == 'opal' ? (require 'extension-highlighter/extension') : (require_relative 'extension-highlighter/extension')
+
+Extensions.register do
+ preprocessor ExtensionHighlighterPreprocessor
+ postprocessor AddHighlighterCSS
+end \ No newline at end of file
diff --git a/doc/specs/vulkan/config/extension-highlighter/extension.rb b/doc/specs/vulkan/config/extension-highlighter/extension.rb
new file mode 100644
index 0000000..5bed23f
--- /dev/null
+++ b/doc/specs/vulkan/config/extension-highlighter/extension.rb
@@ -0,0 +1,250 @@
+# Copyright (c) 2016-2017 The Khronos Group Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal'
+
+include ::Asciidoctor
+
+module Asciidoctor
+
+# Duplicate of "AnyListRx" defined by asciidoctor
+# Detects the start of any list item.
+#
+# NOTE we only have to check as far as the blank character because we know it means non-whitespace follows.
+HighlighterAnyListRx = /^(?:#{CG_BLANK}*(?:-|([*.\u2022])\1{0,4}|\d+\.|[a-zA-Z]\.|[IVXivx]+\))#{CG_BLANK}|#{CG_BLANK}*.*?(?::{2,4}|;;)(?:$|#{CG_BLANK})|<?\d+>#{CG_BLANK})/
+
+class ExtensionHighlighterPreprocessorReader < PreprocessorReader
+ def initialize document, diff_extensions, data = nil, cursor = nil
+ super(document, data, cursor)
+ @status_stack = []
+ @diff_extensions = diff_extensions
+ @tracking_target = nil
+ end
+
+ # This overrides the default preprocessor reader conditional logic such
+ # that any extensions which need highlighting and are enabled have their
+ # ifdefs left intact.
+ def preprocess_conditional_inclusion directive, target, delimiter, text
+ # If we're tracking a target for highlighting already, don't need to do
+ # additional processing unless we hit the end of that conditional
+ # section
+ # NOTE: This will break if for some absurd reason someone nests the same
+ # conditional inside itself.
+ if @tracking_target != nil && directive == 'endif' && @tracking_target == target.downcase
+ @tracking_target = nil
+ elsif @tracking_target
+ return super(directive, target, delimiter, text)
+ end
+
+ # If it's an ifdef or ifndef, push the directive onto a stack
+ # If it's an endif, pop the last one off.
+ # This is done to apply the next bit of logic to both the start and end
+ # of an conditional block correctly
+ status = directive
+ if directive == 'endif'
+ status = @status_stack.pop
+ else
+ @status_stack.push status
+ end
+
+ # If the status is negative, we need to still include the conditional
+ # text for the highlighter, so we replace the requirement for the
+ # extension attribute in question to be not defined with an
+ # always-undefined attribute, so that it evaluates to true when it needs
+ # to.
+ # Undefined attribute is currently just the extension with "_undefined"
+ # appended to it.
+ modified_target = target.downcase
+ if status == 'ifndef'
+ @diff_extensions.each do | extension |
+ modified_target.gsub!(extension, extension + '_undefined')
+ end
+ end
+
+ # Call the original preprocessor
+ result = super(directive, modified_target, delimiter, text)
+
+ # If any of the extensions are in the target, and the conditional text
+ # isn't flagged to be skipped, return false to prevent the preprocessor
+ # from removing the line from the processed source.
+ unless @skipping
+ @diff_extensions.each do | extension |
+ if target.downcase.include?(extension)
+ if directive != 'endif'
+ @tracking_target = target.downcase
+ end
+ return false
+ end
+ end
+ end
+ return result
+ end
+end
+
+class Highlighter
+ def initialize
+ @delimiter_stack = []
+ @current_anchor = 1
+ end
+
+ def highlight_marks line, previous_line, next_line
+ if !(line.start_with? 'endif')
+ # Any intact "ifdefs" are sections added by an extension, and
+ # "ifndefs" are sections removed.
+ # Currently don't track *which* extension(s) is/are responsible for
+ # the addition or removal - though it would be possible to add it.
+ if line.start_with? 'ifdef'
+ role = 'added'
+ else # if line.start_with? 'ifndef'
+ role = 'removed'
+ end
+
+ # Create an anchor with the current anchor number
+ anchor = '[[difference' + @current_anchor.to_s + ']]'
+
+ # Figure out which markup to use based on the surrounding text
+ # This is robust enough as far as I can tell, though we may want to do
+ # something more generic later since currently it relies on the fact
+ # that if you start inside a list or paragraph, you'll end in the same
+ # list or paragraph and not cross to other blocks.
+ # In practice it *might just work* but it also might not.
+ # May need to consider what to do about this in future - maybe just
+ # use open blocks for everything?
+ highlight_delimiter = :inline
+ if (HighlighterAnyListRx.match(next_line) != nil)
+ # NOTE: There's a corner case here that should never be hit (famous last words)
+ # If a line in the middle of a paragraph begins with an asterisk and
+ # then whitespace, this will think it's a list item and use the
+ # wrong delimiter.
+ # That shouldn't be a problem in practice though, it just might look
+ # a little weird.
+ highlight_delimiter = :list
+ elsif previous_line.strip.empty?
+ highlight_delimiter = :block
+ end
+
+ # Add the delimiter to the stack for the matching 'endif' to consume
+ @delimiter_stack.push highlight_delimiter
+
+ # Add an appropriate method of delimiting the highlighted areas based
+ # on the surrounding text determined above.
+ if highlight_delimiter == :block
+ return ['', anchor, ":role: #{role}", '']
+ elsif highlight_delimiter == :list
+ return ['', anchor, "[.#{role}]", '~~~~~~~~~~~~~~~~~~~~', '']
+ else #if highlight_delimiter == :inline
+ return [anchor + ' [.' + role + ']##']
+ end
+ else # if !(line.start_with? 'endif')
+ # Increment the anchor when we see a matching endif, and generate a
+ # link to the next diff section
+ @current_anchor = @current_anchor + 1
+ anchor_link = '<<difference' + @current_anchor.to_s + ', =>>>'
+
+ # Close the delimited area according to the previously determined
+ # delimiter
+ highlight_delimiter = @delimiter_stack.pop
+ if highlight_delimiter == :block
+ return [anchor_link, '', ':role:', '']
+ elsif highlight_delimiter == :list
+ return [anchor_link, '~~~~~~~~~~~~~~~~~~~~', '']
+ elsif highlight_delimiter == :inline
+ return [anchor_link + '##']
+ end
+ end
+ end
+end
+
+# Preprocessor hook to iterate over ifdefs to prevent them from affecting asciidoctor's processing.
+class ExtensionHighlighterPreprocessor < Extensions::Preprocessor
+ def process document, reader
+
+ # Only attempt to highlight extensions that are also enabled - if one
+ # isn't, warn about it and skip highlighting that extension.
+ diff_extensions = document.attributes['diff_extensions'].downcase.split(' ')
+ actual_diff_extensions = []
+ diff_extensions.each do | extension |
+ if document.attributes.has_key?(extension)
+ actual_diff_extensions << extension
+ else
+ puts 'The ' + extension + ' extension is not enabled - changes will not be highlighted.'
+ end
+ end
+
+ # Create a new reader to return, which leaves extension ifdefs that need highlighting intact beyond the preprocess step.
+ extension_preprocessor_reader = ExtensionHighlighterPreprocessorReader.new(document, actual_diff_extensions, reader.lines)
+
+ highlighter = Highlighter.new
+ new_lines = []
+
+ # Store the old lines so we can reference them in a non-trivial fashion
+ old_lines = extension_preprocessor_reader.read_lines()
+ old_lines.each_index do | index |
+
+ # Grab the previously processed line
+ # This is used by the highlighter to figure out if the highlight will
+ # be inline, or part of a block.
+ if index > 0
+ previous_line = old_lines[index - 1]
+ else
+ previous_line = ''
+ end
+
+ # Current line to process
+ line = old_lines[index]
+
+ # Grab the next line to process
+ # This is used by the highlighter to figure out if the highlight is
+ # between list elements or not - which need special handling.
+ if index < (old_lines.length - 1)
+ next_line = old_lines[index + 1]
+ else
+ next_line = ''
+ end
+
+ # Highlight any preprocessor directives that were left intact by the
+ # custom preprocessor reader.
+ if line.start_with?( 'ifdef::', 'ifndef::', 'endif::')
+ new_lines += highlighter.highlight_marks(line, previous_line, next_line)
+ else
+ new_lines << line
+ end
+ end
+
+ # Return a new reader after preprocessing - this takes care of creating
+ # the AST from the new source.
+ Reader.new(new_lines)
+ end
+end
+
+class AddHighlighterCSS < Extensions::Postprocessor
+ HighlighterStyleCSS = [
+ '.added {',
+ ' background-color: lime;',
+ ' border-color: green;',
+ ' padding:1px;',
+ '}',
+ '.removed {',
+ ' background-color: pink;',
+ ' border-color: red;',
+ ' padding:1px;',
+ '}',
+ '</style>']
+
+ def process document, output
+ output.sub! '</style>', HighlighterStyleCSS.join("\n")
+ end
+end
+
+end \ No newline at end of file
diff --git a/doc/specs/vulkan/config/makeSubmit.py b/doc/specs/vulkan/config/makeSubmit.py
index 4c159c6..7065fcd 100755
--- a/doc/specs/vulkan/config/makeSubmit.py
+++ b/doc/specs/vulkan/config/makeSubmit.py
@@ -23,10 +23,10 @@
#
# Usage: makeSubmit extension targets
-import argparse, copy, io, os, pdb, re, string, sys
+import argparse, copy, io, os, pdb, re, string, subprocess, sys
-#newpath = os.path.dirname(__file__) + '/config'
-#sys.path.append(newpath)
+# Ensure config/extDependency.py is up-to-date before we import it.
+subprocess.check_call(['make', 'config/extDependency.py'])
from extDependency import *
diff --git a/doc/specs/vulkan/config/tilde_open_block.rb b/doc/specs/vulkan/config/tilde_open_block.rb
new file mode 100644
index 0000000..c6752e5
--- /dev/null
+++ b/doc/specs/vulkan/config/tilde_open_block.rb
@@ -0,0 +1,66 @@
+require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal'
+
+include ::Asciidoctor
+
+module Asciidoctor
+
+# This addition to the parser class overrides the "is_delimited_block?"
+# method of the core parser, adding a new block delimiter of "~~~~" for open
+# blocks, which can be extended to an arbitrary number of braces to allow
+# nesting them, which is a limitation of the existing "only two dashes"
+# delimiter: https://github.com/asciidoctor/asciidoctor/issues/1121
+# The choice of tildes is based on comments in that bug.
+
+class Parser
+ # Storing the original method so we can still call it from the overriding
+ # version
+ @OLD_is_delimited_block = method(:is_delimited_block?)
+
+ # Logic here matches the original Parser#is_delimited_block? method, see
+ # there for details of base implementation.
+ def self.is_delimited_block? line, return_match_data = false
+ # Quick check for a single brace character before forwarding to the
+ # original parser method.
+ if line[0] != '~'
+ return @OLD_is_delimited_block.(line, return_match_data)
+ else
+ line_len = line.length
+ if line_len <= 4
+ tip = line
+ tl = line_len
+ else
+ tip = line[0..3]
+ tl = 4
+ end
+
+ # Hardcoded tilde delimiter, since that's the only thing this
+ # function deals with.
+ if tip == '~~~~'
+ # tip is the full line when delimiter is minimum length
+ if tl < 4 || tl == line_len
+ if return_match_data
+ context = :open
+ masq = ['comment', 'example', 'literal', 'listing', 'pass', 'quote', 'sidebar', 'source', 'verse', 'admonition', 'abstract', 'partintro'].to_set
+ BlockMatchData.new(context, masq, tip, tip)
+ else
+ true
+ end
+ elsif %(#{tip}#{tip[-1..-1] * (line_len - tl)}) == line
+ if return_match_data
+ context = :open
+ masq = ['comment', 'example', 'literal', 'listing', 'pass', 'quote', 'sidebar', 'source', 'verse', 'admonition', 'abstract', 'partintro'].to_set
+ BlockMatchData.new(context, masq, tip, line)
+ else
+ true
+ end
+ else
+ nil
+ end
+ else
+ nil
+ end
+ end
+ end
+end
+
+end \ No newline at end of file
diff --git a/doc/specs/vulkan/genRelease b/doc/specs/vulkan/genRelease
index 891e50c..8fee463 100755
--- a/doc/specs/vulkan/genRelease
+++ b/doc/specs/vulkan/genRelease
@@ -14,7 +14,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# Need to be able to find config/extDependency.sh
+# Ensure config/extDependency.py is up-to-date before we import it.
+import subprocess
+subprocess.check_call(['make', 'config/extDependency.py'])
+
+# Must alter sys.path to import config/extDependency.py.
import sys
sys.path = sys.path + [ 'config' ]
diff --git a/doc/specs/vulkan/images/fragment_mask.png b/doc/specs/vulkan/images/fragment_mask.png
new file mode 100644
index 0000000..76ac9af
--- /dev/null
+++ b/doc/specs/vulkan/images/fragment_mask.png
Binary files differ
diff --git a/doc/specs/vulkan/makeAllExts b/doc/specs/vulkan/makeAllExts
index fabf373..884a356 100755
--- a/doc/specs/vulkan/makeAllExts
+++ b/doc/specs/vulkan/makeAllExts
@@ -20,6 +20,7 @@
# Usage: makeAll targets
# Load extension list, generated from vk.xml
+make config/extDependency.sh || exit
source config/extDependency.sh
make clean_generated
diff --git a/doc/specs/vulkan/makeExt b/doc/specs/vulkan/makeExt
index 22bc78d..8a7bbaf 100755
--- a/doc/specs/vulkan/makeExt
+++ b/doc/specs/vulkan/makeExt
@@ -25,6 +25,7 @@
# Usage: makeBranch extension targets
# Load extension dependencies, generated from vk.xml
+make config/extDependency.sh || exit
source config/extDependency.sh
extension=$1
diff --git a/doc/specs/vulkan/makeKHR b/doc/specs/vulkan/makeKHR
index 98a62b8..b35cde6 100755
--- a/doc/specs/vulkan/makeKHR
+++ b/doc/specs/vulkan/makeKHR
@@ -20,6 +20,7 @@
# Usage: makeKHR targets
# Load extension list, generated from vk.xml
+make config/extDependency.sh || exit
source config/extDependency.sh
make clean_generated
diff --git a/doc/specs/vulkan/makeKHRAndKHX b/doc/specs/vulkan/makeKHRAndKHX
index da3ae2a..b544cf3 100755
--- a/doc/specs/vulkan/makeKHRAndKHX
+++ b/doc/specs/vulkan/makeKHRAndKHX
@@ -20,6 +20,7 @@
# Usage: makeKHRAndKHX targets
# Load extension list, generated from vk.xml
+make config/extDependency.sh || exit
source config/extDependency.sh
make clean_generated
diff --git a/doc/specs/vulkan/reflow.py b/doc/specs/vulkan/reflow.py
index 2e258a7..c65e7ab 100755
--- a/doc/specs/vulkan/reflow.py
+++ b/doc/specs/vulkan/reflow.py
@@ -85,7 +85,7 @@ blockPassthrough = re.compile('^(\|={3,}|[-+./]{4,})$')
# -- bullet
# . bullet
# :: bullet
-beginBullet = re.compile('^ *([*-]+|\.|::) ')
+beginBullet = re.compile('^ *([*-.]+|::) ')
# Text that (may) not end sentences
@@ -107,6 +107,8 @@ endAbbrev = re.compile('(e\.g|i\.e|c\.f)\.$', re.IGNORECASE)
# margin - margin to reflow text to.
# para - list of lines in the paragraph being accumulated. When this is
# non-empty, there is a current paragraph.
+# lastTitle - true if the previous line was a document title line (e.g.
+# :leveloffset: 0 - no attempt to track changes to this is made).
# leadIndent - indent level (in spaces) of the first line of a paragraph.
# hangIndent - indent level of the remaining lines of a paragraph.
# file - file pointer to write to.
@@ -139,6 +141,7 @@ class ReflowState:
self.vuStack = [ False ]
self.margin = margin
self.para = []
+ self.lastTitle = False
self.leadIndent = 0
self.hangIndent = 0
self.file = file
@@ -510,6 +513,9 @@ def reflowFile(filename, args):
for line in lines:
state.incrLineNumber()
+ # Is this a title line (leading '= ' followed by text)?
+ thisTitle = False
+
# The logic here is broken. If we're in a non-reflowable block and
# this line *doesn't* end the block, it should always be
# accumulated.
@@ -534,6 +540,11 @@ def reflowFile(filename, args):
# Could check see if len(para) > 0 to accumulate.
state.endParaContinue(line)
+
+ # If it's a title line, track that
+ if line[0:2] == '= ':
+ thisTitle = True
+
elif blockReflow.match(line):
# Starting or ending a block whose contents may be reflowed.
# Blocks cannot be nested.
@@ -548,12 +559,19 @@ def reflowFile(filename, args):
# These are tables, etc. Blocks cannot be nested.
state.endParaBlockPassthrough(line)
+ elif state.lastTitle:
+ # The previous line was a document title line. This line
+ # is the author / credits line and must not be reflowed.
+
+ state.endPara(line)
else:
# Just accumulate a line to the current paragraph. Watch out for
# hanging indents / bullet-points and track that indent level.
state.addLine(line)
+ state.lastTitle = thisTitle
+
# Cleanup at end of file
state.endPara(None)
@@ -580,7 +598,7 @@ global vuPat
vuPat = re.compile('^(?P<head> [*]+)( *)(?P<tail>.*)', re.DOTALL)
# The value to start tagging VU statements at, unless overridden by -nextvu
-startVUID = 1512
+startVUID = 1545
if __name__ == '__main__':
parser = argparse.ArgumentParser()
diff --git a/doc/specs/vulkan/registry.txt b/doc/specs/vulkan/registry.txt
index 0d138ba..f6258d9 100644
--- a/doc/specs/vulkan/registry.txt
+++ b/doc/specs/vulkan/registry.txt
@@ -428,7 +428,7 @@ member.
indirection): another member of that struct; `"null-terminated"` for
a string; `"1"` to indicate it is just a pointer (used for nested
pointers); or an equation (a LaTeX math expression delimited by
- `latexmath:[$` and `$]`.
+ `latexmath:[` and `]`.
* attr:externsync - denotes that the member should be externally
synchronized when accessed by Vulkan
* attr:optional - a value of `"true"` or `"false"` determines whether this
@@ -796,8 +796,8 @@ members.
following things, separated by commas (one for each array
indirection): another param of that command; `"null-terminated"` for
a string; `"1"` to indicate it is just a pointer (used for nested
- pointers); or an equation (a simple expression prefixed with
- `"math:"`)
+ pointers); or an equation (a LaTeX math expression delimited by
+ `latexmath:[` and `]`.
* attr:optional - a value of `"true"` or `"false"` determines whether this
member can be omitted by providing `NULL` (for pointers),
`VK_NULL_HANDLE` (for handles), 0 (for bitmasks), or 0 for values
@@ -974,8 +974,8 @@ be implemented against.
individual name together with email address, Github username, or
other contact information. If not present, this can be taken from
the corresponding tag:tag attribute just like attr:author.
- * attr:type - optional. Must be either `'device'` or `'instance'`, if
- present.
+ * attr:type - required if the attr:supported attribute is not
+ `'disabled'`. Must be either `'device'` or `'instance'`, if present.
* attr:requires - optional. Comma-separated list of extension names this
extension requires to be supported.
* attr:protect - optional. An additional preprocessor token used to
@@ -985,9 +985,23 @@ be implemented against.
file to be defined first.
* attr:supported - required. A regular expression with an implicit `^` and
`$` bracketing it, which should match the attr:api tag of a set of
- tag:feature tags.
+ tag:feature tags. When the extension tag is just reserving an extension
+ number, and no interfaces are yet defined, use `supported="disabled"` to
+ indicate this extension should never be processed.
* attr:comment - optional. Arbitrary string (unused).
+[NOTE]
+.Note
+====
+The attr:requires attribute is used to specify other extensions that *must*
+be enabled for an extension to be enabled.
+
+In some cases, an extension may include functionality which is only defined
+*if* another extension is enabled. Such functionality should be specified
+within a tag:require, using the attr:extension attribute to specify that
+extension.
+====
+
== Contents of tag:extension tags
Zero or more <<tag-required,tag:require and tag:remove tags>>, in arbitrary
@@ -1067,6 +1081,9 @@ the contents of tag:require and tag:remove tags are identical.
in the tag are only required (or removed) if the specified profile
is being generated. If not specified, interfaces are required (or
removed) for all API profiles.
+ * attr:extension - optional. String containing an API extension name.
+ Interfaces in the tag are only required (or removed) if the specified
+ extension is enabled.
* attr:comment - optional. Arbitrary string (unused).
* attr:api - optional. An <<schema:apiname,API name>>.
Interfaces in the tag are only required (or removed) if the
@@ -1080,6 +1097,14 @@ The attr:api attribute is only supported inside tag:extension tags,
since tag:feature tags already define a specific API.
====
+[NOTE]
+.Note
+====
+The attr:extension attribute currently does not affect output generators in
+any way, and is simply metadata. This will be addressed as we better define
+different types of dependencies between extensions.
+====
+
== Contents of tag:require and tag:remove tags
Zero or more of the following tags, in any order:
@@ -1682,7 +1707,7 @@ The individual tag:enum tags define the enumerants, just like the
definition for compile time constants described above. In this case, because
the enumerants are bits in a bitmask, their values are specified using the
attr:bitpos attribute. The value of this attribute must be an integer in
-the range $[0,31]$ specifying a single bit number, and the resulting value
+the range [0,31] specifying a single bit number, and the resulting value
is printed as a hexadecimal constant corresponding to that bit.
It is also possible to specify enumerant values using the attr:value
@@ -1815,14 +1840,18 @@ files and Python scripts are logged in Github history.
[[changelog]]
= Change Log
- * 2017-07-27 - finish removing validextensionstructs attribute and
+ * 2017-09-01 - Define syntax of parameter attr:len attributes consistently
+ and correctly for current uses of latexmath:
+ * 2017-08-24 - Note that the tag:extension attribute attr:type must be
+ specified if the extension is not disabled.
+ * 2017-07-27 - Finish removing validextensionstructs attribute and
replacing it with structextends.
- * 2017-07-14 - add comment attributes or tags as valid content in several
+ * 2017-07-14 - Add comment attributes or tags as valid content in several
places, replacing XML comments which could not be preserved by XML
transformation tools.
- * 2017-02-20 - change to asciidoctor markup and move into the
+ * 2017-02-20 - Change to asciidoctor markup and move into the
specification source directory for ease of building.
- * 2016-09-27 - remove tag:validity and tag:usage tags, since these
+ * 2016-09-27 - Remove tag:validity and tag:usage tags, since these
explicit usage statements have been moved to the specification source.
* 2016-08-26 - Update for the single-branch model.
* 2016-07-28 - Add attr:type and attr:requires attributes to tag:extension
diff --git a/doc/specs/vulkan/style/extensions.txt b/doc/specs/vulkan/style/extensions.txt
index 92b7e0f..db47cd4 100644
--- a/doc/specs/vulkan/style/extensions.txt
+++ b/doc/specs/vulkan/style/extensions.txt
@@ -420,14 +420,32 @@ Some aspects of the changes for this example extension are described below.
The KHR extensions were used to help prototype what changes need to be made
for extensions, which include (but may not be limited to) the following:
- * All extensions should add an appendix to the Vulkan specification.
- This can be modeled after what was done for the `VK_KHR_surface`
- extension in `doc/specs/vulkan/appendices/VK_KHR_surface.txt`, which
+ * All extensions must add an appendix to the Vulkan specification.
+ The appendix should be modeled after the `VK_KHR_shader_draw_parameters`
+ extension in
+ `doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt`, which
contains metainformation about the extension (as well as code examples,
and revision history).
- This example is more complicated because `VK_KHR_surface` is a base
- extension on which many window system-specific extensions are layered.
+ This example is complicated because `VK_KHR_shader_draw_parameters` has
+ a variety of external dependencies and interactions.
The `VK_EXT_debug_marker` extension is a simpler, standalone example.
+ * In the preamble to the appendix, start with an asciidoc `include` of the
+ automatically generated meta information.
+ This information includes the extension name string, type, number,
+ revision, and contact information from +vk.xml+.
+ * Following the `include`, add as many of the following sections as are
+ meaningful:
+ ** *Status* - *Complete*, *Draft*, or other.
+ Normally only *Complete* extensions should be published.
+ ** *Last Modified Date* - if wanted, although git log queries can provide
+ equivalent information.
+ ** *IP Status* - Such as *No known IP claims*.
+ ** *Interactions and External Dependencies* - may include requirements or
+ interactions with optional Vulkan features, SPIR-V (+SPV+) and OpenGL
+ extensions, and interactions (other than strictly requiring) with other
+ Vulkan extensions.
+ ** *Contributors* - Names and corporate affiliations of people who have
+ made significant direct contributions to this extension.
* Each extension's appendix file is included by adding an `include`
statement to the `doc/specs/vulkan/appendices/extensions.txt` file.
The `include` statement must be protected by appropriate asciidoc
diff --git a/src/ext_loader/vulkan_ext.c b/src/ext_loader/vulkan_ext.c
index 97f8e9f..bf77a93 100644
--- a/src/ext_loader/vulkan_ext.c
+++ b/src/ext_loader/vulkan_ext.c
@@ -1213,6 +1213,27 @@ void vkCmdSetDeviceMaskKHX(
);
}
+static PFN_vkCmdDispatchBaseKHX pfn_vkCmdDispatchBaseKHX;
+void vkCmdDispatchBaseKHX(
+ VkCommandBuffer commandBuffer,
+ uint32_t baseGroupX,
+ uint32_t baseGroupY,
+ uint32_t baseGroupZ,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ)
+{
+ pfn_vkCmdDispatchBaseKHX(
+ commandBuffer,
+ baseGroupX,
+ baseGroupY,
+ baseGroupZ,
+ groupCountX,
+ groupCountY,
+ groupCountZ
+ );
+}
+
static PFN_vkGetDeviceGroupPresentCapabilitiesKHX pfn_vkGetDeviceGroupPresentCapabilitiesKHX;
VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
VkDevice device,
@@ -1237,40 +1258,6 @@ VkResult vkGetDeviceGroupSurfacePresentModesKHX(
);
}
-static PFN_vkAcquireNextImage2KHX pfn_vkAcquireNextImage2KHX;
-VkResult vkAcquireNextImage2KHX(
- VkDevice device,
- const VkAcquireNextImageInfoKHX* pAcquireInfo,
- uint32_t* pImageIndex)
-{
- return pfn_vkAcquireNextImage2KHX(
- device,
- pAcquireInfo,
- pImageIndex
- );
-}
-
-static PFN_vkCmdDispatchBaseKHX pfn_vkCmdDispatchBaseKHX;
-void vkCmdDispatchBaseKHX(
- VkCommandBuffer commandBuffer,
- uint32_t baseGroupX,
- uint32_t baseGroupY,
- uint32_t baseGroupZ,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ)
-{
- pfn_vkCmdDispatchBaseKHX(
- commandBuffer,
- baseGroupX,
- baseGroupY,
- baseGroupZ,
- groupCountX,
- groupCountY,
- groupCountZ
- );
-}
-
static PFN_vkGetPhysicalDevicePresentRectanglesKHX pfn_vkGetPhysicalDevicePresentRectanglesKHX;
VkResult vkGetPhysicalDevicePresentRectanglesKHX(
VkPhysicalDevice physicalDevice,
@@ -1286,6 +1273,19 @@ VkResult vkGetPhysicalDevicePresentRectanglesKHX(
);
}
+static PFN_vkAcquireNextImage2KHX pfn_vkAcquireNextImage2KHX;
+VkResult vkAcquireNextImage2KHX(
+ VkDevice device,
+ const VkAcquireNextImageInfoKHX* pAcquireInfo,
+ uint32_t* pImageIndex)
+{
+ return pfn_vkAcquireNextImage2KHX(
+ device,
+ pAcquireInfo,
+ pImageIndex
+ );
+}
+
#endif /* VK_KHX_device_group */
#ifdef VK_NN_vi_surface
#ifdef VK_USE_PLATFORM_VI_NN
@@ -1689,6 +1689,92 @@ VkResult vkCreateMacOSSurfaceMVK(
#endif /* VK_USE_PLATFORM_MACOS_MVK */
#endif /* VK_MVK_macos_surface */
+#ifdef VK_EXT_sample_locations
+static PFN_vkCmdSetSampleLocationsEXT pfn_vkCmdSetSampleLocationsEXT;
+void vkCmdSetSampleLocationsEXT(
+ VkCommandBuffer commandBuffer,
+ const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
+{
+ pfn_vkCmdSetSampleLocationsEXT(
+ commandBuffer,
+ pSampleLocationsInfo
+ );
+}
+
+static PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT;
+void vkGetPhysicalDeviceMultisamplePropertiesEXT(
+ VkPhysicalDevice physicalDevice,
+ VkSampleCountFlagBits samples,
+ VkMultisamplePropertiesEXT* pMultisampleProperties)
+{
+ pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT(
+ physicalDevice,
+ samples,
+ pMultisampleProperties
+ );
+}
+
+#endif /* VK_EXT_sample_locations */
+#ifdef VK_EXT_validation_cache
+static PFN_vkCreateValidationCacheEXT pfn_vkCreateValidationCacheEXT;
+VkResult vkCreateValidationCacheEXT(
+ VkDevice device,
+ const VkValidationCacheCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkValidationCacheEXT* pValidationCache)
+{
+ return pfn_vkCreateValidationCacheEXT(
+ device,
+ pCreateInfo,
+ pAllocator,
+ pValidationCache
+ );
+}
+
+static PFN_vkDestroyValidationCacheEXT pfn_vkDestroyValidationCacheEXT;
+void vkDestroyValidationCacheEXT(
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ const VkAllocationCallbacks* pAllocator)
+{
+ pfn_vkDestroyValidationCacheEXT(
+ device,
+ validationCache,
+ pAllocator
+ );
+}
+
+static PFN_vkMergeValidationCachesEXT pfn_vkMergeValidationCachesEXT;
+VkResult vkMergeValidationCachesEXT(
+ VkDevice device,
+ VkValidationCacheEXT dstCache,
+ uint32_t srcCacheCount,
+ const VkValidationCacheEXT* pSrcCaches)
+{
+ return pfn_vkMergeValidationCachesEXT(
+ device,
+ dstCache,
+ srcCacheCount,
+ pSrcCaches
+ );
+}
+
+static PFN_vkGetValidationCacheDataEXT pfn_vkGetValidationCacheDataEXT;
+VkResult vkGetValidationCacheDataEXT(
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ size_t* pDataSize,
+ void* pData)
+{
+ return pfn_vkGetValidationCacheDataEXT(
+ device,
+ validationCache,
+ pDataSize,
+ pData
+ );
+}
+
+#endif /* VK_EXT_validation_cache */
void vkExtInitInstance(VkInstance instance)
{
@@ -1854,11 +1940,11 @@ void vkExtInitInstance(VkInstance instance)
pfn_vkBindBufferMemory2KHX = (PFN_vkBindBufferMemory2KHX)vkGetInstanceProcAddr(instance, "vkBindBufferMemory2KHX");
pfn_vkBindImageMemory2KHX = (PFN_vkBindImageMemory2KHX)vkGetInstanceProcAddr(instance, "vkBindImageMemory2KHX");
pfn_vkCmdSetDeviceMaskKHX = (PFN_vkCmdSetDeviceMaskKHX)vkGetInstanceProcAddr(instance, "vkCmdSetDeviceMaskKHX");
+ pfn_vkCmdDispatchBaseKHX = (PFN_vkCmdDispatchBaseKHX)vkGetInstanceProcAddr(instance, "vkCmdDispatchBaseKHX");
pfn_vkGetDeviceGroupPresentCapabilitiesKHX = (PFN_vkGetDeviceGroupPresentCapabilitiesKHX)vkGetInstanceProcAddr(instance, "vkGetDeviceGroupPresentCapabilitiesKHX");
pfn_vkGetDeviceGroupSurfacePresentModesKHX = (PFN_vkGetDeviceGroupSurfacePresentModesKHX)vkGetInstanceProcAddr(instance, "vkGetDeviceGroupSurfacePresentModesKHX");
- pfn_vkAcquireNextImage2KHX = (PFN_vkAcquireNextImage2KHX)vkGetInstanceProcAddr(instance, "vkAcquireNextImage2KHX");
- pfn_vkCmdDispatchBaseKHX = (PFN_vkCmdDispatchBaseKHX)vkGetInstanceProcAddr(instance, "vkCmdDispatchBaseKHX");
pfn_vkGetPhysicalDevicePresentRectanglesKHX = (PFN_vkGetPhysicalDevicePresentRectanglesKHX)vkGetInstanceProcAddr(instance, "vkGetPhysicalDevicePresentRectanglesKHX");
+ pfn_vkAcquireNextImage2KHX = (PFN_vkAcquireNextImage2KHX)vkGetInstanceProcAddr(instance, "vkAcquireNextImage2KHX");
#endif /* VK_KHX_device_group */
#ifdef VK_NN_vi_surface
#ifndef VK_NN_vi_surface
@@ -1920,6 +2006,16 @@ void vkExtInitInstance(VkInstance instance)
pfn_vkCreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)vkGetInstanceProcAddr(instance, "vkCreateMacOSSurfaceMVK");
#endif /* VK_USE_PLATFORM_MACOS_MVK */
#endif /* VK_MVK_macos_surface */
+#ifdef VK_EXT_sample_locations
+ pfn_vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)vkGetInstanceProcAddr(instance, "vkCmdSetSampleLocationsEXT");
+ pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT");
+#endif /* VK_EXT_sample_locations */
+#ifdef VK_EXT_validation_cache
+ pfn_vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)vkGetInstanceProcAddr(instance, "vkCreateValidationCacheEXT");
+ pfn_vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)vkGetInstanceProcAddr(instance, "vkDestroyValidationCacheEXT");
+ pfn_vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)vkGetInstanceProcAddr(instance, "vkMergeValidationCachesEXT");
+ pfn_vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)vkGetInstanceProcAddr(instance, "vkGetValidationCacheDataEXT");
+#endif /* VK_EXT_validation_cache */
}
void vkExtInitDevice(VkDevice device)
@@ -2086,11 +2182,11 @@ void vkExtInitDevice(VkDevice device)
pfn_vkBindBufferMemory2KHX = (PFN_vkBindBufferMemory2KHX)vkGetDeviceProcAddr(device, "vkBindBufferMemory2KHX");
pfn_vkBindImageMemory2KHX = (PFN_vkBindImageMemory2KHX)vkGetDeviceProcAddr(device, "vkBindImageMemory2KHX");
pfn_vkCmdSetDeviceMaskKHX = (PFN_vkCmdSetDeviceMaskKHX)vkGetDeviceProcAddr(device, "vkCmdSetDeviceMaskKHX");
+ pfn_vkCmdDispatchBaseKHX = (PFN_vkCmdDispatchBaseKHX)vkGetDeviceProcAddr(device, "vkCmdDispatchBaseKHX");
pfn_vkGetDeviceGroupPresentCapabilitiesKHX = (PFN_vkGetDeviceGroupPresentCapabilitiesKHX)vkGetDeviceProcAddr(device, "vkGetDeviceGroupPresentCapabilitiesKHX");
pfn_vkGetDeviceGroupSurfacePresentModesKHX = (PFN_vkGetDeviceGroupSurfacePresentModesKHX)vkGetDeviceProcAddr(device, "vkGetDeviceGroupSurfacePresentModesKHX");
- pfn_vkAcquireNextImage2KHX = (PFN_vkAcquireNextImage2KHX)vkGetDeviceProcAddr(device, "vkAcquireNextImage2KHX");
- pfn_vkCmdDispatchBaseKHX = (PFN_vkCmdDispatchBaseKHX)vkGetDeviceProcAddr(device, "vkCmdDispatchBaseKHX");
pfn_vkGetPhysicalDevicePresentRectanglesKHX = (PFN_vkGetPhysicalDevicePresentRectanglesKHX)vkGetDeviceProcAddr(device, "vkGetPhysicalDevicePresentRectanglesKHX");
+ pfn_vkAcquireNextImage2KHX = (PFN_vkAcquireNextImage2KHX)vkGetDeviceProcAddr(device, "vkAcquireNextImage2KHX");
#endif /* VK_KHX_device_group */
#ifdef VK_NN_vi_surface
#ifndef VK_NN_vi_surface
@@ -2152,5 +2248,15 @@ void vkExtInitDevice(VkDevice device)
pfn_vkCreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)vkGetDeviceProcAddr(device, "vkCreateMacOSSurfaceMVK");
#endif /* VK_USE_PLATFORM_MACOS_MVK */
#endif /* VK_MVK_macos_surface */
+#ifdef VK_EXT_sample_locations
+ pfn_vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)vkGetDeviceProcAddr(device, "vkCmdSetSampleLocationsEXT");
+ pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)vkGetDeviceProcAddr(device, "vkGetPhysicalDeviceMultisamplePropertiesEXT");
+#endif /* VK_EXT_sample_locations */
+#ifdef VK_EXT_validation_cache
+ pfn_vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)vkGetDeviceProcAddr(device, "vkCreateValidationCacheEXT");
+ pfn_vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)vkGetDeviceProcAddr(device, "vkDestroyValidationCacheEXT");
+ pfn_vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)vkGetDeviceProcAddr(device, "vkMergeValidationCachesEXT");
+ pfn_vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)vkGetDeviceProcAddr(device, "vkGetValidationCacheDataEXT");
+#endif /* VK_EXT_validation_cache */
}
diff --git a/src/spec/extDependency.py b/src/spec/extDependency.py
index 3bf43c0..cf24fec 100755
--- a/src/spec/extDependency.py
+++ b/src/spec/extDependency.py
@@ -17,8 +17,7 @@
# extDependency - generate a mapping of extension name -> all required
# extension names for that extension.
#
-# This is run only rarely, when adding a new extension, and updates
-# doc/specs/vulkan/config/extDependency.sh from the spec Makefile.
+# This updates doc/specs/vulkan/config/extDependency.sh from the spec Makefile.
# It also defines lists of KHR/KHX extensions and all extensions for use in
# make frontend scripts in doc/specs/vulkan.
diff --git a/src/spec/extensionmetadocgenerator.py b/src/spec/extensionmetadocgenerator.py
new file mode 100644
index 0000000..bc0190d
--- /dev/null
+++ b/src/spec/extensionmetadocgenerator.py
@@ -0,0 +1,181 @@
+#!/usr/bin/python3 -i
+#
+# Copyright (c) 2013-2017 The Khronos Group Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os,re,sys
+from generator import *
+
+# ExtensionMetaDocGeneratorOptions - subclass of GeneratorOptions.
+class ExtensionMetaDocGeneratorOptions(GeneratorOptions):
+ """Represents options during extension metainformation generation for Asciidoc"""
+ def __init__(self,
+ filename = None,
+ directory = '.',
+ apiname = None,
+ profile = None,
+ versions = '.*',
+ emitversions = '.*',
+ defaultExtensions = None,
+ addExtensions = None,
+ removeExtensions = None,
+ sortProcedure = regSortFeatures):
+ GeneratorOptions.__init__(self, filename, directory, apiname, profile,
+ versions, emitversions, defaultExtensions,
+ addExtensions, removeExtensions, sortProcedure)
+
+# ExtensionMetaDocOutputGenerator - subclass of OutputGenerator.
+# Generates AsciiDoc includes with metainformation for the Vulkan extension
+# appendices. The fields used from <extension> tags in vk.xml are:
+#
+# name extension name string
+# number extension number (optional)
+# type 'instance' | 'device' (optional)
+# requires list of comma-separate requires Vulkan extensions (optional)
+# contact name and github login or email address (optional)
+#
+# ---- methods ----
+# ExtensionMetaDocOutputGenerator(errFile, warnFile, diagFile) - args as for
+# OutputGenerator. Defines additional internal state.
+# ---- methods overriding base class ----
+# beginFile(genOpts)
+# endFile()
+# beginFeature(interface, emit)
+# endFeature()
+class ExtensionMetaDocOutputGenerator(OutputGenerator):
+ """Generate specified API interfaces in a specific style, such as a C header"""
+ def __init__(self,
+ errFile = sys.stderr,
+ warnFile = sys.stderr,
+ diagFile = sys.stdout):
+ OutputGenerator.__init__(self, errFile, warnFile, diagFile)
+ #
+ def beginFile(self, genOpts):
+ OutputGenerator.beginFile(self, genOpts)
+ def endFile(self):
+ OutputGenerator.endFile(self)
+ def beginFeature(self, interface, emit):
+ # Start processing in superclass
+ OutputGenerator.beginFeature(self, interface, emit)
+
+ # These attributes must exist
+ name = interface.get('name')
+
+ if interface.tag != 'extension':
+ self.logMsg('diag',
+ 'beginFeature: ignoring non-extension feature',
+ name)
+ return
+
+ # These attributes are optional
+ number = self.getAttrib(interface, 'number', 'UNKNOWN')
+ type = self.getAttrib(interface, 'type', None)
+ requires = self.getAttrib(interface, 'requires', None)
+ contact = self.getAttrib(interface, 'contact', 'UNKNOWN')
+ revision = self.getSpecVersion(interface, name, 'UNKNOWN')
+
+ # Create subdirectory, if needed
+ directory = self.genOpts.directory
+ self.makeDir(directory)
+
+ # Create file
+ filename = directory + '/' + name + '.txt'
+ self.logMsg('diag', '# Generating include file:', filename)
+ fp = open(filename, 'w', encoding='utf-8')
+
+ # Asciidoc anchor
+ write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp)
+ write('[[' + name + ']]', file=fp)
+ write('== ' + name, file=fp)
+ write('', file=fp)
+
+ write('*Name String*::', file=fp)
+ write(' `' + name + '`', file=fp)
+
+ write('*Extension Type*::', file=fp)
+ if type == 'instance':
+ write(' Instance extension', file=fp)
+ elif type == 'device':
+ write(' Device extension', file=fp)
+ elif type != None:
+ write(' UNRECOGNIZED extension type: ' + type, file=fp)
+ else:
+ self.logMsg('warn',
+ 'ExtensionMetaInformation::beginFeature:',
+ 'required type attribute missing for extension',
+ name)
+ write(' UNKNOWN extension type (*this should never happen*)', file=fp)
+
+ write('*Registered Extension Number*::', file=fp)
+ write(' ' + number, file=fp)
+
+ write('*Revision*::', file=fp)
+ write(' ' + revision, file=fp)
+
+ # @@ Need to determine *Revision*:: number from enum attributes
+
+ # Only Vulkan extension dependencies are coded in XML, others are explicit
+ write('*Extension and Version Dependencies*::', file=fp)
+ write(' - Requires Vulkan 1.0', file=fp)
+ if requires != None:
+ for dep in requires.split(','):
+ write(' - Requires <<' + dep + ',`' + dep + '`>>', file=fp)
+
+ write('*Contact*::', file=fp)
+ write(' - ' + contact, file=fp)
+
+ fp.close()
+ def endFeature(self):
+ # Finish processing in superclass
+ OutputGenerator.endFeature(self)
+ #
+ # Query an attribute from an element, or return a default value
+ # elem - element to query
+ # attribute - attribute name
+ # default - default value if attribute not present
+ def getAttrib(self, elem, attribute, default=None):
+ if attribute in elem.keys():
+ return elem.get(attribute)
+ else:
+ return default
+ #
+ # Determine the extension revision from the EXTENSION_NAME_SPEC_VERSION
+ # enumerant.
+ #
+ # elem - <extension> element to query
+ # extname - extension name from the <extension> 'name' attribute
+ # default - default value if SPEC_VERSION token not present
+ def getSpecVersion(self, elem, extname, default=None):
+ # The literal enumerant name to match
+ enumName = extname.upper() + '_SPEC_VERSION'
+ # A possible revision number if no literal match is found
+ specVersion = 'UNKNOWN'
+
+ for enum in elem.findall('.//enum'):
+ thisName = enum.get('name')
+ thisValue = self.getAttrib(enum, 'value', 'UNKNOWN')
+ if thisName == enumName:
+ # Exact match
+ specVersion = thisValue
+ break
+ elif thisName[-13:] == '_SPEC_VERSION':
+ self.logMsg('diag',
+ 'Potential name mismatch between extension',
+ extname, 'and version token', thisName)
+ specVersion = thisValue
+ # Otherwise, ignore the enum
+
+ if specVersion == 'UNKNOWN':
+ print('UNKNOWN SPEC_VERSION for', extname)
+ return specVersion
diff --git a/src/spec/genvk.py b/src/spec/genvk.py
index bd13d00..7fb6720 100755
--- a/src/spec/genvk.py
+++ b/src/spec/genvk.py
@@ -19,6 +19,7 @@ from reg import *
from generator import write
from cgenerator import CGeneratorOptions, COutputGenerator
from docgenerator import DocGeneratorOptions, DocOutputGenerator
+from extensionmetadocgenerator import ExtensionMetaDocGeneratorOptions, ExtensionMetaDocOutputGenerator
from pygenerator import PyOutputGenerator
from validitygenerator import ValidityOutputGenerator
from hostsyncgenerator import HostSynchronizationOutputGenerator
@@ -95,7 +96,7 @@ def makeGenOpts(extensions = [], removeExtensions = [], protect = True, director
protectFeature = protect
protectProto = protect
- # Vulkan 1.0 - header for core API + extensions.
+ # Header for core API + extensions.
# To generate just the core API,
# change to 'defaultExtensions = None' below.
genOpts['vulkan.h'] = [
@@ -122,7 +123,7 @@ def makeGenOpts(extensions = [], removeExtensions = [], protect = True, director
alignFuncParam = 48)
]
- # Vulkan 1.0 draft - API include files for spec and ref pages
+ # API include files for spec and ref pages
# Overwrites include subdirectories in spec source tree
# The generated include files do not include the calling convention
# macros (apientry etc.), unlike the header files.
@@ -149,7 +150,7 @@ def makeGenOpts(extensions = [], removeExtensions = [], protect = True, director
expandEnumerants = False)
]
- # Vulkan 1.0 draft - API names to validate man/api spec includes & links
+ # API names to validate man/api spec includes & links
genOpts['vkapi.py'] = [
PyOutputGenerator,
DocGeneratorOptions(
@@ -164,7 +165,7 @@ def makeGenOpts(extensions = [], removeExtensions = [], protect = True, director
removeExtensions = removeExtensions)
]
- # Vulkan 1.0 draft - core API validity files for spec
+ # API validity files for spec
genOpts['validinc'] = [
ValidityOutputGenerator,
DocGeneratorOptions(
@@ -179,7 +180,7 @@ def makeGenOpts(extensions = [], removeExtensions = [], protect = True, director
removeExtensions = removeExtensions)
]
- # Vulkan 1.0 draft - core API host sync table files for spec
+ # API host sync table files for spec
genOpts['hostsyncinc'] = [
HostSynchronizationOutputGenerator,
DocGeneratorOptions(
@@ -194,6 +195,7 @@ def makeGenOpts(extensions = [], removeExtensions = [], protect = True, director
removeExtensions = removeExtensions)
]
+ # Extension stub source dispatcher
genOpts['vulkan_ext.c'] = [
ExtensionStubSourceOutputGenerator,
CGeneratorOptions(
@@ -210,6 +212,20 @@ def makeGenOpts(extensions = [], removeExtensions = [], protect = True, director
alignFuncParam = 48)
]
+ # Extension metainformation for spec extension appendices
+ genOpts['extinc'] = [
+ ExtensionMetaDocOutputGenerator,
+ ExtensionMetaDocGeneratorOptions(
+ filename = 'timeMarker',
+ directory = directory,
+ apiname = 'vulkan',
+ profile = None,
+ versions = allVersions,
+ emitversions = None,
+ defaultExtensions = 'vulkan',
+ addExtensions = None,
+ removeExtensions = None)
+ ]
# Generate a target based on the options in the matching genOpts{} object.
# This is encapsulated in a function so it can be profiled and/or timed.
diff --git a/src/spec/registry.rnc b/src/spec/registry.rnc
index 79ca8d2..7dc5a79 100644
--- a/src/spec/registry.rnc
+++ b/src/spec/registry.rnc
@@ -334,6 +334,7 @@ Feature = element feature {
(
element require {
ProfileName ? ,
+ ExtensionName ? ,
Comment ? ,
(
InterfaceElement |
@@ -389,6 +390,7 @@ Extension = element extension {
element require {
attribute api { text } ? ,
ProfileName ? ,
+ ExtensionName ? ,
Comment ? ,
InterfaceElement *
} |
@@ -424,9 +426,6 @@ Integer = text
# EnumName is an compile-time constant name
EnumName = text
-# ExtensionName is the name string of an API extension
-ExtensionName = text
-
# TypeName is an argument/return value C type name
TypeName = text
@@ -439,6 +438,7 @@ StringGroup = text
# Repeatedly used attributes
ProfileName = attribute profile { text }
+ExtensionName = attribute extension { text }
Vendor = attribute vendor { text }
Comment = attribute comment { text }
Name = attribute name { text }
diff --git a/src/spec/vk.xml b/src/spec/vk.xml
index f0a1cd6..84510b4 100644
--- a/src/spec/vk.xml
+++ b/src/spec/vk.xml
@@ -106,7 +106,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type category="define">// Vulkan 1.0 version number
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 59</type>
+#define <name>VK_HEADER_VERSION</name> 60</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@@ -243,6 +243,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDiscardRectangleStateCreateFlagsEXT</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageToColorStateCreateFlagsNV</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageModulationStateCreateFlagsNV</name>;</type>
+ <type category="bitmask">typedef <type>VkFlags</type> <name>VkValidationCacheCreateFlagsEXT</name>;</type> <!-- creation flags (no bits yet) -->
<comment>Types which can be void pointers or class pointers, selected at compile time</comment>
<type category="handle"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
@@ -273,6 +274,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkObjectTableNVX</name>)</type>
<type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkIndirectCommandsLayoutNVX</name>)</type>
<type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorUpdateTemplateKHR</name>)</type>
+ <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkValidationCacheEXT</name>)</type>
<comment>WSI extensions</comment>
<type category="handle"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDisplayKHR</name>)</type>
@@ -380,6 +382,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type name="VkDiscardRectangleModeEXT" category="enum"/>
<type name="VkSubpassDescriptionFlagBits" category="enum"/>
<type name="VkCoverageModulationModeNV" category="enum"/>
+ <type name="VkValidationCacheHeaderVersionEXT" category="enum"/>
<comment>WSI extensions</comment>
<type name="VkColorSpaceKHR" category="enum"/>
@@ -2436,6 +2439,54 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<member><type>VkBool32</type> <name>filterMinmaxSingleComponentFormats</name></member>
<member><type>VkBool32</type> <name>filterMinmaxImageComponentMapping</name></member>
</type>
+ <type category="struct" name="VkSampleLocationEXT">
+ <member><type>float</type> <name>x</name></member>
+ <member><type>float</type> <name>y</name></member>
+ </type>
+ <type category="struct" name="VkSampleLocationsInfoEXT" structextends="VkImageMemoryBarrier">
+ <member values="VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member>const <type>void</type>* <name>pNext</name></member>
+ <member><type>VkSampleCountFlagBits</type> <name>sampleLocationsPerPixel</name></member>
+ <member><type>VkExtent2D</type> <name>sampleLocationGridSize</name></member>
+ <member><type>uint32_t</type> <name>sampleLocationsCount</name></member>
+ <member len="sampleLocationsCount">const <type>VkSampleLocationEXT</type>* <name>pSampleLocations</name></member>
+ </type>
+ <type category="struct" name="VkAttachmentSampleLocationsEXT">
+ <member><type>uint32_t</type> <name>attachmentIndex</name></member>
+ <member><type>VkSampleLocationsInfoEXT</type> <name>sampleLocationsInfo</name></member>
+ </type>
+ <type category="struct" name="VkSubpassSampleLocationsEXT">
+ <member><type>uint32_t</type> <name>subpassIndex</name></member>
+ <member><type>VkSampleLocationsInfoEXT</type> <name>sampleLocationsInfo</name></member>
+ </type>
+ <type category="struct" name="VkRenderPassSampleLocationsBeginInfoEXT" structextends="VkRenderPassBeginInfo">
+ <member values="VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member>const <type>void</type>* <name>pNext</name></member>
+ <member optional="true"><type>uint32_t</type> <name>attachmentInitialSampleLocationsCount</name></member>
+ <member len="attachmentInitialSampleLocationsCount">const <type>VkAttachmentSampleLocationsEXT</type>* <name>pAttachmentInitialSampleLocations</name></member>
+ <member optional="true"><type>uint32_t</type> <name>postSubpassSampleLocationsCount</name></member>
+ <member len="postSubpassSampleLocationsCount">const <type>VkSubpassSampleLocationsEXT</type>* <name>pSubpassSampleLocations</name></member>
+ </type>
+ <type category="struct" name="VkPipelineSampleLocationsStateCreateInfoEXT" structextends="VkPipelineMultisampleStateCreateInfo">
+ <member values="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member>const <type>void</type>* <name>pNext</name></member>
+ <member><type>VkBool32</type> <name>sampleLocationsEnable</name></member>
+ <member><type>VkSampleLocationsInfoEXT</type> <name>sampleLocationsInfo</name></member>
+ </type>
+ <type category="struct" name="VkPhysicalDeviceSampleLocationsPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2KHR">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member><type>void</type>* <name>pNext</name></member>
+ <member><type>VkSampleCountFlags</type> <name>sampleLocationSampleCounts</name></member>
+ <member><type>VkExtent2D</type> <name>maxSampleLocationGridSize</name></member>
+ <member><type>float</type> <name>sampleLocationCoordinateRange</name>[2]</member>
+ <member><type>uint32_t</type> <name>sampleLocationSubPixelBits</name></member>
+ <member><type>VkBool32</type> <name>variableSampleLocations</name></member>
+ </type>
+ <type category="struct" name="VkMultisamplePropertiesEXT" returnedonly="true">
+ <member values="VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member><type>void</type>* <name>pNext</name></member>
+ <member><type>VkExtent2D</type> <name>maxSampleLocationGridSize</name></member>
+ </type>
<type category="struct" name="VkSamplerReductionModeCreateInfoEXT" structextends="VkSamplerCreateInfo">
<member values="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
@@ -2472,6 +2523,18 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<member><type>uint32_t</type> <name>coverageModulationTableCount</name></member>
<member noautovalidity="true" optional="true" len="coverageModulationTableCount">const <type>float</type>* <name>pCoverageModulationTable</name></member>
</type>
+ <type category="struct" name="VkValidationCacheCreateInfoEXT">
+ <member values="VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
+ <member optional="true"><type>VkValidationCacheCreateFlagsEXT</type> <name>flags</name></member> <!-- Reserved -->
+ <member optional="true"><type>size_t</type> <name>initialDataSize</name></member> <!-- Size of initial data to populate cache, in bytes -->
+ <member len="initialDataSize">const <type>void</type>* <name>pInitialData</name></member> <!-- Initial data to populate cache -->
+ </type>
+ <type category="struct" name="VkShaderModuleValidationCacheCreateInfoEXT" structextends="VkShaderModuleCreateInfo">
+ <member values="VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
+ <member><type>VkValidationCacheEXT</type> <name>validationCache</name></member> <!-- Validation cache handle -->
+ </type>
</types>
<comment>Vulkan enumerant (token) definitions</comment>
@@ -3317,6 +3380,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="30" name="VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"/>
<enum value="31" name="VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"/>
<enum value="32" name="VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"/>
+ <enum value="33" name="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT"/>
</enums>
<enums name="VkRasterizationOrderAMD" type="enum">
<enum value="0" name="VK_RASTERIZATION_ORDER_STRICT_AMD"/>
@@ -3471,6 +3535,9 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="2" name="VK_COVERAGE_MODULATION_MODE_ALPHA_NV"/>
<enum value="3" name="VK_COVERAGE_MODULATION_MODE_RGBA_NV"/>
</enums>
+ <enums name="VkValidationCacheHeaderVersionEXT" type="enum">
+ <enum value="1" name="VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"/>
+ </enums>
<commands comment="Vulkan command definitions">
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_LAYER_NOT_PRESENT,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INCOMPATIBLE_DRIVER">
@@ -5107,6 +5174,17 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<param><type>uint32_t</type> <name>discardRectangleCount</name></param>
<param len="discardRectangleCount">const <type>VkRect2D</type>* <name>pDiscardRectangles</name></param>
</command>
+ <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
+ <proto><type>void</type> <name>vkCmdSetSampleLocationsEXT</name></proto>
+ <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
+ <param>const <type>VkSampleLocationsInfoEXT</type>* <name>pSampleLocationsInfo</name></param>
+ </command>
+ <command>
+ <proto><type>void</type> <name>vkGetPhysicalDeviceMultisamplePropertiesEXT</name></proto>
+ <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
+ <param><type>VkSampleCountFlagBits</type> <name>samples</name></param>
+ <param><type>VkMultisamplePropertiesEXT</type>* <name>pMultisampleProperties</name></param>
+ </command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
<proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilities2KHR</name></proto>
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
@@ -5139,6 +5217,33 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param>
<param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements2KHR</type>* <name>pSparseMemoryRequirements</name></param>
</command>
+ <command>
+ <proto><type>VkResult</type> <name>vkCreateValidationCacheEXT</name></proto>
+ <param><type>VkDevice</type> <name>device</name></param>
+ <param>const <type>VkValidationCacheCreateInfoEXT</type>* <name>pCreateInfo</name></param>
+ <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
+ <param><type>VkValidationCacheEXT</type>* <name>pValidationCache</name></param>
+ </command>
+ <command>
+ <proto><type>void</type> <name>vkDestroyValidationCacheEXT</name></proto>
+ <param><type>VkDevice</type> <name>device</name></param>
+ <param optional="true" externsync="true"><type>VkValidationCacheEXT</type> <name>validationCache</name></param>
+ <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
+ </command>
+ <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
+ <proto><type>VkResult</type> <name>vkGetValidationCacheDataEXT</name></proto>
+ <param><type>VkDevice</type> <name>device</name></param>
+ <param><type>VkValidationCacheEXT</type> <name>validationCache</name></param>
+ <param optional="false,true"><type>size_t</type>* <name>pDataSize</name></param>
+ <param optional="true" len="pDataSize"><type>void</type>* <name>pData</name></param>
+ </command>
+ <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
+ <proto><type>VkResult</type> <name>vkMergeValidationCachesEXT</name></proto>
+ <param><type>VkDevice</type> <name>device</name></param>
+ <param externsync="true"><type>VkValidationCacheEXT</type> <name>dstCache</name></param>
+ <param><type>uint32_t</type> <name>srcCacheCount</name></param>
+ <param len="srcCacheCount">const <type>VkValidationCacheEXT</type>* <name>pSrcCaches</name></param>
+ </command>
</commands>
<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
@@ -5367,7 +5472,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
</feature>
<extensions comment="Vulkan extension interface definitions">
- <extension name="VK_KHR_surface" number="1" type="instance" supported="vulkan">
+ <extension name="VK_KHR_surface" number="1" type="instance" author="KHR" contact="James Jones @cubanismo,Ian Elliott ianelliott@google.com" supported="vulkan">
<require>
<enum value="25" name="VK_KHR_SURFACE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_surface&quot;" name="VK_KHR_SURFACE_EXTENSION_NAME"/>
@@ -5382,7 +5487,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetPhysicalDeviceSurfacePresentModesKHR"/>
</require>
</extension>
- <extension name="VK_KHR_swapchain" number="2" type="device" requires="VK_KHR_surface" supported="vulkan">
+ <extension name="VK_KHR_swapchain" number="2" type="device" requires="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo,Ian Elliott ianelliott@google.com" supported="vulkan">
<require>
<enum value="68" name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_swapchain&quot;" name="VK_KHR_SWAPCHAIN_EXTENSION_NAME"/>
@@ -5399,7 +5504,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkQueuePresentKHR"/>
</require>
</extension>
- <extension name="VK_KHR_display" number="3" type="instance" requires="VK_KHR_surface" supported="vulkan">
+ <extension name="VK_KHR_display" number="3" type="instance" requires="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo,Norbert Nopper @FslNopper" supported="vulkan">
<require>
<enum value="21" name="VK_KHR_DISPLAY_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_display&quot;" name="VK_KHR_DISPLAY_EXTENSION_NAME"/>
@@ -5425,7 +5530,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkCreateDisplayPlaneSurfaceKHR"/>
</require>
</extension>
- <extension name="VK_KHR_display_swapchain" number="4" type="device" requires="VK_KHR_swapchain,VK_KHR_display" supported="vulkan">
+ <extension name="VK_KHR_display_swapchain" number="4" type="device" requires="VK_KHR_swapchain,VK_KHR_display" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
<require>
<enum value="9" name="VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_display_swapchain&quot;" name="VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"/>
@@ -5435,7 +5540,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkCreateSharedSwapchainsKHR"/>
</require>
</extension>
- <extension name="VK_KHR_xlib_surface" number="5" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_XLIB_KHR" supported="vulkan">
+ <extension name="VK_KHR_xlib_surface" number="5" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_XLIB_KHR" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott ianelliott@google.com" supported="vulkan">
<require>
<enum value="6" name="VK_KHR_XLIB_SURFACE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_xlib_surface&quot;" name="VK_KHR_XLIB_SURFACE_EXTENSION_NAME"/>
@@ -5446,7 +5551,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetPhysicalDeviceXlibPresentationSupportKHR"/>
</require>
</extension>
- <extension name="VK_KHR_xcb_surface" number="6" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_XCB_KHR" supported="vulkan">
+ <extension name="VK_KHR_xcb_surface" number="6" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_XCB_KHR" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott ianelliott@google.com" supported="vulkan">
<require>
<enum value="6" name="VK_KHR_XCB_SURFACE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_xcb_surface&quot;" name="VK_KHR_XCB_SURFACE_EXTENSION_NAME"/>
@@ -5457,7 +5562,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetPhysicalDeviceXcbPresentationSupportKHR"/>
</require>
</extension>
- <extension name="VK_KHR_wayland_surface" number="7" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_WAYLAND_KHR" supported="vulkan">
+ <extension name="VK_KHR_wayland_surface" number="7" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_WAYLAND_KHR" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott ianelliott@google.com" supported="vulkan">
<require>
<enum value="6" name="VK_KHR_WAYLAND_SURFACE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_wayland_surface&quot;" name="VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME"/>
@@ -5468,7 +5573,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetPhysicalDeviceWaylandPresentationSupportKHR"/>
</require>
</extension>
- <extension name="VK_KHR_mir_surface" number="8" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_MIR_KHR" supported="vulkan">
+ <extension name="VK_KHR_mir_surface" number="8" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_MIR_KHR" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott ianelliott@google.com" supported="vulkan">
<require>
<enum value="4" name="VK_KHR_MIR_SURFACE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_mir_surface&quot;" name="VK_KHR_MIR_SURFACE_EXTENSION_NAME"/>
@@ -5479,7 +5584,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetPhysicalDeviceMirPresentationSupportKHR"/>
</require>
</extension>
- <extension name="VK_KHR_android_surface" number="9" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_ANDROID_KHR" supported="vulkan">
+ <extension name="VK_KHR_android_surface" number="9" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_ANDROID_KHR" author="KHR" contact="Jesse Hall @jessehall" supported="vulkan">
<require>
<enum value="6" name="VK_KHR_ANDROID_SURFACE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_android_surface&quot;" name="VK_KHR_ANDROID_SURFACE_EXTENSION_NAME"/>
@@ -5489,7 +5594,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkCreateAndroidSurfaceKHR"/>
</require>
</extension>
- <extension name="VK_KHR_win32_surface" number="10" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
+ <extension name="VK_KHR_win32_surface" number="10" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_WIN32_KHR" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott ianelliott@google.com" supported="vulkan">
<require>
<enum value="6" name="VK_KHR_WIN32_SURFACE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_win32_surface&quot;" name="VK_KHR_WIN32_SURFACE_EXTENSION_NAME"/>
@@ -5536,7 +5641,6 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_EXT_depth_range_unrestricted&quot;" name="VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME"/>
</require>
</extension>
-
<extension name="VK_KHR_sampler_mirror_clamp_to_edge" type="device" number="15" author="KHR" contact="Tobias Hector @tobias" supported="vulkan">
<require>
<enum value="1" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"/>
@@ -5848,7 +5952,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type name="VkExportMemoryAllocateInfoNV"/>
</require>
</extension>
- <extension name="VK_NV_external_memory_win32" number="58" type="device" requires="VK_NV_external_memory_capabilities,VK_NV_external_memory" author="NV" contact="James Jones @cubanismo" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
+ <extension name="VK_NV_external_memory_win32" number="58" type="device" requires="VK_NV_external_memory" author="NV" contact="James Jones @cubanismo" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
<require>
<enum value="1" name="VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"/>
<enum value="&quot;VK_NV_external_memory_win32&quot;" name="VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"/>
@@ -5859,7 +5963,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetMemoryWin32HandleNV"/>
</require>
</extension>
- <extension name="VK_NV_win32_keyed_mutex" number="59" type="device" requires="VK_NV_external_memory_capabilities,VK_NV_external_memory_win32" author="NV" contact="Carsten Rohde" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
+ <extension name="VK_NV_win32_keyed_mutex" number="59" type="device" requires="VK_NV_external_memory_win32" author="NV" contact="Carsten Rohde" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
<require>
<enum value="1" name="VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"/>
<enum value="&quot;VK_NV_win32_keyed_mutex&quot;" name="VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME"/>
@@ -5898,7 +6002,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetPhysicalDeviceSparseImageFormatProperties2KHR"/>
</require>
</extension>
- <extension name="VK_KHX_device_group" number="61" type="device" author="KHX" requires="VK_KHR_swapchain,VK_KHX_device_group_creation" contact="Jeff Bolz @jbolz" supported="vulkan">
+ <extension name="VK_KHX_device_group" number="61" type="device" author="KHX" requires="VK_KHX_device_group_creation" contact="Jeff Bolz @jbolz" supported="vulkan">
<require>
<enum value="1" name="VK_KHX_DEVICE_GROUP_SPEC_VERSION"/>
<enum value="&quot;VK_KHX_device_group&quot;" name="VK_KHX_DEVICE_GROUP_EXTENSION_NAME"/>
@@ -5909,18 +6013,11 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX"/>
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX"/>
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX"/>
<enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX"/>
- <enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX"/>
- <enum offset="12" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX"/>
<type name="VkPeerMemoryFeatureFlagsKHX"/>
<type name="VkPeerMemoryFeatureFlagBitsKHX"/>
<type name="VkMemoryAllocateFlagsKHX"/>
<type name="VkMemoryAllocateFlagBitsKHX"/>
- <type name="VkDeviceGroupPresentModeFlagBitsKHX"/>
- <type name="VkDeviceGroupPresentModeFlagsKHX"/>
<type name="VkMemoryAllocateFlagsInfoKHX"/>
<type name="VkBindBufferMemoryInfoKHX"/>
<type name="VkBindImageMemoryInfoKHX"/>
@@ -5928,26 +6025,37 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type name="VkDeviceGroupCommandBufferBeginInfoKHX"/>
<type name="VkDeviceGroupSubmitInfoKHX"/>
<type name="VkDeviceGroupBindSparseInfoKHX"/>
- <type name="VkDeviceGroupPresentCapabilitiesKHX"/>
- <type name="VkImageSwapchainCreateInfoKHX"/>
- <type name="VkBindImageMemorySwapchainInfoKHX"/>
- <type name="VkAcquireNextImageInfoKHX"/>
- <type name="VkDeviceGroupPresentInfoKHX"/>
- <type name="VkDeviceGroupSwapchainCreateInfoKHX"/>
<command name="vkGetDeviceGroupPeerMemoryFeaturesKHX"/>
<command name="vkBindBufferMemory2KHX"/>
<command name="vkBindImageMemory2KHX"/>
<command name="vkCmdSetDeviceMaskKHX"/>
- <command name="vkGetDeviceGroupPresentCapabilitiesKHX"/>
- <command name="vkGetDeviceGroupSurfacePresentModesKHX"/>
- <command name="vkAcquireNextImage2KHX"/>
<command name="vkCmdDispatchBaseKHX"/>
- <command name="vkGetPhysicalDevicePresentRectanglesKHX"/>
<enum bitpos="6" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_BIND_SFR_BIT_KHX" comment="Allows using VkBindImageMemoryInfoKHX::pSFRRects when binding memory to the image"/>
<enum bitpos="3" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX"/>
<enum bitpos="4" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_DISPATCH_BASE_KHX"/>
<enum bitpos="2" extends="VkDependencyFlagBits" name="VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX" comment="Dependency is across devices"/>
+ </require>
+ <require extension="VK_KHR_surface">
+ <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX"/>
+ <type name="VkDeviceGroupPresentModeFlagBitsKHX"/>
+ <type name="VkDeviceGroupPresentModeFlagsKHX"/>
+ <type name="VkDeviceGroupPresentCapabilitiesKHX"/>
+ <command name="vkGetDeviceGroupPresentCapabilitiesKHX"/>
+ <command name="vkGetDeviceGroupSurfacePresentModesKHX"/>
+ <command name="vkGetPhysicalDevicePresentRectanglesKHX"/>
+ </require>
+ <require extension="VK_KHR_swapchain">
+ <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX"/>
+ <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX"/>
+ <enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX"/>
+ <enum offset="12" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX"/>
<enum bitpos="0" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX" comment="Allow images with VK_IMAGE_CREATE_BIND_SFR_BIT_KHX"/>
+ <type name="VkImageSwapchainCreateInfoKHX"/>
+ <type name="VkBindImageMemorySwapchainInfoKHX"/>
+ <type name="VkAcquireNextImageInfoKHX"/>
+ <type name="VkDeviceGroupPresentInfoKHX"/>
+ <type name="VkDeviceGroupSwapchainCreateInfoKHX"/>
+ <command name="vkAcquireNextImage2KHX"/>
</require>
</extension>
<extension name="VK_EXT_validation_flags" number="62" type="instance" author="GOOGLE" contact="Tobin Ehlis @tobine" supported="vulkan">
@@ -6065,7 +6173,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type name="VkExportMemoryAllocateInfoKHR"/>
</require>
</extension>
- <extension name="VK_KHR_external_memory_win32" number="74" type="device" requires="VK_KHR_external_memory_capabilities,VK_KHR_external_memory" author="KHR" contact="James Jones @cubanismo" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
+ <extension name="VK_KHR_external_memory_win32" number="74" type="device" requires="VK_KHR_external_memory" author="KHR" contact="James Jones @cubanismo" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
<require>
<enum value="1" name="VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_external_memory_win32&quot;" name="VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"/>
@@ -6081,7 +6189,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetMemoryWin32HandlePropertiesKHR"/>
</require>
</extension>
- <extension name="VK_KHR_external_memory_fd" number="75" type="device" requires="VK_KHR_external_memory_capabilities,VK_KHR_external_memory" author="KHX" contact="James Jones @cubanismo" supported="vulkan">
+ <extension name="VK_KHR_external_memory_fd" number="75" type="device" requires="VK_KHR_external_memory" author="KHX" contact="James Jones @cubanismo" supported="vulkan">
<require>
<enum value="1" name="VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_external_memory_fd&quot;" name="VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME"/>
@@ -6095,7 +6203,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetMemoryFdPropertiesKHR"/>
</require>
</extension>
- <extension name="VK_KHR_win32_keyed_mutex" number="76" type="device" requires="VK_KHR_external_memory_capabilities,VK_KHR_external_memory,VK_KHR_external_memory_win32" author="KHR" contact="Carsten Rohde" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
+ <extension name="VK_KHR_win32_keyed_mutex" number="76" type="device" requires="VK_KHR_external_memory_win32" author="KHR" contact="Carsten Rohde" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
<require>
<enum value="1" name="VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_win32_keyed_mutex&quot;" name="VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME"/>
@@ -6130,7 +6238,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type name="VkExportSemaphoreCreateInfoKHR"/>
</require>
</extension>
- <extension name="VK_KHR_external_semaphore_win32" number="79" type="device" requires="VK_KHR_external_semaphore_capabilities,VK_KHR_external_semaphore" author="KHR" contact="James Jones @cubanismo" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
+ <extension name="VK_KHR_external_semaphore_win32" number="79" type="device" requires="VK_KHR_external_semaphore" author="KHR" contact="James Jones @cubanismo" protect="VK_USE_PLATFORM_WIN32_KHR" supported="vulkan">
<require>
<enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_external_semaphore_win32&quot;" name="VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME"/>
@@ -6146,7 +6254,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetSemaphoreWin32HandleKHR"/>
</require>
</extension>
- <extension name="VK_KHR_external_semaphore_fd" number="80" type="device" requires="VK_KHR_external_semaphore_capabilities,VK_KHR_external_semaphore" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
+ <extension name="VK_KHR_external_semaphore_fd" number="80" type="device" requires="VK_KHR_external_semaphore" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
<require>
<enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_external_semaphore_fd&quot;" name="VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME"/>
@@ -6282,7 +6390,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkReleaseDisplayEXT"/>
</require>
</extension>
- <extension name="VK_EXT_acquire_xlib_display" number="90" type="instance" requires="VK_EXT_direct_mode_display,VK_KHR_display" author="NV" contact="James Jones @cubanismo" protect="VK_USE_PLATFORM_XLIB_XRANDR_EXT" supported="vulkan">
+ <extension name="VK_EXT_acquire_xlib_display" number="90" type="instance" requires="VK_EXT_direct_mode_display" author="NV" contact="James Jones @cubanismo" protect="VK_USE_PLATFORM_XLIB_XRANDR_EXT" supported="vulkan">
<require>
<enum value="1" name="VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_acquire_xlib_display&quot;" name="VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME"/>
@@ -6302,7 +6410,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<command name="vkGetPhysicalDeviceSurfaceCapabilities2EXT"/>
</require>
</extension>
- <extension name="VK_EXT_display_control" number="92" type="device" requires="VK_KHR_display,VK_EXT_display_surface_counter,VK_KHR_swapchain" author="NV" contact="James Jones @cubanismo" supported="vulkan">
+ <extension name="VK_EXT_display_control" number="92" type="device" requires="VK_EXT_display_surface_counter,VK_KHR_swapchain" author="NV" contact="James Jones @cubanismo" supported="vulkan">
<require>
<enum value="1" name="VK_EXT_DISPLAY_CONTROL_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_display_control&quot;" name="VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME"/>
@@ -6360,7 +6468,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_NV_viewport_array2&quot;" name="VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_NVX_multiview_per_view_attributes" number="98" type="device" author="NVX" contact="Jeff Bolz @jbolz" supported="vulkan">
+ <extension name="VK_NVX_multiview_per_view_attributes" number="98" type="device" requires="VK_KHX_multiview" author="NVX" contact="Jeff Bolz @jbolz" supported="vulkan">
<require>
<enum value="1" name="VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION"/>
<enum value="&quot;VK_NVX_multiview_per_view_attributes&quot;" name="VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME"/>
@@ -6439,7 +6547,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum offset="14" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"/>
</require>
</extension>
- <extension name="VK_EXT_hdr_metadata" number="106" type="device" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtneygo" supported="vulkan">
+ <extension name="VK_EXT_hdr_metadata" number="106" type="device" requires="VK_KHR_swapchain" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtneygo" supported="vulkan">
<require>
<enum value="1" name="VK_EXT_HDR_METADATA_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_hdr_metadata&quot;" name="VK_EXT_HDR_METADATA_EXTENSION_NAME"/>
@@ -6479,7 +6587,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_IMG_extension_111&quot;" name="VK_IMG_EXTENSION_111_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_KHR_shared_presentable_image" number="112" type="device" requires="VK_KHR_surface,VK_KHR_swapchain,VK_KHR_get_physical_device_properties2,VK_KHR_get_surface_capabilities2" author="KHR" contact="Alon Or-bach @alonorbach" supported="vulkan">
+ <extension name="VK_KHR_shared_presentable_image" number="112" type="device" requires="VK_KHR_swapchain,VK_KHR_get_physical_device_properties2,VK_KHR_get_surface_capabilities2" author="KHR" contact="Alon Or-bach @alonorbach" supported="vulkan">
<require>
<enum value="1" name="VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_shared_presentable_image&quot;" name="VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME"/>
@@ -6628,7 +6736,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_MESA_extension_127&quot;" name="VK_MESA_EXTENSION_127_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_KHR_dedicated_allocation" number="128" type="device" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
+ <extension name="VK_KHR_dedicated_allocation" number="128" type="device" author="KHR" requires="VK_KHR_get_memory_requirements2" contact="James Jones @cubanismo" supported="vulkan">
<require>
<enum value="3" name="VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_dedicated_allocation&quot;" name="VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME"/>
@@ -6692,16 +6800,16 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_AMD_extension_136&quot;" name="VK_AMD_EXTENSION_136_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_AMD_mixed_attachment_samples" number="137" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
+ <extension name="VK_AMD_mixed_attachment_samples" number="137" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
<require>
<enum value="1" name="VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_mixed_attachment_samples&quot;" name="VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_AMD_extension_138" number="138" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
+ <extension name="VK_AMD_shader_fragment_mask" number="138" author="AMD" contact="Aaron Hagan @ahagan" supported="vulkan" type="device">
<require>
- <enum value="0" name="VK_AMD_EXTENSION_138_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_138&quot;" name="VK_AMD_EXTENSION_138_EXTENSION_NAME"/>
+ <enum value="1" name="VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_shader_fragment_mask&quot;" name="VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_AMD_extension_139" number="139" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
@@ -6734,10 +6842,27 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_AMD_extension_143&quot;" name="VK_AMD_EXTENSION_143_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_AMD_extension_144" number="144" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_144_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_144&quot;" name="VK_AMD_EXTENSION_144_EXTENSION_NAME"/>
+ <extension name="VK_EXT_sample_locations" number="144" type="device" author="AMD" contact="Daniel Rakos @aqnuep" supported="vulkan">
+ <require>
+ <enum value="1" name="VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION"/>
+ <enum value="&quot;VK_EXT_sample_locations&quot;" name="VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME"/>
+ <enum bitpos="12" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"/>
+ <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"/>
+ <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"/>
+ <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"/>
+ <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"/>
+ <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"/>
+ <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"/>
+ <type name="VkSampleLocationEXT"/>
+ <type name="VkSampleLocationsInfoEXT"/>
+ <type name="VkAttachmentSampleLocationsEXT"/>
+ <type name="VkSubpassSampleLocationsEXT"/>
+ <type name="VkRenderPassSampleLocationsBeginInfoEXT"/>
+ <type name="VkPipelineSampleLocationsStateCreateInfoEXT"/>
+ <type name="VkPhysicalDeviceSampleLocationsPropertiesEXT"/>
+ <type name="VkMultisamplePropertiesEXT"/>
+ <command name="vkCmdSetSampleLocationsEXT"/>
+ <command name="vkGetPhysicalDeviceMultisamplePropertiesEXT"/>
</require>
</extension>
<extension name="VK_KHR_relaxed_block_layout" number="145" type="device" author="KHR" contact="John Kessenich @johnk" supported="vulkan">
@@ -6911,10 +7036,22 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_EXT_extension_160&quot;" name="VK_EXT_EXTENSION_160_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_EXT_extension_161" number="161" author="GOOGLE" contact="Cort Stratton @cdwfs" supported="disabled">
+ <extension name="VK_EXT_validation_cache" number="161" type="device" author="GOOGLE" contact="Cort Stratton @cdwfs" supported="vulkan">
<require>
- <enum value="0" name="VK_EXT_EXTENSION_161_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_161&quot;" name="VK_EXT_EXTENSION_161_EXTENSION_NAME"/>
+ <enum value="1" name="VK_EXT_VALIDATION_CACHE_SPEC_VERSION"/>
+ <enum value="&quot;VK_EXT_validation_cache&quot;" name="VK_EXT_VALIDATION_CACHE_EXTENSION_NAME"/>
+ <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"/>
+ <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"/>
+ <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_VALIDATION_CACHE_EXT" comment="VkValidationCacheEXT"/>
+ <type name="VkValidationCacheEXT"/>
+ <type name="VkValidationCacheCreateInfoEXT"/>
+ <type name="VkShaderModuleValidationCacheCreateInfoEXT"/>
+ <type name="VkValidationCacheHeaderVersionEXT"/>
+ <type name="VkValidationCacheCreateFlagsEXT"/>
+ <command name="vkCreateValidationCacheEXT"/>
+ <command name="vkDestroyValidationCacheEXT"/>
+ <command name="vkMergeValidationCachesEXT"/>
+ <command name="vkGetValidationCacheDataEXT"/>
</require>
</extension>
<extension name="VK_EXT_extension_162" number="162" author="NV" contact="Jeff Bolz @jbolz" supported="disabled">
@@ -6959,5 +7096,17 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_NV_extension_168&quot;" name="VK_EXT_EXTENSION_168_EXTENSION_NAME"/>
</require>
</extension>
+ <extension name="VK_KHR_extension_169" number="169" author="KHR" contact="Jeff Bolz @jbolz" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_169_SPEC_VERSION"/>
+ <enum value="&quot;VK_KHR_extension_169&quot;" name="VK_KHR_EXTENSION_169_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_EXT_extension_170" number="170" author="NV" contact="Piers Daniell @pdaniell" supported="disabled">
+ <require>
+ <enum value="0" name="VK_EXT_EXTENSION_170_SPEC_VERSION"/>
+ <enum value="&quot;VK_EXT_extension_170&quot;" name="VK_EXT_EXTENSION_170_EXTENSION_NAME"/>
+ </require>
+ </extension>
</extensions>
</registry>
diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h
index a297bae..e59fa5e 100644
--- a/src/vulkan/vulkan.h
+++ b/src/vulkan/vulkan.h
@@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
-#define VK_HEADER_VERSION 59
+#define VK_HEADER_VERSION 60
#define VK_NULL_HANDLE 0
@@ -247,10 +247,10 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
+ VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
- VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
@@ -323,6 +323,11 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
+ VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
+ VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
+ VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
+ VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000,
VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001,
VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002,
@@ -333,6 +338,8 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
+ VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
+ VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
@@ -851,6 +858,7 @@ typedef enum VkDynamicState {
VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
+ VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
@@ -1009,6 +1017,7 @@ typedef enum VkObjectType {
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
+ VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_UNKNOWN,
VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_COMMAND_POOL,
VK_OBJECT_TYPE_RANGE_SIZE = (VK_OBJECT_TYPE_COMMAND_POOL - VK_OBJECT_TYPE_UNKNOWN + 1),
@@ -1060,6 +1069,7 @@ typedef enum VkImageCreateFlagBits {
VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
+ VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkImageCreateFlagBits;
typedef VkFlags VkImageCreateFlags;
@@ -4956,10 +4966,11 @@ typedef enum VkDebugReportObjectTypeEXT {
VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
+ VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33,
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
- VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
- VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
+ VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT,
+ VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} VkDebugReportObjectTypeEXT;
@@ -5359,9 +5370,9 @@ typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
#endif /* VK_USE_PLATFORM_WIN32_KHR */
#define VK_KHX_device_group 1
-#define VK_MAX_DEVICE_GROUP_SIZE_KHX 32
#define VK_KHX_DEVICE_GROUP_SPEC_VERSION 1
#define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
+#define VK_MAX_DEVICE_GROUP_SIZE_KHX 32
typedef enum VkPeerMemoryFeatureFlagBitsKHX {
@@ -5498,11 +5509,11 @@ typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHX)(VkDevice dev
typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHX)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfoKHX* pBindInfos);
typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHX)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfoKHX* pBindInfos);
typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHX)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
+typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHX)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHX)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities);
typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHX)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHX* pModes);
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHX)(VkDevice device, const VkAcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex);
-typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHX)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHX)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
+typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHX)(VkDevice device, const VkAcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHX(
@@ -5526,20 +5537,6 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHX(
VkCommandBuffer commandBuffer,
uint32_t deviceMask);
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHX(
- VkDevice device,
- VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHX(
- VkDevice device,
- VkSurfaceKHR surface,
- VkDeviceGroupPresentModeFlagsKHX* pModes);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHX(
- VkDevice device,
- const VkAcquireNextImageInfoKHX* pAcquireInfo,
- uint32_t* pImageIndex);
-
VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHX(
VkCommandBuffer commandBuffer,
uint32_t baseGroupX,
@@ -5549,11 +5546,25 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHX(
uint32_t groupCountY,
uint32_t groupCountZ);
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHX(
+ VkDevice device,
+ VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHX(
+ VkDevice device,
+ VkSurfaceKHR surface,
+ VkDeviceGroupPresentModeFlagsKHX* pModes);
+
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHX(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
uint32_t* pRectCount,
VkRect2D* pRects);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHX(
+ VkDevice device,
+ const VkAcquireNextImageInfoKHX* pAcquireInfo,
+ uint32_t* pImageIndex);
#endif
#define VK_EXT_validation_flags 1
@@ -6343,11 +6354,91 @@ typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
+#define VK_AMD_shader_fragment_mask 1
+#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
+#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
+
+
#define VK_EXT_shader_stencil_export 1
#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
+#define VK_EXT_sample_locations 1
+#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
+#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
+
+typedef struct VkSampleLocationEXT {
+ float x;
+ float y;
+} VkSampleLocationEXT;
+
+typedef struct VkSampleLocationsInfoEXT {
+ VkStructureType sType;
+ const void* pNext;
+ VkSampleCountFlagBits sampleLocationsPerPixel;
+ VkExtent2D sampleLocationGridSize;
+ uint32_t sampleLocationsCount;
+ const VkSampleLocationEXT* pSampleLocations;
+} VkSampleLocationsInfoEXT;
+
+typedef struct VkAttachmentSampleLocationsEXT {
+ uint32_t attachmentIndex;
+ VkSampleLocationsInfoEXT sampleLocationsInfo;
+} VkAttachmentSampleLocationsEXT;
+
+typedef struct VkSubpassSampleLocationsEXT {
+ uint32_t subpassIndex;
+ VkSampleLocationsInfoEXT sampleLocationsInfo;
+} VkSubpassSampleLocationsEXT;
+
+typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t attachmentInitialSampleLocationsCount;
+ const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
+ uint32_t postSubpassSampleLocationsCount;
+ const VkSubpassSampleLocationsEXT* pSubpassSampleLocations;
+} VkRenderPassSampleLocationsBeginInfoEXT;
+
+typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
+ VkStructureType sType;
+ const void* pNext;
+ VkBool32 sampleLocationsEnable;
+ VkSampleLocationsInfoEXT sampleLocationsInfo;
+} VkPipelineSampleLocationsStateCreateInfoEXT;
+
+typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
+ VkStructureType sType;
+ void* pNext;
+ VkSampleCountFlags sampleLocationSampleCounts;
+ VkExtent2D maxSampleLocationGridSize;
+ float sampleLocationCoordinateRange[2];
+ uint32_t sampleLocationSubPixelBits;
+ VkBool32 variableSampleLocations;
+} VkPhysicalDeviceSampleLocationsPropertiesEXT;
+
+typedef struct VkMultisamplePropertiesEXT {
+ VkStructureType sType;
+ void* pNext;
+ VkExtent2D maxSampleLocationGridSize;
+} VkMultisamplePropertiesEXT;
+
+
+typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
+ VkCommandBuffer commandBuffer,
+ const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
+ VkPhysicalDevice physicalDevice,
+ VkSampleCountFlagBits samples,
+ VkMultisamplePropertiesEXT* pMultisampleProperties);
+#endif
+
#define VK_EXT_blend_operation_advanced 1
#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
@@ -6446,6 +6537,68 @@ typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
+#define VK_EXT_validation_cache 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
+
+#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
+#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
+
+
+typedef enum VkValidationCacheHeaderVersionEXT {
+ VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
+ VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
+ VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
+ VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT = (VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + 1),
+ VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkValidationCacheHeaderVersionEXT;
+
+typedef VkFlags VkValidationCacheCreateFlagsEXT;
+
+typedef struct VkValidationCacheCreateInfoEXT {
+ VkStructureType sType;
+ const void* pNext;
+ VkValidationCacheCreateFlagsEXT flags;
+ size_t initialDataSize;
+ const void* pInitialData;
+} VkValidationCacheCreateInfoEXT;
+
+typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
+ VkStructureType sType;
+ const void* pNext;
+ VkValidationCacheEXT validationCache;
+} VkShaderModuleValidationCacheCreateInfoEXT;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
+typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
+typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT(
+ VkDevice device,
+ const VkValidationCacheCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkValidationCacheEXT* pValidationCache);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT(
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ const VkAllocationCallbacks* pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT(
+ VkDevice device,
+ VkValidationCacheEXT dstCache,
+ uint32_t srcCacheCount,
+ const VkValidationCacheEXT* pSrcCaches);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ size_t* pDataSize,
+ void* pData);
+#endif
+
#define VK_EXT_shader_viewport_index_layer 1
#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"