diff --git a/.gitignore b/.gitignore index 5e7c51a9..9990d375 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 00000000..633cb27a --- /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 : + + where 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 bbfab7fd..0c0bb3f7 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 02f09957..68731d93 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 ebfa24c9..e256c97e 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 64e5fcbd..c601bf44 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 1e55da1d..8bf1a0ba 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 776dd8f3..8da70500 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 e32d030c..3146d3b3 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 +include::meta/VK_AMD_mixed_attachment_samples.txt[] -*Name String*:: - +VK_AMD_mixed_attachment_samples+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 137 *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 eeaa4e92..4dcf7709 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 270f9da9..ef3ef6a7 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 +include::meta/VK_AMD_rasterization_order.txt[] -*Name String*:: - +VK_AMD_rasterization_order+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 19 *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 ad21587f..20e9e5bc 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 2382e819..65e2679a 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 00000000..36c3cdb9 --- /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 + +* <> + + +=== 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 6d55e65d..c6acd16f 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 9aba64d2..f5f45818 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 +include::meta/VK_AMD_texture_gather_bias_lod.txt[] -*Name String*:: - +VK_AMD_texture_gather_bias_lod+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 42 *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 3bd9ab99..3960ea24 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 +include::meta/VK_EXT_acquire_xlib_display.txt[] -*Name String*:: - +VK_EXT_acquire_xlib_display+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 90 *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 20360bbb..83886ca3 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 +include::meta/VK_EXT_blend_operation_advanced.txt[] -*Name String*:: - VK_EXT_blend_operation_advanced -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 149 *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 cbef2983..e4476f47 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 +include::meta/VK_EXT_debug_marker.txt[] -*Name String*:: - +VK_EXT_debug_marker+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 23 *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 2b5ca0cb..f123fb11 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 +include::meta/VK_EXT_debug_report.txt[] -*Name String*:: - +VK_EXT_debug_report+ -*Extension Type*:: - Instance -*Registered Extension Number*:: - 12 *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 73041721..62536182 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 2a651309..d2cab7ad 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 +include::meta/VK_EXT_direct_mode_display.txt[] -*Name String*:: - +VK_EXT_direct_mode_display+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 89 *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 859f6280..0e1615dd 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 +include::meta/VK_EXT_discard_rectangles.txt[] -*Name String*:: - VK_EXT_discard_rectangles -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 100 *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 - <>. *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 a252dcb6..301c7083 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 +include::meta/VK_EXT_display_control.txt[] -*Name String*:: - +VK_EXT_display_control+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 92 *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 1594a66a..b8ac0548 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 +include::meta/VK_EXT_display_surface_counter.txt[] -*Name String*:: - +VK_EXT_display_surface_counter+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 91 *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 e4df8e99..feaa26da 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 +include::meta/VK_EXT_hdr_metadata.txt[] -*Name String*:: - +VK_EXT_hdr_metadata+ -*Extension Type*:: - Device -*Registered Extension Number*:: - 106 *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 0e0268be..f568b52b 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 00000000..4b7b2722 --- /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 e67c4412..0d65bc16 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 +include::meta/VK_EXT_sampler_filter_minmax.txt[] -*Name String*:: - +VK_EXT_sampler_filter_minmax+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 131 *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 +<>+. *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 05b67b01..7df0dbe5 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 c079475d..c4b378c9 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 +include::meta/VK_EXT_shader_subgroup_ballot.txt[] -*Name String*:: - +VK_EXT_shader_subgroup_ballot+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 65 *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 508b1b93..a7f1cf33 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 +include::meta/VK_EXT_shader_subgroup_vote.txt[] -*Name String*:: - +VK_EXT_shader_subgroup_vote+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 66 *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 6fbcdc02..097a96ef 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 +include::meta/VK_EXT_shader_viewport_index_layer.txt[] -*Name String*:: - +VK_EXT_shader_viewport_index_layer+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 163 *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 e851570e..c22068b2 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 00000000..c786cf2d --- /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 b6ff3d6c..98323a98 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 +include::meta/VK_EXT_validation_flags.txt[] -*Name String*:: - +VK_EXT_validation_flags+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 62 *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 7b11df75..701eb107 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 +include::meta/VK_GOOGLE_display_timing.txt[] -*Name String*:: - +VK_GOOGLE_display_timing+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 93 *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 23f38e7a..308153df 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 +include::meta/VK_IMG_filter_cubic.txt[] -*Name String*:: - +VK_IMG_filter_cubic+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 16 *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 663943f7..8d16c9fe 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 - <>. - - This extension requires - <>. *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 + * <> * <> * <> @@ -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 493ff115..6579025d 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 +include::meta/VK_KHR_android_surface.txt[] -*Name String*:: - +VK_KHR_android_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 9 *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 a0dbe8a4..87c292ef 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 +include::meta/VK_KHR_dedicated_allocation.txt[] -*Name String*:: - +VK_KHR_dedicated_allocation+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 128 *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 2828e642..25f5ef65 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 +include::meta/VK_KHR_descriptor_update_template.txt[] -*Name String*:: - +VK_KHR_descriptor_update_template+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 86 *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 ef2a2ed6..62e4fe7c 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 +include::meta/VK_KHR_display.txt[] -*Name String*:: - +VK_KHR_display+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 3 *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 c895f16a..1646e18a 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 +include::meta/VK_KHR_display_swapchain.txt[] -*Name String*:: - +VK_KHR_display_swapchain+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 4 *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 f8118f0c..f1aded86 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 <> -*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 5359c6f5..473b455f 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 <> -*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 05d35070..113c2e10 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 <> -*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 b56b1d99..ad5518bd 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 +include::meta/VK_KHR_external_fence_win32.txt[] -*Name String*:: - +VK_KHR_external_fence_win32+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 115 *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 <> -*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 295f3b52..4ac9cef8 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 +include::meta/VK_KHR_external_memory.txt[] -*Name String*:: - +VK_KHR_external_memory+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 73 *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 58aac0b8..32199016 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 +include::meta/VK_KHR_external_memory_capabilities.txt[] -*Name String*:: - +VK_KHR_external_memory_capabilities+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 72 *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 b9a4d234..314ef9a8 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 +include::meta/VK_KHR_external_memory_fd.txt[] -*Name String*:: - +VK_KHR_external_memory_fd+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 75 *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 d8cb7164..abe6a9f7 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 +include::meta/VK_KHR_external_memory_win32.txt[] -*Name String*:: - +VK_KHR_external_memory_win32+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 74 *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 15009cb8..66ac2ab9 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 +include::meta/VK_KHR_external_semaphore.txt[] -*Name String*:: - +VK_KHR_external_semaphore+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 78 *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 2fd39b25..3a9d3ff0 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 06d55dff..a8893d17 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 +include::meta/VK_KHR_external_semaphore_fd.txt[] -*Name String*:: - +VK_KHR_external_semaphore_fd+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 80 *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 3a7c1cc5..95af221f 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 +include::meta/VK_KHR_external_semaphore_win32.txt[] -*Name String*:: - +VK_KHR_external_semaphore_win32+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 79 *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 3ddb6ce6..c4299c24 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 +include::meta/VK_KHR_get_memory_requirements2.txt[] -*Name String*:: - +VK_KHR_get_memory_requirements2+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 147 *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 8f0af83f..ed2ce393 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 +include::meta/VK_KHR_get_physical_device_properties2.txt[] -*Name String*:: - +VK_KHR_get_physical_device_properties2+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 60 *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 4f117f5b..94f22481 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 +include::meta/VK_KHR_get_surface_capabilities2.txt[] -*Name String*:: - +VK_KHR_get_surface_capabilities2+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 120 *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 1fa2edc1..d9510e38 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 +include::meta/VK_KHR_incremental_present.txt[] -*Name String*:: - +VK_KHR_incremental_present+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 85 *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 3fb4bd53..a46cc048 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 +include::meta/VK_KHR_maintenance1.txt[] -*Name String*:: - +VK_KHR_maintenance1+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 70 *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 e7916a88..ec4f64b2 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 +include::meta/VK_KHR_mir_surface.txt[] -*Name String*:: - +VK_KHR_mir_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 8 *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 6a3aa4f0..80daba69 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 +include::meta/VK_KHR_push_descriptor.txt[] -*Name String*:: - +VK_KHR_push_descriptor+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 81 *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 9c625332..9c75b13b 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 f2e51260..2ed2fef6 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 c95f711a..341826ff 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 +include::meta/VK_KHR_shader_draw_parameters.txt[] -*Name String*:: - +VK_KHR_shader_draw_parameters+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 64 *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 2e982cc8..42f4d66d 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 +include::meta/VK_KHR_shared_presentable_image.txt[] -*Name String*:: - +VK_KHR_shared_presentable_image+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 112 *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 24bbb8ad..245b80dd 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 +include::meta/VK_KHR_storage_buffer_storage_class.txt[] -*Name String*:: - +VK_KHR_storage_buffer_storage_class+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 132 *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 c6b7a926..45647cff 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 +include::meta/VK_KHR_surface.txt[] -*Name String*:: - +VK_KHR_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 1 *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 bb6001b8..d96edbfb 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 +include::meta/VK_KHR_swapchain.txt[] -*Name String*:: - +VK_KHR_swapchain+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 2 *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 d247d00e..7060ac08 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 +include::meta/VK_KHR_variable_pointers.txt[] -*Name String*:: - VK_KHR_variable_pointers -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 121 *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 - <> - extension - - Requires the - <> - 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 f301f37e..98840f3a 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 +include::meta/VK_KHR_wayland_surface.txt[] -*Name String*:: - +VK_KHR_wayland_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 7 *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 229f10fa..df7ab66a 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 +include::meta/VK_KHR_win32_keyed_mutex.txt[] -*Name String*:: - +VK_KHR_win32_keyed_mutex+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 76 *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 df8bc276..b499b726 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 +include::meta/VK_KHR_win32_surface.txt[] -*Name String*:: - +VK_KHR_win32_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 10 *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 730a900b..713c6353 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 +include::meta/VK_KHR_xcb_surface.txt[] -*Name String*:: - +VK_KHR_xcb_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 6 *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 61a45c31..de1162df 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 +include::meta/VK_KHR_xlib_surface.txt[] -*Name String*:: - +VK_KHR_xlib_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 5 *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 14a83a0d..44e894f8 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 +include::meta/VK_KHX_device_group.txt[] -*Name String*:: - +VK_KHX_device_group+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 61 *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 b7480be0..2ad8baf3 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 +include::meta/VK_KHX_device_group_creation.txt[] -*Name String*:: - +VK_KHX_device_group_creation+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 71 *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 c7d9b5d7..f51f28fa 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 +include::meta/VK_KHX_multiview.txt[] -*Name String*:: - +VK_KHX_multiview+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 54 *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 7c6f0929..6f1cd40e 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 +include::meta/VK_MVK_ios_surface.txt[] -*Name String*:: - +VK_MVK_ios_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 123 *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 2e46cb72..16653349 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 +include::meta/VK_MVK_macos_surface.txt[] -*Name String*:: - +VK_MVK_macos_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 124 *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 821cdb5c..9f519bac 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 +include::meta/VK_NN_vi_surface.txt[] -*Name String*:: - +VK_NN_vi_surface+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 63 *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 3b5c2b85..b22f354c 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 +include::meta/VK_NVX_device_generated_commands.txt[] -*Name String*:: - +VK_NVX_device_generated_commands+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 87 *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 eab3d073..f0bc94e7 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 +include::meta/VK_NVX_multiview_per_view_attributes.txt[] -*Name String*:: - +VK_NVX_multiview_per_view_attributes+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 98 *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 - <> - and <>. - This extension interacts with <>. *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 e7ebde77..cb0fa6b0 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 +include::meta/VK_NV_clip_space_w_scaling.txt[] -*Name String*:: - +VK_NV_clip_space_w_scaling+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 88 *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 c3387e94..98b41d2a 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 +include::meta/VK_NV_dedicated_allocation.txt[] -*Name String*:: - +VK_NV_dedicated_allocation+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 27 *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 11ccbf8f..5f0a765a 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 +include::meta/VK_NV_external_memory.txt[] -*Name String*:: - +VK_NV_external_memory+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 57 *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 83821848..3fecc0d2 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 +include::meta/VK_NV_external_memory_capabilities.txt[] -*Name String*:: - +VK_NV_external_memory_capabilities+ -*Extension Type*:: - Instance extension -*Registered Extension Number*:: - 56 *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 66ec3657..ef97bd38 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 +include::meta/VK_NV_external_memory_win32.txt[] -*Name String*:: - +VK_NV_external_memory_win32+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 58 *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 f8942290..d393e9a6 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 +include::meta/VK_NV_fill_rectangle.txt[] -*Name String*:: - +VK_NV_fill_rectangle+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 154 *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 e51e7a63..3a71bff4 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 +include::meta/VK_NV_fragment_coverage_to_color.txt[] -*Name String*:: - +VK_NV_fragment_coverage_to_color+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 150 *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 ce73f388..6d40cefa 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 +include::meta/VK_NV_framebuffer_mixed_samples.txt[] -*Name String*:: - VK_NV_framebuffer_mixed_samples -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 153 *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 b3c61d4f..5bdd4095 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 6dc14610..03c417ec 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 de4997ac..f4fae91d 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 +include::meta/VK_NV_sample_mask_override_coverage.txt[] -*Name String*:: - +VK_NV_sample_mask_override_coverage+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 95 *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 99ea1bd5..f0568afe 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 +include::meta/VK_NV_viewport_array2.txt[] -*Name String*:: - +VK_NV_viewport_array2+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 97 *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 972f8772..10fae0af 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 +include::meta/VK_NV_viewport_swizzle.txt[] -*Name String*:: - +VK_NV_viewport_swizzle+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 99 *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 119cb80e..854f8ced 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 +include::meta/VK_NV_win32_keyed_mutex.txt[] -*Name*:: - +VK_NV_win32_keyed_mutex+ -*Extension Type*:: - Device extension -*Registered Extension Number*:: - 59 *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 ef1628e0..f3809740 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 2bf4049d..3cb92caf 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 e805140c..7cc49fd2 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 3bdc7b4c..49c3daf5 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 a2d21e25..886c6c18 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 00000000..2f37e4ed --- /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 af5117aa..b467288a 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 a2ed53f5..6cdc98f6 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[] + * <> +endif::VK_KHR_external_memory_capabilities[] +ifdef::VK_KHR_external_semaphore_capabilities[] + * <> +endif::VK_KHR_external_semaphore_capabilities[] +ifdef::VK_KHR_external_fence_capabilities[] + * <> +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 5651f9eb..a9aa3378 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 ba65732c..61566d8c 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 +(<>), 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:: +<> 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:: +<>, +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 1bed718f..98fa8ac5 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 64439b18..f70a36d3 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 <> 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 958d2552..f71c1cc9 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 + <>. + * [[VUID-VkImportMemoryWin32HandleInfoKHR-name-01519]] + If pname:name is not `NULL`, it must: obey any requirements listed for + pname:handleType in + <>. **** 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 + <>. **** include::../validity/structs/VkImportMemoryFdInfoKHR.txt[] diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt index b98b83a4..ad3a4bfd 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 <> 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 186a4a6d..1d86d1ef 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 2fc43dc4..acbdfaa8 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 05870019..7373c8fa 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 cd442387..318b798f 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 b00f11e0..d7552478 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 + <> 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 + <> 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 5e7855a5..c5ee0688 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 <> 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 <>. + * [[VUID-VkImportFenceWin32HandleInfoKHR-name-01540]] + If pname:name is not `NULL`, it must: obey any requirements listed for + pname:handleType in <>. **** 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 <> 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 + <>. **** 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 <> 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 + <>. + * [[VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543]] + If pname:name is not `NULL`, it must: obey any requirements listed for + pname:handleType in + <>. **** 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 <> 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 + <>. **** include::../validity/structs/VkImportSemaphoreFdInfoKHR.txt[] @@ -3575,6 +3588,27 @@ including those performed by <>. 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 00000000..20bd068f --- /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 5b89f4d8..00000000 --- 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 2da32021..00000000 --- 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 00000000..eebabd12 --- /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 00000000..5bed23f6 --- /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})|#{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 = '<>>' + + # 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;', + '}', + ''] + + def process document, output + output.sub! '', 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 4c159c63..7065fcd5 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 00000000..c6752e54 --- /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 891e50ce..8fee463f 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 00000000..76ac9af5 Binary files /dev/null and b/doc/specs/vulkan/images/fragment_mask.png differ diff --git a/doc/specs/vulkan/makeAllExts b/doc/specs/vulkan/makeAllExts index fabf373e..884a3569 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 22bc78d1..8a7bbaf2 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 98a62b88..b35cde69 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 da3ae2af..b544cf33 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 2e258a76..c65e7ab0 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 [*]+)( *)(?P.*)', 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 0d138bad..f6258d91 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 <>, 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 <>. 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 92b7e0f2..db47cd4f 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 97f8e9f5..bf77a930 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 3bf43c0b..cf24fec2 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 00000000..bc0190de --- /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 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 - element to query + # extname - extension name from the '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 bd13d000..7fb67200 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 79ca8d24..7dc5a790 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 f0a1cd62..84510b41 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. // Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 59 +#define VK_HEADER_VERSION 60 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -243,6 +243,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT; typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV; typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV; + typedef VkFlags VkValidationCacheCreateFlagsEXT; Types which can be void pointers or class pointers, selected at compile time VK_DEFINE_HANDLE(VkInstance) @@ -273,6 +274,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplateKHR) + VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) WSI extensions VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) @@ -380,6 +382,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. + WSI extensions @@ -2436,6 +2439,54 @@ private version is maintained in the 1.0 branch of the member gitlab server. VkBool32 filterMinmaxSingleComponentFormats VkBool32 filterMinmaxImageComponentMapping + + float x + float y + + + VkStructureType sType + const void* pNext + VkSampleCountFlagBits sampleLocationsPerPixel + VkExtent2D sampleLocationGridSize + uint32_t sampleLocationsCount + const VkSampleLocationEXT* pSampleLocations + + + uint32_t attachmentIndex + VkSampleLocationsInfoEXT sampleLocationsInfo + + + uint32_t subpassIndex + VkSampleLocationsInfoEXT sampleLocationsInfo + + + VkStructureType sType + const void* pNext + uint32_t attachmentInitialSampleLocationsCount + const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations + uint32_t postSubpassSampleLocationsCount + const VkSubpassSampleLocationsEXT* pSubpassSampleLocations + + + VkStructureType sType + const void* pNext + VkBool32 sampleLocationsEnable + VkSampleLocationsInfoEXT sampleLocationsInfo + + + VkStructureType sType + void* pNext + VkSampleCountFlags sampleLocationSampleCounts + VkExtent2D maxSampleLocationGridSize + float sampleLocationCoordinateRange[2] + uint32_t sampleLocationSubPixelBits + VkBool32 variableSampleLocations + + + VkStructureType sType + void* pNext + VkExtent2D maxSampleLocationGridSize + VkStructureType sType const void* pNext @@ -2472,6 +2523,18 @@ private version is maintained in the 1.0 branch of the member gitlab server. uint32_t coverageModulationTableCount const float* pCoverageModulationTable + + VkStructureType sType + const void* pNext + VkValidationCacheCreateFlagsEXT flags + size_t initialDataSize + const void* pInitialData + + + VkStructureType sType + const void* pNext + VkValidationCacheEXT validationCache + Vulkan enumerant (token) definitions @@ -3317,6 +3380,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. + @@ -3471,6 +3535,9 @@ private version is maintained in the 1.0 branch of the member gitlab server. + + + @@ -5107,6 +5174,17 @@ private version is maintained in the 1.0 branch of the member gitlab server. uint32_t discardRectangleCount const VkRect2D* pDiscardRectangles + + void vkCmdSetSampleLocationsEXT + VkCommandBuffer commandBuffer + const VkSampleLocationsInfoEXT* pSampleLocationsInfo + + + void vkGetPhysicalDeviceMultisamplePropertiesEXT + VkPhysicalDevice physicalDevice + VkSampleCountFlagBits samples + VkMultisamplePropertiesEXT* pMultisampleProperties + VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR VkPhysicalDevice physicalDevice @@ -5139,6 +5217,33 @@ private version is maintained in the 1.0 branch of the member gitlab server. uint32_t* pSparseMemoryRequirementCount VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements + + VkResult vkCreateValidationCacheEXT + VkDevice device + const VkValidationCacheCreateInfoEXT* pCreateInfo + const VkAllocationCallbacks* pAllocator + VkValidationCacheEXT* pValidationCache + + + void vkDestroyValidationCacheEXT + VkDevice device + VkValidationCacheEXT validationCache + const VkAllocationCallbacks* pAllocator + + + VkResult vkGetValidationCacheDataEXT + VkDevice device + VkValidationCacheEXT validationCache + size_t* pDataSize + void* pData + + + VkResult vkMergeValidationCachesEXT + VkDevice device + VkValidationCacheEXT dstCache + uint32_t srcCacheCount + const VkValidationCacheEXT* pSrcCaches + @@ -5367,7 +5472,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5382,7 +5487,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5399,7 +5504,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5425,7 +5530,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5435,7 +5540,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5446,7 +5551,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5457,7 +5562,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5468,7 +5573,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5479,7 +5584,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5489,7 +5594,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5536,7 +5641,6 @@ private version is maintained in the 1.0 branch of the member gitlab server. - @@ -5848,7 +5952,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5859,7 +5963,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5898,7 +6002,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -5909,18 +6013,11 @@ private version is maintained in the 1.0 branch of the member gitlab server. - - - - - - - @@ -5928,26 +6025,37 @@ private version is maintained in the 1.0 branch of the member gitlab server. + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - @@ -6065,7 +6173,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6081,7 +6189,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6095,7 +6203,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6130,7 +6238,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6146,7 +6254,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6282,7 +6390,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6302,7 +6410,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6360,7 +6468,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6439,7 +6547,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6479,7 +6587,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6628,7 +6736,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + @@ -6692,16 +6800,16 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + - + - - + + @@ -6734,10 +6842,27 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + - - + + + + + + + + + + + + + + + + + + + @@ -6911,10 +7036,22 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + - - + + + + + + + + + + + + + + @@ -6959,5 +7096,17 @@ private version is maintained in the 1.0 branch of the member gitlab server. + + + + + + + + + + + + diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index a297bae4..e59fa5e6 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"