Update/move some Vulkan protocol files

Change-Id: I4e78243b89a3aa52aa179524f19e238accebe53c
diff --git a/protocols/emugen b/protocols/emugen
deleted file mode 120000
index cdab8b6..0000000
--- a/protocols/emugen
+++ /dev/null
@@ -1 +0,0 @@
-../../../../external/qemu/android/android-emugl/host/tools/emugen
\ No newline at end of file
diff --git a/protocols/gles1 b/protocols/gles1
deleted file mode 120000
index 8cd2a00..0000000
--- a/protocols/gles1
+++ /dev/null
@@ -1 +0,0 @@
-../../../../external/qemu/android/android-emugl/host/libs/GLESv1_dec
\ No newline at end of file
diff --git a/protocols/gles2 b/protocols/gles2
deleted file mode 120000
index c43d24d..0000000
--- a/protocols/gles2
+++ /dev/null
@@ -1 +0,0 @@
-../../../../external/qemu/android/android-emugl/host/libs/GLESv2_dec
\ No newline at end of file
diff --git a/protocols/renderControl b/protocols/renderControl
deleted file mode 120000
index d113b7b..0000000
--- a/protocols/renderControl
+++ /dev/null
@@ -1 +0,0 @@
-../../../../external/qemu/android/android-emugl/host/libs/renderControl_dec
\ No newline at end of file
diff --git a/protocols/vulkan/BUILD.adoc b/protocols/vulkan/BUILD.adoc
new file mode 100644
index 0000000..54a0b69
--- /dev/null
+++ b/protocols/vulkan/BUILD.adoc
@@ -0,0 +1,874 @@
+= Vulkan^(R)^ Specification Build Instructions and Notes
+:toc2:
+:toclevels: 2
+
+
+[[intro]]
+== Introduction
+
+This README describes important stuff for getting the Vulkan API
+specification and reference pages building properly.
+
+
+[[building]]
+== Building The Spec
+
+First, clone the Khronos Github repository containing the Vulkan
+specification to your local Linux, Windows, or Mac PC. The repository is
+located at https://github.com/KhronosGroup/Vulkan-Docs/ .
+
+Next, install all the necessary build tools (see <<depends,Software
+Dependencies>> below).
+
+Finally, go to the root directory of your local repository clone, and
+
+    $ make html
+
+builds an HTML5 specification output.
+
+    $ make all
+
+builds the spec targets `html`, `pdf`, `styleguide`, `manhtml`, `manpdf`,
+`manhtmlpages`, `checkinc`, and `checklinks`.
+
+[NOTE]
+.Notes
+====
+  * `make all` takes a long time to run, and generates outputs that are
+    irrelevant for most users.
+    Usually `make html` is used to update the HTML target, which is all
+    that's needed for quick verification and viewing of changes.
+  * The default `make` options build a Vulkan 1.1 specification with no
+    optional extensions.
+  * The `validusage` target is not built as part of `make all`, due to it
+    needing to be built with all extensions enabled. Building this target
+    will fail otherwise.
+====
+
+These targets generate a variety of output documents in the directory
+specified by the Makefile variable `$(OUTDIR)` (by default, `out`).
+The checked-in file `out/index.html` links to all these
+targets, or they can individually be found as follows:
+
+  * API spec:
+  ** `html` - HTML5 in `$(OUTDIR)/html/vkspec.html`
+  ** `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`
+  ** `manhtmlpages` - File-per-entry-point HTML in `$(OUTDIR)/man/html/*`
+  * Validator output:
+  ** `checkinc` - List of commands, structs, etc.
+     missing from the API spec in `$(OUTDIR)/checks/notInSpec.txt`
+  ** `checklinks` - Validator script output for API spec in
+     `$(OUTDIR)/checks/specErrs.txt` and for reference pages in
+     `$(OUTDIR)/checks/manErrs.txt`
+  * Valid usage database:
+  ** `validusage` - json database of all valid usage statements in the
+     specification. Must be built with ./makeAllExts (for now).
+     Output in `$(OUTDIR)/validation/validusage.json`.
+     A validated schema for the output of this is stored in
+     `$(CURDIR)/config/vu-to-json/vu_schema.json`
+
+Once you have the basic build working, an appropriate parallelization option
+to make, such as
+
+----
+make -j 8
+----
+
+may significantly speed up the reference page builds.
+
+
+[[build-bugs]]
+=== Asciidoctor Build Errors
+
+If you see an error like this from the `pdf` target:
+
+    /home/jon/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/ruby-enum-0.7.1/lib/ruby-enum/enum.rb:34:in `const_set': asciidoctor: FAILED: /home/tree/git/vulkan/vkspec.txt: Failed to load AsciiDoc document - wrong constant name default (NameError)
+
+then try <<ruby-enum-downgrade,downgrading ruby-enum>>
+as described below
+
+
+[[building-versions]]
+=== Building Specifications For Different API Versions
+
+The `Makefile` defaults to building a Vulkan 1.1 specification.
+This is controlled by asciidoc attributes passed in the Makefile variable
+`$(VERSIONS)`
+To instead build a Vulkan 1.0 specification, pass
+
+----
+VERSIONS="VK_VERSION_1_0"
+----
+
+on the `make` command line.
+
+
+[[building-extensions]]
+=== Building With Extensions Included
+
+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.
+
+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)`.
+There are several helper scripts which clean these files and then build one
+or more specified targets for specified extensions:
+
+  * `makeExt` - generate outputs with one or more extensions enabled.
+    Usage is `makeExt extension-names target(s)`, where `extension-names` is
+    a space-separated list of extension names, such as
+    `VK_EXT_debug_report`.
+    If more than one extension is specified, `extension-names` must be
+    quoted on the command line.
+  * `makeKHR` - generate outputs with all Khronos (`VK_KHR_*`) extensions
+    enabled.
+    Usage is `makeKHR target(s)`.
+
+The `target(s)` passed to these scripts are arbitrary `make` options, and
+can be used to set Makefile variables and options, as well as specify actual
+build targets.
+
+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
+`(with extension VK_extension_name)`.
+The `makeExt` and `makeKHR` 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 Makefile variable `$(EXTENSIONS)` define the base
+extensions to be enabled by the specification, and these will not be
+highlighted in the output.
+Extensions in the Makefile variable `$(DIFFEXTENSIONS)` define the set of
+extensions whose changes to the text will be highlighted when they are
+enabled.
+Any extensions in both variables will be treated as if they were only
+included in `$(DIFFEXTENSIONS)`.
+`$(DIFFEXTENSIONS)` can be set when using the `make*` scripts described
+above.
+
+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
+
+If you are just testing asciidoc formatting, macros, stylesheets, etc., you
+may want to edit `vkspec.txt` to just include your test code.
+The asciidoctor HTML build is very fast, even for the whole Specification,
+but PDF builds take several minutes.
+
+
+=== Images Used In The Specification
+
+All images used in the specification are in the `images/` directory in SVG
+format, and were created with Inkscape.
+We recommend using Inkscape to modify or create new images, as we've had
+problems using SVG files created by some other tools, especially in the PDF
+builds.
+
+
+=== Validation Scripts
+
+[NOTE]
+.Note
+====
+The validation scripts have not been kept up to date, and probably don't
+work properly at present due to numerous changes in the macro and
+conditional markup used in the specification sources.
+====
+
+There are a several Makefile targets which look for inconsistencies and
+missing material between the specification and ref pages, and the canonical
+description of the API in `vk.xml` :
+
+  * `checkinc`
+  * `checklinks`
+  * `allchecks` - both `checkinc` and `checklinks`
+
+They are necessarily heuristic since they're dealing with lots of
+hand-written material.
+To use them you'll also need to install:
+
+  * `python3`
+
+The `checkinc` target uses Unix filters to determine which autogenerated API
+include files are used (and not used) in the spec.
+It generates several output files, but the only one you're likely to care
+about is `actual.only`.
+This is a list of the include files which are *not* referenced anywhere in
+the spec, and probably correspond to undocumented material in the spec.
+
+The `checklinks` target validates the various internal tagged links in the
+man pages and spec (e.g. the `fname:vkFuncBlah`, `sname:VkStructBlah`, etc.)
+against the canonical description of the API in `vk.xml`.
+It generates two output files, `manErrs.txt` and `specErrs.txt`, which
+report problematic tags and the filenames/lines on which those tags were
+found.
+
+
+[[macros]]
+== Our Asciidoc Macros
+
+We use a bunch of custom macros in the reference pages and API spec asciidoc
+sources.
+The validator scripts rely on these macros as part of their sanity checks,
+and you should use the macros whenever referring to an API command, struct,
+token, or enum name, so the documents are semantically tagged and more
+easily verifiable.
+
+The supported macros are defined in the `config/vulkan-macros/extension.rb`
+asciidoctor extension script.
+
+The tags used are described in the style guide (`styleguide.txt`).
+
+We (may) eventually tool up the spec and ref pages to the point that
+anywhere there's a type or token referred to, clicking on (or perhaps
+hovering over) it in the HTML view and be taken to the definition of that
+type/token.
+That will take some more plumbing work to tag the stuff in the autogenerated
+include files, and do something sensible in the spec (e.g. resolve links to
+internal references).
+
+Most of these macros deeply need more intuitive names.
+
+
+[[refpages]]
+== Reference Pages
+
+The reference pages are extracted from the API Specification source, which
+has been tagged to help identify boundaries of language talking about
+different commands, structures, enumerants, and other types.
+A set of Python scripts extract and lightly massage the relevant tagged
+language into corresponding ref page.
+Pages without corresponding content in the API spec are generated
+automatically, when possible (e.g. for `Vk*FlagBits` pages).
+
+If for some reason you want to regenerate the ref pages from scratch
+yourself, you can do so by
+
+----
+rm man/apispec.txt
+make apispec.txt
+----
+
+The `genRef.py` script will generate many warnings, but most are just
+reminders that some pages are automatically generated.
+If everything is working correctly, all the `man/*.txt` files will be
+regenerated, but their contents will not change.
+
+If you add new API features to the Specification in a branch, make sure that
+the commands have the required tagging and that ref pages are generated for
+them, and build properly.
+
+
+[[styles]]
+== Our stylesheets
+
+We use an HTML stylesheet `config/khronos.css` derived from the
+http://asciidoctor.org/docs/produce-custom-themes-using-asciidoctor-stylesheet-factory/[Asciidoctor
+stylesheet factory] "`colony`" theme, with the default Arial font family
+replaced by the sans-serif https://en.wikipedia.org/wiki/Noto_fonts[Noto
+font family].
+
+
+=== Marking Normative Language
+
+Normative language is marked as *bold*, and also with the [purple]#purple#
+role for HTML output.
+It can be used to mark entire paragraphs or spans of words.
+In addition, the normative terminology macros, such as must: and may: and
+cannot:, always use this role.
+
+The formatting of normative language depends on the stylesheet.
+Currently it just comes out in purple.
+We may add a way to disable this formatting at build time.
+
+
+[[equations]]
+== Imbedding Equations
+
+Where possible, equations should be written using straight asciidoc markup
+with the _eq_ role.
+This covers many common equations and is faster than the alternatives.
+A variety of mathematical symbols are defined using attributes in the
+included `config/attribs.txt`.
+These symbols are defined using attribute names the same as the comparable
+LaTeX macro names, where possible.
+
+For more complex equations, such as multi-case statements, matrices, and
+complex fractions, equations should be written using the latexmath: inline
+and block macros.
+The contents of the latexmath: blocks should be LaTeX math notation.
+LaTeX math markup delimiters are now inserted by the asciidoctor toolchain.
+
+LaTeX math is passed through unmodified to all HTML output forms, which is
+subsequently rendered with the KaTeX engine when the HTML is loaded.
+A local copy of the KaTeX release is kept in `katex/` and
+copied to the HTML output directory during spec generation.
+Math is processed into SVGs via asciidoctor-mathematical for PDF output.
+
+The following caveats apply:
+
+  * The special characters `<` , `>` , and `&` can currently be used only in
+    +++[latexmath]+++ block macros, not in +++latexmath:[]+++ inline macros.
+    Instead use `\lt`, `\leq`, `\gt`, and `\geq` for `<`, `<=`, `>`, and
+    `>=` respectively.
+    `&` is an alignment construct for multiline equations, and should only
+    appear in block macros anyway.
+  * AMSmath environments (e.g. pass:[\begin{equation*}], pass:[{align*}],
+    etc.) cannot be used in KaTeX at present, and have been replaced with
+    constructs supported by KaTeX such as pass:[{aligned}].
+  * Arbitrary LaTeX constructs cannot be used.
+    KaTeX and asciidoctor-mathematical are only equation renderers, not full
+    LaTeX engines.
+    Imbedding LaTeX like \Large or pass:[\hbox{\tt\small VK\_FOO}] may not
+    work in any of the backends, and should be avoided.
+
+See the "`Vulkan Documentation and Extensions`" document for more details of
+supported LaTeX math constructs.
+
+
+[[anchors]]
+== Asciidoc Anchors And Xrefs
+
+In the API spec, sections can have anchors (labels) applied with the
+following syntax.
+In general the anchor should immediately precede the chapter or section
+title and should use the form '+++[[chapter-section-label]]+++'.
+For example,
+
+For example, in chapter `synchronization.txt`:
+
+----
+[[synchronization-primitives]]
+Synchronization Primitives
+----
+
+Cross-references to those anchors can then be generated with, for example,
+
+----
+See the <<synchronization-primitives>> section for discussion of fences,
+semaphores, and events.
+----
+
+You can also add anchors on arbitrary paragraphs, using a similar naming
+scheme.
+
+Anything whose definition comes from one of the autogenerated API include
+files (`.txt` files in the directories `basetypes`, `enums`, `flags`,
+`funcpointers`, `handles`, `protos`, and `structs`) has a corresponding
+anchor whose name is the name of the function, struct, etc.
+being defined.
+Therefore you can say something like:
+
+----
+Fences are used with the +++<<vkQueueSubmit>>+++ command...
+----
+
+
+[[depends]]
+== Software Dependencies
+
+This section describes the software components used by the Vulkan spec
+toolchain.
+
+Before building the Vulkan spec, you must install the following tools.
+Minimum versions known to be working are shown. Later versions will probably
+work at least as well.
+
+  * GNU make (make version: 4.0.8-1; older versions probably OK)
+  * Python 3 (python, version: 3.4.2)
+  * Ruby (ruby, version: 2.3.3)
+  ** The Ruby development package (ruby-dev) may also be required in some
+     environments.
+  * Git command-line client (git, version: 2.1.4).
+    The build can progress without a git client, but branch/commit
+    information will be omitted from the build.
+    Any version supporting the following operations should work:
+  ** `git symbolic-ref --short HEAD`
+  ** `git log -1 --format="%H"`
+  * Ghostscript (ghostscript, version: 9.10).
+    This is for the PDF build, and it can still progress without it.
+    Ghostscript is used to optimize the size of the PDF, so will be a lot
+    smaller if it is included.
+
+The following Ruby Gems and platform package dependencies must also be
+installed.
+This process is described in more detail for individual platforms and
+environment managers below.
+Please read the remainder of this document (other than platform-specific
+parts you don't use) completely before trying to install.
+
+  * Asciidoctor (asciidoctor, version: 1.5.6.1)
+  * Coderay (coderay, version 1.1.2)
+  * JSON Schema (json-schema, version 2.8.0)
+  * Asciidoctor PDF (asciidoctor-pdf, version: 1.5.0.alpha16)
+  * Asciidoctor Mathematical (asciidoctor-mathematical, version 0.2.2)
+  * https://github.com/asciidoctor/asciidoctor-mathematical#dependencies[Dependencies
+    for asciidoctor-mathematical] (There are a lot of these!)
+  * KaTeX distribution (version 0.7.0 from https://github.com/Khan/KaTeX .
+    This is cached under `katex/`, and need not be
+    installed from github.
+
+.Note
+[NOTE]
+====
+Older versions of these packages may work, but are not recommended.
+In particular, the latest versions of asciidoctor-pdf and
+asciidoctor-mathematical contain important patches working around issues
+we've discovered, and those patches may not be present in earlier versions.
+====
+
+Only the `asciidoctor` and `coderay` gems are needed if you don't intend to
+build PDF versions of the spec and supporting documents.
+
+`json-schema` is only required in order to validate the output of the valid
+usage extraction scripts to a JSON file.
+If not installed, validation will be skipped when the JSON is built.
+
+[NOTE]
+.Note
+====
+While it's easier to install just the toolchain components for HTML builds,
+people submitting MRs with substantial changes to the Specification are
+responsible for verifying that their branches build *both* `html` and `pdf`
+targets.
+====
+
+Platform-specific toolchain instructions follow:
+
+  * Microsoft Windows
+  ** <<depends-ubuntu, Ubuntu / Windows 10>>
+  ** <<depends-mingw,MinGW>> (PDF builds not tested)
+  ** <<depends-cygwin, Cygwin>>
+  * <<depends-osx,Mac OS X>>
+  * <<depends-linux,Linux (Debian, Ubuntu, etc.)>>
+
+
+[[depends-windows]]
+=== Windows (General)
+
+Most of the dependencies on Linux packages are light enough that it's
+possible to build the spec natively in Windows, but it means bypassing the
+makefile and calling functions directly.
+This might be solved in future.
+For now, there are three options for Windows users: Ubuntu / Windows 10,
+MinGW, or Cygwin.
+
+
+[[depends-ubuntu]]
+==== Ubuntu / Windows 10
+
+When using the "`Ubuntu Subsystem`" for Windows 10, most dependencies can be
+installed via apt-get:
+
+----
+sudo apt-get -qq -y install build-essential python3 git cmake bison flex \
+    libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev \
+    libpango1.0-dev ttf-lyx gtk-doc-tools ghostscript
+----
+
+The default ruby packages on Ubuntu are fairly out of date.
+Ubuntu only provides `ruby` and `ruby2.0` - the latter is multiple revisions
+behind the current stable branch, and would require wrangling to get the
+makefile working with it.
+
+Luckily, there are better options; either https://rvm.io[rvm] or
+https://github.com/rbenv/rbenv[rbenv] is recommended to install a more
+recent version.
+
+[NOTE]
+.Note
+====
+
+  * If you are new to Ruby, you should *completely remove* (through the
+    package manager, e.g. `sudo apt-get remove *packagename*`) all existing
+    Ruby and asciidoctor infrastructure on your machine before trying to use
+    rvm or rbenv for the first time.
+    `dpkg -l | egrep 'asciidoctor|ruby|rbenv|rvm'` will give you a list of
+    candidate package names to remove.
+  ** If you already have a favorite Ruby package manager, ignore this
+     advice, and just install the required OS packages and gems.
+  * In addition, `rvm` and `rbenv` are *mutually incompatible*.
+    They both rely on inserting shims and `$PATH` modifications in your bash
+    shell.
+    If you already have one of these installed and are familiar with it,
+    it's probably best to stay with that one.
+    One of the editors, who is new to Ruby, found `rbenv` far more
+    comprehensible than `rvm`.
+    The other editor likes `rvm` better.
+  ** Neither `rvm` nor `rbenv` work, out of the box, when invoked from
+     non-Bash shells like tcsh.
+     This can be hacked up by setting the right environment variables and
+     PATH additions based on a bash environment.
+  * Most of the tools on Bash for Windows are quite happy with Windows line
+    endings (CR LF), but bash scripts expect Unix line endings (LF).
+    The file `.gitattributes` at the top of the vulkan tree in the 1.0
+    branch forces such scripts to be checked out with the proper line
+    endings on non-Linux platforms.
+    If you add new scripts whose names don't end in `.sh`, they should be
+    included in .gitattributes as well.
+====
+
+
+[[depends-ubuntu-rbenv]]
+===== Ubuntu/Windows 10 Using Rbenv
+
+Rbenv is a lighter-weight Ruby environment manager with less functionality
+than rvm.
+Its primary task is to manage different Ruby versions, while rvm has
+additional functionality such as managing "`gemsets`" that is irrelevant to
+our needs.
+
+A complete installation script for the toolchain on Ubuntu for Windows,
+developed on an essentially out-of-the-box environment, follows.
+If you try this, don't try to execute the entire thing at once.
+Do each step separately in case of errors we didn't encounter.
+
+----
+# Install packages needed by `ruby_build` and by toolchain components.
+# See https://github.com/rbenv/ruby-build/wiki and
+# https://github.com/asciidoctor/asciidoctor-mathematical#dependencies
+
+sudo apt-get install autoconf bison build-essential libssl-dev \
+    libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev \
+    libffi-dev libgdbm3 libgdbm-dev cmake libxml2 \
+    libxml2-dev flex pkg-config libglib2.0-dev \
+    libcairo-dev libpango1.0-dev libgdk-pixbuf2.0-dev \
+    libpangocairo-1.0
+
+# Install rbenv from https://github.com/rbenv/rbenv
+git clone https://github.com/rbenv/rbenv.git ~/.rbenv
+
+# Set path to shim layers in .bashrc
+echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bashrc
+
+~/.rbenv/bin/rbenv init
+
+# Set .rbenv environment variables in .bashrc
+echo 'eval "$(rbenv init -)"' >> .bashrc
+
+# Restart your shell (e.g. open a new terminal window). Note that
+# you do not need to use the `-l` option, since the modifications
+# were made to .bashrc rather than .bash_profile. If successful,
+# `type rbenv` should print 'rbenv is a function' followed by code.
+
+# Install `ruby_build` plugin from https://github.com/rbenv/ruby-build
+
+git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
+
+# Install Ruby 2.3.3
+# This takes in excess of 20 min. to build!
+# https://github.com/rbenv/ruby-build/issues/1054#issuecomment-276934761
+# suggests:
+# "You can speed up Ruby installs by avoiding generating ri/RDoc
+# documentation for them:
+# RUBY_CONFIGURE_OPTS=--disable-install-doc rbenv install 2.3.3
+# We have not tried this.
+
+rbenv install 2.3.3
+
+# Configure rbenv globally to always use Ruby 2.3.3.
+echo "2.3.3" > ~/.rbenv/version
+
+# Finally, install toolchain components.
+# asciidoctor-mathematical also takes in excess of 20 min. to build!
+# The same RUBY_CONFIGURE_OPTS advice above may apply here as well.
+
+gem install asciidoctor coderay json-schema
+gem install --pre asciidoctor-pdf
+MATHEMATICAL_SKIP_STRDUP=1 gem install asciidoctor-mathematical
+----
+
+
+[[depends-ubuntu-rvm]]
+===== Ubuntu/Windows 10 Using RVM
+
+Here are (sparser) instructions for using rvm to setup version 2.3.x:
+
+----
+gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
+\curl -sSL https://get.rvm.io | bash -s stable --ruby
+source ~/.rvm/scripts/rvm
+rvm install ruby-2.3
+rvm use ruby-2.3
+----
+
+NOTE: Windows 10 Bash will need to be launched with the "-l" option
+appended, so that it runs a login shell; otherwise RVM won't function
+correctly on future launches.
+
+
+[[depends-ubuntu-sys]]
+===== Ubuntu 16.04 using system Ruby
+
+The Ubuntu 16.04.1 default Ruby install (version 2.3.1) seems to be
+up-to-date enough to run all the required gems, but also needs the
+`ruby-dev` package installed through the package manager.
+
+In addition, the library
+`/var/lib/gems/2.3.0/gems/mathematical-1.6.7/ext/mathematical/lib/liblasem.so`
+has to be copied or linked into a directory where the loader can find it.
+This requirement appears to be due to a problem with the
+asciidoctor-mathematical build process.
+
+
+[[depends-mingw]]
+==== MinGW
+
+MinGW can be obtained here: http://www.mingw.org/
+
+Once the installer has run its initial setup, following the
+http://www.mingw.org/wiki/Getting_Started[instructions on the website], you
+should install the `mingw-developer-tools`, `mingw-base` and `msys-base`
+packages.
+The `msys-base` package allows you to use a bash terminal from windows with
+whatever is normally in your path on Windows, as well as the unix tools
+installed by MinGW.
+
+In the native Windows environment, you should also install the following
+native packages:
+
+  * Python 3.x (https://www.python.org/downloads/)
+  * Ruby 2.x (https://rubyinstaller.org/)
+  * Git command-line client (https://git-scm.com/download)
+
+Once this is setup, and the necessary <<depends-gems,Ruby Gems>> are
+installed, launch the `msys` bash shell, and navigate to the spec Makefile.
+From there, you'll need to set `PYTHON=` to the location of your python
+executable for version 3.x before your make command - but otherwise
+everything other than pdf builds should just work.
+
+NOTE: Building the PDF spec via this path has not yet been tested but *may*
+be possible - liblasem is the main issue and it looks like there is now a
+mingw32 build of it available.
+
+
+[[depends-cygwin]]
+==== Cygwin
+
+When installing Cygwin, you should install the following packages via
+`setup`:
+
+----
+// "curl" is only used to download fonts, can be done in another way
+autoconf
+bison
+cmake
+curl
+flex
+gcc-core
+gcc-g++
+ghostscript
+git
+libbz2-devel
+libcairo-devel
+libcairo2
+libffi-devel
+libgdk_pixbuf2.0-devel
+libiconv
+libiconv-devel
+liblasem0.4-devel
+libpango1.0-devel
+libpango1.0_0
+libxml2
+libxml2-devel
+make
+python3
+ruby
+ruby-devel
+----
+
+NOTE: Native versions of some of these packages are usable, but care should
+be taken for incompatibilities with various parts of cygwin - e.g. paths.
+Ruby in particular is unable to resolve Windows paths correctly via the
+native version.
+Python and Git for Windows can be used, though for Python you'll need to set
+the path to it via the PYTHON environment variable, before calling make.
+
+When it comes to installing the mathematical ruby gem, there are two things
+that will require tweaking to get it working.
+Firstly, instead of:
+
+----
+MATHEMATICAL_SKIP_STRDUP=1 gem install asciidoctor-mathematical
+----
+
+You should use
+
+----
+MATHEMATICAL_USE_SYSTEM_LASEM=1 gem install asciidoctor-mathematical
+----
+
+The latter causes it to use the lasem package already installed, rather than
+trying to build a fresh one.
+
+Recent versions of some gems break the installation process and/or pdf build
+on some systems. If the above doesn't work, try:
+
+----
+MATHEMATICAL_USE_SYSTEM_LASEM=1 gem install mathematical -v 1.6.7
+gem install ruby-enum -v 0.7.0
+gem install asciidoctor-mathematical
+----
+
+The mathematical gem also looks for "liblasem" rather than "liblasem0.4" as
+installed by the lasem0.4-devel package, so it is necessary to add a symlink
+to your /lib directory using:
+
+----
+ln -s /lib/liblasem-0.4.dll.a /lib/liblasem.dll.a
+----
+
+<<Ruby Gems>> are not installed to a location that is in your path normally.
+Gems are installed to `~/bin/` - you should add this to your path before
+calling make:
+
+    export PATH=~/bin:$PATH
+
+Finally, you'll need to manually install fonts for lasem via the following
+commands:
+
+----
+mkdir /usr/share/fonts/truetype cd /usr/share/fonts/truetype
+curl -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmex10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmmi10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmr10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmsy10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/esint10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/eufm10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msam10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msbm10.ttf
+----
+
+
+[[depends-osx]]
+=== Mac OS X
+
+Mac OS X should work in the same way as for ubuntu by using the Homebrew
+package manager, with the exception that you can simply install the ruby
+package via `brew` rather than using a ruby-specific version manager.
+
+You'll likely also need to install additional fonts for the PDF build via
+mathematical, which you can do with:
+
+----
+cd ~/Library/Fonts
+curl -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmex10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmmi10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmr10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmsy10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/esint10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/eufm10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msam10.ttf \
+     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msbm10.ttf
+----
+
+Then install the required <<depends-gems,Ruby Gems>>.
+
+
+[[depends-linux]]
+=== Linux (Debian, Ubuntu, etc.)
+
+The instructions for the <<depends-ubuntu,Ubuntu / Windows 10>> installation
+are generally applicable to native Linux environments using Debian packages,
+such as Debian and Ubuntu, although the exact list of packages to install
+may differ.
+Other distributions using different package managers, such as RPM (Fedora)
+and Yum (SuSE) will have different requirements.
+
+Using `rbenv` or `rvm` is neccessary, since the system Ruby packages are
+often well out of date.
+
+Once the environment manager, Ruby, and `ruby_build` have been installed,
+install the required <<depends-gems,Ruby Gems>>.
+
+
+[[depends-gems]]
+=== Ruby Gems
+
+The following ruby gems can be installed directly via the `gem install`
+command, once the platform is set up:
+
+----
+gem install rake asciidoctor coderay json-schema
+
+# Required only for pdf builds
+MATHEMATICAL_SKIP_STRDUP=1 gem install asciidoctor-mathematical
+gem install --pre asciidoctor-pdf
+----
+
+[[ruby-enum-downgrade]]
+==== Ruby Gem Versioning Errors
+
+*ruby-enum*
+
+Make sure you are using ruby-enum 0.7.1 or later, and mathematical 1.6.8 or
+later. If you are forced to use earlier versions, see
+https://github.com/gjtorikian/mathematical/issues/69 for a report of a
+related versioning problem.
+
+
+*prawn*
+
+Make sure you are using prawn 2.2.1 or later, and prawn-templates 0.0.5 or
+later. Incompatibilities between asciidoctor-pdf and earlier versions of
+these gems affects the PDF build. See
+https://github.com/KhronosGroup/Vulkan-Docs/issues/476
+
+
+[[history]]
+== Revision History
+
+  * 2018-03-13 - Rename to BUILD.adoc and update for new directory
+    structure.
+  * 2018-03-05 - Update README for Vulkan 1.1 release.
+  * 2017-03-20 - Add description of prawn versioning problem and how to fix
+    it.
+  * 2017-03-06 - Add description of ruby-enum versioning problem and how to
+    fix it.
+  * 2017-02-13 - Move some comments here from ../../../README.md. Tweak
+    asciidoctor markup to more clearly delineate shell command blocks.
+  * 2017-02-10 - Add more Ruby installation guidelines and reflow the
+    document in accordance with the style guide.
+  * 2017-01-31 - Add rbenv instructions and update the README elsewhere.
+  * 2017-01-16 - Modified dependencies for Asciidoctor
+  * 2017-01-06 - Replace MathJax with KaTeX.
+  * 2016-08-25 - Update for the single-branch model.
+  * 2016-07-10 - Update for current state of spec and ref page generation.
+  * 2015-11-11 - Add new can: etc.
+    macros and DBLATEXPREFIX variable.
+  * 2015-09-21 - Convert document to asciidoc and rename to README.md in the
+    hope the gitlab browser will render it in some fashion.
+  * 2015-09-21 - Add descriptions of LaTeX and MathJax math support for all
+    output formats.
+  * 2015-09-02 - Added Cygwin package info.
+  * 2015-09-02 - Initial version documenting macros, required toolchain
+    components and versions, etc.
diff --git a/protocols/vulkan/COPYING.md b/protocols/vulkan/COPYING.md
new file mode 100644
index 0000000..23c84f2
--- /dev/null
+++ b/protocols/vulkan/COPYING.md
@@ -0,0 +1,39 @@
+The files in, and generated output documents from this Vulkan-Docs
+project are under a mix of copyright and license statements. Refer to
+the individual files for specific information. As a general
+guideline:
+
+* The Vulkan Specification asciidoc sources, as well as other documentation
+  which we expect people may wish to regenerate and distributed in other
+  formats - such as the reference pages generated from the Specification
+  source - are under a Creative Commons Attribution 4.0 license.
+** The specification sources have only recently (as of June 2017) been
+   placed under this license. We will now be able to accept pull requests on
+   Github, but there is a related Contribution License Agreement which
+   people proposing PRs to the Vulkan-Docs repository must execute as part
+   of opening the PR.
+* Generated output documents, including the official Vulkan Specification
+  PDF and HTML documents, are under a proprietary Khronos license. See
+  https://www.khronos.org/registry/speccopyright.html . Only Specification
+  documents posted in the Vulkan Registry are official.
+* The Vulkan headers, spec build tools, and spec and registry configuration
+  files are, for the most part, under the Apache 2 license. Some older files
+  are under BSD-like licenses which may eventually be updated to Apache 2 as
+  we have time.
+* There may be some configuration files customized from material shipped
+  with the asciidoc and dblatex distributions. Such files continue under
+  their original copyrights.
+* Some generated, transient files produced during the course of building
+  the specification, headers, or other targets may not have copyrights.
+  These are typically very short asciidoc fragments describing parts of
+  the Vulkan API, and are incorporated by reference into specification
+  or reference page builds.
+* If something is missing a copyright statement and that poses an
+  *actual problem* for whatever you're doing, file an issue on GitHub
+  and we'll eventually correct it in some fashion.
+
+Working with the different Khronos member company IP lawyers to make
+license changes is a very slow process constrained by the Khronos Member
+Agreement and IP Policy as well as by individual company concerns about
+their IP. Do not expect rapid changes in anything having to to with
+copyrights and licensing.
diff --git a/protocols/vulkan/ChangeLog.txt b/protocols/vulkan/ChangeLog.txt
new file mode 100644
index 0000000..acbb060
--- /dev/null
+++ b/protocols/vulkan/ChangeLog.txt
@@ -0,0 +1,4152 @@
+Update Log for the Vulkan-Docs repository on Github. Updates are in reverse
+chronological order starting with the latest public release.
+
+This summarizes the periodic public updates, not individual commits. Updates
+on Github are done as single large patches at the release point, collecting
+together the resolution of many Khronos internal issues, along with any
+public pull requests that have been accepted.
+
+-----------------------------------------------------
+
+Change log for August 13, 2018 Vulkan 1.1.83 spec update:
+
+  * Update release number to 83.
+
+Public Issues:
+
+  * Use [%inline] directive for all SVGs to reduce file size (public pull
+    request 734).
+  * Convert XML `value` aliases into \<alias> tags (public pull request
+    747).
+  * Fix metadoc script showing non-selected extensions (public pull request
+    748).
+  * Reapply public pull request 742 to make
+    ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT part of the
+    graphices pipeline (public pull request 749).
+  * Fix numerous typos related to accidental duplication of words (public
+    pull request 760).
+  * Fix `vk.xml` contact typos (public pull request 761).
+
+
+Internal Issues:
+
+  * Add images to the <<Standard sample locations>> table (internal issue
+    1115).
+  * Add a definition of "`Inherited from`" precision in the
+    <<spirvenv-precision-operation, Precision and Operation of SPIR-V
+    Instructions>> section (internal issue 1314).
+  * Clarify that both built-in and user-defined variables count against the
+    location limits for shader interfaces in the
+    <<interfaces-iointerfaces-locations, Location Assignment>> section
+    (internal issue 1316).
+  * Merge "`required`" capabilities into the <<spirvenv-capabilities-table,
+    list of optional: SPIR-V capabilities>> (internal issue 1320).
+  * Relax the layout matching rules of descriptors referring to only a
+    single aspect of a depth/stencil image, by reference to the new
+    <<resources-image-layouts-matching-rule, Image Layout Matching Rules>>
+    section (internal issue 1346).
+  * Revert extension metadoc generator warning about name mismatches to a
+    diagnostic, due to annoying warnings in build output for conscious
+    choices we've made (internal issue 1351).
+
+Other Issues:
+
+  * Reserve bits for pending vendor extensions.
+  * Make Vulkan consistent with SPIR-V regarding code:DepthReplacing and
+    code:FragDepth in the <<interfaces-builtin-variables, Built-In
+    Variables>> section.
+  * Add missing ChangeLog entries for the previous three spec updates.
+
+-----------------------------------------------------
+
+Change log for July 30, 2018 Vulkan 1.1.82 spec update:
+
+  * Update release number to 82.
+
+Public Issues:
+
+  * Add flink:vkDestroyPipelineLayout valid usage statement that the layout
+    must not have been used with command buffers still in the recording
+    state (public issue 730).
+  * Correct \<unused> tag for elink:VkResult in `vk.xml` (public merge
+    request 746).
+
+Internal Issues:
+
+  * Add a valid usage statement to flink:vkQueueSubmit, and similar language
+    to the definitions of <<synchronization-queue-transfers-acquire, acquire
+    operations>> requiring that an acquire operation follow a previous
+    release of the same subresource (internal issue 1290).
+  * Add <<resources-image-format-features,Image Format Features>> and
+    <<resources-image-view-format-features,Image View Format Features>>
+    sections that precisely define the slink:VkFormatFeatures supported by
+    images and image views, and rewrite valid usage statements to reference
+    these sections instead of duplicating language (internal issue 1310).
+  * Reword and consolidate synchronization valid usage statements for
+    flink:vkCmdPipelineBarrier such that they correctly account for mutiple
+    possible self-dependencies (internal issue 1322).
+  * Change order of <<Standard sample locations>> for 2xMSAA (internal issue
+    1347).
+  * Add definitions of "`<<Correctly Rounded>>`" and "`<<ULP>>`" in the
+    SPIR-V environment appendix, and "`Units in the Last Place (ULP)`" in
+    the glossary.
+
+New Extensions:
+
+  * `VK_NV_device_diagnostic_checkpoints`
+
+-----------------------------------------------------
+
+Change log for July 23, 2018 Vulkan 1.1.81 spec update:
+
+  * Update release number to 81.
+
+Public Issues:
+
+  * Fix missing "`valid`" phrasing in some obscure cases (public pull
+    request 605).
+  * Replace improper use of cannot: referring to the implementation in the
+    description of the
+    <<features-limits-maxUpdateAfterBindDescriptorsInAllPools,
+    pname:maxUpdateAfterBindDescriptorsInAllPools>> limit (public pull
+    request 738).
+  * Reorder description of bits in elink:VkPipelineStageFlagBits and the
+    <<synchronization-pipeline-stages-supported, Supported pipeline stage
+    flags>> table to match their definition order (public pull request 740).
+  * Add description of ename:VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
+    to elink:VkBufferUsageFlagBits (public pull request 741).
+  * Fix value usage statement for slink:VkSubpassDependency stage mask
+    parameters (public pull request 742).
+  * Fix visible markup in registry schema document (public pull request
+    #745).
+
+Internal Issues:
+
+  * Make the <<geometry-invocations, geometry shader invocation
+    description>> and <<shaders-geometry-execution, Geometry Shader
+    Execution>> descriptions consistent with other pipeline stages (internal
+    issue 1325).
+  * Mark the `VK_NV_glsl_shader` extension as deprecated.
+  * Adjust the per-instance vertex attribute offset formula specified by
+    `VK_EXT_vertex_attribute_divisor` for
+    slink:VkVertexInputBindingDivisorDescriptionEXT so that the interaction
+    between pname:firstInstance and pname:divisor matches the OpenGL
+    convention (internal issue 1333).
+
+-----------------------------------------------------
+
+Change log for July 7, 2018 Vulkan 1.1.80 spec update:
+
+  * Update release number to 80.
+
+Public Issues:
+
+  * Remove unused "`API Order`" term from glossary (public issue 657).
+  * Dynamically generate the extension appendix includes based on
+    information in `vk.xml`, including new metadata tags describing
+    deprecated, obsoleted, and promoted extensions (public pull request
+    690).
+
+Internal Issues:
+
+  * Add valid usage statements to flink:vkCmdBindDescriptorSets to keep
+    offsets + range less than or equal to the buffer size (internal issue
+    1174).
+
+New Extensions:
+
+  * `VK_EXT_conditional_render`
+  * `VK_KHR_create_renderpass2` (public issue 736)
+  * `VK_KHR_8bit_storage` (public issue 737)
+
+-----------------------------------------------------
+
+Change log for July 1, 2018 Vulkan 1.1.79 spec update:
+
+  * Update release number to 79.
+
+Public Issues:
+
+  * Add a note to the <<features-required-format-support, Required Format
+    Support>> section clarifying that the required formats don't depend on
+    the used flags (public issue 671).
+  * Add a valid usage statement for flink:vkUpdateDescriptors that was
+    previously described for slink:VkImageSubresourceRange, but not as a
+    valid usage statement (public issue 713).
+  * Modify implicit valid usage generator script to not emit 'must: not be
+    0' for a parameter that is a pointer to a flags field, such as
+    pname:pPeerMemoryFeatures (public issue 729).
+
+Internal Issues:
+
+  * Add definitions of "`obsoleted`" and "`deprecated`", and modify the
+    definition of "`promoted`" in the <<glossary, Glossary>> (internal issue
+    988).
+  * Add language for integer texel output conversions (the conversion is
+    undefined) to the <<textures-output-format-conversion]] Texel Output
+    Format Conversion>> section. Simplify and clarify the floating-point
+    conversion language in the <<fundamentals-general, General
+    Requirements>> section and the new <<fundamentals-fp-conversion,
+    Floating-Point Format Conversions>> section, and remove obsolete
+    language in the format-specific floating-point sections (internal issue
+    1275).
+  * Add the elink:VkVendorId enumerated type to the Vulkan API / XML /
+    header, so reserved Khronos vendor IDs can be referred to symbolically
+    by clients. Note that only Khronos vendor IDs (e.g. non-PCI vendor IDs)
+    are defined (internal issue 1299).
+  * Fix typo in the <<fig-non-strict-lines, Non strict lines>> table
+    (internal issue 1315).
+  * Clean up and simplify the
+    <<features-formats-requiring-sampler-ycbcr-conversion, YCbCr format
+    properties>> table and use symbols consistently with other tables. Add a
+    column for the number of planes.
+  * Add code:Float16 to the <<spirvenv-capabilities-table, List of optional
+    SPIR-V capabilities>> for the `VK_AMD_gpu_shader_half_float` extension.
+
+-----------------------------------------------------
+
+Change log for June 18, 2018 Vulkan 1.1.78 spec update:
+
+  * Update release number to 78.
+
+Public Issues:
+
+  * Change markup so parameter descriptions include links to structures,
+    instead of just their names (public issue 697).
+  * Resume publishing updated Vulkan 1.0 + KHR extensions and Vulkan 1.0 +
+    all extensions versions of the specification (public issue 722).
+  * Reapply fixes from public pull request 698 for
+    `VK_ANDROID_external_memory_android_hardware_buffer`, which accidentally
+    were reverted at some point (public pull request 724).
+  * Fix undefined format valid usage statements for slink:VkImageCreateInfo
+    in the presence of the
+    `VK_ANDROID_external_memory_android_hardware_buffer` extension (public
+    pull request 725).
+  * Miscellaneous markup consistency fixes (public pull request 728).
+
+Internal Issues:
+
+  * When building specifications containing vendor extensions, add terms to
+    the Khronos spec copyright specifying that the result is not a ratified
+    specification (internal issue 739).
+  * Change the value of the
+    pname:maxDescriptorSetUpdateAfterBindUniformBuffers minimum limit to 72
+    (6 times pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers) in
+    the <<features-limits-required, Required Limits>> table (internal issue
+    1300).
+
+Other Issues:
+
+  * Fix link to resource image view compatibility table in the valid usage
+    statements for slink:VkImageFormatListCreateInfoKHR (internal pull
+    request 2711).
+
+-----------------------------------------------------
+
+Change log for June 10, 2018 Vulkan 1.1.77 spec update:
+
+  * Update release number to 77.
+
+Public Issues:
+
+  * Remove redundant asciidoctor ifdef in slink:VkDeviceCreateInfo valid
+    usage statement (public pull request 718).
+
+Internal Issues:
+
+  * Require that the returned slink:VkMemoryRequirements::pname:alignment
+    reflect the minimum alignment requirements for the buffer's usages, and
+    make dynamic offset alignment valid usage more explicit for
+    flink:vkBindBufferMemory and flink:vkCmdBindDescriptorSets (internal
+    issue 1170).
+  * Explicitly state that objects of type code:OpTypeImage,
+    code:OpTypeSampler, and code:OpTypeSampledImage must not be stored to in
+    the <<spirvenv-module-validation, Validation Rules within a Module>>
+    section (internal issue 1262).
+  * Clarify rules about validating descriptor set/binding against storage
+    class and descriptor type in the <<spirvenv-module-validation,
+    Validation Rules within a Module>> section, and add an anchor for and
+    references to the <<interfaces-resources-storage-class-correspondence,
+    Shader Resource and Storage Class Correspondence>> table (internal issue
+    1266).
+  * Use correct spelling of SPIR-V decoration code:NonWritable in several
+    places (internal issue 1298).
+
+Other Issues:
+
+  * Update specification links to files in the old
+    KhronosGroup/Vulkan-LoaderAndValidationLayers repository with
+    corresponding links into the new repositories that replace it.
+  * Move validity requirement for slink:VkSamplerCreateInfo into the valid
+    usage block instead of the body text, and give it a VUID.
+  * Use the full name of the "`style guide`" in a reference in the
+    description of slink:vkGetPhysicalDeviceProperties, update the
+    <<vulkan-styleguide, link to that document>>, and use the the full name
+    in the registry index page.
+
+-----------------------------------------------------
+
+Change log for May 25, 2018 Vulkan 1.1.76 spec update:
+
+  * Update release number to 76.
+
+Internal Issues:
+
+  * Add an exception clause to the license on `vk.xml`, enabling its use
+    with GPL-based projects (internal issue 1017).
+  * Remove the generated `vulkan_ext.[ch]` files, which are no longer
+    supported. Add `src/ext_loader/README.md` explaining why, and update
+    files in `xml/` to not generate them by default (internal issue 1268)
+
+Other Issues:
+
+  * Fix typos in valid usage statements for the
+    ftext:vkDrawIndexedIndirectCount* commands, replacing
+    sizeof(VkDrawIndirectComment) with sizeof(VkDrawIndexedIndirectCommand).
+  * Modify the <<spirvenv-module-validation, Validation Rules within a
+    Module>> section to require code:NonReadable or code:NonWriteable in
+    SPIR-V code for images with an image format of code:Unknown if one of
+    the requisite code:shaderImageReadWithoutFormat or
+    code:shaderImageWriteWithoutFormat features is disabled.
+
+New Extensions:
+
+  * `VK_KHR_get_display_properties2`
+  * `VK_KHR_draw_indirect_count`
+
+-----------------------------------------------------
+
+Change log for May 16, 2018 Vulkan 1.1.75 spec update:
+
+  * Update release number to 75.
+
+Github Issues:
+
+  * Use Github handles (e.g. @handle) for contact information in vk.xml,
+    when available (partial fix for public issue 630).
+  * Add size invariance guarantee to slink:VkMemoryRequirements for
+    buffer/image memory requirements (public issue 661).
+  * Correct scope (conditional constructs) in valid usage statement for
+    slink:VkBindImageMemoryInfo (public pull request 684).
+  * Clean up minor markup issues and typos in the
+    `VK_ANDROID_external_memory_android_hardware_buffer` extension appendix
+    (public pull request 698).
+  * Modify registry processing script to avoid irrelevant warnings of benign
+    enumerant redefinitions (public pull request 705).
+  * Fix some duplicate words and some misspelled "`stagess`" (public pull
+    request 712)
+
+Internal Issues:
+
+  * Enable continuous integration tests on the internal Khronos gitlab
+    server by adding a .gitlab-ci.yml file. Note: this does not implement CI
+    on the public Github repository (internal issue 408).
+  * Add link from description of depth clamping in the <<fragops-depth,
+    depth test>> section to the
+    slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable
+    parameter which enables it, making it easily searchable / findable
+    (internal issue 1125).
+  * Clarify that arrays of arrays of descriptors are not allowed in the
+    <<interfaces-resources-descset, Descriptor Set Interface>> and
+    <<interfaces-resources-setandbinding, DescriptorSet and Binding
+    Assignment>> sections (internal issue 1192).
+  * Comment out some redundant nested asciidoctor conditionals in the
+    slink:VkImageViewCreateInfo valid usage block, and explain in all cases
+    why the redundant conditional exist and are commented out (internal
+    issue 1231).
+  * Move a valid usage statement from slink:VkCommandPoolCreateInfo to the
+    parent flink:vkCreateCommandPool, where the device queue is known
+    (internal issue 1233).
+  * Add new slink:VkBaseInStructure and slink:VkBaseOutStructure types which
+    can be used by extensions and implementations for handling Vulkan
+    sType/pNext style structures in a more generic way (internal issue
+    1265).
+  * Clarify that
+    slink:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
+    only applies to external-format images. Add references to this in valid
+    usage statements that previously only referred to
+    slink:VkFormatProperties (internal issue 1244).
+  * Fix the description of elink:VkPipelineCreateFlagBits enumerant
+    ename:VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT to match the
+    name (internal issue 1279).
+  * Add a NOTE to the <<interfaces-resources-setandbinding, DescriptorSet
+    and Binding Assignment>> section making it clear that variables sharing
+    a storage class may use identical descriptor set and bindings.
+    Specifically state the sometimes misunderstood ability to have one or
+    more differently typed image descriptors sharing a descriptor set and
+    binding (internal SPIR-V issue 264).
+  * Make DynamicIndexing features and capabilities also control the
+    uniformity of the descriptor used in memory access instructions in the
+    <<interfaces-resources-descset, Descriptor Set Interface>> section. This
+    makes them also apply to variable_pointer usage, which can bypass the
+    array indexing operation (internal SPIR-V issue 289).
+
+Other Issues:
+
+  * Correct flink:vkCmdBlitImage limitations on cubic blits to be 2D only,
+    not 3D.
+  * Update valid usage statements for slink:VkRenderPassCreateInfo and
+    slink:VkInputAttachmentAspectReference.
+  * Move YCbCr-related VU statements from slink:VkDescriptorImageInfo to
+    slink:VkWriteDescriptorSet, where all needed information is known, and
+    remove redundant statements.
+  * Move SPIR-V restriction that images be of either sampled or storage
+    types from the <<interfaces-resources-descset, Descriptor Set
+    Interface>> section to the <<spirvenv-module-validation, Validation
+    Rules within a Module>> section of the SPIR-V appendix.
+
+-----------------------------------------------------
+
+Change log for April 21, 2018 Vulkan 1.1.74 spec update:
+
+  * Update release number to 74.
+
+Github Issues:
+
+  * Clarify which buffer locations are accessed in
+    flink:vkCmdCopyBufferToImage valid usage statements (public issue 676).
+  * Refine description of <<extended-functionality-extensions-dependencies,
+    extension dependencies>>, related NOTE in the
+    <<extended-functionality-extensions, Extensions>> section, and
+    "`Required Extensions`" glossary term (public pull request 693).
+  * Add support for specifying required Vulkan core version in `vk.xml` and
+    the extension metadoc generator (public issue 696).
+  * Update .gitignore for directory reorganization (public pull request
+    699).
+  * Fix typo (public pull request 703).
+
+Internal Issues:
+
+  * Update valid usage of slink:VkClearRect::pname:layerCount (internal
+    issue 1241).
+
+Other Issues:
+
+  * Fix typo in <<NV_geometry_shader_passthrough>> issues list.
+
+-----------------------------------------------------
+
+Change log for April 15, 2018 Vulkan 1.1.73 spec update:
+
+  * Update release number to 73.
+
+Github Issues:
+
+  * Refine swapchain association with surface for slink:VkSwapchainKHR, with
+    matching valid usage statements for slink:VkSwapchainCreateInfoKHR and
+    discussion following the <<swapchain-wsi-image-create-info>> table
+    (public issue 637).
+  * Re-remove several valid usage statements from slink:VkImageCreateInfo
+    that had previously been removed at the time that
+    ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT was introduced. These
+    statements had incorrectly been restored due to an glitch while merging
+    from the old `1.0` branch to the current `master` branch (public issue
+    683).
+
+Internal Issues:
+
+  * Fix reference page generation and configure build to generate reference
+    pages 1.1 with all extensions, rather than core only, as was the case
+    for the 1.0 ref pages (internal issues 484, 1056, 1205).
+  * Require that
+    slink:VkMemoryDedicatedRequirements::pname:prefersDedicateAllocation is
+    ename:VK_TRUE when
+    slink:VkMemoryDedicatedRequirements::pname:requiresDedicateAllocation is
+    ename:VK_TRUE (internal issue 1222).
+  * Fix Ruby extension code so `diff_html` Makefile target works (internal
+    issue 1230).
+  * Update `genRelease` script to generate 1.1 + all extensions reference
+    pages - but not the single-page HTML / PDF versions, which are even
+    larger than the API spec (internal issue 1245).
+
+Other Issues:
+
+  * Add missing attributes to `vk.xml` for `VK_ANDROID_native_buffer`.
+  * Specify that the slink:VkAttachmentDescription::pname:format member is
+    the format of the image *view* that will be used for the attachment.
+  * Use core sname:VkPhysicalDeviceFeatures2 in the `structextends` `vk.xml`
+    attribute for sname:VkPhysicalDeviceDescriptorIndexingFeaturesEXT and
+    sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT, rather than the
+    KHR equivalent it was promoted from.
+  * Fix the "`Fragment Input Attachment Interface`" glossary entry to match
+    the specification body.
+  * Clarify the interaction of sRGB images used as storage or texel buffers
+    with <<textures-output-format-conversion, Texel Output Format
+    Conversion>>.
+  * Moved three valid usage statements from
+    slink:VkRenderPassMultiviewCreateInfo up to
+    slink:VkRenderPassCreateInfo, and added a new valid usage statement for
+    slink:VkRenderPassInputAttachmentAspectCreateInfo.
+  * Added valid usage statements for slink:VkBufferMemoryBarrier and
+    slink:VkImageMemoryBarrier reflecting the global requirement that
+    "`non-sparse resources must be bound to memory before being recorded to
+    command`".
+
+-----------------------------------------------------
+
+Change log for April 5, 2018 Vulkan 1.1.72 spec update:
+
+  * Update release number to 72.
+
+Github Issues:
+
+  * Restructure the repository to put the specification `Makefile` and
+    associated spec source material at the top level, `vk.xml` and
+    associated scripts material in `xml/`, and generated include and source
+    files in `include/vulkan/` and `src/ext_loader/`, respectively (public
+    issue 436).
+  * Add missing bullet point markup to flink:vkCmdCopyImage valid usage
+    statement, so it gets a VUID assigned (public issue 627).
+  * Fix broken links in a couple of extension appendices (public pull
+    request 665).
+  * Add the \<platform> tag to the index in section 4.1 of the registry
+    schema documentation, and add the protect= attribute of \<extension>
+    tags to the comments in `registry.rnc` (public issues 673, 678).
+  * Add missing valid usage statements for sparse image interactions to
+    flink:VkImageCreateInfo (public pull request 675).
+  * Fix improper usage and grammar of "`can: not`" (public pull request
+    681).
+  * Remove duplicate spec language and NOTE on present layout between the
+    flink:vkAcquireNextImageKHR and flink:vkAcquireNextImage2KHR commands
+    (public pull request 685).
+  * Fix some typos and markup issues (public pull request 689; public issues
+    642, 667, 687).
+  * Fix typo etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT ->
+    ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT in the
+    <<external-semaphore-handle-types-compatibility, External semaphore
+    handle types compatibility>> table (public pull request 691).
+
+Internal Issues:
+
+  * Remove the need for the "`noautovalidity`" attribute on extension
+    structures in `vk.xml`. It is now implied by the "`structextends`"
+    attribute instead (internal issue 942).
+  * Replace uses of "`currently bound`" with "`bound`", since "`currently`"
+    is redundant and distracting, and add a corresponding rule to the style
+    guide (internal issue 993).
+  * Fixed subtle issues with the last updates to flink:vkAcquireNextImageKHR
+    language that had resulted in ambiguities (internal issue 1178).
+  * Make it clear that only one query of a given type is allowed at a time
+    by reordering valid usage statements for flink:vkCmdBeginQuery and
+    flink:vkCmdEndQuery, and removing redundant ones (internal issue 1213).
+  * Swapped OL1 and OL3 in `tessparamUL.svg` to match previous version, and
+    fixed where "`(no edge)`" appears (internal issue 1215).
+
+Other Issues:
+
+  * Fixed a minor problem with the valid usage statement extraction script,
+    and corresponding markup in the spec source.
+
+New Extensions:
+
+  * `VK_AMD_shader_core_properties`
+  * `VK_EXT_descriptor_indexing`
+  * `VK_NV_shader_subgroup_partitioned`
+
+-----------------------------------------------------
+
+Change log for March 16, 2018 Vulkan 1.1.71 spec update:
+
+  * First public update for Vulkan 1.1.
+
+Github Issues:
+
+  * Refer to standard sparse image block shape format tables explicitly in
+    the <<sparsememory-standard-shapes, Standard Sparse Image Block Shapes>>
+    section (public issue 93).
+  * Add the missing definition of the code:LocalInvocationIndex decoration
+    in the <<interfaces-builtin-variables, Built-In Variables>> section
+    (public issue 532).
+  * Clarify dynamic state definition in the introduction to the <<pipelines,
+    Pipelines>> section and the new <<pipelines-dynamic-state, Dynamic
+    State>> subsection (public issue 620).
+  * Clarified deprecation statement in the `VK_AMD_negative_viewport_height`
+    appendix (public issue 674).
+  * Fix parameter descriptions for flink:vkCreateIndirectCommandsLayoutNVX
+    (public issue 677).
+
+Internal Issues:
+
+  * Remove description of <<primsrast-points, rasterization point size>>
+    being taken from the tessellation control shader, since there are no
+    circumstances under which you can have TCS without TES (internal issue
+    522).
+  * Define <<copies-images-format-size-compatibility, _size-compatible_
+    image formats>> for flink:vkCmdCopyImage, add it to the glossary, and
+    use that definition for slink:VkImageViewCreateInfo (internal issue
+    771).
+  * Change brief descriptions of enumerant names, and of parameters which
+    are enumerants, from "`enum *indicates*`" to "`enum *specifies*`" for
+    consistency, and add a markup style guide rule (internal issue 862).
+  * Clarify how execution dependencies interact with
+    <<synchronization-submission-order, submission order>> at numerous
+    places in the <<renderpass, Render Pass>> and <<synchronization,
+    Synchronization>> chapters (internal issue 1062).
+  * Clarify statement in the <<interfaces-resources-setandbinding,
+    DescriptorSet and Binding Assignment>> section that only interface
+    variables statically used by the entry point used in a pipeline must be
+    present in the descriptor set layout (internal issue 1172).
+  * Flip sparse image diagrams with partially full mip levels vertically, to
+    match graph origins of other image diagrams (internal issue 1176).
+  * Update new SVG diagrams to have consistent style and base font size,
+    increase consistency of primitive topology diagrams, and add a section
+    to the style guide on creating and editing images in a consistent style
+    (internal issue 1177).
+  * Resolve problems with valid usage statement extraction by fixing
+    existing VUID tags for interfaces promoted to version 1.1 and fixing
+    conditional directives around
+    VUID-VkMemoryDedicatedAllocateInfo-image-01797 (internal issue 1184).
+  * Strip `KHR` suffixes from a few interfaces promoted to Vulkan 1.1 that
+    were missed previously (internal issue 1185).
+  * Restrict code:OpImageQuerySizeLod and code:OpImageQueryLevels to only
+    work on code:Image operands with their code:Sampled operand set to 1. In
+    other words, these operations are not defined to work with storage
+    images (internal issue 1193).
+  * Recycle extension slot for extension #82 in `vk.xml`. This extension was
+    never published (internal issue 1195).
+  * Add an issue to the `VK_KHR_maintenance1` appendix noting that zero
+    height viewports are allowed when this extension is enabled (internal
+    issue 1202).
+  * Fix slink:VkDescriptorSetLayoutBinding description so that shader stages
+    always use descriptor bindings, not the other way around (internal issue
+    1206).
+  * Fix field name for
+    slink:VkInputAttachmentAspectReference::pname:inputAttachmentIndex
+    (internal issue 1210).
+
+Other Issues:
+
+  * Fix a few broken links in the <<versions-1.1, Version 1.1>> appendix.
+  * Replace a few old refBegin/refEnd tags with open block markup around
+    interfaces, and remove old KHX VUID tags that were breaking the valid
+    usage statement extraction.
+  * Fix error codes accidentally tagged as success codes in `vk.xml` for
+    flink:vkGetSwapchainCounterEXT.
+  * Added valid usage statements for ftext:vkBind*Memory2 input structures
+    stext:VkBind*MemoryInfo, and fix a pname:image -> pname:buffer typo in a
+    couple of places.
+  * Fix swapped descriptions of elink:VkDescriptorType enums
+    ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE and
+    ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE (reported via tweet).
+
+New Extensions:
+
+  * `VK_ANDROID_external_memory_android_hardware_buffer`
+
+-----------------------------------------------------
+
+Change log for March 7, 2018 Vulkan 1.1.70 spec update:
+
+  * Vulkan 1.1 initial release. Bump API patch number and header version
+    number to 70 for this update. The patch number will be used for both
+    Vulkan 1.1 and Vulkan 1.0 updates, and continues to increment
+    continuously from the previous Vulkan 1.0.69 update.
+
+    NOTE: We are not publishing an updated 1.0.70 specification, or 1.1
+    reference pages, along with 1.1.70. There are still minor issues to work
+    out with those build targets. However, we will soon generate all three
+    types of documents as part of the regular spec update cycle.
+
+    NOTE: The GitHub KhronosGroup/Vulkan-Docs repository now maintains the
+    current specification in the `master` branch. The `1.0` branch is out of
+    date and will not be maintained, since we will be generating both 1.1
+    and 1.0 specifications from the `master` branch in the future.
+
+Github Issues:
+
+  * Clarify how mapped memory ranges are flushed in
+    flink:vkFlushMappedMemoryRanges (public issue 127).
+  * Specify that <<synchronization-pipeline-stages, Pipeline Stages>> are a
+    list of tasks that each command performs, rather than necessarily being
+    discrete pieces of hardware that one task flows through. Add a
+    "`synchronization command`" pipeline type which all synchronization
+    command execute (it's just TOP + BOTTOM), with an explanatory note
+    (public issue 554).
+
+Internal Issues:
+
+  * Regenerate all images used in the spec in Inkscape with a consistent
+    look-and-feel, and adjust image size attributes so they're all legible,
+    and not too large with respect to the spec body text (internal issue
+    701).
+  * Document in the <<extensions,extensions>> appendix and in the style
+    guide that `KHX` extensions are no longer supported or used in the
+    Vulkan 1.1 timeframe (internal issue 714).
+  * Remove the leftover equations_temp directory after PDF build completes
+    (internal issue 925).
+  * Update the <<credits, Credits (Informative)>> appendix to include
+    contributors to Vulkan 1.1, and to list them according to the API
+    version(s) they contributed to (internal issue 987).
+  * Add a NOTE to the introduction explaining that interfaces defined by
+    extensions which were promoted to Vulkan 1.1 are now expressed as
+    aliases of the Vulkan 1.1 type (internal issue 991).
+  * Instrument spec source conditionals so spec can be built with 1.1
+    features, extensions promoted to 1.1, or both (internal issues 992,
+    998).
+  * Modify the XML schema and tools to support explicit aliasing of types,
+    structures, and commands, and use this to express the promotion of 1.0
+    extensions to 1.1 core features, by making the extension interfaces
+    aliases of the core features they were promoted to. Mark up promoted
+    interfaces to allow still generating 1.0 + extension specifications
+    (internal issue 991).
+  * Platform names, along with corresponding preprocessor symbols to enable
+    extensions specific to those platforms, are now reserved in vk.xml using
+    the <platform> tag. Update the registry schema and schema specification
+    to match (internal issue 1011).
+  * Updated the <<textures-texel-replacement, Texel Replacement>> section to
+    clarify that reads from invalid texels for image resources result in
+    undefined values (internal issue 1014).
+  * Modify description of patch version so it continues to increment across
+    minor version changes (internal issue 1033).
+  * Clarify and unify language describing physical device-level core and
+    extension functionality in the <<fundamentals-validusage-extensions,
+    Valid Usage for Extensions>>, <<fundamentals-validusage-versions, Valid
+    Usage for Newer Core Versions>>, <<initialization-functionpointers
+    Command Function Pointers>>, <<initialization-phys-dev-extensions,
+    Extending Physical Device From Device Extensions>>
+    <<extended-functionality-instance-extensions-and-devices, Instance
+    Extensions and Device Extensions>> sections and for
+    flink:vkGetPhysicalDeviceImageFormatProperties2. This documents that
+    instance-level functionality is tied to the loader, and independent of
+    the ICD; physical device-level functionality is tied to the ICD, and
+    associated with device extensions; physical devices are treated more
+    uniformly between core and extensions; and instance and physical
+    versions can be different (internal issue 1048).
+  * Updated the <<commandbuffers-lifecycle, Command Buffer Lifecycle>>
+    section to clarify the ability for pending command buffers to transition
+    to the invalid state after submission, and add a command buffer
+    lifecycle diagram (internal issue 1050).
+  * Clarify that some flink:VkDescriptorUpdateTemplateCreateInfo parameters
+    are ignored when push descriptors are not supported (internal issue
+    1054).
+  * Specify that flink:vkCreateImage will return an error if the image is
+    too large, in a NOTE in the slink:VkImageFormatProperties description
+    (internal issue 1078).
+  * Remove near-duplicate NOTEs about when to query function pointers
+    dynamically in the <<initialization, Initialization>> chapter and
+    replace by extending the NOTE in the <<fundamentals-abi, Application
+    Binary Interface>> section (internal issue 1085).
+  * Restore missing references to "`Sparse Resource Features`" in the
+    flink:VkBufferCreateFlagBits description (internal issue 1086).
+  * Tidy up definitions of descriptor types in the `GL_KHR_vulkan_glsl`
+    specification, the <<descriptorsets, Resource Descriptors>> section and
+    its subsections, and the <<interfaces-resources-descset, Descriptor Set
+    Interface>> for consistency, reduction of duplicate information, and
+    removal of GLSL correspondance/examples (internal issue 1090).
+  * Correctly describe code:PrimitiveId as an Input for tessellation control
+    and evaluation shaders, not an Output (internal issue 1109).
+  * Relax the requirements on chroma offsets for nearest filtering in
+    <<textures-implict-reconstruction, Implicit Reconstruction>> (internal
+    issue 1116).
+
+Other Issues:
+
+  * Clarify the intended relationship between specification language and
+    certain terms defined in the Khronos Intellectual Property Rights
+    policy. Specific changes include:
+  ** Rewrote IP/Copyright preamble and introduction to better agree with
+     normative language both as laid out in the introduction, and the
+     Khronos IPR policy.
+  ** Added notion of fully informative sections, which are now tagged with
+     "`(Informative)`" in their titles.
+  ** Removed non-normative uses of the phrase "`not required`"
+  ** Clarified the distinction between terms "`optional`" and "`not
+     required:`" as they relate to the IPR Policy, and updated specification
+     text to use terms consistent with the intent.
+  ** Reduced additions to RFC 2119, and ensured the specification agreed
+     with the leaner language.
+  ** Removed the terms "`hardware`", "`software`", "`CPU`", and "`GPU`" from
+     normative text.
+  ** Moved several paragraphs that should not have been normative to
+     informative notes.
+  ** Clarified a number of definitions in the Glossary.
+  ** Updated the document writing guide to match new terminology changes.
+  * Explicitly state in the <<fundamentals-objectmodel-lifetime-acquire,
+    application memory lifetime>> language that that for objects other than
+    descriptor sets, a slink:VkDescriptorSetLayout object used in the
+    creation of another object (such as slink:VkPipelineLayout or
+    slink:VkDescriptorUpdateTemplateKHR) is only in use during the creation
+    of that object and can be safely destroyed afterwards.
+  * Updated the <<textures-scale-factor, Scale Factor Operation>> section to
+    use the ratio of anisotropy, rather than the integer sample rate, to
+    perform the LOD calculation. The spec still allows use of the sample
+    rate as the value used to calculate the LOD, but no longer requires it.
+  * Update `vulkan_ext.c` to include all platform-related definitions from
+    the Vulkan platform headers, following the split of the headers into
+    platform-specific and non-platform-specific files.
+  * Fix bogus anchor name in the <<commandbuffers, Command Buffers>> chapter
+    which accidentally duplicated an anchor in the pipelines chapter. There
+    were no reference to this anchor, fortunately.
+  * Add valid usage statement for slink:VkWriteDescriptorSet and
+    slink:VkCopyDescriptorSet requiring that the slink:VkDescriptorSetLayout
+    used to allocate the source and destination sets must not have been
+    destroyed at the time flink:vkUpdateDescriptorSets is called.
+  * Document mapping of subgroup barrier functions to SPIR-V, and clarify a
+    place where subgroupBarrier sounds like it's execution-only in the
+    standalone `GL_KHR_shader_subgroup` specification.
+  * Use an HTML stylesheet derived from the Asciidoctor `colony` theme, with
+    the default Arial font family replaced by the sans-serif Noto font
+    family.
+  * Numerous minor updates to README.adoc, build scripts, Makefiles, and
+    registry and style guide specifications to support Vulkan 1.1 outputs,
+    use them as defaults, and remove mention of `KHX` extensions, which are
+    no longer supported.
+
+
+New Extensions:
+
+  * `VK_EXT_vertex_attrib_divisor`
+
+-----------------------------------------------------
+
+Change log for February 19, 2018 Vulkan 1.0.69 spec update:
+
+  * Bump API patch number and header version number to 69 for this update.
+
+Github Issues:
+
+  * Clean up description of synchronization for flink:vkAcquireNextImageKHR
+    (public issue 626).
+  * Move valid usage statements requiring offset and extent to respect image
+    transfer granularity requirements of the queue family they are submitted
+    against from slink:VkImageCopy and slink:VkBufferImageCopy to the
+    corresponding flink:vkCmdCopyImage, flink:vkCmdCopyBufferToImage, and
+    flink:vkCmdCopyImageToBuffer commands, where are relevant information is
+    known (public issue 654).
+  * Clarify that flink:vkGetDeviceProcAddr only supports device-level
+    commands (public issue 655).
+
+Internal Issues:
+
+  * Associate each elink:VkDescriptorType with a type of descriptor, and
+    link to descriptions of those types (internal issue 860).
+  * Rework valid usage extraction script to better utilize and respond to
+    spec markup, and fix some spec markup accordingly (internal issues 846,
+    909, 945).
+  * Rephrase flink:vkCmdPushConstants valid usage to allow overlapping push
+    constant ranges in different shader stages (internal issue 1103).
+  * Fix problem with diff_html target in extension.rb (internal issue 1104).
+  * Modify valid usage statements for slink:VkClearDepthStencilValue,
+    slink:VkGraphicsPipelineCreateInfo, slink:VkViewport, and
+    flink:vkCmdSetDepthBounds, and the description of vkCmdSetDepthBias, to
+    clarify that clamping is applied if and only if the
+    `VK_EXT_depth_range_unrestricted` is not enabled (internal issue 1124),
+    in versions of the specification built with that extension included.
+  * Resolve contradictions and use of undefined "`per-sample shading`" term
+    in the <<primsrast-sampleshading, Sample Shading>> and
+    <<shaders-fragment-execution, Fragment Shader Execution>> sections; for
+    the <<features-features-sampleRateShading, sampleRateShading feature>>;
+    for code:FragCoord, code:SampleId, and code:SamplePosition; and for
+    slink:sname:VkPipelineMultisampleStateCreateInfo (internal issue 1134).
+  * Clarify the meaning of the ptext:maxDescriptorSet* limits in footnote 8
+    of the <<features-limits-required,Required Limits>> table (internal
+    issue 1139).
+  * Fix broken NOTE markup in slink:VkSamplerCreateInfo.txt (internal issue
+    1140).
+  * Remove extend comparison language from valid usage statement for
+    slink:VkImageCreateInfo, turning it into a simple validation of
+    pname:mipLevels against pname:maxMipLevels (internal issue 1151).
+  * Update valid usage statements for slink:VkImageCopy when the
+    `VK_KHR_maintenance1` extension is enabled to allow multi-slice 2D <->
+    3D copies when the pnaem:extent.depth parameter specifies the number of
+    layers being copied, and matches the
+    slink:VkImageSubresourceLayers.layerCount of the 2D image (internal
+    issue 1152).
+  * Rephrase memory / control barrier rules in the
+    <<spirvenv-module-validation, Validation Rules within a Module>> section
+    to avoid "`not use none`", which could be misconstrued to allow no
+    synchronization semantics, and only storage class semantics (internal
+    issue 1154).
+
+Other Issues:
+
+  * Move GLSL extension specifications to the KhronosGroup/GLSL repository
+    on Github.
+  * Add missing description of ename:VK_FILTER_CUBIC_IMG enum to
+    slink:VkFilter.
+  * Update description of code:PrimitiveId in the
+    <<interfaces-builtin-variables,Built-In Variables>> section to clarify
+    its behavior.
+  * Disallow disjoint images from being used with dedicated-memory images in
+    slink:VkMemoryDedicatedAllocateInfoKHR.
+  * Update README to suggest older versions of "mathematical" and
+    "ruby-gems" packages for use on Cygwin.
+  * Fix typos
+
+New Extensions:
+
+  * `VK_AMD_buffer_marker`
+
+-----------------------------------------------------
+
+Change log for January 15, 2018 Vulkan 1.0.68 spec update:
+
+  * Bump API patch number and header version number to 68 for this update.
+
+Github Issues:
+
+  * Added more details in the
+    <<extended-functionality-extensions-compatibility, Extension
+    Compatibility>> section, allowing explicit incompatibilities, and
+    simplify corresponding language in the style guide, which now defers to
+    the API Specification on this point (public issue 638).
+  * Fix typo in description of slink:VkCommandBufferLevel::pname:level
+    (public issue 651).
+  * Only include extension-dependent valid usage statement for
+    slink:VkImageSubresourceRange, and note that the extension names for
+    header files described in the <<boilerplate-wsi-header, Window
+    System-Specific Header Control>> section are only valid links, when the
+    specification being viewed is built with the corresponding extensions
+    enabled (public issue 652).
+
+Internal Issues:
+
+  * Add language to elink:VkResult specifying that when commands return an
+    error, output parameter contents are undefined instead of unmodified
+    (except for pname:sType and pname:pNext). Note that this is a behavior
+    change. Add notes calling out slink:VkImageFormatProperties as an
+    exception (internal issue 1118).
+  * Add "`general-purpose`" to the style guide, and correct existing uses of
+    "`general purpose`" as an adjective (internal issue 1121).
+  * Add the ename:VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT token
+    for the `VK_EXT_validation_cache` extension, following the same naming
+    pattern as other tokens in the extension, but keep the old
+    ename:VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT token around for
+    backwards compatibility (internal issue 1126).
+
+Other Issues:
+
+  * Specify that flink:vkCmdSetDiscardRectangleEXT does not affect copies or
+    clears, matching existing language for the scissor rectangle test.
+  * Move the <<boilerplate-sType, pname:sType>> definition from the
+    boilerplate appendix to the Fundamentals chapter, putting it together
+    with the valid usage of pname:sType rather than having the definition
+    split across two places.
+  * Inline all of the etext:Vk*Flags definitions, moving each one from the
+    boilerplate appendix to appear either after the corresponding
+    etext:Vk*FlagBits value if one is defined, or after the first structure
+    that includes them if not.
+
+-----------------------------------------------------
+
+Change log for January 5, 2018 Vulkan 1.0.67 spec update:
+
+  * Bump API patch number and header version number to 67 for this update.
+  * Update copyright dates to 2018
+
+Github Issues:
+
+  * Fix texture lookup functions in `GL_KHR_vulkan_glsl` specification
+    (public pull request 363).
+  * Clarify the state waited semaphores are left in when a call to
+    flink:vkQueuePresentKHR fails (public issue 572).
+  * Cleanup descriptions of slink:VkObjectTablePushConstantEntryNVX and
+    slink:VkObjectTableDescriptorSetEntryNVX (public issue 583)
+  * Remove redundant flink:vkCmdSetDiscardRectangleEXT valid usage
+    statements (public pull 586).
+  * Make dynamic state array length valid usage statements implicit for
+    flink:vkCmdSetViewportWScalingNV, flink:vkCmdSetDiscardRectangleEXT, and
+    flink:vkCmdSetViewport (public pull 589).
+  * Clarify meaning of window extent (0,0) in slink:VkSwapchainKHR for the
+    Windows and X11 platforms, in their respective extensions (public issue
+    590).
+  * Allow flink:vkGetPastPresentationTimingGOOGLE to return
+    ename:VK_INCOMPLETE (public issue 604).
+  * Add synchronization valid usage statements to flink:vkAcquireNextImage
+    (public pull 611).
+  * Fix some broken external links and internal xrefs (public pull 613).
+  * Clean up slink:VkViewport valid usage statements in the presence or
+    absence of relevant extensions (public pull 623).
+  * Remove
+    ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
+    token from VK_KHR_maintenance2 from the non-extension VU path for
+    slink:VkGraphicsPipelineCreateInfo (public issue 628).
+  * Miscellaneous minor markup fixes - extension name strings (public pull
+    631), Notes (pull 633), queue names emitted by generator scripts (pull
+    634), block formatting in slink:VkDescriptorUpdateTemplateEntryKHR (pull
+    635), ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG (pull
+    641), quotes and apostrophes (pull 643),
+  * Miscellaneous minor grammar fixes (public pull 644).
+  * Fix markup macros so usage like ptext:*Src* works (public pull 647).
+
+Internal Issues:
+
+  * Clarify in the `VK_KHR_surface` and `VK_KHR_swapchain` extensions that
+    parameter combinations which aren't supported for normal images are also
+    unsupported for presentable images, even if the parameter values are
+    individually supported as reported by the surface capability queries
+    (internal issue 1029).
+  * Fixed XML typo in the valid value field of the pname:sType member of
+    slink:VkPhysicalDeviceExternalMemoryHostPropertiesEXT (internal issue
+    1100).
+
+Other Issues:
+
+  * Add memory semantics validity rules to the <<spirvenv-module-validation,
+    Validation Rules within a Module>> section of the SPIR-V environment
+    appendix, and specify that sequentiality consistency is not supported.
+    This forbids certain cases like "`Load+Release`" that we don't expect to
+    ever be meaningful.
+  * Document mapping of OpenGL Shading Language barriers to SPIR-V scope and
+    semantics in the `GL_KHR_vulkan_glsl` specification.
+
+New Extensions:
+
+  * `VK_EXT_conservative_rasterization`
+
+-----------------------------------------------------
+
+Change log for November 27, 2017 Vulkan 1.0.66 spec update:
+
+  * Bump API patch number and header version number to 66 for this update.
+
+Github Issues:
+
+  * Clarified how and when ename:VK_ERROR_TOO_MANY_OBJECTS is generated in
+    flink:vkAllocate Memory, and remove incorrect valid usage statement
+    about exceeding the API limit (public issue 356).
+  * Minor clarification of the description of
+    flink:vkUpdateDescriptorSetWithTemplateKHR::pname:descriptorUpdateTemplate
+    (public issue 564).
+  * Minor fixes for flink:vkCmdSetViewportWScalingNV (public pull request
+    588).
+  * Fix random name markup issues (public pull request 603).
+  * Fix code:BuiltIn decoration typo in the <<fxvertex-attrib, Vertex
+    Attributes>> section (public pull request 606).
+  * Fix synchronization language following the definition of
+    flink:vkAcquireNextImageKHR (public issue 607).
+  * Restore descriptions of several commands and structures missing from the
+    generated spec due to a mistyped asciidoctor conditional (public issue
+    612).
+  * Fix 1.0.41 changelog to refer to public issues 403/404 (public issue
+    618).
+
+Internal Issues:
+
+  * Refactor valid usage statements with internal conditionals in
+    `copies.txt`, `pipelines.txt`, `renderpass.txt`, and `resources.txt` so
+    each branch of the conditional appears as a standalone statement which
+    can contain a separate VUID. This should have no impact on the generated
+    specs, but is necessary given the present state of the VU extractor and
+    the validation layer code that consumes them (internal issue 1043).
+  * Fix VkQueueGlobalPriorityEXT enum values missing _EXT suffix (internal
+    issue 1045).
+  * Clarified initial ownership of resources bound to shared memory objects,
+    (internal issue 1068).
+  * Fix duplicated valid usage ID tag for flink:vkCmdCopyImage, and make the
+    required layouts include ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL in
+    both cases (internal issue 1084).
+
+Other Issues:
+
+  * Remove the noise functions from GLSL for SPIR-V for Vulkan in the
+    `GL_KHR_vulkan_glsl.txt` extension.
+
+New Extensions:
+
+  * `VK_EXT_external_memory_host`
+  * `VK_EXT_external_memory_dma_buf`
+  * `VK_EXT_queue_family_foreign`
+
+-----------------------------------------------------
+
+Change log for October 27, 2017 Vulkan 1.0.65 spec update:
+
+  * Bump API patch number and header version number to 65 for this update.
+
+Github Issues:
+
+  * Replaced inaccurate "`pixel`" with "`texel`" or "`compressed texel
+    block`" as appropriate in the <<sparsememory, Sparse Resources>> chapter
+    (public issue 86).
+  * Attempt to clarify security/integrity guarantees in the
+    <<fundamentals-errors, Errors>> section (public issue 147).
+  * Update the <<memory-device,Device Memory>> section with clarifications
+    and markup fixes (public pull request 194).
+  * Fix typo VkDeviceCreateInfo -> slink:VkDebugMarkerObjectNameInfoEXT in
+    sample code for `VK_EXT_debug_marker` extension (public pull request
+    227).
+  * Clarified slink:VkFramebufferCreateInfo language regarding concurrent
+    use of attachment resources during a render pass instance (public issue
+    299).
+  * Added overlap rules for destination regions in <<copies,copy commands>>.
+    Also unified the sparse and non-sparse source-destination overlap rules,
+    since the non-sparse rules were technically inaccurate in the face of
+    aliasing in flink:vkBindMemory2 - the new rules are true regardless
+    (public issue 317).
+  * Clarified the <<features-features-samplerAnisotropy,
+    pname:samplerAnisotropy feature>> to only affect the
+    slink:VkSamplerCreateInfo::pname:anisotropyEnable value, and that
+    pname:maxAnisotropy is ignored when pname:anisotropyEnable is VK_FALSE
+    (public issue 503).
+  * Clarify pointer valid usage statements to use "`valid pointer to valid
+    _object_`" terminology and update the
+    <<fundamentals-validusage-pointers,Valid Usage for Pointers>> section
+    accordingly (public pull request 547).
+  * Some operations that use integer coordinates can also accept a LOD to
+    sample from. Add a description of that selection and the validity
+    conditions in the new <<textures-integer-coordinate-operations, Integer
+    Texel Coordinate Operations>> section (public issue 548).
+  * Update stext:VkImageSubresource* valid usage statements (public pull
+    request 550).
+  * Added text tying ename:VK_OUT_OF_POOL_MEMORY error for
+    flink:vkAllocateDescriptorSets to the number of descriptor types in the
+    allocating pool. Removed redundant "`length`" text about number of
+    descriptors returned (public issue 582).
+  * Update slink:VkSwapchainCreateInfoKHR descriptions (public pull request
+    585).
+  * Update slink:VkPipelineViewportWScalingStateCreateInfoNV and related
+    structures' valid usage statements (public pull request 587).
+  * Change some dates to conform to ISO 8601 as specified in the style guide
+    (public pull request 601).
+  * Fix some math markup problems and be more consistent in use of asciidoc
+    math markup (public pull request 602).
+
+Internal Issues:
+
+  * Clarified that attribute reads from incomplete vertex buffer elements
+    are considered out of bounds accesses, in the
+    slink:VkPhysicalDeviceFeatures and flink:vkCmdBindVertexBuffers.txt
+    sections (internal issue 842).
+
+-----------------------------------------------------
+
+Change log for October 20, 2017 Vulkan 1.0.64 spec update:
+
+  * Bump API patch number and header version number to 64 for this update.
+
+Github Issues:
+
+  * Add chapter name to the PDF page footer (public pull request 458).
+  * Fix several mistaken references to the nonexistent etext:VK_DEVICE_LOST
+    status to etext:VK_ERROR_DEVICE_LOST (public pull request 502).
+  * Fix description of the tlink:PFN_vkDebugReportCallbackEXT debug report
+    callback function pointer to match the validation layer behavior (public
+    issue 534).
+  * Document experimental KHX extensions and alternate vendor author IDs
+    also ending in X in more detail in the <<extensions, Layers &
+    Extensions>> appendix, the extensions section of the style guide, and
+    the registry schema description document (public issues 536, 580).
+  * Fix references to ptext:pDepthStencil to properly refer to
+    pname:pDepthStencilState or pname:pRasterizationState as appropriate in
+    the slink:VkGraphicsPipelineCreateInfo description (public issue 542).
+  * Fix wrong parameter name in slink:VkPipelineMultisampleStateCreateInfo
+    valid usage (public pull request 571).
+
+Internal Issues:
+
+  * Update the style guide to describe how to write LaTeX math expressions
+    in table cells (internal issue 908).
+  * Define how framebuffer-local dependencies work between subpasses with
+    the same or different numbers of samples, in the
+    slink:VkSubpassDescription and <<synchronization-framebuffer-regions,
+    Framebuffer Region Dependencies>> sections. This clarifies which samples
+    in an input attachment you are allowed to access after a
+    framebuffer-local dependency (internal issue 915).
+  * Specify which storage classes can have an initializer in the
+    <<spirvenv-module-validation, Validation Rules within a Module>> section
+    (internal issue 1023).
+  * Use "LOD" consistently for "level-of-detail", to eliminate spelling
+    inconsistencies. The term is already standardized in the Glossary
+    (internal issue 1027).
+
+Other Issues:
+
+  * Fix false positives in Makefile dependencies when rules fail, by
+    deleting partially-made targets.
+
+New Extensions:
+
+  * `VK_AMD_shader_info`
+
+-----------------------------------------------------
+
+Change log for October 13, 2017 Vulkan 1.0.63 spec update:
+
+  * Bump API patch number and header version number to 63 for this update.
+
+Github Issues:
+
+  * Add missing valid usage statements for ptext:maxDescriptorSets*,
+    ptext:maxPerStageDescriptorInputAttachments, and
+    ptext:maxPerStageResources to slink:VkPipelineLayoutCreateInfo.txt,
+    flink:VkComputePipelineCreateInfo, and
+    flink:VkGraphicsPipelineCreateInfo (public issue 546).
+  * Fix typos in ftext:vkCmdDraw*AMD descriptions (public pull request 549).
+  * Fixed flink:vkCmdWriteTimestamp so it is not unnecessarily restricted to
+    queues supporting graphics or compute operations (public issue 558).
+  * Improvements to valid usage generator for output `*Flags` pointer
+    parameters and for some `void *` parameters (public pull requests 560,
+    562).
+  * Document `altlen` attribute in XML schema as valid C99 syntax and tweak
+    `vk.xml` to match (public pull request 566).
+  * Clarify when pname:fence is signaled by flink:vkQueueSubmit in a more
+    obvious place (public issue 577).
+
+Internal Issues:
+
+  * Specify a whitelist of supported SPIR-V Storage Classes in the
+    <<spirvenv-module-validation, Validation Rules within a Module>>
+    appendix (internal SPIR-V issue 166).
+  * Relax the shared semaphore wait timeout requirement in the
+    <<synchronization-semaphores-importing, Importing Semaphore Payloads>>
+    section (internal issue 820).
+  * Update the <<textures-image-level-selection, Image Level(s) Selection>>
+    equations so that the parameters returned by the level-of-detail query
+    appear explicitly, also fixing the issue that linear filtering would
+    select a level below the base level for magnification (internal issue
+    926).
+  * Disallow creation of a swapchain with zero pname:imageExtent in
+    slink:VkSurfaceCapabilitiesKHR and slink:VkSwapchainCreateInfoKHR
+    (internal issue 1020).
+
+Other Issues:
+
+  * Clarify in <<textures-operation-validation,Image View Validation>> that
+    the layout of subresources in an image view must have a layout that
+    matches that written into the descriptor, and that this section is about
+    validating image views, not images.
+
+New Extensions:
+
+  * `VK_EXT_global_priority`
+
+-----------------------------------------------------
+
+Change log for October 6, 2017 Vulkan 1.0.62 spec update:
+
+  * Bump API patch number and header version number to 62 for this update.
+
+Github Issues:
+
+  * Move asciidoc conditionals for `VK_KHR_maintenance1` in
+    slink:VkDescriptorSetAllocateInfo so valid usage statements for
+    `VK_KHR_push_descriptor` aren't accidentally removed when the first
+    extension isn't enabled (public issue 573).
+
+Internal Issues:
+
+  * Specify constraints on concurrent access to fences that share payload in
+    the <<synchronization-fences-importing, Importing Fence Payloads>> and
+    <<synchronization-semaphores-waiting-state, Semaphore State Requirements
+    For Wait Operations>> sections (internal issue 820).
+  * Define the term "`retired swapchain`", reorganize some swapchain
+    language, and improve language for pname:oldSwapchain in
+    flink:VkSwapchainCreateInfoKHR, the <<swapchain-wsi-image-create-info>>
+    table, flink:vkDestroySwapchainKHR, and flink:vkAcquireNextImage2KHX
+    (internal issue 869).
+  * Describe in the <<writing-arrays, Describing Properties of Array
+    Elements>> section of the style guide how and when to use "`each`" and
+    "`any`" to refer to properties of array elements, and make those uses in
+    the specification consistent (internal issue 884).
+  * Clarified that events cannot be used for cross-queue synchronization in
+    the <<synchronization-events, Events>> section and for
+    flink:vkCmdWaitEvents (internal issue 970).
+  * Add success and error codes to +vk.xml+ for
+    flink:vkCreateValidationCacheEXT (internal issue 995).
+  * Clarify aspect mask usage for image memory barriers of multi-plane
+    images in slink:VkImageSubresourceRange, slink:VkImageMemoryBarrier, and
+    the <<textures-layout-validation, Layout Validation>> section (internal
+    issue 996).
+
+Other Issues:
+
+  * Fixed typo in flink:VkRenderPassSampleLocationsBeginInfoEXT (renamed
+    field pname:pSubpassSampleLocations to
+    pname:pPostSubpassSampleLocations).
+  * Add missing buffer usage requirements for indirect draws in
+    flink:vkCmdDrawIndirect, flink:vkCmdDrawIndirectCountAMD,
+    flink:vkCmdDrawIndexedIndirect, and
+    flink:vkCmdDrawIndexedIndirectCountAMD.
+  * Modify Makefile to allow specification to build in git "`detached HEAD`"
+    state.
+  * Update valid usage ID generation script to allow recursively operating
+    on all `.txt` files in a specified directory, and move the `startVUID`
+    tracking information into a separate python file that is automatically
+    updated by the script.
+  * Fixed errors in API example code for
+    flink:vkUpdateDescriptorSetWithTemplateKHR and
+    flink:vkCmdPushDescriptorSetWithTemplateKHR.
+
+New Extensions:
+
+  * Add +vk.xml+ entries for pending `VK_ANDROID_native_buffer` extension
+    (note, this extension is not yet enabled).
+  * `VK_AMD_shader_image_load_store_lod`
+
+-----------------------------------------------------
+
+Change log for September 15, 2017 Vulkan 1.0.61 spec update:
+
+  * Bump API patch number and header version number to 61 for this update.
+
+Github Issues:
+
+  * Provide alternate length attributes (altlen=) in the XML schema, for
+    those using length attributes to generate code instead of documentation
+    (public issue 555).
+  * Fix erroneous references to `latex:` being used for asciidoc math
+    markup, rather than `latexmath:` (public pull request 556).
+  * Add author ID to XML for Kazan software renderer (public pull request
+    557).
+
+Internal Issues:
+
+  * Add the <<fundamentals-abi,Application Binary Interface>> section
+    describing platform ABI requirements and recommendations, add examples
+    of function and function pointer declarations to the
+    <<boilerplate-platform-specific-calling-conventions, Platform-Specific
+    Calling Conventions>> section, and remove related language that existed
+    elsewhere in the specification (internal issue 64).
+  * Describe where to document valid usage interactions of chained
+    structures in the style guide, and fix one case now appearing in
+    slink:VkBufferCreateInfo instead of the child
+    slink:VkDedicatedAllocationBufferCreateInfoNV structure (internal issue
+    715).
+  * Add example to the style guide of describing enumerated types which are
+    empty when the spec is built without relevant extensions enabled, and
+    apply it to existing examples for
+    elink:VkDescriptorSetLayoutCreateFlagBits and
+    elink:VkSubpassDescriptionFlagBits (internal issue 864).
+  * Add a note to the <<fundamentals-validusage-enums, Valid Usage for
+    Enumerated Types>> section that the special values suffixed with
+    etext:_BEGIN_RANGE, etext:_END_RANGE, etext:_RANGE_SIZE and
+    etext:_MAX_ENUM are not part of the API and should: not be used by
+    applications (internal issue 872).
+  * Added note to flink:vkCmdUpdateBuffers explaining the performance
+    penalty for copies done in this way, and why the upper copy limit is
+    what it is (internal issue 952).
+  * Update `VK_KHX_device_group` to split some functionality into the new
+    `VK_KHR_bind_memory2` extension, and rename that functionality (internal
+    issue 969).
+  * Remove *Status* fields from extension appendices, since they are by
+    definition published and complete by the time they reach the public
+    github repository (internal issue 973).
+
+Other Issues:
+
+  * Update Data Format specification dependency to version 1.2 and change
+    references to DF sections accordingly.
+  * Update XML to make the pname:pAllocator parameter of
+    flink:vkRegisterDeviceEventEXT and flink:vkRegisterDisplayEventEXT in
+    the `VK_EXT_display_control` extension as optional.
+
+New Extensions:
+
+  * `VK_KHR_bind_memory2`
+  * `VK_KHR_image_format_list`
+  * `VK_KHR_maintenance2`
+  * `VK_KHR_sampler_ycbcr_conversion`
+
+-----------------------------------------------------
+
+Change log for September 5, 2017 Vulkan 1.0.60 spec update:
+
+  * Bump API patch number and header version number to 60 for this update.
+
+Github Issues:
+
+  * Document that <<queries-timestamps, Timestamp Queries>> can only be
+    meaningfully compared when they are written from the same queue (public
+    issue 216).
+  * Document that the `<extension>` tag `type` attribute is required for
+    non-disabled extensions (derived from, but does not close public issue
+    354).
+  * Clean up registry schema length attribute descriptions to be consistent
+    and correct (public issue 555).
+
+Internal Issues:
+
+  * Replace as much of the hand-written extension appendix metadata as
+    possible with asciidoc includes generated from corresponding attributes
+    of +vk.xml+, and enhance the style guide to match. This avoids
+    inconsistencies between +vk.xml+ and the appendices, and produces a more
+    uniform style (internal issue 137).
+  * Remove the generated extDependency.{py,sh} files from the tree and
+    create them dynamically on demand instead, reducing merge conflicts
+    (internal issue 713).
+  * Add a prototype tool for generating in-place difference markup for
+    sections guarded by asciidoc conditionals, and new syntax for open
+    blocks to support it (internal issue 833).
+  * Remove unnecessary restriction of etext:*SYNC_FD_BIT_KHR external handle
+    types to the same physical device in the
+    slink:VkPhysicalDeviceIDPropertiesKHR,
+    flink:VkImportMemoryWin32HandleInfoKHR,
+    slink:VkImportFenceWin32HandleInfoKHR, slink:VkImportFenceFdInfoKHR,
+    slink:VkImportSemaphoreWin32HandleInfoKHR,
+    slink:VkImportSemaphoreFdInfoKHR
+    <<external-memory-handle-types-compatibility, External memory handle
+    types compatibility>>, <<external-semaphore-handle-types-compatibility,
+    External semaphore handle types compatibility>>, and
+    <<external-fence-handle-types-compatibility, External fence handle types
+    compatibility>> sections (internal issue 956).
+
+Other Issues:
+
+  * Remove dependency of +VK_KHX_device_group+ on +VK_KHR_swapchain+ (there
+    is an interaction, but not a strict dependency), and add a new
+    `extension` attribute to the `<require` XML tag to allow classifying a
+    subset of interfaces of an extension as requiring another extension.
+    Update the registry schema and documentation accordingly.
+
+New Extensions:
+
+  * `VK_AMD_shader_fragment_mask` (and related `GL_AMD_shader_fragment_mask`
+    GLSL extension)
+  * `VK_EXT_sample_locations`
+  * `VK_EXT_validation_cache`
+
+-----------------------------------------------------
+
+Change log for August 19, 2017 Vulkan 1.0.59 spec update:
+
+  * Bump API patch number and header version number to 59 for this update.
+
+Github Issues:
+
+  * Fix a few missing Implicit Valid Usage statements to indicate that a
+    common parent of two objects is required (public issue 497).
+  * Clarify render pass synchronization language for
+    slink:VkSubpassDependency and \<\<renderpass,render passes>> (public
+    issue 531).
+  * Rename ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT to
+    ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT for consistency, and
+    add an alias for backwards compatibility (public issue 539).
+
+Internal Issues:
+
+  * Add an explanation to the \<\<interfaces-builtin-variables-layer,
+    code:Layer>> description explaining that writing to invalid layers
+    results may or may not result in primitives being processed and fragment
+    shaders being run, and gives undefined results in the framebuffer
+    (internal issue 614)
+  * Add valid usage statement for slink:VkDescriptorSetLayoutBinding
+    requiring that input attachment descriptor bindings must not use
+    non-fragment stages (internal issue 933).
+
+Other Issues:
+
+  * Makes description of pname:loadOp and pname:storeOp easier to read in
+    the \<\<renderpass-load-store-ops>> section.
+
+New Extensions:
+
+  * `VK_EXT_shader_stencil_export`
+
+-----------------------------------------------------
+
+Change log for August 14, 2017 Vulkan 1.0.58 spec update:
+
+  * Bump API patch number and header version number to 58 for this update.
+
+Github Issues:
+
+  * Update the <<interfaces-resources-descset,Descriptor Set Interface>>
+    section to allow multiple variables with the same descriptor set/binding
+    decorations, and require that all variables that are statically used
+    must be consistent with the pipeline layout. Allow
+    ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER to be used with texture
+    and sampler variables (public issues 522, 524).
+
+Internal Issues:
+
+  * Replace networkx package used for extension dependency generation with a
+    homegrown network dependency traverser (internal issue 713).
+  * Specify in the <<interfaces-fragmentoutput, Fragment Output Interface>>
+    section that if a fragment shader writes integers that cannot be
+    represented in the format of the colour attachment, then the result is
+    undefined (internal issue 893).
+  * Separate malformed valid usage statement for
+    slink:VkPipelineRasterizationStateCreateInfo into two (internal issue
+    918).
+  * Fix cases where the term 'pNext chain' is incorrectly used in reference
+    to functions, rather than their parameters. Replace 'pNext list' with
+    'pNext chain'. Fixed typo in the example code of
+    +VK_KHR_dedicated_allocation+ (internal issue 944).
+  * Fix typo in elink:VkExternalSemaphoreHandleTypeFlagBitsKHR enum
+    descriptions, replacing
+    etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR with
+    ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR, and make the
+    description more consistent with
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR (internal issue 950).
+
+Other Issues:
+
+  * Clarify how pipeline stage masks affect
+    <<synchronization-pipeline-stages-masks, access and synchronization
+    scopes>>.
+  * Clarify that dedicated allocations do not allow aliasing in the
+    flink:vkBindBufferMemory and flink:vkBindImageMemory valid usage
+    statements.
+  * Correct specification of pname:dynamicCount for push_constant token in
+    slink:VkIndirectCommandsLayoutNVX.
+
+New Extensions:
+
+  * `VK_EXT_shader_viewport_index_layer`
+
+-----------------------------------------------------
+
+Change log for August 1, 2017 Vulkan 1.0.57 spec update:
+
+  * Bump API patch number and header version number to 57 for this update.
+
+Github Issues:
+
+  * Fix error in description of ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
+    block size (public issue 342).
+  * Update documentation of ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
+    to explicitly mention both graphics and compute pipelines (public issue
+    525).
+
+Internal Issues:
+
+  * Document that
+    slink:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts does
+    not cover integer formats (internal issue 550).
+  * Add a note under slink:VkImageViewCreateInfo describing how values meant
+    for one format can be sanitized when used via another format (internal
+    issue 927).
+  * Add valid usage statements to ftext:vkCmd* documenting that image
+    subresources used as attachments must not be accessed as non-attachments
+    in a render pass (internal issue 929).
+  * Remove obsolete 'validextensionstructs' attribute from +vk.xml+, the XML
+    schema, and the schema documentation (internal issue 946).
+
+New Extensions:
+
+  * `VK_AMD_mixed_attachment_samples`
+  * `VK_EXT_post_depth_coverage`
+  * `VK_KHR_relaxed_block_layout`
+
+-----------------------------------------------------
+
+Change log for July 21, 2017 Vulkan 1.0.56 spec update:
+
+  * Bump API patch number and header version number to 56 for this update.
+
+Github Issues:
+
+  * Add valid usage statements for commands introduced by
+    `VK_EXT_debug_report` and `VK_EXT_debug_marker` extensions, regarding
+    the valid pname:object and pname:objectType values (public issue 495).
+  * Modify `GL_KHR_vulkan_glsl` specification to document that uniform and
+    buffer block arrays each take only a single binding (public issue 514).
+  * Add `KHX` author tag to +vk.xml+ (public issue 526).
+
+Internal Issues:
+
+  * Document use of code: macro for non-Vulkan APIs in the style guide
+    (internal issue 863).
+  * Document that reference page open block delimiters must not contain
+    asciidoc section markup in the style guide (internal issue 898).
+  * Fix <<spirvenv,SPIR-V appendix>> to say
+    code:VariablePointersStorageBuffer instead of
+    code:VariablePointersUniformBufferBlock (internal issue 928).
+
+Other Commits:
+
+  * Add missing extension structures to dependency attributes in +vk.xml+.
+
+New Extenions:
+
+  * `VK_EXT_depth_range_unrestricted`
+
+-----------------------------------------------------
+
+Change log for July 15, 2017 Vulkan 1.0.55 spec update:
+
+  * Bump API patch number and header version number to 55 for this update.
+
+Github Issues:
+
+  * Removed unintended optional parameter in +vk.xml+ from the
+    pname:pWaitSemaphores member of slink:VkPresentInfoKHR, which resulted
+    in the generation of an incorrect implicit valid usage clause allowing
+    pname:pWaitSemaphores to be NULL even when pname:waitSemaphoreCount is
+    non-zero (public issue 491).
+  * Add missing attribute to +vk.xml+ documenting that
+    slink:VkSwapchainCounterCreateInfoEXT extends
+    slink:VkSwapchainCreateInfo (public issue 510).
+  * Add const qualifier for some `VK_EXT_debug_market` extension command
+    parameters that were missing it (public issue 513).
+  * Fix definition of q and level~base~ in
+    <<textures-image-level-selection,Image Level(s) Selection>> (public
+    issue 515).
+  * Clarify lifetime requirement for slink:VkRenderPass objects used in
+    object creation (public issue 516).
+  * Fix link to floating/normalized fixed-point conversion from
+    <<interfaces-fragmentoutput,Fragment Output Interface>> (public issue
+    521).
+
+Internal Issues:
+
+  * Update the style guide to include the general structure of a Vulkan
+    command name, the specific rule for using "`Get`" vs. "`Enumerate`" in
+    names, and a table of verbs commonly used in command names (spinoff of
+    internal issue 753).
+  * Clarified the behavior of automatic layout transitions in case of
+    attachment views that are 2D or 2D array views of 3D images. In
+    addition, restructured the valid usage clauses corresponding to the
+    members of the slink:VkImageSubresourceRange structure and added missing
+    valid usage clauses for its pname:baseMipLevel and pname:baseArrayLayer
+    members (internal issues 803, 849).
+  * Modify `GL_KHR_vulkan_glsl` specification to allow explicit std430 on a
+    push_constant declaration (internal issue 919).
+
+Other Commits:
+
+  * Modify <<synchronization-framebuffer-regions, Framebuffer Region
+    Dependencies>> to use synchronization scope terminology.
+  * Add ename:VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT to the
+    `VK_EXT_swapchain_colorspace` extension.
+  * Replace XML comments with `comment` attributes and/or tags, to enable
+    tools which transform the XML without loss of information.
+  * Replace `validextensionstructs` with `structextends`, which is tagged in
+    the child structure instead of the parent. This makes it slightly
+    simpler to add new structs to the XML, causes fewer merge conflicts, and
+    the information is kept localized to the extension structures where it
+    belongs. The old `validextensionstructs` attributes will be retained
+    until we're certain this doesn't cause problems with known consumers of
+    +vk.xml+.
+
+-----------------------------------------------------
+
+Change log for July 13, 2017 Vulkan 1.0.54 spec update:
+
+  * Bump API patch number and header version number to 54 for this update.
+
+Github Issues:
+
+Internal Issues:
+
+  * Fix tessellation domain to have an upper-left origin in the
+    <<img-tessellation-topology-ul, tessellation toplogy image>> and related
+    language. CTS and all implementations were already doing this, it was
+    just a documentation bug that it was flipped to lower-left (internal
+    issue 603).
+  * Add a section to the style guide describing how VUID tags are changed
+    and removed when the corresponding Valid Usage statements are modified
+    (internal issue 829).
+  * Add explicit Valid Usage statement to
+    slink:VkPipelineDynamicStateCreateInfo to require that members of
+    pname:pDynamicStates must be unique (internal issue 851).
+
+New Extensions:
+
+  * `VK_KHR_16bit_storage`
+  * `VK_KHR_dedicated_allocation`
+  * `VK_KHR_external_fence`
+  * `VK_KHR_external_fence_capabilities`
+  * `VK_KHR_external_fence_fd`
+  * `VK_KHR_external_fence_win32`
+  * `VK_KHR_get_memory_requirements2`
+  * `VK_KHR_storage_buffer_storage_class`
+  * `VK_KHR_variable_pointers`
+
+Extensions Promoted From KHX To KHR Status:
+
+  * `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_win32_keyed_mutex`
+
+-----------------------------------------------------
+
+Change log for June 24, 2017 Vulkan 1.0.53 spec update:
+
+  * Bump API patch number and header version number to 53 for this update.
+
+Github Issues:
+
+Internal Issues:
+
+  * Clarify mappings of coordinates for mutable, compatible image views in
+    slink:VkImageViewCreateInfo (internal issue 815).
+  * Make ename:VK_BIND_SFR_BIT require a logical device with multiple
+    physical devices, so that standard sparse image block dimensions are
+    only required on systems that support multi-GPU (internal issue 835).
+  * Convert all files from use of // refBegin .. // refEnd comments to
+    delimit ref pages, to use of open blocks, and update style guide
+    accordingly (internal issue 839).
+  * Add valid usage for slink:VkWriteDescriptorSet when performing updates
+    to a ename:VK_STORAGE_IMAGE descriptor with layout
+    ename:VK_IMAGE_LAYOUT_GENERAL.
+  * Add a hack to the validity generator script to support an odd
+    interaction between flink:vkCmdFillBuffer and an extension (internal
+    issue 853).
+  * Remove redundant text describing slink:VkBufferCreateInfo::pname:usage,
+    which was already covered by implicit valid usage (internal issue 854).
+  * Update implicit validity generator script to properly handle the
+    pname:sType and pname:pNext members of "returnedonly" structures
+    (internal issue 874).
+  * Note that slink:VkApplicationInfo::pname:pApplicationName &
+    slink:VkApplicationInfo::pname:pEngineName are optional, and add missing
+    implicit valid usage statements for flink:vkDestroyInstance.
+  * Added missing valid usage for flink:vkCmdWriteTimestamp to require a
+    timestamp query pool.
+  * Simplify and/or split "`non-atomic`" valid usage statements.
+
+New Extensions:
+
+  * `VK_AMD_gpu_shader_int16`
+  * `VK_EXT_blend_operation_advanced`
+  * `VK_EXT_sampler_filter_minmax`
+  * `VK_NV_framebuffer_mixed_samples`
+
+-----------------------------------------------------
+
+Change log for June 13, 2017 Vulkan 1.0.52 spec update:
+
+  * Bump API patch number and header version number to 52 for this update.
+
+Github Issues:
+
+Internal Issues:
+
+  * Clarify behavior when non-coherent memory has
+    <<memory-device-unmap-does-not-flush, not been flushed before being
+    unmapped>> (internal issue 819).
+  * Fix description of code:WorkgroupSize builtin to note it decorates an
+    object, not a variable (internal issue 836).
+  * Fix asciidoc attributes so that trailing '{plus}' symbols in [eq] style
+    equations are rendered properly (internal issue 845).
+  * Add language to the "`Extension Handles, Objects, Enums, and Typedefs`"
+    section of the Procedures and Conventions document stating that any new
+    handle type requires a corresponding entry in the elink:VkObjectType
+    enumerated type (internal issue 856).
+  * Update style guide to use slink macro for Vulkan handle type names, and
+    define narrow conditions under which to use the *name and *text macros
+    instead of *link (internal issue 886).
+  * Add a dependency of the <<VK_KHX_device_group,VK_KHX_device_group>>
+    extension on VK_KHX_device_group_creation to +vk.xml+ and the extension
+    appendix.
+  * Change the copyright on Vulkan specification asciidoc *source* files to
+    CC-BY 4.0, and update the proprietary Khronos copyright applied to the
+    generated *output* formats (internal issue 327). This enables broader
+    re-use and modification of the Vulkan specification sources, while not
+    affecting the Reciprocal IP License between Vulkan Adopters and Working
+    Group Members.
+
+New Extensions:
+
+  * `VK_NV_fill_rectangle`
+  * `VK_NV_fragment_coverage_to_color`
+
+-----------------------------------------------------
+
+Change log for June 4, 2017 Vulkan 1.0.51 spec update:
+
+  * Bump API patch number and header version number to 51 for this update.
+
+Github Issues:
+
+  * Add Valid Usage statement to flink:vkCmdResolveImage to require that
+    source and destination image formats match (public issue 492).
+  * Specify that a code:char* parameter must: be a valid null-terminated
+    string in the <<fundamentals-implicit-validity, implicit valid usage>>
+    section (public issue 494).
+  * Removed unnecessary VU for slink:VkPhysicalDeviceFeatures which is
+    covered by ename:VK_ERROR_FEATURE_NOT_PRESENT already (public issue
+    496).
+  * Clarify valid usage of pname:pQueueFamilyIndices in
+    slink:VkBufferCreateInfo, slink:VkImageCreateInfo, and
+    slink:VkSwapchainCreateInfoKHR (public issue 501).
+  * Document that dependencies of enabled extensions must also be enabled in
+    the <<extended-functionality-extensions-dependencies, Extension
+    Dependencies>> section (public issue 507).
+
+Internal Issues:
+
+  * Change slink:VkMappedMemoryRange valid usage to allow pname:offset +
+    pname:size == size of the allocation. Also, if ename:VK_WHOLE_SIZE is
+    used, require the end of the mapping to be aligned to a multiple of
+    pname:nonCoherentAtomSize (internal issue 611).
+  * Add issue to `VK_KHR_win32_surface` about reusing window objects from a
+    different graphics API or Vulkan ICD (internal issue 639).
+  * Require locations on user in/out in `GL_KHR_vulkan_glsl` (internal issue
+    783).
+  * Added version info to the json validation output, and updated the schema
+    to match (internal issue 838).
+  * Restructure enumerated type descriptions separately from the command or
+    structure they are used in, allowing better reference page generation
+    (internal issue 841).
+  * Re-sort extension appendices to be in alphabetical order within each
+    author ID section.
+  * Fix enum naming and clarify behavior for
+    `VK_NVX_device_generated_commands` extension.
+
+-----------------------------------------------------
+
+Change log for May 20, 2017 Vulkan 1.0.50 spec update:
+
+  * Bump API patch number and header version number to 50 for this update.
+
+Github Issues:
+
+  * Fix numerous minor issues with the VK_EXT_debug_report extension (public
+    issues 478, 483, 486, 489, 490).
+
+Internal Issues:
+
+  * Update flink:vkAllocateDescriptorSets to specify conditions under which
+    to return ename:VK_ERROR_FRAGMENTED_POOL or
+    ename:VK_ERROR_OUT_OF_POOL_MEMORY instead of
+    out-of-host/out-of-device-memory, and improve the
+    <<fundamentals-errorcodes, description of those errors (internal issue
+    654).
+  * Add a NOTE documenting that flink:vkAcquireNextImageKHR can only signal
+    a single semaphore, and how to deal with that when multiple physical
+    devices in a logical device need to wait on it (internal issue 730).
+  * Improve description of pname:pNext chains of
+    slink:VkPhysicalDeviceImageFormatInfo2KHR and
+    slink:VkImageFormatProperties2KHR (internal issue 814).
+  * Clean up math markup issues in the <<textures, Image Operations>>
+    chapter (internal issue 818).
+  * Update validusage target to use more robust code for preprocessing, by
+    making direct use of Asciidoctor's preprocessor. Added uniqueItems check
+    to JSON vu schema and add clean_validusage target (internal issue 826).
+  * Update style guide to prohibit writing non-self-contained (on a single
+    bullet point) Valid Usage statements, and modify offending Valid Usage
+    statements in the Specification to match, to assist with automatic
+    extraction for the validation layers (internal issue 828).
+  * Add ename:VK_VALIDATION_CHECK_SHADERS_EXT to elink:VkValidationCheckEXT
+    of the `VK_EXT_validation_flags` extension, to selectively disable
+    shader validation.
+  * Remove duplicate valid usage statement for slink:VkImageMemoryBarrier.
+  * Modify reflow.py script to place VUID tag anchors standalone on a line
+    following their corresponding bullet point, and reflow the spec text
+    accordingly (this had been pending since the initial tag deployment).
+
+New Extensions:
+
+  * `VK_AMD_texture_gather_bias_lod`
+
+-----------------------------------------------------
+
+Change log for May 12, 2017 Vulkan 1.0.49 spec update:
+
+  * Bump API patch number and header version number to 49 for this update.
+
+Github Issues:
+
+  * Modify reference page extraction script to make internal links to spec
+    anchors refer to the core specification instead of being dangling links
+    (public issue 455).
+  * Fix GL_KHR_vulkan_glsl typo and add a nor-normative mapping to the newly
+    published StorageBuffer class (public issue 466).
+  * Both flink:vkEnumerateInstanceExtensionProperties and
+    flink:vkEnumerateDeviceExtensionProperties return
+    ename:VK_ERROR_LAYER_NOT_PRESENT, which covers the error case of an
+    application providing a layer name that wasn't returned by
+    ftext:vkEnumerate{Instance|Device}LayerProperties (public issue 487).
+  * The specification for flink:VkApplicationInfo::apiVersion says that the
+    driver must return ename:VK_ERROR_INCOMPATIBLE_DRIVER in the case that
+    pname:apiVersion specifies a non-supported version. That means that the
+    valid usage should not also state that, and so the VU statement is
+    removed. The VU had language about "`an effective substitute`" that
+    would have been lost, and so it was moved to the pname:apiVersion
+    description (public issue 488).
+
+Internal Issues:
+
+  * Modify implicit validity generator script to assign asciidoc anchors to
+    all valid usage statements it generates, and reflow.py script to insert
+    Valid Usage ID (VUID) tags into the specification source files for
+    explicit valid usage statements. This has no semantic effects on the
+    specification, but will support the validation layer's detection of
+    valid usage violations and allow it to link into the corresponding part
+    of the specification (internal issue 583).
+  * Assign VUID tags to all explicit VU statements and document
+    the process and tag format in the style guide (internal issue 583).
+  * Clarify the rules of whether to structure new functionality as instance
+    extensions, device extensions, or both in the
+    <<extended-functionality-instance-extensions-and-devices, Instance
+    Extensions and Device Extensions>> section (internal issue 749).
+  * Require that SPIR-V run-time arrays are only used with the
+    code:BufferBlock decoration (internal issue 750).
+  * Fix implicit and explicit valid usage statements for
+    slink:VkWriteDescriptorSet::pname:dstSet (internal issue 767)
+  * Fix SPIR-V code sample for ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
+    in the <<descriptorsets-uniformtexelbuffer, Uniform Texel Buffer>>
+    section (internal issue 770).
+  * Clarify that disabling depth testing also disables depth writes in the
+    <<fragops-ds-state, Depth and Stencil Operations>> section (internal
+    issue 775).
+  * flink:VkDescriptorImageInfo::pname:imageLayout must match the actual
+    imageLayout at the time the image is accessed. This was in the spec
+    text, but needed an associated valid usage statement.
+  * Note that only 32-bit atomic operations are supported in the
+    <<spirvenv-module-validation, Validation Rules within a Module>>
+    section.
+  * Note that code:UniformConstant variables must not have initializers in
+    the <<spirvenv-module-validation, Validation Rules within a Module>>
+    section.
+  * Add a new elink:VkObjectType enumeration to the core API, promoted from
+    elink:VkDebugObjectTypeEXT, since it is used for much more than just the
+    debug_report extension.
+
+New Extensions:
+
+  * `VK_KHR_get_surface_capabilities2`
+  * `VK_KHR_shared_presentable_image`
+
+-----------------------------------------------------
+
+Change log for April 15, 2017 Vulkan 1.0.48 spec update:
+
+  * Bump API patch number and header version number to 48 for this update.
+
+Internal Issues:
+
+  * Add missing VU statements for flink:vkUpdateDescriptorSets (internal
+    issue 333).
+  * Correct swapped ifdef/ifndef blocks for `VK_KHR_maintenance1` extension
+    (internal issue 776).
+
+-----------------------------------------------------
+
+Change log for April 8, 2017 Vulkan 1.0.47 spec update:
+
+  * Bump API patch number and header version number to 47 for this update.
+
+Github Issues:
+
+  * Allow <<synchronization-pipeline-barriers-subpass-self-dependencies,
+    self-dependencies>> (also described for slink:VkSubpassDependency) to
+    have earlier stages depend on later stages if all stages are
+    framebuffer-space (public issue 125).
+  * Clarify when pipeline state structures are ignored in the
+    slink:VkGraphicsPipelineCreateInfo strucure, when the tessellation
+    structure must be valid, and remove 'if `NULL`' descriptions from the
+    valid usage statements (public issue 445).
+  * Remove the obsolete "validextensionstructs" attribute for
+    flink:VkPresentRegionsKHR. This caused a pname:pNext valid usage
+    statement to be generated which wasn't consistent with what is stated in
+    the spec (public issue 481).
+
+Internal Issues:
+
+  * Clarify facingness of non-polygon fragments for slink:VkStencilOpState
+    and in the code:FrontFacing <<interfaces-builtin-variables,built-in
+    variable description>>. Define 'facingness' of a fragment as a distinct
+    term from facingness of a polygon (internal issue 662).
+  * Clarify that the texture compression features (e.g.
+    pname:textureCompressionBC) means that all formats of that type
+    (<<features-features-textureCompressionASTC_LDR,ASTC>>,
+    <<features-features-textureCompressionETC2,ETC2>>,
+    <<features-features-textureCompressionBC,BC>>) are supported, and that
+    support for individual formats may: queried separately (internal issue
+    663).
+  * Clarify in the valid usage for slink:VkBindImageMemoryInfoKHX that each
+    SFR rectangle must be a multiple of the sparse block size for each
+    aspect, e.g. in a depth/stencil image using separate depth/stencil
+    planes (internal issue 721).
+  * Re-remove KHX variants of KHR structure types after promotion (internal
+    issue 762).
+
+-----------------------------------------------------
+
+Change log for March 31, 2017 Vulkan 1.0.46 spec update:
+
+  * Bump API patch number and header version number to 46 for this update.
+
+Github Issues:
+
+  * Add language to the <<fundamentals-validusage-enums, Valid Usage for
+    Enumerated Types>> section allowing values to be returned from Vulkan
+    that are not present in extensions explicitly enabled by the
+    application, similar to existing language for bit flags in the
+    <<fundamentals-validusage-flags, Valid Usage for Flags>> section (public
+    issue 442).
+  * *Important*: run `gem update --pre asciidoctor-pdf` before trying to
+    build this version of the spec - 1.5.0.alpha15 is required for this
+    change. Removes the monkey patch currently used to draw valid usage
+    blocks across multiple pages which had numerous issues. A fixed version
+    was incorporated into Asciidoctor-PDF for the latest release, so the
+    monkey patch or any variant thereof is no longer required (public issue
+    465).
+
+Internal Issues:
+
+  * Add ename:VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
+    to `VK_EXT_debug_report` extension
+  * Fix ptext:pNext member of
+    slink:VkPhysicalDeviceDiscardRectanglePropertiesEXT to be a non-const
+    pointer. Properties structures return values, so the chain should be
+    non-const.
+  * Explicitly remove gl_NumSamples from the `GL_KHR_vulkan_glsl` extension,
+    against 1.0 (internal issue 612).
+  * Add Valid Usage statements requiring that each structure type valid in a
+    ptext:pNext chain must: not appear more than once in a chain (internal
+    issue 752).
+  * Use ename:VK_USE_PLATFORM_WIN32_KHX in the
+    `VK_KHX_external_memory_win32` extension, rather than etext:_KHR
+    (internal issue 754).
+
+New Extensions:
+
+  * `VK_KHR_incremental_present`
+
+-----------------------------------------------------
+
+Change log for March 24, 2017 Vulkan 1.0.45 spec update:
+
+  * Bump API patch number and header version number to 45 for this update.
+
+Github Issues:
+
+  * Defined the lifetime of the memory pointed to by
+    slink:VkDisplayPropertiesKHR::pname:displayName to be equal to that of
+    its associated display handle (public issue 460).
+  * Correct several cases where the sparse memory feature name
+    pname:residencyNonResidentStrict was written as
+    pname:sparseResidencyNonResidentStrict (public issue 475).
+
+Internal Issues:
+
+  * Fix ptext:pNext member of slink:VkPhysicalDeviceGroupPropertiesKHX to be
+    a non-const pointer. Properties structures return values, so the chain
+    should be non-const.
+  * Clarify definition of memory aliasing to consistently use the terms
+    "linear" and "non-linear" when referring to resources, and define what
+    those terms mean.
+  * Modified XML schema and implicit validity scripts to generate language
+    for all ptext:pNext values in a ptext:pNext chain instead of just the
+    top level struct, and made `noautovalidity` functional for ptext:sType
+    and ptext:pNext (internal issue 535).
+  * Add more detail for BT2020 and scRGB color spaces in
+    `VK_EXT_swapchain_colorspace` extension (internal issue 632).
+  * Add naming rules for Extension Structure Names (structures added to the
+    ptext:pNext chain of a base structure) to the style guide (internal
+    issue 706).
+  * Define the glossary term "ptext:pNext chain", and use it consistently in
+    the spec (internal issue 744).
+
+-----------------------------------------------------
+
+Change log for March 17, 2017 Vulkan 1.0.44 spec update:
+
+  * Bump API patch number and header version number to 44 for this update.
+
+Github Issues:
+
+  * Fix description of <<features-extentperimagetype, Allowed Extent Values
+    Based On Image Type>> (public issue 290).
+  * Better specify VK_DEVICE_LOST behavior around flink:vkQueueSubmit,
+    flink:vkWaitForFences, and flink:vkGetFenceStatus (public issue 423).
+  * Clarify definition of flink:vkGetQueryPoolResults::pname:queryCount
+    (public issue 441).
+  * Simplify and clean up normative language. Remove shall and replace
+    recommend and variants with should wherever possible (public issue 448).
+  * Fix all dangling internal cross-references in the 1.0-extensions
+    specification, and add scripts/checkXrefs to find these in the future
+    (public issue 456).
+  * Reverse order of ChangeLog.txt entries so the most recent version is
+    documented first (public issue 463)
+  * Removes "become invalid" which clashes with invalid state for command
+    buffers. (public issue 467)
+  * Disallowed pending state in spec text for vkResetCommandBuffer, matching
+    valid usage (public issue 468)
+  * Removes sentence describing invalid state "like initial state". (public
+    issue 469)
+  * Disallows begin command buffer from resetting command buffers in the
+    "recording" state. (public issue 470)
+  * Removes mention of state from description of
+    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT (public issue 471)
+  * Removed extra valid usage statement in VkSubmitInfo (public issue 472)
+
+Internal Issues:
+
+  * Clarify description of the pname:imageLayout member of
+    sname:VkDescriptorImageInfo.
+  * Fix typos where etext:VK_VIEW_TYPE* was used instead of
+    etext:VK_IMAGE_VIEW_TYPE.
+  * Removed the <<VK_KHR_display>> and <<VK_KHR_display_swapchain>> example
+    code from the specification and noted it has been moved to the Vulkan
+    SDK cube demo (internal issue 179).
+  * Reorder VkExternalMemoryHandleTypeFlagBitsNV description (internal issue
+    480).
+  * Clarify than an implementation is
+    <<fundamentals-validusage-flags,permitted to return 'undefined' bit
+    flags>> in a bitfield (internal issue 640).
+  * Break Valid Usage statements describing unrelated parameters into
+    separate statements, and add a style guide entry to follow this approach
+    (internal issue 685).
+  * Move valid usage statement for slink:VkImageCreateInfo from spec body to
+    the explicit valid usage block (internal issue 693).
+  * Fix typos in the descriptions of slink:VkDisplaySurfaceCreateInfoKHR,
+    flink:vkCreateDisplayModeKHR, and
+    flink:vkGetDisplayPlaneSupportedDisplaysKHR in the <<display,Presenting
+    Directly to Display Devices>> section (internal issue 698, 704, 716).
+  * Clarified that mandatory depth/stencil formats are only a requirement
+    for 2D images (internal issue 719).
+  * Clarify that variables decorated with DeviceIndex/ViewIndex must be in
+    the Input storage class (internal issue 733).
+  * Work around generator script problem with removal of Unicode literals
+    from Python 3.0-3.2 using `future` package (internal issue 737).
+  * Remove nonexistent structure type enums from vk.xml (internal issue
+    738).
+  * Fix validextensionstructs attributes for structures in the pname:pNext
+    chain for VkPresentInfoKHR, fixing implicit valid usage statements for
+    those structures (internal issue 740).
+
+-----------------------------------------------------
+
+Change log for March 10, 2017 Vulkan 1.0.43 spec update:
+
+  * Bump API patch number and header version number to 43 for this update.
+
+Github Issues:
+
+  * Make clearer that color write mask is applied regardless of whether
+    blending is enabled, by referring to the
+    <<framebuffer-color-write-mask,Color Write Mask>> section (public issue
+    241).
+  * Fix public issue 414:
+  ** Added two new command buffer states (invalid, pending), and an explicit
+     "command buffer lifecycle" section to explain them.
+  ** Replaced "pending execution" with "in the pending state".
+  ** Replaced a bunch of "this will invalidate the command buffer" language
+     with "this will move the command buffer to the invalid state", and added
+     validation language for what state those command buffers should be in.
+  ** Added additional validation language about what state a command buffer
+     should be in for various commands that affect it.
+  ** Added invalidation language to destroy commands in the lifetimes section
+     of fundamentals.
+  ** Added command buffers to list of objects which must not be deleted
+     whilst a (primary) command buffer is in the recording or pending state.
+  * Update `GL_KHR_vulkan_glsl` extension to allow anonymous push constant
+    blocks (public issue 428).
+
+Internal Issues:
+
+  * Document rules about extension interactions in the style guide (internal
+    issue 579).
+  * Require ename:VK_PRESENT_MODE_MAILBOX_KHR support in queries of surfaces
+    created with flink:vkCreateWaylandSurfaceKHR using the
+    VK_KHR_wayland_surface extension (internal issue 666).
+  * Remove Valid Usage constraints for flink:vkAllocateDescriptorSets when
+    the `VK_KHR_maintainance1` extension is present (internal issue 686).
+  * Remove undocumented KHX-variants of vkGetPhysicalDeviceProperties2KHR
+    and vkGetPhysicalDeviceImageFormatProperties2KHR from the
+    <<VK_KHX_external_memory_capabilities>> and
+    <<VK_KHX_external_semaphore_capabilities>> extensions.
+
+New Extensions:
+
+  * `VK_EXT_hdr_metadata`
+  * `VK_GOOGLE_display_timing`
+
+-----------------------------------------------------
+
+Change log for February 27, 2017 Vulkan 1.0.42 spec update:
+
+  * Bump API patch number and header version number to 42 for this update
+    (the first anniversary edition).
+
+Github Issues:
+
+  * Changed asciidoctor macros so cross-page links in the standalone
+    reference pages function properly (public issue 462).
+
+Internal Issues:
+
+  * Clarified host visibility discussion for slink:VkMemoryType,
+    flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
+    <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
+    section, removing duplicated information and adding a central definition
+    in the access types section (internal issue 552).
+  * Change description of
+    slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
+    return an array of values, not structures (internal issue 699).
+
+New Extensions:
+
+  * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
+    the experimental status of `KHX` extensions.
+  * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
+    release at GDC:
+  ** VK_KHR_descriptor_update_template
+  ** VK_KHR_push_descriptor
+  ** VK_KHX_device_group
+  ** VK_KHX_device_group_creation
+  ** VK_KHX_external_memory
+  ** VK_KHX_external_memory_capabilities
+  ** VK_KHX_external_memory_fd
+  ** VK_KHX_external_memory_win32
+  ** VK_KHX_external_semaphore
+  ** VK_KHX_external_semaphore_capabilities
+  ** VK_KHX_external_semaphore_fd
+  ** VK_KHX_external_semaphore_win32
+  ** VK_KHX_multiview
+  ** VK_KHX_win32_keyed_mutex
+  ** VK_EXT_discard_rectangles
+  ** VK_MVK_ios_surface
+  ** VK_MVK_macos_surface
+  ** VK_NVX_multiview_per_view_attributes
+  ** VK_NV_clip_space_w_scaling
+  ** VK_NV_geometry_shader_passthrough
+  ** VK_NV_sample_mask_override_coverage
+  ** VK_NV_viewport_array2
+  ** VK_NV_viewport_swizzle
+  * Add new GLSL vendor extensions to support new builtin variables:
+  ** GL_EXT_device_group
+  ** GL_EXT_multiview
+
+-----------------------------------------------------
+
+Change log for February 17, 2017 Vulkan 1.0.41 spec update:
+
+  * Bump API patch number and header version number to 41 for this update.
+
+Github Issues:
+
+  * Made all uses of `NULL` vs. code:VK_NULL_HANDLE consistent (public issue
+    276).
+  * Clarify render pass compatibility in different usage scenarios (public
+    issues 403 and 404).
+  * Add valid usage statements to slink:VkFramebufferCreateInfo requiring
+    that the width, height, and number of layers of the framebuffer all be
+    nonzero (public issue 432).
+  * Allow `offset` and `align` in any GLSL version for the
+    `GL_KHR_vulkan_glsl` extension (public issue 435).
+  * Specify lifetime of string objects passed to the
+    tlink:PFN_vkDebugReportCallbackEXT user callback in the
+    +VK_EXT_debug_report+ extension (public issue 446).
+  * Fix inter-page links in multi-file reference pages (public issue 454).
+
+Internal Issues:
+
+  * Update valid usage language for slink:VkImageCreateInfo to disallow
+    creating images that have ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
+    set without other attachment usage bits
+    (ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
+    ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, or
+    ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) (internal issue 540).
+  * Disable `VK_EXT_swapchain_colorspace` extension until internal issues
+    640 and 661 are mutually resolved.
+  * Allow alternative mipmap level selection when [eq]#lambda == 0.5# during
+    texture <<textures-image-level-selection,Image Level(s) Selection>>
+    (internal issue 680).
+
+Other Issues:
+
+  * Add a clarification to the style guide that the extension revision
+    number is treated as a patch number, so that changes to published
+    extensions should only include bug fixes and spec clarifications.
+
+-----------------------------------------------------
+
+Change log for February 10, 2017 Vulkan 1.0.40 spec update:
+
+  * Bump API patch number and header version number to 40 for this update.
+  * There is a major build change in this release. We are now using the
+    Ruby-based ``asciidoctor'' implementation, rather than the Python-based
+    ``asciidoc'' implementation, to process the specification. While the
+    actual specification markup changes were minimal, this requires a new
+    set of build tools and a very different installation process, especially
+    because we now use an experimental direct-to-PDF backend for Asciidoctor
+    instead of Docbook->dblatex->PDF. It is no longer possible to build the
+    Specification using asciidoc. See doc/specs/vulkan/README.adoc
+    for some guidance on installing the new toolchain components.
+  * There are some minor rendering issues in the PDF output due to teething
+    problems with the asciidoctor toolchain, especially with mathematical
+    equations. We are aware of these and working on them.
+
+Github Issues:
+
+  * Updated sample code for the <<sparsememory-examples-basic,sparse
+    resource binding example>> (public issue 97).
+  * Modify line and point clipping behavior in the
+    <<vertexpostproc-clipping, Primitive Clipping>> section to allow for
+    pop-free behavior. The ability to check for which behavior is
+    implemented may be added a future feature or extension (public issue
+    113).
+  * Unify the discussions of implicit ordering throughout the spec, in
+    particular in the new sections <<drawing-primitive-order, Primitive
+    Order>>, <<primrast-order, Rasterization Order>>, and
+    <<synchronization-implicit, Implicit Synchronization Guarantees>>; the
+    discussion of <<synchronization-submission-order, submission order>>;
+    and references elsewhere to these sections (public issue 133).
+  * Clarify \<\<descriptorsets-compatibility,Pipeline Layout Compatibility>>
+    language and introduce the term ``identically defined'' (public issue
+    164).
+  * Add a dependency to the +VK_EXT_debug_marker+ extension that's needed to
+    reuse the object type enum from +VK_EXT_debug_report+, and moves the
+    definition of that enum into +VK_EXT_debug_report+ where it should be
+    (public issue 409).
+  * Remove redundant valid usage statement from slink:VkImageBlit (public
+    issue 421).
+  * Update GL_KHR_vulkan_glsl to allow the ternary operator to result in a
+    specialization constant (public issue 424).
+  * Fix valid usage for flink:VkPipelineShaderStageCreateInfo (public issue
+    426).
+  * Correct typo in New Objects list for <<VK_EXT_debug_report>> (public
+    issue 447).
+
+Internal Issues:
+
+  * Moved to asciidoctor for spec builds (internal issue 121).
+  * Update style guide to describe where to put new extensions-specific
+    asciidoc files, and what to name them (internal issue 626).
+  * Add src/spec/indexExt.py to autogenerate registry index entries linking
+    into the 1.0-extensions specification, instead of maintaining the index
+    manually. (internal issue 642).
+  * Autogenerate extension dependencies and lists of all extensions and all
+    KHR extensions from the "supported" attributes in +vk.xml+. Execute
+    +make config/extDependency.sh+ from +doc/specs/vulkan+ when a supported
+    extension is added to vk.xml, to regenerate the dependency script. The
+    consequence is that specifying a single extension to the +makeExt+
+    script will automatically enable all extensions it depends on as well,
+    and that the +makeAllExts+ and +makeKHR+ scripts do not need to be
+    updated when a new extension is supported (internal issue 648).
+  * Put extension appendices all at the same asciidoc section level, so KHR
+    WSI extensions show up in the HTML index (internal issue 648).
+
+Other Issues:
+
+  * Imbed images in the generated HTML specs instead of loading them from
+    the images/ directory.
+  * Fix missing EXT in extension name
+    (ename:VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME).
+  * Add new +VK_EXT_SMPTE_2086_metadata+ extension.
+  * In the <<platformCreateSurface_xlib,Xlib Surface>> section of the
+    `VK_KHR_xlib_surface` specification, add language warning users that
+    they always need to call code:XinitThreads.
+  * Use the term "presentable image" (rather than "swapchain image")
+    consistently in `VK_KHR_swapchain` and related extensions, and add a
+    glossary term defining it.
+  * Relocate the valid usage for samples of
+    flink:vkGetPhysicalDeviceSparseImageFormatProperties2KHR::pname:pFormatInfo
+    to be below the flink:VkPhysicalDeviceSparseImageFormatInfo2KHR
+    structure.
+
+-----------------------------------------------------
+
+Change log for January 23, 2017 Vulkan 1.0.39 spec update:
+
+  * Bump API patch number and header version number to 39 for this update.
+
+Github Issues:
+
+  * Clarified that only accesses via the specified buffer/image subresource
+    ranges are included in the access scopes (public issue 306).
+  * Add missing valid usage statements for flink:vkCreateComputePipelines
+    and flink:vkCreateGraphicsPipelines (public issue 427).
+
+Internal Issues:
+
+  * Add a Note to the <<invariance,Invariance>> appendix about a difference
+    between OpenGL and Vulkan with regards to how primitives derived from
+    offsets are handled (internal issue 355).
+  * Add the +<<VK_KHR_get_physical_device_properties2>>+,
+    +<<VK_KHR_maintenance1>>+, and +<<VK_KHR_shader_draw_parameters>>+
+    extensions (internal issue 448).
+  * Add the +<<VK_EXT_shader_subgroup_vote>>+ and
+    +<<VK_EXT_shader_subgroup_ballot>>+ extensions (internal issue 449).
+  * Update the texture level-of-detail equation in the
+    <<textures-scale-factor,Scale Factor Operation>> section to better
+    approximate the ellipse major and minor axes (internal issue 547).
+  * Forbid non-explicitly allowed uses of interface decorations in the
+    introduction to the <<interfaces,Shader Interfaces>> chapter (internal
+    issue 607).
+  * Replace use of MathJax with KaTeX, for improved load-time performance as
+    well as avoiding the scrolling-and-scrolling behavior due to MathJax
+    asynchronous rendering when loading at an anchor inside the spec. This
+    change also requires moving to HTML5 output for the spec instead of
+    XHTML, and there is a visible difference in that the chapter navigation
+    index is now in a scrollable sidebar instead of at the top of the
+    document. We may or may not retain the nav sidebar based on feedback
+    (internal issue 613).
+  * Improve consistency of markup and formatting in extension appendices
+    (internal issue 631).
+
+Other Issues:
+
+  * Add explicit valid usage statements to slink:VkImageCopy requiring that
+    the source and destination layer ranges be contained in their respective
+    source and destination images.
+  * Add valid usage language for swapchain of flink:vkAcquireNextImage. If
+    the swapchain has been replaced, then it should not be passed to
+    flink:vkAcquireNextImage.
+  * Add a valid usage statement to flink:vkCreateImageView, that the image
+    must have been created with an appropriate usage bit set.
+  * Noted that slink:VkDisplayPresentInfoKHR is a valid extension of
+    slink:VkPresentInfoKHR in the <<wsi_swapchain,WSI Swapchain>> section.
+  * Update valid usage for flink:vkCmdSetViewport and flink:vkCmdSetScissor
+    to account for the multiple viewport feature. If the feature is not
+    enabled, the parameters for these functions have required values that
+    are defined in the <<features-features-multiViewport,multiple
+    viewports>> section of the spec but were not reflected in the valid
+    usage text for these functions.
+  * Add the +<<VK_EXT_swapchain_colorspace>>+ extension defining common
+    color spaces.
+
+-----------------------------------------------------
+
+Change log for December 16, 2016 Vulkan 1.0.38 spec update:
+
+  * Bump API patch number and header version number to 38 for this update.
+
+Github Issues:
+
+  * Make ename:VK_PIPELINE_STAGE_HOST_BIT invalid for all stage masks,
+    except for flink:vkCmdWaitEvents (public issue 261).
+
+Internal Issues:
+
+  * Added validation language for flink:vkQueueBindSparse,
+    slink:VkPresentInfoKHR, and slink:VkSubmitInfo, and a note to the
+    <<synchronization-semaphores-waiting,Semaphore Waiting and Unsignaling>>
+    section to clarify that semaphores must be signaled and waited on in a
+    1:1 fashion (internal issue 546).
+  * Modify valid usage for slink:VkBufferImageCopy to only require
+    pname:bufferOffset to be a multiple of the image format's element size
+    when the format is not depth/stencil (internal issue 594).
+
+Other Issues:
+
+  * Vulkan(R) is now a registered trademark symbol, and this is reflected in
+    documents and copyright statements.
+
+-----------------------------------------------------
+
+Change log for December 10, 2016 Vulkan 1.0.37 spec update:
+
+  * Bump API patch number and header version number to 37 for this update.
+
+Github Issues:
+
+  * Add usability guarantees on the values returned by
+    flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR in the
+    slink:VkSurfaceCapabilitiesKHR structure and by
+    flink:vkGetPhysicalDeviceSurfaceFormatsKHR in the
+    pname:pSurfaceFormatCount parameter (public issue 385).
+  * Add elink:VkDebugReportObjectTypeEXT enumerants for new object types
+    introduced by new extensions (public issue 408).
+  * Add +VK_NVX_device_generated_commands+ etext:ACCESS bits and define how
+    they are used (public issue 415).
+  * Fix indentation for slink:VkDebugReportCallbackCreateInfoEXT member
+    descriptions (public issue 419).
+
+Internal Issues:
+
+  * Expand requirements memory binding of non-sparse images and buffers from
+    the <<resources-association,Resource Memory Association>> section into
+    valid usage statements for all of the applicable API calls (internal
+    issue 508).
+  * Explicitly state that valid usage of flink:vkCreateImage requires that
+    flink:vkGetPhysicalDeviceImageFormatProperties would return
+    ename:VK_SUCCESS for the requested image configuration (internal issue
+    598).
+
+-----------------------------------------------------
+
+Change log for December 1, 2016 Vulkan 1.0.36 spec update:
+
+  * Bump API patch number and header version number to 36 for this update.
+
+Github Issues:
+
+  * Fix "recorded with" terminology in the valid usage language for the
+    flink:vkCmdExecuteCommands::pname:pCommandBuffers parameter (public
+    issue 390).
+  * Modify +genvk.py+ to support specifying extensions to remove from output
+    generators, allowing the extension loader +vulkan_ext.c+ to be created
+    without WSI extensions which are statically exported by the Vulkan
+    loader (public issue 412).
+  * Added validation language for slink:VkSubpassDependency and in the
+    <<synchronization-access-types-supported,supported access types>>
+    section to catch access masks that include bits which are not supported
+    by pipeline stages in the stage masks (partially addresses
+    github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/1006 ).
+
+Internal Issues:
+
+  * Added validation language for flink:vkCmdWaitEvents,
+    flink:vkQueueSubmit, flink:VkRenderPassCreateInfo, and in the
+    <<synchronization-pipeline-stages-supported>> section to prevent
+    recording stage dependencies that aren't supported on the queue
+    (internal issue 516).
+  * Make a few changes that generalize spec language for use with possible
+    future extensions by adding glossary terms and generalizing ``feature''
+    to ``feature or extension'' where relevant (internal issues 448, 590).
+  * Added "pipeline type" attribute to +vk.xml+ for relevant commands and
+    utilize it in automatic generation of the Command Properties table
+    (internal issue 517).
+  * Specify that WSI implementations must provide both UNORM and sRGB
+    formats in the description of slink:VkColorSpaceKHR (internal issue
+    529).
+  * Remove nesting of explicit valid usage statements where it is not
+    meaningful (internal issue 583).
+
+Other Issues:
+
+  * Add validity language requiring that
+    slink:VkPushConstantRange::pname:offset be a multiple of 4, as stated in
+    the spec language.
+
+-----------------------------------------------------
+
+Change log for November 25, 2016 Vulkan 1.0.35 spec update:
+
+  * Bump API patch number and header version number to 35 for this update.
+
+Github Issues:
+
+  * Document in the <<memory-device-hostaccess,Host Access>> section that
+    mapping and unmapping does not invalidate or flush the mapped memory
+    (public issues 27, 126).
+  * Redefine the entire <<synchronization>> chapter in terms of consistent
+    and well defined terminology, that's called out at the start of the
+    chapter. This terminology is applied equally to all synchronization
+    types, including subpass dependencies, submissions, and much of the
+    implicit ordering stuff dotted around the spec. Key terms are laid out
+    in the <<synchronization-dependencies,Execution and Memory
+    Dependencies>> section at the top of the rewritten chapter (public
+    issues 128, 131, 132, 217, 299, 300, 302, 306, 322, 346, 347, 371, 407).
+  * Specify order of submission for batches in the
+    <<vkQueueSubmit,vkQueueSubmit>> and
+    <<vkQueueBindSparse,vkQueueBindSparse>> commands (public issue 371).
+  * Add valid usage statements to each of the WSI extension sections
+    indicating that the WSI-specific structure parameters must be valid, and
+    remove automatically generated valid usage statements now covered by the
+    manual sections (public issue 383).
+  * Clarify render pass compatibility for flink:vkCmdExecuteCommands (public
+    issue 390).
+
+Internal Issues:
+
+  * Update +vk.xml+ to make previously explicit valid usage statements for
+    <<vkDebugReportMessageEXT,vkDebugReportMessageEXT>> implicit instead
+    (internal issue 553).
+  * Add valid usage statement for slink:VkCreateImageInfo preventing
+    creation of 1D sparse images (internal issue 573).
+  * Fix Python scripts to always read/write files in utf-8 encoding, and a
+    logic error in reflib.py which could cause a fatal error for
+    malstructured asciidoc (internal issues 578, 586).
+
+-----------------------------------------------------
+
+Change log for November 18, 2016 Vulkan 1.0.34 spec update:
+
+  * Bump API patch number and header version number to 34 for this update.
+
+Github Issues:
+
+  * Allow vkUpdateDescriptorSets overflow to skip empty bindings. Clarify
+    that unused bindings have a descriptorCount of zero. Improve some valid
+    usage for vkUpdateDescriptorSets (public issue 256).
+  * Require that slink:VkImageSubresourceRange always define a non-empty
+    range of the resource (public issue 303).
+  * Added valid usage for slink:VkPresentInfoKHR on the layout of presented
+    images (public issue 397).
+
+Internal Issues:
+
+  * Add dependency in src/spec/Makefile so specversion.txt is regenerated
+    when needed (internal issue 462).
+  * Shorten the table of contents in the single-page ref page HTML output.
+    Still working on the PDF (internal issue 536).
+
+-----------------------------------------------------
+
+Change log for November 11, 2016 Vulkan 1.0.33 spec update:
+
+  * Bump API patch number and header version number to 33 for this update.
+
+Github Issues:
+
+  * Added implicit external synchronization parameters to
+    vkBegin/EndCommandBuffer, and fixed missing command pool host
+    synchronization from per-command lists (public issue 398).
+  * Started using git tags including the spec release number, such as
+    'v1.0.32-core', instead of tags including the date of release, such as
+    'v1.0-core-20161025' (public issue 405).
+
+Internal Issues:
+
+  * Add validity constraint for
+    slink:VkImportMemoryWin32HandleInfoNV::pname:handle (internal issue
+    #480).
+  * Add scripts to compare two Vulkan HTML specifications, derived from W3
+    htmldiff service (internal issue 525).
+  * Relax requirement that memoryTypeBits can't depend on format, to allow
+    it to differ only for depth/stencil formats (internal issue 544).
+  * Add a new generator script to create a simple extension loader for
+    Vulkan based on +vk.xml+ (internal issue 558).
+  * Add the overlooked requirement that buffer and image memory
+    alignment requirements must be a power of two in the
+    <<resources-association,Resource Memory Association>> section
+    (internal issue 569).
+
+Other Issues:
+
+  * Add a naming rule to the style guide for members of extension structures
+    defining array lengths which are the same as array lengths of the core
+    structure they are chained from.
+  * Add a new generator to create a simple extension loader in
+    +src/ext_loader/vulkan_ext.[ch]+ from +vk.xml+. This code can be
+    included in your project, and is expected to be packaged in the Vulkan
+    SDK provided by LunarG in the future.
+
+-----------------------------------------------------
+
+Change log for October 25, 2016 Vulkan 1.0.32 spec update:
+
+  * Bump API patch number and header version number to 32 for this update.
+
+Github Issues:
+
+  * Add automatic visibility operations to the presentation engineE when
+    doing a queue present in flink:vkAcquireNextImageKHR. Removed all
+    references to MEMORY_READ that referenced WSI - they no longer make
+    sense (some aspects of public issues 128, 131, 132, 261, and 298).
+  * Document valid non-boolean +externsync+ attribute values for <param>
+    tags in +vk.xml+ (public issue 265).
+  * Add valid usage to slink:VkImageCreateInfo requiring that
+    pname:arrayLayers be 1 for images of type ename:VK_IMAGE_TYPE_3D
+    (public issue 319).
+  * Add missing captions to figures in the <<textures,Image Operations>>
+    chapter (public issue 334).
+  * Clarify WSI interaction with exclusive sharing mode (public issue
+    344).
+  * Added explicit language clarifying the allowed queue usage of
+    resources created with ename:VK_SHARING_MODE_CONCURRENT (public
+    issue 386).
+  * Require that the
+    slink:VkDescriptorSetLayoutCreateInfo::pname:binding members of the
+    pname:pBindings array passed to
+    flink:vkDescriptorSetLayoutCreateInfo all be distinct (public issue
+    391).
+
+Internal Issues:
+
+  * Remove empty validity blocks from +vk.xml+ and suppressed broken
+    validity statements and added missing statements to explicit
+    validity. Doesn't affect output, other than some statements
+    appearing in another block now (internal issue 513).
+
+-----------------------------------------------------
+
+Change log for October 14, 2016 Vulkan 1.0.31 spec update:
+
+  * Bump API patch number and header version number to 31 for this update.
+
+Github Issues:
+
+  * Clarifying wording of slink:VkGraphicsPipelineCreateInfo parameters and
+    adding Valid Usage statements on render pass compatibility to the
+    <<drawing,drawing commands>> (public issue 375).
+  * Replace 'texel size' with 'element size', and add a definition to the
+    glossary (public issue 382).
+  * Clarify the description of ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR to
+    make it accurate, but still generic (non-exhaustive). Remove two Valid
+    Usage statements describing error situations that will return
+    ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR (public issue 387).
+  * Fix refBegin tag for elink:VkDebugReportFlagBitsEXT (public issue 392).
+  * The <<interfaces-builtin-variables,built-in variable>> code:PrimitiveId
+    in a fragment shader needs the code:Input storage class (public issue
+    393).
+
+Internal Issues:
+
+  * Unused ({y,z} and {height,depth} for 1D, z and depth for 2D) offsets
+    must be 0 and unused extents must be 1. Added basic offset and extent
+    valid usage for slink:VkImageResolve to match that of slink:VkImageCopy
+    (internal issue 413).
+  * Describe what flink:vkGetPhysicalDeviceImageFormatProperties returns for
+    pname:sampleCounts when for pname:usage only includes transfer-related
+    flags (internal issue 478).
+  * Remove mention of
+    slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers from the valid
+    usage for slink:VkImageCreateInfo::pname:arrayLayers (internal issue
+    520).
+  * Tag usages of ``dynamically uniform'' as glossary terms and add a
+    glossary entry pointing to the SPIR-V Specification's definition of the
+    term (internal issue 531).
+
+-----------------------------------------------------
+
+Change log for October 7, 2016 Vulkan 1.0.30 spec update:
+
+  * Bump API patch number and header version number to 30 for this update.
+
+Github Issues:
+
+  * Document missing pname:sType and pname:pNext parameters for
+    slink:VkCommandBufferInheritanceInfo (public issue 224).
+  * As promised, we are removing the example code, from the appendix, for
+    the VK_KHR_surface and VK_KHR_swapchain extensions. The cube demo
+    (shipped in the official Khronos SDK) has been updated, and is the
+    example code that we want people to look at for how to use these two
+    extensions (public issues 279, 308, and 311).
+  * Clarify the formats for which the slink:VkClearColorValue pname:float32
+    member is used. Also clean up related language for flink:vkCmdBlitImage
+    (public issue 369).
+  * Reword the <<invariance, Invariance>> appendix chapter to better match
+    Vulkan terminology (public issue 372).
+
+Internal Issues:
+
+  * Update slink:VkMemoryRequirements to not require a host_visible memory
+    type exists that can be bound to sparse buffers (internal issue 494).
+  * Modify the <<features-supported-sample-counts,Supported Sample Counts>>
+    language to allow multisampled depth-stencil images (internal issue
+    521).
+
+-----------------------------------------------------
+
+Change log for September 30, 2016 Vulkan 1.0.29 spec update:
+
+  * Bump API patch number and header version number to 29 for this update.
+
+Github Issues:
+
+  * Remove redundant constraint on
+    slink:VkCommandBufferInheritanceInfo::pname:queryFlags (public issue
+    224).
+  * Fix typo and remove link in Note in the
+    <<extended-functionality-instance-extensions-and-devices, Instance
+    Extensions and Device Extensions>> section (public issue 359).
+  * Fix erroneous validation statement for the pname:layout member of
+    slink:VkComputePipelineCreateInfo (public issue 362).
+
+Internal Issues:
+
+  * Restore long figure captions using asciidoc sidebar blocks, due to
+    restrictions of asciidoc syntax (internal issue 101).
+  * Replace most latexmath equations with comparable markup in straight
+    asciidoc, which significantly improves time required to fully load and
+    process the HTML forms of the Specification. There are known minor font
+    and alignment inconsistencies with MathJax and PDF rendering of
+    latexmath equations. Please do not file github issues about these. We
+    are aware of the inconsistencies and will make refinements over time,
+    while the performance improvements are compelling in at least some major
+    browsers (internal issue 313).
+  * Move handcoded validity statements from +vk.xml+ into the Specification
+    body, easing work in the single-branch model. Specify the distinction
+    between these explicit statements, and the implicit validity statements
+    inferred from vk.xml. Validity statements now appear in two blocks for
+    each command and structure - handcoded "Valid Usage" and the implicit
+    "Valid Usage (Implicit)" (internal issue 392).
+  * Add the +returnedonly="false"+ attribute to WSI output structures,
+    removing incorrectly generated implicit validity statements for
+    slink:VkDisplayPropertiesKHR, slink:VkDisplayPlanePropertiesKHR,
+    slink:VkDisplayModePropertiesKHR, slink:VkDisplayPlaneCapabilitiesKHR,
+    slink:VkSurfaceCapabilitiesKHR, and slink:VkSurfaceFormatKHR structures
+    (internal issue 486).
+  * Update slink:VkImageLayout to require the
+    ename:VK_IMAGE_USAGE_SAMPLED_BIT be set for sampled depth/stencil images
+    (internal issue 487).
+  * Use an explicit format specifier string for the date command invocation
+    in the +Makefile+ instead of the shorthand -R option, which doesn't work
+    on BSD and MaxOS X date commands (internal issue 500).
+
+Other Issues:
+
+  * Use the terms ``allocation scope'' and ``extension scope'' instead of
+    just ``scope'', and add them to the glossary.
+
+-----------------------------------------------------
+
+Change log for September 23, 2016 Vulkan 1.0.28 spec update:
+
+  * Bump API patch number and header version number to 28 for this update.
+
+Github Issues:
+
+  * Minor spelling and typography cleanup, add definitions of
+    ename:VK_FALSE and ename:VK_TRUE as just what their names say
+    (public issues 220, 318, 325, 365; internal issues 451, 496)
+  * Clarify that the pname:maxDescriptorSet limits in the
+    <<features-limits-required,Required Limits>> table are n *
+    maxPerStage limit (where n=number of supported stages) (public issue
+    254).
+  * Minor cleanup to <<boilerplate-platform-macros,Platform-Specific
+    Macro Definitions>> appendix (public issue 314).
+  * Add valid usage statement to slink:VkPipelineLayoutCreateInfo
+    disallowing multiple push constant ranges for the same shader stage
+    (public issue 340).
+  * Clarify the elink:VkSharingMode description of what executing the
+    "same" barriers means in case of ownership transfer (public issue
+    347).
+  * Rename copyright.txt and add COPYING.md to try and reduce confusion
+    about applicable copyrights (public issue 350).
+  * Extend the table in the <<boilerplate-wsi-header, Window System-Specific
+    Header Control>> section to describe the external headers included when
+    each etext:VK_USE_PLATFORM_* macro is defined (public issue 376).
+
+Internal Issues:
+
+  * Add "Revision History" to the PDF outputs following the table of
+    contents, to match HTML outputs (internal issue 43).
+  * Clarified that flink:vkMapMemory may fail due to virtual address
+    space limitations (internal issue 346).
+  * Add +refBody+ comment markup for ref page autoextraction when required
+    (internal issue 400).
+  * Document proper use of "mipmap" and "mip" in the style guide API
+    naming rules, matching the spelling rules (internal issue 471).
+  * Tweak the <<extensions,Layers and Extensions>> appendix to note that
+    the Specification may be built with arbitrary combinations of
+    extensions (internal issue 483).
+  * Remove incorrect statement allowing
+    slink:VkClearAttachment::pname:colorAttachment to be >=
+    slink:VkSubpassDescription::pname:colorAttachmentCount (internal
+    issue 488).
+  * The <<features-limits-viewportboundsrange,viewportBoundsRange>> is
+    expressed in terms of the pname:maxViewportDimensions but this is
+    actually two values. Clarify that it's based on the larger of the two
+    (if they differ) (internal issue 499).
+
+Other Issues:
+
+  * Reflowed text of the entire spec using the 'reflow' Makefile target, to
+    (hopefully) reduce future internal git churn as edits are made and
+    extensions added in return for one-time pain. This has no perceptible
+    effect on the spec outputs, but considerable changes on the asciidoc
+    source (internal issue 367).
+
+-----------------------------------------------------
+
+Change log for September 16, 2016 Vulkan 1.0.27 spec update:
+
+  * Bump API patch number and header version number to 27 for this update.
+
+Github Issues:
+
+  * Weaken flink:vkGetPipelineCacheData invariance conditions; previous
+    conditions were stronger than agreed and can't be guaranteed (public
+    issue 280).
+  * Add link to "Vulkan Loader Specification and Architecture Overview"
+    document to Normative References section (public issue 359).
+
+Internal Issues:
+
+  * Be more clear in the <<interfaces-resources-layout-std140, uniform
+    buffer layout>> section that block offsets can be out of order
+    (internal issue 396).
+  * Document that extension authors should add support for their extensions
+    to the validation layers (internal issue 398).
+  * Clarify that the valid range of depth clear values should be limited
+    to the 0..1 range and that copies to depth aspect must also be in this
+    range (internal issue 412).
+  * Specify ``a'' vs. ``an'' use in the style guide (internal issue 432).
+  * Increase the maximum pname:nonCoherentAtomSize value in the
+    <<features-limits-required,Required Limits>> section from 128 to 256
+    (internal issue 435).
+  * Fix vk_platform.h for compiler errors on some Android platforms
+    (internal issue 441).
+  * Clarify that slink:VkPhysicalDeviceFeatures::pname:pEnabledFeatures ==
+    `NULL` disables all features, including the "required" feature
+    pname:robustBufferAccess (internal issue 479).
+
+Other Issues:
+
+  * Expand style guide and make it more self-consistent.
+  * Use ISO 8601 date format everywhere.
+  * Emphasise the correct way of using
+    slink:VkSurfaceCapabilitiesKHR::pname:maxImageCount.
+  * Added +VK_EXT_validation_flags+ extension for validation flag mechanism.
+  * Fix an <<credits,author credit>> to include their current employer.
+
+-----------------------------------------------------
+
+Change log for September 6, 2016 Vulkan 1.0.26 spec update:
+
+  * Bump API patch number and header version number to 26 for this update.
+
+Github Issues:
+
+  * Bring sample code in the `VK_KHR_surface` and `VK_KHR_swapchain`
+    extension summary appendices up to date, and note they will be replaced
+    with pointers to the LunarG SDK examples in the future (public issue
+    279).
+  * Add a new <<fundamentals-commandsyntax-results-lifetime,Lifetime of
+    Retrieved Results>> section specifying that ftext:vkGet* and
+    ftext:VkEnumerate* results are invariant unless otherwise specified, and
+    specify behavior for individual commands which are not invariant (public
+    issue 280).
+  * Remove conflicting definition of
+    slink:VkDisplayPlaneCapabilitiesKHR::pname:maxSrcPosition and clean up
+    language of the remaining definition (public issue 351).
+  * Fix many minor spelling errors and add rules to the style guide to
+    prevent recurrences (public issue 352).
+
+Internal Issues:
+
+  * Remove redundant descriptions of the etext:VK_USE_PLATFORM_* macros from
+    the <<wsi,Window System Integration>> chapter in favor of the
+    description in the <<boilerplate-wsi-header,Window System-Specific
+    Header Control>> appendix (internal issue 6).
+  * Replace misleading 'can: be destroyed when not X' with more correct
+    'must: not be destroyed while X' in the
+    <<fundamentals-objectmodel-lifetime,Object Lifetime>> section. Disallow
+    destroying a pipeline layout while a command buffer using it is
+    recording (internal issue 241).
+  * Clarify that ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT is valid for
+    all images used as attachments in elink:VkImageUsageFlagBits and the
+    slink:VkImageLayout validity language (internal issue 320).
+  * Note that <<extended-functionality-layers,Layers>> may wrap object
+    handles, but that this is a generally discouraged. A link to additional
+    information in the documentation for layer authors is provided (issue
+    398)
+  * Replace the mustnot: and shouldnot: macros with equivalent must: not and
+    should: not to get rid of non-English words while still highlighting
+    normative language (internal issue 407).
+  * Disallow creating multisampled images with
+    ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT in the slink:VkImageLayout
+    validity language and the <<features-supported-sample-counts,Supported
+    Sample Counts>> section (internal issue 445).
+  * Fix typo so that flink:vkCmdDrawIndexedIndirect is defined in terms of
+    flink:vkCmdDrawIndexed rather than flink:vkCmdDrawIndirect (internal
+    issue 446).
+  * Reorganize the per-extension information sections to all be in the
+    <<extensions,Layers & Extensions>> appendix. Also fix a typo in
+    +VK_IMG_filter_cubic+ which incorrectly identified it as a +KHR+
+    extension (internal issue 461).
+
+Other Issues:
+
+  * Use asciidoc markup instead of latexmath to simplify diagrams in the
+    <<features-formats-non-packed,byte mapping tables>> for color formats.
+  * Fix a markup problem with the wildcarded enumerant names in a NOTE in
+    the <<textures-texel-replacement,Texel Replacement>> section.
+  * Fix missing attributes in the XML interface for
+    elink:VkExternalMemoryHandleTypeFlagBitsNV and
+    elink:VkExternalMemoryFeatureFlagBitsNV (KhronosGroup/Vulkan-Hpp issue
+    25)
+  * Cleanup reference page builds so only core pages are built for releases.
+
+-----------------------------------------------------
+
+Change log for August 26, 2016 Vulkan 1.0.25 spec update:
+
+  * Bump API patch number and header version number to 25 for this update.
+  * Structurally change the specification so that multiple extensions are
+    included in the +1.0+ git branch, and specifications will include or not
+    include those extensions at build time based on options passed to the
+    Makefile. See +doc/specs/vulkan/README.html+ and the ``Layers and
+    Extensions'' section of the ``Vulkan Documentation and Extensions''
+    document for more information on this change.
+  * Register and publish new extensions in the single-branch form:
+  ** +VK_NV_external_memory_capabilities+
+  ** +VK_NV_external_memory+
+  ** +VK_NV_external_memory_win32+
+  ** +VK_NV_win32_keyed_mutex+
+
+Github Issues:
+
+  * Clarify description of GetInstanceProcAddr and GetDeviceProcAddr (public
+    issue 212).
+  * Add SPIR-V <<textures-operation-validation, instruction validation>> for
+    single-sampled images (public issue 316).
+  * Fix spelling of ``tesselation'' in a few places and note it as an
+    exception to the American spelling rules convention (public issue
+    327).
+  * Fix Makefile to create output directory for ``styleguide''
+    target (public issue 329).
+  * Fix numerous minor issues with incorrectly tags on enumerant names and
+    table titles (public issue 330).
+  * Generate specversion.txt date in UTC time and RFC 2822 format
+    (public issue 335).
+  * Convert link to the SPIR-V Specification for
+    flink:VkShaderModuleCreateInfo into an internal link to the normative
+    reference (public issue 336).
+  * Add ename:VK_ERROR_OUT_OF_MEMORY error code to
+    flink:vkCreateDebugReportCallbackEXT (public issue 337).
+
+Internal Issues:
+
+  * Update style guide regarding use of code:NULL and dname:VK_NULL_HANDLE
+    (internal issue 393).
+  * Change the definition of latexmath:[$q$] in the
+    <<textures-image-level-selection,texture image level selection>> section
+    to be the index of the maximum defined level for the view, not the
+    number of levels in the view (internal issue 406).
+  * Allow developers to override dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE
+    with their own binary-compatible definition (internal issue 439).
+  * Fix +vk_platform.h+ conditional logic causing compile failure with some
+    Android compilers (internal issue 441).
+  * Implement the single-branch model as described above (internal issue
+    461).
+
+-----------------------------------------------------
+
+Change log for August 12, 2016 Vulkan 1.0.24 spec update:
+
+  * Bump API patch number and header version number to 24 for this update.
+
+Github Issues:
+
+  * Fix type mismatch in swapchain image equivalency table (public issue
+    289).
+  * Fix a copy-and-paste error in the description of
+    flink:vkGetSwapchainImagesKHR::pname:pSwapchainImages, that said it
+    was an array of ``sname:VkSwapchainImageKHR structures'' instead of
+    an array of ``sname:VkImage handles'' (public issue 292).
+  * Specify that ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT is only valid
+    for ename:VK_IMAGE_TYPE_2D images (public issue 293).
+  * Add a valid usage statement to flink:vkCmdExecuteCommands saying
+    that when called outside a render pass instance, the secondary
+    command buffers must not have been created with the
+    ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT (public issue
+    297).
+  * Fix description of +VK_NO_STDINT_H+ in the
+    <<boilerplate-platform-macros,platform macros>> section (public
+    issue 314).
+
+Internal Issues:
+
+  * Normalize the language for the remaining built-in variables in the
+    <<interfaces-builtin-variables,Built-In Variables>> section. Fix
+    code:FrontFacing and code:HelperInvocation, as they should be of
+    code:boolean type rather than code:integer (internal issue 323).
+  * Clarify that when ename:VK_WHOLE_SIZE is used for a buffer
+    descriptor range, the effective range must still be within the max
+    buffer range (internal issue 426).
+  * Clarify that command buffers and descriptor sets are allocated
+    rather than created. Also clarify when the recording state of a
+    command buffer is relevant (internal issue 434).
+
+-----------------------------------------------------
+
+Change log for August 5, 2016 Vulkan 1.0.23 spec update:
+
+  * Bump API patch number and header version number to 23 for this update.
+
+Github Issues:
+
+  * Add explicit valid value attributes to pname:sType members in vk.xml
+    (public issue 34).
+  * Clarify usage of flink:vkGetInstanceProcAddr and
+    flink:vkGetDeviceProcAddr (public issue 225).
+  * Fix a copy-and-paste error in the description of
+    pname:pSwapchainImageCount saying that it was the count of ``format
+    pairs'' instead of ``swapchain images'' (public issue 292).
+  * flink:vkCmdExecuteCommandBuffers requires all command buffers to be
+    allocated from command pools created for the same queue family (public
+    issue 296).
+  * Remove bogus +optional+ attribute for
+    flink:vkEnumerateDeviceLayerProperties::pname:physicalDevice from vk.xml
+    (public issue 301).
+  * Clean up the <<resources-image-views-compatibility,image and image view
+    compatibility table>> reference and contents. Use full enumerant names.
+    Refer to pname:layerCount in the ``view parameters'' column instead of
+    pname:arrayLayers. Require N >= 1 for the cube array subview row, not
+    just arrayLayers >= 6 N (public issue 304).
+  * Modify description of <<resources-memory-aliasing,memory aliasing>> to
+    be consistent with the description of
+    <<resources-bufferimagegranularity,buffer image granularity>> (public
+    issue 307).
+
+Internal Issues:
+
+  * Describe remaining +vk_platform.h+ macros in the <<boilerplate,API
+    Boilerplate>> appendix (internal issue 6).
+  * Clarify
+    <<features-features-robustBufferAccess,pname:robustBufferAccess>>
+    feature behavior; what memory can be accessed, how bounds checking is
+    performed, and allowing for vectorization (internal issue 332).
+  * Document markup for automatic extraction of reference pages from the
+    spec sources in the style guide (internal issue 395).
+  * Allow flink:vkCreateDisplayModeKHR to return
+    ename:VK_ERROR_INITIALIZAION_FAILED_KHR if the user requests mode
+    parameters that the specified display does not support (internal issue
+    411).
+  * Remove atomic counters (atomic_uint style) from KHR_vulkan_glsl, and
+    more clearly remove the subroutine keyword alongside it (internal issue
+    421).
+  * Clarify behavior of flink:vkCmdBindDescriptorSets for descriptor sets
+    not contained in the layout (internal issue 427).
+
+Other Commits:
+
+  * Change the order in which members of sname:VkAttachmentDescription and
+    sname:VkPipelineInputAssemblyStateCreateInfo are described to match
+    their order in the structures.
+
+-----------------------------------------------------
+
+Change log for July 22, 2016 Vulkan 1.0.22 spec update:
+
+  * Bump API patch number and header version number to 22 for this update.
+
+Github Issues:
+
+  * Translate the subpass self-dependency language into concrete
+    validity statements, and added a validity statement about the
+    restrictions on layout parameters (public issue 267).
+  * Add validity requirement that
+    slink:VkAttachmentDescription::pname:finalLayout and
+    slink:VkAttachmentReference::pname:layout must not be
+    ename:VK_IMAGE_LAYOUT_UNDEFINED or
+    ename:VK_IMAGE_LAYOUT_PREINITIALIZED (public issue 268).
+  * Clarify that slink:VkSubpassDescription::pname:pResolveAttachments
+    layouts are used. Make language consistent with other attachment
+    arrays (public issue 270).
+  * Changed 64-bit definition for
+    dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE to work for x32 platform in
+    +vk.xml+ and the resulting +vulkan.h+ (public issue 282).
+  * Add missing error return code for
+    flink:vkEnumerateInstanceExtensionProperties and
+    flink:vkEnumerateDeviceExtensionProperties (public issue 285)
+  * Fix several cases of stext::VkStructName.memberName markup to
+    stext::VkStructName::pname:memberName, to match other usage in the
+    spec, and describe this markup in the style guide (public issue
+    286).
+  * Modified validity language generation script to avoid redundant
+    common ancestor language if covered by generic parent language, and
+    used `Both' instead of `Each' when appropriate (public issue 288).
+
+Internal Issues:
+
+  * Add language about behavior of flink:vkAllocateDescriptorSets when
+    allocation fails due to fragmentation, a new error
+    ename:VK_ERROR_FRAGMENTED_POOL, and a Note explaining the situation
+    (internal issue 309).
+  * For the features of code:PointSize, code:ClipDistance, and
+    code:CullDistance, the SPIR-V capability is required to be declared
+    on use (read or write) rather than on decoration (internal issue
+    359).
+  * Have desktop versions of GLSL respect precision qualification
+    (code:mediump and code:lowp) when compiling for Vulkan. These will
+    get translated to SPIR-V's code:RelaxedPrecision decoration as they
+    do with OpenGL ES versions of GLSL (ESSL). The default precision of
+    all types is code:highp when using a desktop version (internal issue
+    360).
+  * Add validity statement for slink:VkImageCreateInfo specifying that
+    multisampled images must be two-dimensional, optimally tiled, and
+    with a single mipmap level (internal issue 369).
+  * Add validity statements to slink:VkImageViewCreateInfo disallowing
+    creation of images or image views with no supported features. Made
+    some slink:VkImageViewCreateInfo validity statements more precise
+    and consistent. Added a Note to the <<features,features>> chapter
+    about formats with no features (internal issue 371).
+  * Remove +manpages+ from default build targets. Nroff outputs
+    containing imbedded latexmath will not render properly. Fixing this
+    is a lot of work for limited use cases (internal issue 401).
+
+Other Commits:
+
+  * Fix flink:vkRenderPassBeginInfo::pname:clearValueCount validity
+    statement to be based on attachment indices rather than the number
+    of cleared attachments
+    (Vulkan-LoaderAndValidationLayers/issues/601).
+  * Convert registry documentation from LaTeX to asciidoc source and
+    rename from +src/spec/readme.tex+ to +src/spec/registry.txt+.
+  * Fix lack of Oxford commas in validity language.
+  * Lots of cleanup of generator scripts and Makefiles to move extension
+    list for generator into the script arguments instead of the body of
+    genvk.py, and express better dependencies between XML, scripts, and
+    generated files.
+
+-----------------------------------------------------
+
+Change log for July 15, 2016 Vulkan 1.0.21 spec update:
+
+  * Bump API patch number and header version number to 21 for this update.
+
+Github Issues:
+
+  * Clarify how <<features-supported-sample-counts,sample count queries>>
+    relate to the limits in slink:VkPhysicalDeviceLimits. (public issue
+    185).
+  * Clarify in the <<interfaces-iointerfaces,Shader Input and Output
+    Interfaces>> section that shader output variables have undefined values
+    until the shader writes to them (public issue 240).
+  * Specify the implicit value of image parameters that cannot be set in
+    slink:VkSwapchainCreateInfo::pname:flags, pname:imageType,
+    pname:mipLevels, pname:samples, pname:tiling, and pname:initialLayout
+    (public issue 243).
+  * Make use of code:NULL and code:VK_NULL_HANDLE consistent in the
+    VK_KHR_swapchain extension (public issue 276).
+
+Internal Issues:
+
+  * Clarify that presenting an image to a display surface swapchain applies
+    the display surface's mode, and that destroying a display surface
+    swapchain may reset the display's mode, in the VK_KHR_display_swapchain
+    extension (internal issue 247).
+  * Better describe what a slink:VkSurfaceKHR is, and that creating one does
+    not set a mode, in the VK_KHR_display extension. This is a round-about
+    way of pointing out that mode setting is not covered by the extension,
+    but rather is performed as a side effect of presentation (internal issue
+    247).
+  * Add more valid usage statements to flink:vkQueuePresentKHR command when
+    the VK_KHR_display_swapchain extension is present (internal issue
+    247).
+  * Add more includes to the VK_KHR_swapchain extension to better document
+    interactions with VK_KHR_display_swapchain (internal issue 247).
+  * Clarify restrictions on location aliasing in the
+    <<fxvertex,Fixed-Function Vertex Processing>> section (internal issue
+    370).
+  * Add mathematical description of blitting to flink:vkCmdBlitImage, and
+    link it to the <<textures,Image Operations>> chapter. Use mathematical
+    notation for ranges of texel coordinates in the <<textures,Image
+    Operations>> chapter. Fixed miscellaneous validity statements for
+    flink:vkCmdBlit and slink:VkImageBlit (internal issue 382).
+
+Other Commits:
+
+  * Added a valid usage rule to flink:VkGraphicsPipelineCreateInfo that the
+    ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST topology must only be used when
+    tessellation shaders are used.
+  * Expand the style guide into a formal "Procedures and Conventions"
+    document. Add a API Naming Conventions section, move most of the API
+    Specification Appendix C (Layers and Extensions) content into the new
+    document, and define the resulting procedures as mandatory (where
+    relevant). This more clearly separates use vs. specification of Vulkan
+    APIs.
+  * Update vk_platform.h to handle 32-bit ARMv8 binaries.
+  * Various minor cleanups to the Makefile and build process.
+
+-----------------------------------------------------
+
+Change log for July 8, 2016 Vulkan 1.0.20 spec update:
+
+  * Bump API patch number and header version number to 20 for this
+    update.
+
+Github Issues:
+
+  * Replaced existing reference pages by text automatically extracted from
+    the specification source, or generated from vk.xml in some cases. This
+    is not a complete solution for the reference pages, but puts them in a
+    much better state. The ref pages (only) are now placed under a CC BY
+    open source license, which is more current than the obsolete license
+    previously used. Various minor tweaks to the Specification sources were
+    made to enable this, and a new ``API Boilerplate'' chapter added to
+    include definitions of all the entities in the API and +vulkan.h+ which
+    were not already described in some form in the document.
+
+    Further improvements to the pages should not edit them directly, but
+    instead concentrate on the specification source from which the ref pages
+    are being extracted (public issues 44, 55, 160; internal issue 389).
+
+-----------------------------------------------------
+
+Change log for July 1, 2016 Vulkan 1.0.19 spec update:
+
+  * Bump API patch number and header version number to 19 for this
+    update.
+
+Github Issues:
+
+  * Clarified how flink:vkGetImageSubresourceLayout interacts with image
+    layouts (public issue 247).
+  * Remove ename:VK_IMAGE_LAYOUT_PREINITIALIZED from valid usage rule for
+    slink:VkImageMemoryBarrier::pname:oldLayout. It is only valid if it is
+    the current layout (public issue 248).
+  * Modify valid usage for flink:vkBindBufferMemory so implementations are
+    free to require a different backing memory size than the buffer size
+    (public issue 251).
+  * Clarify that filtering rules for flink:vkCmdBlitImage always apply, and
+    are usually no-ops if the formats are the same (public issue 253).
+  * Remove 'non-sparse' from description of
+    flink:vkGetBufferMemoryRequirements and
+    flink:vkGetImageMemoryRequirements (public issue 257).
+  * Remove ename:VK_ERROR_LAYER_NOT_PRESENT error code from
+    flink:vkCreateDevice (public issue 259).
+  * Change "must: not" to "should: not" in constraint on when
+    flink:vkAcquireNextImageKHR is called in the VK_KHR_swapchain branch
+    (public issue 262).
+  * Change type of flink:vkCmdUpdateBuffer::pname:pData from
+    basetype:uint32_t* to basetype:void* (public issue 263).
+  * Change should: to must: in description of where additional segments are
+    placed in the <<[tessellation-tessellator-spacing,Tessellator Spacing>>
+    section (public issue 264).
+
+Internal Issues:
+
+  * Normalize the language of all the compute shader built-ins in the
+    <<interfaces-builtin-variables,Built-in Variables>> section (internal
+    issue 323).
+  * Remove definition of presentation engine internal queue lengths
+    associated with ename:VK_PRESENT_MODE_FIFO_KHR and
+    ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the <<Window System
+    Integration,wsi>> chapter (internal issue 374).
+  * The language of a Note was too broad, and implied that loaders for a
+    given OS would statically export functions for WSI extensions that
+    were not relevant to (or supported on) the OS. Also, removed
+    "Khronos-provided" since the Android loader is not (internal issue 380)
+
+Other Commits:
+
+  * Add ename:VK_INCOMPLETE to list of return values for
+    flink:vkGetPipelineCacheData. Spec says this value is returnable, but it
+    was not listed in the error codes.
+  * Fix "correponds" typo in member definitions for
+    slink:VkSubpassDescription.
+
+-----------------------------------------------------
+
+Change log for June 24, 2016 Vulkan 1.0.18 spec update:
+
+  * Bump API patch number and header version number to 18 for this
+    update.
+
+Github Issues:
+
+  * Added "queue operation" terminology, and modified spec to actually
+    use this terminology (public issue 155). The act of submitting a
+    piece of work to a queue now generates "operations" for the queue to
+    execute, including operations to wait on/signal semaphores and
+    fences. Synchronization waits on these operations, making execution
+    dependency chains more obvious for semaphores and fences (though
+    additional work is still needed here). These changes include:
+  ** Overview of "queue submission" commands in chapter
+     <<devsandqueues-submission>>.
+  ** Updated descriptions for fence and semaphore waits and signals in
+     the synchronization chapter <<synchronization-semaphores-waiting>>,
+     <<synchronization-semaphores-signaling>> and
+     <<synchronization-fences-waiting>>.
+  ** Clarifications to semaphore and fence operation within queue
+     submission functions.
+  ** New glossary terms.
+  ** Moved device idle and queue wait idle to synchronization chapter in
+     order to describe them in terms of other synchronization
+     primitives.
+  ** Clarifications to semaphore and fence operation allowed removal of
+     the "implicit ordering guarantees" section, as this information is
+     now wholly covered where these primitives are described.
+  *** The "host writes" section of this is still there for now - in its
+      own section. This could probably be merged into other sections
+      later.
+  *** Modified fundamentals chapter on queue ordering to make sense in
+      context of the new changes, and avoid duplication.
+      <<fundamentals-queueoperation>>
+  * Added "aspect" and "component" definitions to the glossary, and made
+    sure these terms are referenced correctly (public issue 163).
+  * Update valid usage for ftext:vkGet*ProcAddr to only include
+    conditions that must be met to get a valid result. In particular,
+    it is okay to call flink:vkGetDeviceProcAddr with any string and will
+    get a code:NULL if that string is not a core Vulkan function or an
+    enabled extension function (addresses but does not fully close
+    public issue 214).
+  * Change the WSI extension dependencies to refer to version 1.0 of the
+    Vulkan API, instead of the pre-1.0-release internal revisions
+    numbers (public issue 238).
+  * Specified that <<interfaces-fragmentoutput,undeclared fragment
+    shader outputs>> result in undefined values input to the blending
+    unit or color attachment (public issue 240).
+  * Fix latexmath:[$\leq$] operators turning into Unicode left arrow symbols
+    (public issue 245).
+
+Internal Issues:
+
+  * Better documented that the registry XML "optional" tag for values
+    only applies when that value is the size of an array (internal issue
+    335).
+  * Add a stronger definition for the valid usages of
+    VkSpecializationMapEntry.size in the
+    <<pipelines-specialization-constants,Specialization Constants>>
+    section (internal issue 345).
+  * Change code:OpName to code:OpDecorate (along with appropriate
+    syntax) for vertex shader built-ins (internal issue 368).
+  * Add missing ref pages (those which are not currently stubs) to
+    apispec.txt for the single-page version of the ref pages (internal
+    issue 378).
+
+Other Commits:
+
+  * Fix example in the <<descriptorsets,Descriptor Sets>> section to use
+    M, N, and I, describing set, binding, and index, consistently
+    throughout the example code.
+
+-----------------------------------------------------
+
+Change log for June 17, 2016 Vulkan 1.0.17 spec update:
+
+  * Bump API patch number and header version number to 17 for this
+    update.
+
+Github Issues:
+
+  * Update description of vertex shader reuse in
+    <<shaders-vertex-execution>> (public issue 106).
+  * Simplify validity language around pname:ppEnabledExtensionNames and
+    pname:ppEnabledLayerNames (in the <<initialization-instances>> and
+    <<devsandqueues-device-creation>> sections) (public issue 214).
+  * Add missing validity rule to flink:vkCmdBeginRenderPass requiring
+    compatibility between slink:VkAttachmentDescription pname:initalLayout
+    members and the corresponding attached framebuffer images (public issue
+    233).
+  * Fix Unicode arrows appearing in output instead of relational operators
+    (public issue 239).
+  * Correctly describe the required number of elements for
+    code:TessLevelInner and code:TessLevelOuter arrays in the
+    <<interfaces-builtin-variables,Built-In Variables>> section as two and
+    four, respectively, instead of the other way around, and refer to this
+    section from the <<tessellation,Tessellation>> chapter (public issue
+    246).
+
+Internal Issues:
+
+  * Document deprecation of ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR in the
+    VK_KHR_surface extension, and of
+    ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT in the
+    VK_EXT_debug_report extension (internal issue 328).
+  * Added language to define what a valid usage statement is and should be,
+    with a note about some apparent weirdnesses this might entail (internal
+    issue 357).
+
+Other Commits:
+
+  * Added missing ename:VK_ERROR_DEVICE_LOST error to
+    flink:vkQueueBindSparse.
+
+-----------------------------------------------------
+
+Change log for June 10, 2016 Vulkan 1.0.16 spec update:
+
+  * Bump API patch number and header version number to 16 for this
+    update.
+
+Github Issues:
+
+  * Clarify that integer border values are meant to be 0/1, and that
+    integer texture lookups are sign-extended in the
+    <<textures-format-conversion,Format Conversion>> and
+    <<textures-texel-replacement,Texel Replacement>> sections (public
+    issue 52).
+  * Add logic to generate spec boilerplate without using the 'git'
+    command-line client, needed when building from a tarball or another
+    source of the Vulkan tree rather than a cloned git repo. Remove
+    boilerplate as part of 'clean' target (public issue 195).
+  * Document that color writes and clears to unused attachments have no
+    effect for slink:VkClearAttachment and
+    elink:VkColorComponentFlagBits (public issue 198).
+  * Fixed flink:vkCmdExecuteCommands validity statement for
+    sname:VkCommandBufferInheritanceInfo::pname:framebuffer. If used, it
+    must match the framebuffer in the current renderpass instance
+    (public issue 226).
+  * Added valid usage language to require for all functions that set
+    dynamic state that the currently bound graphics pipeline has the
+    corresponding dynamic state enabled (public issue 235).
+
+Internal Issues:
+
+  * Clarify for flink:vkEnumerateInstanceExtensionProperties, in the
+    <<extended-functionality-instance-extensions-and-devices, Instance
+    Extensions and Device Extensions>> section, and in the
+    <<glossary,Glossary>> section when functionality should be exposed
+    as an instance extension, as a device extension, or as both
+    (internal issue 109).
+  * Place WorkgroupSize in alphabetical order in the
+    <<interfaces-builtin-variables,Built-in Variables>> section
+    (internal issue 323).
+  * Corrects valid usage in vkEndRenderPass to only affect primary
+    render passes, as secondaries may be entirely within a render pass,
+    and should be able to be ended (previous language disallowed that)
+    (internal issue 338).
+  * Fix relational operator from <= to >= in the
+    <<features-extentperimagetype,Allowed Extent Values>> section
+    (internal issue 343).
+  * Disallow recursion under SPIR-V entry points in the
+    <<spirvenv-module-validation,Validation Rules within a Module>>
+    section (internal SPIR-V issue 37).
+
+Other Commits:
+
+  * Use standard Python ElementTree package instead of lxml.etree in
+    header / validation layer / include autogeneration from XML,
+    reducing platform dependencies.
+
+-----------------------------------------------------
+
+Change log for May 27, 2016 Vulkan 1.0.15 spec update:
+
+  * Bump API patch number and header version number to 15 for this
+    update.
+
+Github Issues:
+
+  * Fixed the <<glossary,Glossary>> entry for Fragment Input Attachment
+    Interface to specify code:UniformConstant storage class (public issue
+    156).
+  * Disallow lazily allocated memory for buffers in the description of
+    slink:VkMemoryRequirements::pname:memoryTypeBits (public issue 196).
+  * Add numbered figure captions (public issue 219).
+  * Fix output variable names in the <<fundamentals-fpfixedconv,Conversion
+    from Floating-Point to Normalized Fixed-Point>> section and related
+    minor normative language and markup cleanup (public issue 220).
+
+Internal Issues:
+
+  * Fix reference to nonexistent etext:VK_IMAGE_LAYOUT_TRANSFER_{SRC,DST}BIT
+    to the actual etext:VK_IMAGE_LAYOUT{SRC,DST}_OPTIMAL (internal issue
+    296).
+  * Update the <<sparsememory-sparse-memory-aliasing,Sparse Resource
+    Implementation Guidelines>> to refer to the correct feature names
+    (internal issue 305).
+
+-----------------------------------------------------
+
+Change log for May 20, 2016 Vulkan 1.0.14 spec update:
+
+  * Bump API patch number and header version number to 14 for this
+    update.
+
+Github Issues:
+
+  * Fix validity language for sname:VkCommandBufferAllocateInfo to
+    impose range limits on pname:commandBufferCount (public issue 178).
+  * Fix validity language for flink:vkCmdExecuteCommands to refer to the
+    correct structure names (public issue 179).
+  * Fix two copy-and-paste errors in the WSI queries, where the wrong
+    term was used for what was being returned (public issue 206).
+  * Add a note in the documentation of
+    flink:vkGetPhysicalDeviceSurfaceFormatsKHR, about what it means if
+    ename:VK_FORMAT_UNDEFINED is returned (public issue 207).
+
+Internal Issues:
+
+  * Clarify the usage and correct the name for the bitmask referenced in
+    <<queries-pipestats,Pipeline Statistics Queries>> (internal issue
+    334).
+
+Other Commits:
+
+  * Fix the names of decorations listed in the
+    <<interfaces-builtin-variables,Built-in Variables>> section such
+    that they match the SPIR-V specification.
+
+-----------------------------------------------------
+
+Change log for May 13, 2016 Vulkan 1.0.13 spec update:
+
+  * Bump API patch number and header version number to 13 for this
+    update.
+
+Github Issues:
+
+  * Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the
+    VK_KHR_surface extension (public issue 174).
+  * Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command
+    buffers (public issue 182).
+  * Fix typos in VK_KHR_wayland_surface extension where code:wl_device was
+    used instead of code:wl_display (public issue 193).
+  * Replaced {apiname} with ``Vulkan'' in XML validity statements (public
+    issue 199).
+  * Fix dead links for WSI handle types (public issue 200).
+  * Use "signaled" instead of "signalled" spelling everywhere (public issue
+    201).
+  * Move readme.pdf target directory for XML schema documentation into the
+    target generation directory, instead of leaving it checked into the spec
+    source tree (public issue 203).
+  * Fix duplicate 'which which' typo in description of
+    elink:VkCommandPoolResetFlagBits (public issue 204).
+  * Move the <<Programmable Primitive Shading>> section up one level, out of
+    the <<drawing-primitive-topologies,Primitive Topologies>> section
+    (public issue 209).
+
+Internal Issues:
+
+  * Clarify in the <<pipelines-cache,Pipeline Cache>> section that
+    implementations should not manage the size of pipeline cache (internal
+    issue 192).
+  * Deprecate the concept of device layers and associated commands (internal
+    issue 255).
+  * Remove ename:VK_INCOMPLETE from the list of possible result codes of
+    flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314).
+  * Add missing std140/std430 rule: the base alignment of a member following
+    a structure is a multiple of the structure's base alignment (internal
+    issue 321).
+  * Fixes naming of the single elink:VkColorSpaceKHR enum from
+    ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to
+    ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the
+    VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the
+    typename (space and color are two words, not one) (internal issue 322).
+  * Make it clear that code:LocalInvocationID should only be applied to an
+    input variable and normalize the language describing
+    code:LocalInvocationID to the language for other compute shader
+    variables in the <<interfaces-builtin-variables,Built-in Variables>>
+    section, and add normative language (internal issue 323).
+  * Clarify in the <<fundamentals-returncodes,Return Codes>> section that
+    the result pointer may be modified for specific commands, even if a
+    runtime error is returned (internal issue 324).
+
+-----------------------------------------------------
+
+Change log for April 29, 2016 Vulkan 1.0.12 spec update:
+
+  * Bump API patch number and header version number to 12 for this
+    update.
+
+Github Issues:
+
+  * Change valid usage statements intended to be "sub-points" to
+    be actual sub-points (public issue 66).
+  * Replace double negation in description of
+    slink:VkRenderPassBeginInfo::pname:pClearValues (based on public
+    merge 142).
+  * Cleanup minor typos in spec, ref pages and XML, including those
+    proposed in public pull requests 144, 150, 151, 167, 168, 181, and
+    186.
+  * Use *strict subset* in describing the partial order of memory
+    property types for slink:VkMemoryType, and update the style guide
+    accordingly (public issue 190).
+  * Fix various "a image" -> "an image" typos (public issue 191).
+  * Note in the <<fundamentals-validusage,Valid Usage>> and
+    <<extensions-interactions,Extension Interactions>> sections that
+    structures defined by extensions which may be passed in structure
+    chains using the ptext:pNext member must include initial
+    ptext:sType and ptext:pNext members (public issue 192).
+
+Internal Issues:
+
+  * Remove duplicate language from the description of the pname:fence
+    parameter to flink:vkQueueSubmit and improve validity language
+    (internal issue 91).
+  * Added documentation for "optional" attribute to XML readme.tex/pdf
+    (internal issue 149).
+  * Clarify the host-side data validity rules and behavior of
+    flink:vkFlushMappedMemoryRanges and
+    flink:vkInvalidateMappedMemoryRanges (internal issue 266).
+
+Other Commits:
+
+  * Added clarification to flink:vkCmdFillBuffer regarding the use of
+    ename:VK_WHOLE_SIZE.
+  * Fixed and documented implementation of "validextensionstructs"
+    attribute. in XML processing scripts and readme.tex/pdf.
+  * Add missing validity statements to flink:vkResetEvent and
+    flink:vkCmdResetEvent.
+  * Fix validity for the
+    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag.
+    Correct all the draw/dispatch commands to mention optimally tiled
+    images as well as linear tiled images, and say image VIEWS instead
+    of images. Add validity statement to flink:vkCmdBlitImage
+  * Replace the {apiname} macro with hardcoded "Vulkan", now that we have
+    committed to that name.
+  * Add the VK_AMD_rasterization_order extension to vk.xml.
+
+-----------------------------------------------------
+
+Change log for April 22, 2016 Vulkan 1.0.11 spec update:
+
+  * Bump API patch number and header version number to 11 for this
+    update.
+
+Github Issues:
+
+  * Clarify the WSI extension language by switching from the fuzzier
+    "ownership" language to more-consistent "acquire" language (public
+    issue 117).
+  * Clarify that memory barriers apply to all commands in the dependency
+    chains in the flink:vkGetRenderAreaGranularity command and the
+    <<synchronization-execution-and-memory-dependencies,Execution And
+    Memory Dependencies>> section (public issue 132).
+  * Clarify that a queue family is a set of queues in the
+    <<fundamentals-execmodel,Execution Model>> section (public issue
+    166).
+  * Removed requirement from valid usage language that
+    VkPresentInfoKHR::waitSemaphoreCount must be greater than 0 (public
+    issue 171).
+  * Fix broken internal links, describe structures consistently, use
+    consistent style for SPIR-V codewords, and tag normative terms that
+    were missing asciidoc tags (public issue 183 and ancillary
+    markup/normative language fixes).
+  * Fix typos for slink:VkPhysicalDeviceLimits member names in
+    slink:VkImageCreateInfo validity language (public issue 184).
+
+Internal Issues:
+
+  * Document that the requested patch version number specified as part
+    of slink:VkApplicationInfo::pname:apiVersion is ignored when
+    creating an instance (internal issue 176).
+  * Clarify handling of extension structs in the
+    <<fundamentals-validusageValid Usage>> section (internal issue 254).
+  * Update required slink:VkImageFormatProperties::pname:maxMipLevels to
+    be limited to the maximum allowed mipmap pyramid size corresponding
+    to the actual maximum supported size for the format (internal issue
+    256).
+  * Modify the <<features-extentperimagetype,Allowed Extent Values Based
+    On Image Type>> section so the allowed maximum extent is the maximum
+    image dimension supported for each dimension of the type of texture
+    being queried (internal issue 257).
+  * Clarify in the <<spirvenv-module-validation,Validation Rules within
+    a Module>> section that at least one of the code:LocalSize execution
+    mode or code:WorkgroupSize decoration is required for each compute
+    shader entry point in a shader module (internal issue 279).
+  * Add validity rules for formats in flink:vkCmdClearColorImage and
+    flink:vkCmdClearDepthStencilImage (internal issue 283).
+  * Clarify that slink:VkImageFormatProperties::pname:maxResourceSize is
+    an upper bound, and that it may not be possible to create an image
+    anywhere near that size (internal issue 284).
+
+Other Commits:
+
+  * Fix various minor markup errors reported by validation scripts.
+  * Change copyright from Khronos Free Use License to Apache 2.0 license
+    on relevant script/XML/header files. This does not affect the
+    specification source copyright.
+
+-----------------------------------------------------
+
+Change log for April 15, 2016 Vulkan 1.0.10 spec update:
+
+  * Bump API patch number and header version number to 10 for this
+    update.
+
+Github Issues:
+
+  * Slightly tweak the <<memory-allocation,Host Memory>> allocator language
+    so that an application wrapping the standard C alloc/free/realloc
+    functions is still correct - the previous language was too strong with
+    regards to freeing memory. Also made certain scenarios clearer - an
+    implementation may now continue without error if an allocation failed
+    and it is able to continue correctly (public issue 21).
+  * Require that etext:VK_*_CREATE_SPARSE_BINDING_BIT is set when the
+    corresponding etext:VK_*_CREATE_SPARSE_RESIDENCY_BIT is used, in the
+    <<sparsememory-miptail,Mip Tail Regions>> section and related commands
+    flink:vkCreateBuffer and flink:vkCreateImage (public issue 84).
+  * Update the <<features,Features, Limits, and Formats>> chapter to clarify
+    interactions between optional features and dynamic state for the
+    pname:depthBiasClamp and pname:wideLines features (public issue 89).
+  * Describe the code:WorkgroupSize builtin in the
+    <<interfaces-builtin-variables,Built-In Variables>> section, and update
+    the <<compute-shaders,Compute Shaders>> section to further clarify how
+    to set the number of workgroups to execute in a compute shader (public
+    issue 145).
+  * Use the term *image subresource* everywhere instead of *subresource*,
+    except for the special case of *host-accessible subresource*, which may
+    be either an image subresource or buffer range (public issue 120)
+  * Add a note to the <<features,Features, Limits, and Formats>> section
+    about extensibility of structures (Public issue 165).
+  * Fix return code flink:vkAcquireNextImageKHR when the timeout parameter
+    is 0 to ename:VK_NOT_READY instead of ename:VK_TIMEOUT (public issue
+    170).
+  * Fix typo in slink:VkLayerProperties::pname:apiVersion field (public
+    issue 172).
+
+Internal Issues:
+
+  * Fix a few minor internally-detected typos.
+  * Minor formatting tweaks to pseudocode in the <<resources,Resource
+    Creation>> chapter (internal issue 179).
+  * Fix typo in the definition of point sampling for
+    elink:VkCullModeFlagBits (internal issue 268).
+
+-----------------------------------------------------
+
+Change log for April 8, 2016 Vulkan 1.0.9 spec update:
+
+  * Bump API patch number and header version number to 9 for this
+    update.
+
+Github Issues:
+
+  * Fix memory type preorder definition and clarify example list and source
+    code for slink:VkMemoryRequirements and slink:VkMemoryHeap (public issue
+    26).
+  * Ensure slink:VkAllocationCallbacks are properly defined (public issue
+    73).
+  * Clarify the WSI extension language by switching from the fuzzier
+    "ownership" language to more-consistent "acquire" language (public issue
+    117).
+  * Add language allowing allocation and freeing of memory scoped to the
+    duration of any API command in the <<memory-allocation,Memory
+    Allocation>> section (public issue 136).
+  * Clarify the explicit location assignment always overrides the inherited
+    location in the <<interfaces-iointerfaces-locations,Location
+    Assignment>> section, even for the first member of a block (public issue
+    141).
+  * Fixed references to
+    slink:VkCommandBufferInheritanceInfo::pname:pipelineStatistics (public
+    issue 158).
+  * Fix name of slink:VkBufferCopy::pname:size field in validity language
+    for flink:vkCmdCopyBuffer (public issue 162).
+
+Internal Issues:
+
+  * Update GL_KHR_vulkan_glsl specification to clarify disallowance of
+    spec-const arrays in initializers (internal issue 248).
+  * Clarify <<interfaces-iointerfaces-matching,Interface Matching>> section
+    to state that user-defined variable interface must match too (internal
+    issue 250).
+
+-----------------------------------------------------
+
+Change log for April 1, 2016 Vulkan 1.0.8 spec update:
+
+  * Bump API patch number and header version number to 8 for this
+    update.
+
+Github Issues:
+
+  * Specify in the validity language for flink:vkBeginCommandBuffer that
+    pname:commandBuffer must not currently be pending execution (public
+    issue 96).
+  * Describe depth comparison using the correct temporary variable names
+    in the <<textures-depth-compare-operation,Depth Compare Operation>>
+    section (public issue 100).
+  * Clarify the order of descriptor update operations in the
+    flink:vkUpdateDescriptorSets command (public issue 115).
+  * Specify in the VK_KHR_swapchain extension that
+    flink:vkAcquireNextImageKHR's pname:semaphore and pname:fence
+    parameters cannot both be sname:VK_NULL_HANDLE (partly addresses,
+    but does not fully close, public issue 117 / internal issue 246).
+  * Change reference to the "lifetime" of a Vulkan command to
+    "duration", and define the "duration" term (public issue 135).
+  * Added valid usage language for slink:VkImageLayout to require both
+    pname:height and pname:depth to be 1 for 1D images and pname:depth
+    to be 1 for 2D images (public issue 137).
+  * Fix SPIR-V example code in the
+    <<descriptorsets-inputattachment,Input Attachment>> section to
+    properly decorate the code:InputAttachmentIndex (public issue 139).
+  * Fix reference to nonexistent pname:imageInfo in the description of
+    flink:VkWriteDescriptorSet to refer to pname:pImageInfo (public
+    issue 140).
+
+Internal Issues:
+
+  * Link to the fixed-function vertex chapter from the drawing chapter
+    (internal issue 110)
+  * Fix typo in slink:VkImageCreateInfo validity language:
+    ptext:maxExtent.sampleCounts -> pname:sampleCounts (internal issue
+    249).
+  * Explain why the non-core token etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
+    is used in the example in the
+    <<synchronization-semaphores,Semaphores>> section (internal issue
+    251).
+  * Attempt to clarify in the VK_KHR_android_surface extension's
+    <<platformQuerySupport_android,Android Platform Support>> section
+    that there is no Android-specific WSI query, and why (internal issue
+    252).
+
+Other Commits:
+
+  * Add missing language about ename:VK_INCOMPLETE being returned from
+    array queries when the passed array is too short, in the
+    VK_KHR_display, VK_KHR_swapchain, and VK_KHR_surface extensions.
+
+-----------------------------------------------------
+
+Change log for March 25, 2016 Vulkan 1.0.7 spec update:
+
+  * Bump API patch number and header version number to 7 for this
+    update.
+
+Github Issues:
+
+  * Fix slink:VkSpecializationMapEntry example to avoid C/C++ strict
+    aliasing issues (public issue 14).
+  * Clarify the meaning of "matching" in flink:vkCmdBindDescriptorSets
+    validity language (public issue 33).
+  * Add stub reference pages so xrefs to not-yet-written pages do not
+    generate 404 errors. However, the actual content of these pages
+    still needs to be filled in as time allows (public issue 44, but
+    does not close that issue out).
+  * Remove incorrect validity statement for
+    flink:vkGetImageSparseMemoryRequirements (public issue 85).
+  * Reword the
+    <<features-limits-bufferImageGranularity,bufferImageGranularity>>
+    feature in terms of "aliasing", and clarify that it applies to
+    bindings in the same memory object (public issue 90).
+  * Clarify the relationship of the slink:VkPhysicalDeviceLimits
+    pname:maxViewportDimensions and pname:viewportBoundsRange limits
+    (public issue 92).
+  * Specify sparse unbound texture replacement in the
+    <<textures-texel-replacement,Texel Replacement>> section
+    independently of robust buffer access language (public issue 100).
+  * Add the <<fundamentals-architecture-model,Architecture Model>>
+    section to explain architecture constraints Vulkan has chosen to
+    accept in order to enable portable and performant code (public issue
+    122).
+  * State that an object must not be destroyed until *all* (not *any*)
+    uses of that object have completed (public issue 123).
+  * Minor editorial cleanup (public issues 129, 134, 146, 148).
+  * Add validity language for layer and extension names to
+    slink:VkDeviceCreateInfo matching that used for
+    slink:VkInstanceCreateInfo (public issue 130).
+  * Clean up terminology for the case when the bits set in one bitmask
+    are a subset of the bits set in another bitmask (public issue 138).
+  * Document that input attachments are UniformConstant not Input, in
+    the <<interfaces-inputattachment,Fragment Input Attachment
+    Interface>> section (public glslang bug 169).
+
+Internal Issues:
+
+  * Add max enum values to "flag bits" enums (internal issue 136).
+  * Clarify language around the various uses of the term "block" in the
+    <<appendix-compressedtex-bc,Block Compressed Image Formats>> section
+    (internal issue 202).
+  * Removed "expand" dependency from <enums> groups in vk.xml and added
+    auto-generation code in the scripts to infer it instead, to ensure
+    consistency. This caused renaming of sname:VkColorSpaceKHR and
+    sname:VkPresentModeKHR etext:BEGIN_RANGE (etc.) tokens, but those
+    tokens are metadata, not part of the API, and the Vulkan WG is OK
+    with this change. This change adds ranges to two additional enums
+    that were missing them due to not defining the "expand" attribute
+    (internal issue 217).
+  * Tweak makefile to generate ref page nroff (.3) files in the right
+    output directory, working around an a2x limitation (internal issue
+    223).
+
+Other Commits:
+
+  * Add validity requirements for flink:vkCmdCopyQueryPoolResults
+    pname:dstBuffer parameter.
+  * Fix ref page build to generate .3 targets in the right output
+    directory.
+
+-----------------------------------------------------
+
+Change log for March 10, 2016 Vulkan 1.0.6 spec update:
+
+  * Bump API patch number and header version number to 6 for this
+    update.
+
+Github Issues:
+
+  * Define 'invocation group' for compute and graphics shaders. Cleanup
+    definition and use of 'workgroup', and add glossary entries (public
+    issue 1).
+  * Various minor editorial fixes (public issue 33).
+  * Clarify locations for block members in the
+    <<interfaces-iointerfaces-locations,Location Assignment>>
+    section (public issue 45).
+  * Editorial fixes for <<commandbuffer-allocation,Command Buffer
+    Allocation>> section (public issues 54, 59).
+  * Clarify behavior of depth test in the <<fragops-depth,Depth Test>>
+    section (public issues 80, 81).
+  * Remove discussion of return codes from
+    flink:vkGetPhysicalDeviceSparseImageFormatProperties and
+    flink:vkGetImageSparseMemoryRequirements, which do not return values
+    (public issue 82).
+  * Allow flink:vkCmdDrawIndirect and flink:vkCmdDrawIndexedIndirect
+    pname:drawCount of 0, as well as 1, when the multiDrawIndirect
+    feature is not supported (public issue 88).
+  * Remove confusing wording in the <<features-limits,Limits>>
+    section describing the slink:VkPhysicalDeviceLimits
+    pname:minTexelBufferOffsetAlignment,
+    pname:minUniformBufferOffsetAlignment, and
+    pname:minStorageBufferOffsetAlignment members as both minimums and
+    maximums (public issue 91).
+  * Clarified that only the RGB components should be affected in places
+    where sRGB is referred to in the spec, such as ASTC formats. Minor
+    re-wording to avoid "color space" when actively incorrect, now that
+    we refer to the Data Format Spec which actually makes a distinction
+    between color space and transfer function (public issue 94).
+  * Treat pname:pPropertyCount == 0 consistently in
+    flink:vkEnumerateInstanceLayerProperties and
+    flink:vkEnumerateDeviceLayerProperties (public issue 99)
+  * Cleanup minor editorial issues in chapters 14-17 (public issue 100).
+  * Clarify definition of flink:vkEnumerateInstanceExtensionProperties
+    and flink:vkEnumerateDeviceExtensionProperties (public issue 101).
+  * Define the flink:vkEnumerateInstanceExtensionProperties and
+    flink:vkEnumerateDeviceExtensionProperties pname:pLayerName
+    parameter to be a pointer to a null-terminated UTF-8 string (public
+    issue 101).
+  * Rearrange "Missing information" references in mandatory format
+    tables (public issue 101).
+  * Clarify that the enumerated extensions returned by
+    flink:vkEnumerateInstanceExtensionProperties and
+    flink:vkEnumerateDeviceExtensionProperties will only include
+    extensions provided by the platform or extensions implemented in
+    implicitly enabled layers (public issue 101).
+  * Miscellaneous editorial fixes. Include the Vulkan spec patch number
+    in the PDF title. Fix label on <<fig-non-strict-lines,Non
+    strict lines>> diagram. Use more easily distinguished symbols in
+    tables in the <<features-required-format-support,Required
+    Format Support>> section. Do not require FQDNs used as layer names be
+    encoded in lower case if not possible, in the
+    <<extensions-naming-conventions, Extension and Layer Naming
+    Conventions>> section (public issues 101, 119, 121).
+
+Internal Issues:
+
+  * Fixed excessive spacing in tables in XHTML (internal issue 18).
+  * Clarify that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
+    applies to secondary command buffers. Previously spec only referred
+    to the members of pname:pCommandBuffers being affected by this bit.
+    Added a separate slink:VkSubmitInfo Valid Usage restriction
+    specifying that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
+    also applies to any secondary command buffers that are recorded into
+    the primary command buffers in pname:pCommandBuffers (internal issue
+    106).
+  * Clarify that slink:VkDeviceCreateInfo::pname:pEnabledFeatures can be
+    NULL (internal issue 117).
+  * Remove "the value of" where it is redundant (e.g. speaking of an API
+    parameter, struct member, or SPIR-V variable, but not when speaking
+    of color components) (internal issue 175).
+  * Forced patch version to always be 0 in the header. Add a
+    "VK_API_VERSION_<major>_<minor>" macro for people to use to do the
+    right thing. Add a VK_HEADER_VERSION which captures the header
+    release number independent of the spec patch number (internal issue
+    176).
+  * Correct description of
+    slink:VkPipelineShaderStageCreateInfo::pname:pName to "a pointer to
+    a null-terminated UTF-8 string" (internal issue 197).
+
+Other Commits:
+
+  * Updated DataFormat spec reference to the new date for revision 5 of
+    that spec.
+  * Fixed KEEP option (to retain LaTeX intermediate files) in the
+    Makefile to be included when edited there, as well as set on the
+    command line.
+  * Reserve and add "VK_IMG_filter_cubic" to the registry, and implement
+    script functionality to add and remove validity from existing
+    functions. Includes schema and readme changes.
+  * Update GL_KHR_vulkan_glsl so push_constants do not have descriptor
+    sets.
+
+-----------------------------------------------------
+
+Change log for March 4, 2016 Vulkan 1.0.5 spec update:
+
+  * Bump API patch number to 5 for this update.
+
+Github Issues:
+
+  * Correctly describe slink:VkPhysicalDeviceProperties pname:deviceName
+    member as a string, not a pointer to a string. Also one typo fix for
+    "hetereogeneous" (public issue 4).
+  * Replace maynot: macro with may: not, and "may: or maynot:" with
+    "may:" (public issue 4).
+  * Clarify that redundantly setting the state of a fence or event has
+    no effect (public issue 4).
+  * Minor fixes to ref pages to track descriptions of memory bits that
+    changed in the core spec. Fix name of a member in the description of
+    sname:sname:VkPipelineMultisampleStateCreateInfo (public issues 8,
+    13).
+  * Remove redundant validity statement for
+    sname:VkGraphicsPipelineCreateInfo::pname:stageCount (public issue
+    14).
+  * Fix typos in chapters 7-9 (public issue 14).
+  * Clarify the example demonstrating the behavior of
+    code:OpMemoryBarrier in the
+    <<shaders-execution-memory-ordering,shader memory acces
+    ordering>> section (public issue 16).
+  * Specify that freeing mapped memory implicitly unmaps the memory in
+    the description of flink:vkFreeMemory (public issue 17).
+  * Forbid allocation callbacks from calling into the API in the
+    <<memory-allocation,memory allocation>> section (public issue
+    20).
+  * Add missing validity rules about size being greater than 0 and
+    offset being less than size of object. Fix
+    flink:VkMappedMemoryRange's misinterpretation of offset (public
+    issues 27, 31).
+  * Add validity rule disallowing overlapping source/destination
+    descriptors in flink:VkCopyDescriptorSet (public issue 32).
+  * Clarify that array and matrix stride has to be a multiple of the
+    base alignment of the array or matrix in the
+    <<interfaces-resources-layout,Offset and Stride Assignment>>
+    section (public issue 38).
+  * Correct parenthesis floor nesting error in equation for
+    <<textures-RGB-sexp,RGB to shared exponent conversion>>.
+    Clarify case of when exp' is forced to 0, avoiding log2(0) undefined
+    problem (public issue 40).
+  * Remove redundant statement from the code:FragDepth description in
+    the <<interfaces-builtin-variables,Built-In Variables>>
+    section (public issue 47).
+  * Define the clamping of the
+    <<textures-level-of-detail-operation,bias added to the scale
+    factor>> by linking to the slink:VkPhysicalDevice feature
+    pname:maxSamplerLodBias (public issue 64).
+  * Fix typo "optimal linear resources" and clarify the set of resources
+    <<features-limits-bufferImageGranularity,the
+    pname:bufferImageGranularity resource>> applies to (public issue
+    67).
+  * Replace 'descriptor accessed by a pipeline' language for
+    sname:VkDescriptorSetAllocateInfo with more precise phrasing about
+    binding a descriptor set before a command that invokes work using
+    that set (public issue 69).
+  * tstripadj.svg contained an Inkscape tag which caused Firefox and IE
+    11 to fail to render it, and was illegal SVG. Generating Plain SVG
+    from the Inkscape SVG source fixes this (public issue 70).
+  * Fix validity for sname:VkVertexInputBindingDescription and
+    sname:VkVertexInputAttributeDescription numbers (public issue 72).
+
+Internal Issues:
+
+  * Clarify the meaning of
+    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT in
+    elink:VkFormatFeatureFlagBits with respect to depth compare
+    (internal issue 107).
+  * Added a note explaining that ename:VK_QUEUE_TRANSFER_BIT may or may
+    not be reported for a queue family that already supports
+    ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT as the
+    former is a strict subset of the latter ones (internal issue 116).
+  * Add validity language for sname:VkDescriptorSetAllocateInfo about
+    exceeding the descriptor pool capacity (internal issue 140).
+  * Add ename:VK_INCOMPLETE success code for
+    flink:vkEnumeratePhysicalDevices query (internal issue 163).
+
+Other Commits:
+
+  * Add the VK_NV_glsl_shader extension definitions to the API.
+  * Update GL_KHR_vulkan_glsl with 1) origin_upper_left as default 2)
+    specialization array constant semantics.
+  * Corrected/updated Data Format Specification date.
+
+-----------------------------------------------------
+
+Change log for February 25, 2015 Vulkan 1.0.4 spec update:
+
+  * Bump API patch number from 3 to 4 for the first public update to the
+    spec. Add patch number to the spec title (this will be done
+    automatically from XML, later).
+  * Fixes for numerous editorial issues. Regularize descriptions of
+    variable-length array queries. Properly tag enumerants so they come
+    out in the right font (many were mislabeled in usage tags in vk.xml,
+    or not tagged). Spelling and markup corrections (public issue 4).
+  * Fix typos and clearly separate description of different types of
+    memory areas (public issue 5).
+  * Use standards-compliant preprocessor guard symbols on headers
+    (public issue 7).
+  * Note that Github users cannot currently set labels on issues, and
+    recommend a fallback approach (public issue 15).
+  * Use latexmath prefix on len= attributes (public issue 29).
+  * Make flink:vkCmdUpdateBuffer pname:dataSize limit consistent (public
+    issue 65).
+  * Add VK_KHR_mirror_clamp_to_edge extension to core API branch, as an
+    optional feature not introducing new commands or enums (internal
+    issue 104).
+  * Cleanup invariance language inherited from the GL specification to
+    not refer to nonexistent (GL-specific) state (internal issue 111).
+  * Modify the flink:vkCmdDrawIndexed pname:vertexOffset definition to
+    not be the "base offset within the index buffer" but rather the
+    "value added to the vertex index before indexing into the vertex
+    buffer" (internal issue 118).
+  * Fix drawing chapter in the "Programmable Primitive Shading" section
+    where it described categories of drawing commands. It referenced
+    flink:vkCmdDrawIndexed twice. Replace the second reference with
+    flink:vkCmdDrawIndexedIndirect (internal issue 119).
+  * Typo fixed in <<sparsememory-examples-advanced,Advanced Sparse
+    Resources>> sparse memory example (internal issue 122).
+  * Add flink:VkDisplayPlaneAlphaFlagsKHR to <require> section of
+    VK_KHR_display extension (internal issue 125)
+  * Add missing optional="false,true" to
+    flink:vkGetImageSparseMemoryRequirements
+    pname:pSparseMemoryRequirementCount parameter (internal issue 132)
+  * Rename ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT to
+    ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
+    (internal issue 133)
+  * Fix a handful of broken cross-references in the
+    <<samplers,Samplers>> chapter (internal issue 134).
+  * Fix "Input Attachement" GLSL example to use correct syntax (internal
+    issue 135).
+  * Update XML schema and documentation to accomodate recently added
+    attributes for validity. Add some introductory material describing
+    design choices and pointing to the public repository to file issues.
+  * Put include of validity in the core spec extensions chapter on its
+    own line, so that asciidoc is happy.
+  * Fix vertexOffset language to specify that it is the value added to
+    the vertex index before indexing into the vertex buffer, not the
+    base offset within the index buffer.
+  * Fix error in the description of flink:vkCmdNextSubpass.
+
+-----------------------------------------------------
+
+February 16, 2016 - Vulkan 1.0 initial public release
+
diff --git a/protocols/vulkan/Makefile b/protocols/vulkan/Makefile
new file mode 100644
index 0000000..3ca3c91
--- /dev/null
+++ b/protocols/vulkan/Makefile
@@ -0,0 +1,474 @@
+# Copyright (c) 2014-2018 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.
+
+# Vulkan Specification makefile
+#
+# To build the spec with a specific version included, set the
+# $(VERSIONS) variable on the make command line to a space-separated
+# list of version names (e.g. VK_VERSION_1_1) *including all previous
+# versions of the API* (e.g. VK_VERSION_1_1 must also include
+# VK_VERSION_1_0). $(VERSIONS) is converted into asciidoc and generator
+# script arguments $(VERSIONATTRIBS) and $(VERSIONOPTIONS)
+#
+# To build the specification and reference pages with optional
+# extensions included, set the $(EXTENSIONS) variable on the make
+# command line to a space-separated list of extension names. The
+# VK_KHR_sampler_mirror_clamp_to_edge extension which is a required part
+# of Vulkan 1.0, is always included. $(EXTENSIONS) is converted into
+# asciidoc and generator script arguments $(EXTATTRIBS) and
+# $(EXTOPTIONS).
+
+# If a recipe fails, delete its target file. Without this cleanup, the leftover
+# file from the failed recipe can falsely satisfy dependencies on subsequent
+# runs of `make`.
+.DELETE_ON_ERROR:
+
+VERSIONS := VK_VERSION_1_0 VK_VERSION_1_1
+VERSIONATTRIBS := $(foreach version,$(VERSIONS),-a $(version))
+VERSIONOPTIONS := $(foreach version,$(VERSIONS),-feature $(version))
+
+EXTS := $(sort VK_KHR_sampler_mirror_clamp_to_edge $(EXTENSIONS) $(DIFFEXTENSIONS))
+EXTATTRIBS := $(foreach ext,$(EXTS),-a $(ext))
+EXTOPTIONS := $(foreach ext,$(EXTS),-extension $(ext))
+
+# APITITLE can be set to extra text to append to the document title,
+# normally used when building with extensions included.
+APITITLE =
+
+# The default 'all' target builds the following sub-targets:
+#  html - HTML single-page API specification
+#  pdf - PDF single-page API specification
+#  styleguide - HTML5 single-page "Documentation and Extensions" guide
+#  registry - HTML5 single-page XML Registry Schema documentation
+#  manhtml - HTML5 single-page reference guide
+#  manpdf - PDF reference guide
+#  manhtmlpages - HTML5 separate per-feature reference pages
+#  checkinc - validator script for asciidoc include files
+#  checklinks - validator script for asciidoc xrefs
+
+all: alldocs allchecks
+
+alldocs: allspecs allman
+
+allspecs: html pdf styleguide registry
+
+allman: manhtml manpdf manhtmlpages
+
+allchecks: checkinc checklinks
+
+# Note that the := assignments below are immediate, not deferred, and
+# are therefore order-dependent in the Makefile
+
+QUIET	 ?= @
+PYTHON	 ?= python3
+ASCIIDOC ?= asciidoctor
+RM	 = rm -f
+RMRF	 = rm -rf
+MKDIR	 = mkdir -p
+CP	 = cp
+ECHO	 = echo
+GS_EXISTS := $(shell command -v gs 2> /dev/null)
+
+# Target directories for output files
+# HTMLDIR - 'html' target
+# PDFDIR - 'pdf' target
+# CHECKDIR - 'allchecks' target
+OUTDIR	  := $(CURDIR)/out
+HTMLDIR   := $(OUTDIR)/html
+VUDIR	  := $(OUTDIR)/validation
+PDFDIR	  := $(OUTDIR)/pdf
+CHECKDIR  := $(OUTDIR)/checks
+
+# PDF Equations are written to SVGs, this dictates the location to store those files (temporary)
+PDFMATHDIR:=$(OUTDIR)/equations_temp
+
+# Set VERBOSE to -v to see what asciidoc is doing.
+VERBOSE =
+
+# asciidoc attributes to set.
+# PATCHVERSION must == VK_HEADER_VERSION from vk.xml / vulkan_core.h
+# NOTEOPTS   sets options controlling which NOTEs are generated
+# ATTRIBOPTS sets the api revision and enables MathJax generation
+# VERSIONATTRIBS sets attributes for enabled API versions (set above
+#	     based on $(VERSIONS))
+# EXTATTRIBS sets attributes for enabled extensions (set above based on
+#	     $(EXTENSIONS))
+# EXTRAATTRIBS sets additional attributes, if passed to make
+# ADOCOPTS   options for asciidoc->HTML5 output
+NOTEOPTS     = -a editing-notes -a implementation-guide
+PATCHVERSION = 83
+ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
+SPECREVISION = 1.1.$(PATCHVERSION)
+else
+SPECREVISION = 1.0.$(PATCHVERSION)
+endif
+
+# Spell out ISO 8601 format as not all date commands support --rfc-3339
+SPECDATE     = $(shell echo `date -u "+%Y-%m-%d %TZ"`)
+
+# Generate Asciidoc attributes for spec remark
+# Could use `git log -1 --format="%cd"` to get branch commit date
+# This used to be a dependency in the spec html/pdf targets,
+# but that's likely to lead to merge conflicts. Just regenerate
+# when pushing a new spec for review to the sandbox.
+# The dependency on HEAD is per the suggestion in
+# http://neugierig.org/software/blog/2014/11/binary-revisions.html
+SPECREMARK = from git branch: $(shell echo `git symbolic-ref --short HEAD 2> /dev/null || echo Git branch information not available`) \
+	     commit: $(shell echo `git log -1 --format="%H"`)
+
+ATTRIBOPTS   = -a revnumber="$(SPECREVISION)" \
+	       -a revdate="$(SPECDATE)" \
+	       -a revremark="$(SPECREMARK)" \
+	       -a apititle="$(APITITLE)" \
+	       -a stem=latexmath \
+	       $(VERSIONATTRIBS) \
+	       $(EXTATTRIBS) \
+	       $(EXTRAATTRIBS)
+
+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
+
+# ADOCHTMLOPTS relies on the relative runtime path from the output HTML
+# file to the katex scripts being set with KATEXDIR. This is overridden
+# by some targets.
+# ADOCHTMLOPTS also relies on the absolute build-time path to the
+# 'stylesdir' containing our custom CSS.
+KATEXDIR     = katex
+ADOCHTMLOPTS = $(ADOCHTMLEXTS) -a katexpath=$(KATEXDIR) \
+	       -a stylesheet=khronos.css -a stylesdir=$(CURDIR)/config
+
+ADOCPDFEXTS  = -r asciidoctor-pdf -r asciidoctor-mathematical -r $(CURDIR)/config/asciidoctor-mathematical-ext.rb
+ADOCPDFOPTS  = $(ADOCPDFEXTS) -a mathematical-format=svg \
+	       -a imagesoutdir=$(PDFMATHDIR) \
+	       -a pdf-stylesdir=config/themes -a pdf-style=pdf
+
+ADOCVUEXTS = -r $(CURDIR)/config/vu-to-json.rb
+ADOCVUOPTS = $(ADOCVUEXTS)
+
+.PHONY: directories
+
+# Images used by the spec. These are included in generated HTML now.
+IMAGEPATH :=images
+SVGFILES  := $(wildcard $(IMAGEPATH)/*.svg)
+
+# Top-level spec source file
+SPECSRC := vkspec.txt
+# Files making up sections of the API spec. The wildcard expression
+# 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)
+# 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)
+
+# Install katex in $(OUTDIR)/katex for reference by all HTML targets
+# README.md is a proxy for all the katex files that need to be installed
+katexinst: KATEXDIR = katex
+katexinst: $(OUTDIR)/$(KATEXDIR)/README.md
+
+$(OUTDIR)/$(KATEXDIR)/README.md: katex/README.md
+	$(QUIET)$(MKDIR) $(OUTDIR)
+	$(QUIET)$(RMRF)  $(OUTDIR)/$(KATEXDIR)
+	$(QUIET)$(CP) -rf katex $(OUTDIR)
+
+# Spec targets
+# There is some complexity to try and avoid short virtual targets like 'html'
+# causing specs to *always* be regenerated.
+html: $(HTMLDIR)/vkspec.html $(SPECSRC) $(COMMONDOCS)
+
+$(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)
+	$(QUIET)$(MKDIR) $(PDFDIR)
+	$(QUIET)$(MKDIR) $(PDFMATHDIR)
+	$(QUIET)$(ASCIIDOC) -b pdf $(ADOCOPTS) $(ADOCPDFOPTS) -o $@ $(SPECSRC)
+ifndef GS_EXISTS
+	$(QUIET) echo "Warning: Ghostscript not installed, skipping pdf optimization"
+else
+	$(QUIET)$(CURDIR)/config/optimize-pdf $@
+	$(QUIET)rm $@
+	$(QUIET)mv $(PDFDIR)/vkspec-optimized.pdf $@
+endif
+	$(QUIET)rm -rf $(PDFMATHDIR)
+
+validusage: $(VUDIR)/validusage.json $(SPECSRC) $(COMMONDOCS)
+
+$(VUDIR)/validusage.json: $(SPECSRC) $(COMMONDOCS)
+	$(QUIET)$(MKDIR) $(VUDIR)
+	$(QUIET)$(ASCIIDOC) $(ADOCOPTS) $(ADOCVUOPTS) --trace -a json_output=$@ -o $@ $(SPECSRC)
+
+# Vulkan Documentation and Extensions, a.k.a. "Style Guide" documentation
+
+STYLESRC = styleguide.txt
+STYLEFILES = $(wildcard style/[A-Za-z]*.txt)
+
+styleguide: $(OUTDIR)/styleguide.html
+
+$(OUTDIR)/styleguide.html: KATEXDIR = katex
+$(OUTDIR)/styleguide.html: $(STYLESRC) $(STYLEFILES) $(GENINCLUDE) $(GENDEPENDS) katexinst
+	$(QUIET)$(MKDIR) $(OUTDIR)
+	$(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ $(STYLESRC)
+
+
+# Vulkan API Registry (XML Schema) documentation
+# Currently does not use latexmath / KaTeX
+
+REGSRC = registry.txt
+
+registry: $(OUTDIR)/registry.html
+
+$(OUTDIR)/registry.html: $(REGSRC)
+	$(QUIET)$(MKDIR) $(OUTDIR)
+	$(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ $(REGSRC)
+
+
+# Reflow text in spec sources
+REFLOW = reflow.py
+REFLOWOPTS = -overwrite
+
+reflow:
+	$(QUIET) echo "Warning: please verify the spec outputs build without changes!"
+	$(PYTHON) $(REFLOW) $(REFLOWOPTS) $(SPECSRC) $(SPECFILES) $(STYLESRC) $(STYLEFILES)
+
+# Clean generated and output files
+
+clean: clean_html clean_pdf clean_man clean_checks clean_generated clean_validusage
+
+clean_html:
+	$(QUIET)$(RMRF) $(HTMLDIR) $(OUTDIR)/katex
+	$(QUIET)$(RM) $(OUTDIR)/apispec.html $(OUTDIR)/styleguide.html \
+	    $(OUTDIR)/registry.html
+
+clean_pdf:
+	$(QUIET)$(RM) $(PDFDIR)/vkspec.pdf $(OUTDIR)/apispec.pdf
+
+clean_man:
+	$(QUIET)$(RMRF) $(MANHTMLDIR)
+
+clean_checks:
+	$(QUIET)$(RMRF) $(CHECKDIR)
+
+clean_generated:
+	$(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)
+
+clean_validusage:
+	$(QUIET)$(RM) $(VUDIR)/validusage.json
+
+
+# Ref page targets for individual pages
+MANDIR	    := man
+MANSECTION  := 3
+
+# These lists should be autogenerated
+
+# Ref page sources, split up by core API (CORE), KHR extensions (KHR), and
+# other extensions (VEN). This is a hacky approach to ref page generation
+# now that the single-branch model is in place, and there are outstanding
+# issues to resolve it. For the moment, we always just build the core
+# ref pages.
+
+KHRSOURCES   = $(wildcard $(MANDIR)/*KHR.txt)
+MACROSOURCES = $(wildcard $(MANDIR)/VK_*[A-Z][A-Z].txt)
+VENSOURCES   = $(filter-out $(KHRSOURCES) $(MACROSOURCES),$(wildcard $(MANDIR)/*[A-Z][A-Z].txt))
+CORESOURCES  = $(filter-out $(KHRSOURCES) $(VENSOURCES),$(wildcard $(MANDIR)/[Vv][Kk]*.txt $(MANDIR)/PFN*.txt))
+MANSOURCES   = $(CORESOURCES)
+MANCOPYRIGHT = $(MANDIR)/copyright-ccby.txt $(MANDIR)/footer.txt
+
+# Automatic generation of ref pages. Needs to have a proper dependency
+# causing the man page sources to be generated by running genRef (once),
+# but adding $(MANSOURCES) to the targets causes genRef to run
+# once/target.
+#
+# @@ Needs to pass in $(EXTOPTIONS) and use that to determine which
+# pages to generate. As it stands, all the extension ref pages are
+# also generated, though they are not usable at present.
+
+LOGFILE = man/logfile
+man/apispec.txt: $(SPECFILES) genRef.py reflib.py vkapi.py
+	$(PYTHON) genRef.py -log $(LOGFILE) $(SPECFILES)
+
+# These dependencies don't take into account include directives
+
+# These targets are HTML5 ref pages
+
+# The recursive $(MAKE) is an apparently unavoidable hack, since the
+# actual list of man page sources isn't known until after
+# man/apispec.txt is generated.
+manhtmlpages: man/apispec.txt
+	$(MAKE) buildmanpages
+
+# buildmanpages: $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html)
+
+MANHTMLDIR  = $(OUTDIR)/man/html
+MANHTML     = $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html)
+buildmanpages: $(MANHTML)
+
+$(MANHTMLDIR)/%.html: KATEXDIR = ../../katex
+$(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) $(GENINCLUDE) $(GENDEPENDS) katexinst
+	$(QUIET)$(MKDIR) $(MANHTMLDIR)
+	$(QUIET)$(ASCIIDOC) -b html5 -a cross-file-links -a html_spec_relative='../../html/vkspec.html' $(ADOCOPTS) $(ADOCHTMLOPTS) -d manpage -o $@ $<
+
+# These targets are HTML5 and PDF single-file versions of the ref pages
+# The generated ref page sources are included by man/apispec.txt, and
+# are always generated along with man/apispec.txt. Therefore there's no
+# need for a recursive $(MAKE) or a $(MANHTML) dependency, unlike the
+# manhtmlpages target.
+
+manpdf: $(OUTDIR)/apispec.pdf
+
+$(OUTDIR)/apispec.pdf: $(SPECVERSION) man/apispec.txt $(MANCOPYRIGHT) $(SVGFILES) $(GENINCLUDE) $(GENDEPENDS)
+	$(QUIET)$(MKDIR) $(OUTDIR)
+	$(QUIET)$(MKDIR) $(PDFMATHDIR)
+	$(QUIET)$(ASCIIDOC) -b pdf -a html_spec_relative='html/vkspec.html' $(ADOCOPTS) $(ADOCPDFOPTS) -o $@ man/apispec.txt
+ifndef GS_EXISTS
+	$(QUIET) echo "Warning: Ghostscript not installed, skipping pdf optimization"
+else
+	$(QUIET)$(CURDIR)/config/optimize-pdf $@
+	$(QUIET)rm $@
+	$(QUIET)mv $(OUTDIR)/apispec-optimized.pdf $@
+endif
+
+manhtml: $(OUTDIR)/apispec.html
+
+$(OUTDIR)/apispec.html: KATEXDIR = katex
+$(OUTDIR)/apispec.html: $(SPECVERSION) man/apispec.txt $(MANCOPYRIGHT) $(SVGFILES) $(GENINCLUDE) $(GENDEPENDS) katexinst
+	$(QUIET)$(MKDIR) $(OUTDIR)
+	$(QUIET)$(ASCIIDOC) -b html5 -a html_spec_relative='html/vkspec.html' $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ man/apispec.txt
+
+# Automated (though heuristic) checks of consistency in the spec and
+# ref page sources.
+# These are way out of date WRT current spec markup, and probably won't
+# work properly.
+
+# Validate includes in spec source vs. includes actually in the tree
+# Generates file in $(CHECKDIR)
+#   $(NOTINSPEC) notInSpec.txt - include files only found in XML, not in spec
+# Intermediate files removed after the run
+#   $(ACTUAL) - include files generated from vk.xml
+#   $(INSPEC) - include files referenced from the spec (not ref page) source
+# Other files which could be generated but are basically useless
+#   include files only found in the spec source - comm -13 $(ACTUAL) $(INSPEC)
+#   include files both existing and referenced by the spec - comm -12 $(ACTUAL) $(INSPEC)
+INCFILES = $(CHECKDIR)/incfiles
+ACTUAL = $(CHECKDIR)/actual
+INSPEC = $(CHECKDIR)/inspec
+NOTINSPEC = $(CHECKDIR)/notInSpec.txt
+checkinc:
+	$(QUIET)if test ! -d $(CHECKDIR) ; then $(MKDIR) $(CHECKDIR) ; fi
+	$(QUIET)ls $(GENINCLUDE) | sort > $(ACTUAL)
+	$(QUIET)cat $(SPECFILES) | \
+	    egrep '^include::\.\./' | tr -d '[]' | \
+	    sed -e 's#^include::\.\./##g' | sort > $(INCFILES)
+	$(QUIET)echo "List of API include files repeatedly included in the API specification"  > $(NOTINSPEC)
+	$(QUIET)echo "----------------------------------------------------------------------" >> $(NOTINSPEC)
+	$(QUIET)uniq -d $(INCFILES) >> $(NOTINSPEC)
+	$(QUIET)(echo ; echo "List of API include files not referenced in the API specification") >> $(NOTINSPEC)
+	$(QUIET)echo "-----------------------------------------------------------------" >> $(NOTINSPEC)
+	$(QUIET)comm -23 $(ACTUAL) $(INCFILES) >> $(NOTINSPEC)
+	$(QUIET)echo "Include files not found in the spec source are in $(CHECKDIR)/notInSpec.txt"
+	$(QUIET)$(RM) $(INCFILES) $(ACTUAL) $(INSPEC)
+
+# Validate link tags in spec and ref page sources against vk.xml
+# (represented in vkapi.py, which is autogenerated along with the
+# headers and ref page includes).
+# Generates files in $(CHECKDIR):
+#   specErrs.txt - errors & warnings in API spec
+#   manErrs.txt - errors & warnings in man pages
+checklinks: vkapi.py
+	$(QUIET)if test ! -d $(CHECKDIR) ; then $(MKDIR) $(CHECKDIR) ; fi
+	$(QUIET)echo "Generating link checks for spec (specErrs.txt) and man pages (manErrs.txt)"
+	$(QUIET)$(PYTHON) checkLinks.py -follow man/[Vv][Kk]*.txt > $(CHECKDIR)/manErrs.txt
+	$(QUIET)$(PYTHON) checkLinks.py -follow $(SPECFILES) > $(CHECKDIR)/specErrs.txt
+
+# Targets generated from the XML and registry processing scripts
+#   vkapi.py - Python encoding of the registry
+#   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
+#
+# $(VERSIONOPTIONS) specifies the core API versions which are included
+# in these targets, and is set above based on $(VERSIONS)
+#
+# $(EXTOPTIONS) specifies the extensions which are included in these
+# targets, and is set above based on $(EXTENSIONS).
+
+REGISTRY = xml
+VKXML	 = $(REGISTRY)/vk.xml
+GENVK	 = $(REGISTRY)/genvk.py
+GENVKOPTS= $(VERSIONOPTIONS) $(EXTOPTIONS) -registry $(VKXML)
+
+vkapi.py: $(VKXML) $(GENVK)
+	$(PYTHON) $(GENVK) $(GENVKOPTS) -o . vkapi.py
+
+apiinc: api/timeMarker
+
+api/timeMarker: $(VKXML) $(GENVK)
+	$(QUIET)$(MKDIR) api
+	$(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o api apiinc
+
+hostsyncinc: hostsynctable/timeMarker
+
+hostsynctable/timeMarker: $(VKXML) $(GENVK)
+	$(QUIET)$(MKDIR) hostsynctable
+	$(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o hostsynctable hostsyncinc
+
+validinc: validity/timeMarker
+
+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 $(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.stamp: $(VKXML) $(DEPSCRIPT)
+	$(QUIET)$(PYTHON) $(DEPSCRIPT) -registry $(VKXML) \
+	    -outscript config/extDependency.sh \
+	    -outpy config/extDependency.py
+	$(QUIET)touch $@
diff --git a/protocols/vulkan/README.adoc b/protocols/vulkan/README.adoc
new file mode 100644
index 0000000..2282e3f
--- /dev/null
+++ b/protocols/vulkan/README.adoc
@@ -0,0 +1,71 @@
+= Vulkan^(R)^ API Documentation Project
+
+This repository contains formal documentation of the Vulkan API. This
+includes the Specification of the Vulkan API, including extensions; the
+reference ("`man`") pages; the XML API Registry; header files; and related
+tools and scripts.
+
+The authoritative public repository is located at
+https://github.com/KhronosGroup/Vulkan-Docs/ . Issues, proposed fixes for
+issues, and other suggested changes should be created using Github.
+
+
+== Branch Structure
+
+With the release of Vulkan 1.1, the current Specification is now maintained
+in the `master` branch of the repository. It is possible to generate both
+Vulkan 1.1 and Vulkan 1.0 Specifications from this branch.
+
+
+=== `1.0` Branch Is Obsolete
+
+The `1.0` branch in which the 1.0 Specification was previously maintained is
+now obsolete. The `1.0` branch will not be updated going forward, and all
+outstanding pull requests or merge requests against the `1.0` branch must be
+rebased on, and retargeted to `master`.
+
+
+== Directory Structure
+
+The directory structure was changed following the 1.1.70 spec update to move
+the specification directory to the root of the repository, and move other
+content relative to that. There may be additional cleanup and simplification
+in the future.
+
+
+```
+README.adoc             This file
+BUILD.adoc              Build targets and methods for the specification
+ChangeLog.txt           Change log summary for each public spec update
+appendices/             Specification appendices
+chapters/               Specification chapters
+config/                 asciidoc configuration
+images/                 Images (figures, diagrams, icons)
+include/vulkan/         Vulkan headers, generated from the Registry
+man/                    Reference (manual) pages for API, mostly extracted from the spec source
+xml/                    XML API Registry (vk.xml) and related scripts
+src/ext_loader/         Extension loader library
+```
+
+
+== Building the Specification and Reference Pages
+
+The document sources are marked up in `asciidoctor` format, and we use
+asciidoctor and related toolchain components to generate output documents.
+See `BUILD.adoc` for more information on installing the toolchain and
+building the Specification.
+
+
+== Generating Headers and Related Files
+
+The header files (`include/vulkan/vulkan*.h`) and many parts of the
+specification and reference page documents are generated from descriptions
+in the XML API Registry (`xml/vk.xml`). The generated files, with the
+exception of header files, are not checked into the repository. If you
+change `vk.xml`, you can regenerate the header by going to `xml/` and
+running:
+
+    $ make clean install
+
+The other generated files are built as required via dependencies in
+the top-level `Makefile`.
diff --git a/protocols/vulkan/api/basetypes/VkBool32.txt b/protocols/vulkan/api/basetypes/VkBool32.txt
new file mode 100644
index 0000000..53db014
--- /dev/null
+++ b/protocols/vulkan/api/basetypes/VkBool32.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkBool32,VkBool32]]
+[source,c++]
+----
+typedef uint32_t VkBool32;
+
+----
diff --git a/protocols/vulkan/api/basetypes/VkDeviceSize.txt b/protocols/vulkan/api/basetypes/VkDeviceSize.txt
new file mode 100644
index 0000000..996d953
--- /dev/null
+++ b/protocols/vulkan/api/basetypes/VkDeviceSize.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDeviceSize,VkDeviceSize]]
+[source,c++]
+----
+typedef uint64_t VkDeviceSize;
+
+----
diff --git a/protocols/vulkan/api/basetypes/VkFlags.txt b/protocols/vulkan/api/basetypes/VkFlags.txt
new file mode 100644
index 0000000..e01f104
--- /dev/null
+++ b/protocols/vulkan/api/basetypes/VkFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFlags,VkFlags]]
+[source,c++]
+----
+typedef uint32_t VkFlags;
+
+----
diff --git a/protocols/vulkan/api/basetypes/VkSampleMask.txt b/protocols/vulkan/api/basetypes/VkSampleMask.txt
new file mode 100644
index 0000000..1020581
--- /dev/null
+++ b/protocols/vulkan/api/basetypes/VkSampleMask.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSampleMask,VkSampleMask]]
+[source,c++]
+----
+typedef uint32_t VkSampleMask;
+
+----
diff --git a/protocols/vulkan/api/defines/VK_API_VERSION.txt b/protocols/vulkan/api/defines/VK_API_VERSION.txt
new file mode 100644
index 0000000..59f4f9e
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_API_VERSION.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_API_VERSION,VK_API_VERSION]]
+[source,c++]
+----
+// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
+//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
+
+----
diff --git a/protocols/vulkan/api/defines/VK_API_VERSION_1_0.txt b/protocols/vulkan/api/defines/VK_API_VERSION_1_0.txt
new file mode 100644
index 0000000..1d9312a
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_API_VERSION_1_0.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_API_VERSION_1_0,VK_API_VERSION_1_0]]
+[source,c++]
+----
+// 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
+
+----
diff --git a/protocols/vulkan/api/defines/VK_API_VERSION_1_1.txt b/protocols/vulkan/api/defines/VK_API_VERSION_1_1.txt
new file mode 100644
index 0000000..edd6062
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_API_VERSION_1_1.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_API_VERSION_1_1,VK_API_VERSION_1_1]]
+[source,c++]
+----
+// Vulkan 1.1 version number
+#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0
+
+----
diff --git a/protocols/vulkan/api/defines/VK_DEFINE_HANDLE.txt b/protocols/vulkan/api/defines/VK_DEFINE_HANDLE.txt
new file mode 100644
index 0000000..24fa1d4
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_DEFINE_HANDLE.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_DEFINE_HANDLE,VK_DEFINE_HANDLE]]
+[source,c++]
+----
+
+#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
+
+----
diff --git a/protocols/vulkan/api/defines/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt b/protocols/vulkan/api/defines/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt
new file mode 100644
index 0000000..a57bb61
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt
@@ -0,0 +1,15 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_DEFINE_NON_DISPATCHABLE_HANDLE,VK_DEFINE_NON_DISPATCHABLE_HANDLE]]
+[source,c++]
+----
+
+#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
+#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
+        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
+#else
+        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
+#endif
+#endif
+        
+
+----
diff --git a/protocols/vulkan/api/defines/VK_HEADER_VERSION.txt b/protocols/vulkan/api/defines/VK_HEADER_VERSION.txt
new file mode 100644
index 0000000..589b696
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_HEADER_VERSION.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_HEADER_VERSION,VK_HEADER_VERSION]]
+[source,c++]
+----
+// Version of this file
+#define VK_HEADER_VERSION 83
+
+----
diff --git a/protocols/vulkan/api/defines/VK_MAKE_VERSION.txt b/protocols/vulkan/api/defines/VK_MAKE_VERSION.txt
new file mode 100644
index 0000000..dda6850
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_MAKE_VERSION.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_MAKE_VERSION,VK_MAKE_VERSION]]
+[source,c++]
+----
+#define VK_MAKE_VERSION(major, minor, patch) \
+    (((major) << 22) | ((minor) << 12) | (patch))
+
+----
diff --git a/protocols/vulkan/api/defines/VK_NULL_HANDLE.txt b/protocols/vulkan/api/defines/VK_NULL_HANDLE.txt
new file mode 100644
index 0000000..932b5f3
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_NULL_HANDLE.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_NULL_HANDLE,VK_NULL_HANDLE]]
+[source,c++]
+----
+
+#define VK_NULL_HANDLE 0
+        
+
+----
diff --git a/protocols/vulkan/api/defines/VK_VERSION_MAJOR.txt b/protocols/vulkan/api/defines/VK_VERSION_MAJOR.txt
new file mode 100644
index 0000000..a094216
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_VERSION_MAJOR.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_VERSION_MAJOR,VK_VERSION_MAJOR]]
+[source,c++]
+----
+#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
+
+----
diff --git a/protocols/vulkan/api/defines/VK_VERSION_MINOR.txt b/protocols/vulkan/api/defines/VK_VERSION_MINOR.txt
new file mode 100644
index 0000000..3331b45
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_VERSION_MINOR.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_VERSION_MINOR,VK_VERSION_MINOR]]
+[source,c++]
+----
+#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
+
+----
diff --git a/protocols/vulkan/api/defines/VK_VERSION_PATCH.txt b/protocols/vulkan/api/defines/VK_VERSION_PATCH.txt
new file mode 100644
index 0000000..608f2c8
--- /dev/null
+++ b/protocols/vulkan/api/defines/VK_VERSION_PATCH.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VK_VERSION_PATCH,VK_VERSION_PATCH]]
+[source,c++]
+----
+#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
+
+----
diff --git a/protocols/vulkan/api/enums/VkAccessFlagBits.txt b/protocols/vulkan/api/enums/VkAccessFlagBits.txt
new file mode 100644
index 0000000..c671698
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkAccessFlagBits.txt
@@ -0,0 +1,24 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkAccessFlagBits,VkAccessFlagBits]]
+[source,c++]
+----
+typedef enum VkAccessFlagBits {
+    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
+    VK_ACCESS_INDEX_READ_BIT = 0x00000002,
+    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
+    VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
+    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
+    VK_ACCESS_SHADER_READ_BIT = 0x00000020,
+    VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
+    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
+    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
+    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
+    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
+    VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
+    VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
+    VK_ACCESS_HOST_READ_BIT = 0x00002000,
+    VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
+    VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
+    VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
+} VkAccessFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkAttachmentDescriptionFlagBits.txt b/protocols/vulkan/api/enums/VkAttachmentDescriptionFlagBits.txt
new file mode 100644
index 0000000..7193842
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkAttachmentDescriptionFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkAttachmentDescriptionFlagBits,VkAttachmentDescriptionFlagBits]]
+[source,c++]
+----
+typedef enum VkAttachmentDescriptionFlagBits {
+    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
+} VkAttachmentDescriptionFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkAttachmentLoadOp.txt b/protocols/vulkan/api/enums/VkAttachmentLoadOp.txt
new file mode 100644
index 0000000..7ce0c90
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkAttachmentLoadOp.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkAttachmentLoadOp,VkAttachmentLoadOp]]
+[source,c++]
+----
+typedef enum VkAttachmentLoadOp {
+    VK_ATTACHMENT_LOAD_OP_LOAD = 0,
+    VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
+    VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
+} VkAttachmentLoadOp;
+----
diff --git a/protocols/vulkan/api/enums/VkAttachmentStoreOp.txt b/protocols/vulkan/api/enums/VkAttachmentStoreOp.txt
new file mode 100644
index 0000000..74edb7d
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkAttachmentStoreOp.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkAttachmentStoreOp,VkAttachmentStoreOp]]
+[source,c++]
+----
+typedef enum VkAttachmentStoreOp {
+    VK_ATTACHMENT_STORE_OP_STORE = 0,
+    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
+} VkAttachmentStoreOp;
+----
diff --git a/protocols/vulkan/api/enums/VkBlendFactor.txt b/protocols/vulkan/api/enums/VkBlendFactor.txt
new file mode 100644
index 0000000..ec6acb6
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkBlendFactor.txt
@@ -0,0 +1,26 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkBlendFactor,VkBlendFactor]]
+[source,c++]
+----
+typedef enum VkBlendFactor {
+    VK_BLEND_FACTOR_ZERO = 0,
+    VK_BLEND_FACTOR_ONE = 1,
+    VK_BLEND_FACTOR_SRC_COLOR = 2,
+    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
+    VK_BLEND_FACTOR_DST_COLOR = 4,
+    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
+    VK_BLEND_FACTOR_SRC_ALPHA = 6,
+    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
+    VK_BLEND_FACTOR_DST_ALPHA = 8,
+    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
+    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
+    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
+    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
+    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
+    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
+    VK_BLEND_FACTOR_SRC1_COLOR = 15,
+    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
+    VK_BLEND_FACTOR_SRC1_ALPHA = 17,
+    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
+} VkBlendFactor;
+----
diff --git a/protocols/vulkan/api/enums/VkBlendOp.txt b/protocols/vulkan/api/enums/VkBlendOp.txt
new file mode 100644
index 0000000..92e1de1
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkBlendOp.txt
@@ -0,0 +1,12 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkBlendOp,VkBlendOp]]
+[source,c++]
+----
+typedef enum VkBlendOp {
+    VK_BLEND_OP_ADD = 0,
+    VK_BLEND_OP_SUBTRACT = 1,
+    VK_BLEND_OP_REVERSE_SUBTRACT = 2,
+    VK_BLEND_OP_MIN = 3,
+    VK_BLEND_OP_MAX = 4,
+} VkBlendOp;
+----
diff --git a/protocols/vulkan/api/enums/VkBorderColor.txt b/protocols/vulkan/api/enums/VkBorderColor.txt
new file mode 100644
index 0000000..2376f5f
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkBorderColor.txt
@@ -0,0 +1,13 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkBorderColor,VkBorderColor]]
+[source,c++]
+----
+typedef enum VkBorderColor {
+    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
+    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
+    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
+    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
+    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
+    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
+} VkBorderColor;
+----
diff --git a/protocols/vulkan/api/enums/VkBufferCreateFlagBits.txt b/protocols/vulkan/api/enums/VkBufferCreateFlagBits.txt
new file mode 100644
index 0000000..33c9f1b
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkBufferCreateFlagBits.txt
@@ -0,0 +1,11 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkBufferCreateFlagBits,VkBufferCreateFlagBits]]
+[source,c++]
+----
+typedef enum VkBufferCreateFlagBits {
+    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
+    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
+    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
+    VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
+} VkBufferCreateFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkBufferUsageFlagBits.txt b/protocols/vulkan/api/enums/VkBufferUsageFlagBits.txt
new file mode 100644
index 0000000..52ef38c
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkBufferUsageFlagBits.txt
@@ -0,0 +1,16 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkBufferUsageFlagBits,VkBufferUsageFlagBits]]
+[source,c++]
+----
+typedef enum VkBufferUsageFlagBits {
+    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
+    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
+    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
+    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
+    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
+    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
+    VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
+    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
+    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
+} VkBufferUsageFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkChromaLocation.txt b/protocols/vulkan/api/enums/VkChromaLocation.txt
new file mode 100644
index 0000000..8a8bf38
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkChromaLocation.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkChromaLocation,VkChromaLocation]]
+[source,c++]
+----
+typedef enum VkChromaLocation {
+    VK_CHROMA_LOCATION_COSITED_EVEN = 0,
+    VK_CHROMA_LOCATION_MIDPOINT = 1,
+} VkChromaLocation;
+----
diff --git a/protocols/vulkan/api/enums/VkColorComponentFlagBits.txt b/protocols/vulkan/api/enums/VkColorComponentFlagBits.txt
new file mode 100644
index 0000000..ee589d8
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkColorComponentFlagBits.txt
@@ -0,0 +1,11 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkColorComponentFlagBits,VkColorComponentFlagBits]]
+[source,c++]
+----
+typedef enum VkColorComponentFlagBits {
+    VK_COLOR_COMPONENT_R_BIT = 0x00000001,
+    VK_COLOR_COMPONENT_G_BIT = 0x00000002,
+    VK_COLOR_COMPONENT_B_BIT = 0x00000004,
+    VK_COLOR_COMPONENT_A_BIT = 0x00000008,
+} VkColorComponentFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkCommandBufferLevel.txt b/protocols/vulkan/api/enums/VkCommandBufferLevel.txt
new file mode 100644
index 0000000..3679b4c
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkCommandBufferLevel.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandBufferLevel,VkCommandBufferLevel]]
+[source,c++]
+----
+typedef enum VkCommandBufferLevel {
+    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
+    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
+} VkCommandBufferLevel;
+----
diff --git a/protocols/vulkan/api/enums/VkCommandBufferResetFlagBits.txt b/protocols/vulkan/api/enums/VkCommandBufferResetFlagBits.txt
new file mode 100644
index 0000000..093dd57
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkCommandBufferResetFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandBufferResetFlagBits,VkCommandBufferResetFlagBits]]
+[source,c++]
+----
+typedef enum VkCommandBufferResetFlagBits {
+    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
+} VkCommandBufferResetFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkCommandBufferUsageFlagBits.txt b/protocols/vulkan/api/enums/VkCommandBufferUsageFlagBits.txt
new file mode 100644
index 0000000..2eff7e5
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkCommandBufferUsageFlagBits.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandBufferUsageFlagBits,VkCommandBufferUsageFlagBits]]
+[source,c++]
+----
+typedef enum VkCommandBufferUsageFlagBits {
+    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
+    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
+    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
+} VkCommandBufferUsageFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkCommandPoolCreateFlagBits.txt b/protocols/vulkan/api/enums/VkCommandPoolCreateFlagBits.txt
new file mode 100644
index 0000000..4313a13
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkCommandPoolCreateFlagBits.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandPoolCreateFlagBits,VkCommandPoolCreateFlagBits]]
+[source,c++]
+----
+typedef enum VkCommandPoolCreateFlagBits {
+    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
+    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
+    VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
+} VkCommandPoolCreateFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkCommandPoolResetFlagBits.txt b/protocols/vulkan/api/enums/VkCommandPoolResetFlagBits.txt
new file mode 100644
index 0000000..0c743e7
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkCommandPoolResetFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandPoolResetFlagBits,VkCommandPoolResetFlagBits]]
+[source,c++]
+----
+typedef enum VkCommandPoolResetFlagBits {
+    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
+} VkCommandPoolResetFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkCompareOp.txt b/protocols/vulkan/api/enums/VkCompareOp.txt
new file mode 100644
index 0000000..9289d03
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkCompareOp.txt
@@ -0,0 +1,15 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCompareOp,VkCompareOp]]
+[source,c++]
+----
+typedef enum VkCompareOp {
+    VK_COMPARE_OP_NEVER = 0,
+    VK_COMPARE_OP_LESS = 1,
+    VK_COMPARE_OP_EQUAL = 2,
+    VK_COMPARE_OP_LESS_OR_EQUAL = 3,
+    VK_COMPARE_OP_GREATER = 4,
+    VK_COMPARE_OP_NOT_EQUAL = 5,
+    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
+    VK_COMPARE_OP_ALWAYS = 7,
+} VkCompareOp;
+----
diff --git a/protocols/vulkan/api/enums/VkComponentSwizzle.txt b/protocols/vulkan/api/enums/VkComponentSwizzle.txt
new file mode 100644
index 0000000..1cbb19b
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkComponentSwizzle.txt
@@ -0,0 +1,14 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkComponentSwizzle,VkComponentSwizzle]]
+[source,c++]
+----
+typedef enum VkComponentSwizzle {
+    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
+    VK_COMPONENT_SWIZZLE_ZERO = 1,
+    VK_COMPONENT_SWIZZLE_ONE = 2,
+    VK_COMPONENT_SWIZZLE_R = 3,
+    VK_COMPONENT_SWIZZLE_G = 4,
+    VK_COMPONENT_SWIZZLE_B = 5,
+    VK_COMPONENT_SWIZZLE_A = 6,
+} VkComponentSwizzle;
+----
diff --git a/protocols/vulkan/api/enums/VkCullModeFlagBits.txt b/protocols/vulkan/api/enums/VkCullModeFlagBits.txt
new file mode 100644
index 0000000..88d83f3
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkCullModeFlagBits.txt
@@ -0,0 +1,11 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCullModeFlagBits,VkCullModeFlagBits]]
+[source,c++]
+----
+typedef enum VkCullModeFlagBits {
+    VK_CULL_MODE_NONE = 0,
+    VK_CULL_MODE_FRONT_BIT = 0x00000001,
+    VK_CULL_MODE_BACK_BIT = 0x00000002,
+    VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
+} VkCullModeFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkDependencyFlagBits.txt b/protocols/vulkan/api/enums/VkDependencyFlagBits.txt
new file mode 100644
index 0000000..a0df6e8
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkDependencyFlagBits.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDependencyFlagBits,VkDependencyFlagBits]]
+[source,c++]
+----
+typedef enum VkDependencyFlagBits {
+    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
+    VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
+    VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
+} VkDependencyFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkDescriptorPoolCreateFlagBits.txt b/protocols/vulkan/api/enums/VkDescriptorPoolCreateFlagBits.txt
new file mode 100644
index 0000000..1667775
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkDescriptorPoolCreateFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDescriptorPoolCreateFlagBits,VkDescriptorPoolCreateFlagBits]]
+[source,c++]
+----
+typedef enum VkDescriptorPoolCreateFlagBits {
+    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
+} VkDescriptorPoolCreateFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkDescriptorSetLayoutCreateFlagBits.txt b/protocols/vulkan/api/enums/VkDescriptorSetLayoutCreateFlagBits.txt
new file mode 100644
index 0000000..900a646
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkDescriptorSetLayoutCreateFlagBits.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDescriptorSetLayoutCreateFlagBits,VkDescriptorSetLayoutCreateFlagBits]]
+[source,c++]
+----
+typedef enum VkDescriptorSetLayoutCreateFlagBits {
+} VkDescriptorSetLayoutCreateFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkDescriptorType.txt b/protocols/vulkan/api/enums/VkDescriptorType.txt
new file mode 100644
index 0000000..d3551f8
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkDescriptorType.txt
@@ -0,0 +1,18 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDescriptorType,VkDescriptorType]]
+[source,c++]
+----
+typedef enum VkDescriptorType {
+    VK_DESCRIPTOR_TYPE_SAMPLER = 0,
+    VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
+    VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
+    VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
+    VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
+    VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
+    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
+    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
+    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
+    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
+    VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
+} VkDescriptorType;
+----
diff --git a/protocols/vulkan/api/enums/VkDescriptorUpdateTemplateType.txt b/protocols/vulkan/api/enums/VkDescriptorUpdateTemplateType.txt
new file mode 100644
index 0000000..abb6efc
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkDescriptorUpdateTemplateType.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDescriptorUpdateTemplateType,VkDescriptorUpdateTemplateType]]
+[source,c++]
+----
+typedef enum VkDescriptorUpdateTemplateType {
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,
+} VkDescriptorUpdateTemplateType;
+----
diff --git a/protocols/vulkan/api/enums/VkDeviceQueueCreateFlagBits.txt b/protocols/vulkan/api/enums/VkDeviceQueueCreateFlagBits.txt
new file mode 100644
index 0000000..8627687
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkDeviceQueueCreateFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDeviceQueueCreateFlagBits,VkDeviceQueueCreateFlagBits]]
+[source,c++]
+----
+typedef enum VkDeviceQueueCreateFlagBits {
+    VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
+} VkDeviceQueueCreateFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkDynamicState.txt b/protocols/vulkan/api/enums/VkDynamicState.txt
new file mode 100644
index 0000000..2648867
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkDynamicState.txt
@@ -0,0 +1,16 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDynamicState,VkDynamicState]]
+[source,c++]
+----
+typedef enum VkDynamicState {
+    VK_DYNAMIC_STATE_VIEWPORT = 0,
+    VK_DYNAMIC_STATE_SCISSOR = 1,
+    VK_DYNAMIC_STATE_LINE_WIDTH = 2,
+    VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
+    VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
+    VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
+    VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
+    VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
+    VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
+} VkDynamicState;
+----
diff --git a/protocols/vulkan/api/enums/VkExternalFenceFeatureFlagBits.txt b/protocols/vulkan/api/enums/VkExternalFenceFeatureFlagBits.txt
new file mode 100644
index 0000000..629a724
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkExternalFenceFeatureFlagBits.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalFenceFeatureFlagBits,VkExternalFenceFeatureFlagBits]]
+[source,c++]
+----
+typedef enum VkExternalFenceFeatureFlagBits {
+    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
+    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
+} VkExternalFenceFeatureFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkExternalFenceHandleTypeFlagBits.txt b/protocols/vulkan/api/enums/VkExternalFenceHandleTypeFlagBits.txt
new file mode 100644
index 0000000..9bb0a83
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkExternalFenceHandleTypeFlagBits.txt
@@ -0,0 +1,11 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalFenceHandleTypeFlagBits,VkExternalFenceHandleTypeFlagBits]]
+[source,c++]
+----
+typedef enum VkExternalFenceHandleTypeFlagBits {
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
+} VkExternalFenceHandleTypeFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkExternalMemoryFeatureFlagBits.txt b/protocols/vulkan/api/enums/VkExternalMemoryFeatureFlagBits.txt
new file mode 100644
index 0000000..f53a1c0
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkExternalMemoryFeatureFlagBits.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalMemoryFeatureFlagBits,VkExternalMemoryFeatureFlagBits]]
+[source,c++]
+----
+typedef enum VkExternalMemoryFeatureFlagBits {
+    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
+    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
+    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
+} VkExternalMemoryFeatureFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkExternalMemoryHandleTypeFlagBits.txt b/protocols/vulkan/api/enums/VkExternalMemoryHandleTypeFlagBits.txt
new file mode 100644
index 0000000..a211bd9
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkExternalMemoryHandleTypeFlagBits.txt
@@ -0,0 +1,14 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalMemoryHandleTypeFlagBits,VkExternalMemoryHandleTypeFlagBits]]
+[source,c++]
+----
+typedef enum VkExternalMemoryHandleTypeFlagBits {
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
+} VkExternalMemoryHandleTypeFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkExternalSemaphoreFeatureFlagBits.txt b/protocols/vulkan/api/enums/VkExternalSemaphoreFeatureFlagBits.txt
new file mode 100644
index 0000000..cefdae7
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkExternalSemaphoreFeatureFlagBits.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalSemaphoreFeatureFlagBits,VkExternalSemaphoreFeatureFlagBits]]
+[source,c++]
+----
+typedef enum VkExternalSemaphoreFeatureFlagBits {
+    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
+    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
+} VkExternalSemaphoreFeatureFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkExternalSemaphoreHandleTypeFlagBits.txt b/protocols/vulkan/api/enums/VkExternalSemaphoreHandleTypeFlagBits.txt
new file mode 100644
index 0000000..1be0f82
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkExternalSemaphoreHandleTypeFlagBits.txt
@@ -0,0 +1,12 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalSemaphoreHandleTypeFlagBits,VkExternalSemaphoreHandleTypeFlagBits]]
+[source,c++]
+----
+typedef enum VkExternalSemaphoreHandleTypeFlagBits {
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
+} VkExternalSemaphoreHandleTypeFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkFenceCreateFlagBits.txt b/protocols/vulkan/api/enums/VkFenceCreateFlagBits.txt
new file mode 100644
index 0000000..d405abf
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkFenceCreateFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFenceCreateFlagBits,VkFenceCreateFlagBits]]
+[source,c++]
+----
+typedef enum VkFenceCreateFlagBits {
+    VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
+} VkFenceCreateFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkFenceImportFlagBits.txt b/protocols/vulkan/api/enums/VkFenceImportFlagBits.txt
new file mode 100644
index 0000000..75a8e4f
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkFenceImportFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFenceImportFlagBits,VkFenceImportFlagBits]]
+[source,c++]
+----
+typedef enum VkFenceImportFlagBits {
+    VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
+} VkFenceImportFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkFilter.txt b/protocols/vulkan/api/enums/VkFilter.txt
new file mode 100644
index 0000000..7a02dd5
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkFilter.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFilter,VkFilter]]
+[source,c++]
+----
+typedef enum VkFilter {
+    VK_FILTER_NEAREST = 0,
+    VK_FILTER_LINEAR = 1,
+} VkFilter;
+----
diff --git a/protocols/vulkan/api/enums/VkFormat.txt b/protocols/vulkan/api/enums/VkFormat.txt
new file mode 100644
index 0000000..89ee496
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkFormat.txt
@@ -0,0 +1,226 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFormat,VkFormat]]
+[source,c++]
+----
+typedef enum VkFormat {
+    VK_FORMAT_UNDEFINED = 0,
+    VK_FORMAT_R4G4_UNORM_PACK8 = 1,
+    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
+    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
+    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
+    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
+    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
+    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
+    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
+    VK_FORMAT_R8_UNORM = 9,
+    VK_FORMAT_R8_SNORM = 10,
+    VK_FORMAT_R8_USCALED = 11,
+    VK_FORMAT_R8_SSCALED = 12,
+    VK_FORMAT_R8_UINT = 13,
+    VK_FORMAT_R8_SINT = 14,
+    VK_FORMAT_R8_SRGB = 15,
+    VK_FORMAT_R8G8_UNORM = 16,
+    VK_FORMAT_R8G8_SNORM = 17,
+    VK_FORMAT_R8G8_USCALED = 18,
+    VK_FORMAT_R8G8_SSCALED = 19,
+    VK_FORMAT_R8G8_UINT = 20,
+    VK_FORMAT_R8G8_SINT = 21,
+    VK_FORMAT_R8G8_SRGB = 22,
+    VK_FORMAT_R8G8B8_UNORM = 23,
+    VK_FORMAT_R8G8B8_SNORM = 24,
+    VK_FORMAT_R8G8B8_USCALED = 25,
+    VK_FORMAT_R8G8B8_SSCALED = 26,
+    VK_FORMAT_R8G8B8_UINT = 27,
+    VK_FORMAT_R8G8B8_SINT = 28,
+    VK_FORMAT_R8G8B8_SRGB = 29,
+    VK_FORMAT_B8G8R8_UNORM = 30,
+    VK_FORMAT_B8G8R8_SNORM = 31,
+    VK_FORMAT_B8G8R8_USCALED = 32,
+    VK_FORMAT_B8G8R8_SSCALED = 33,
+    VK_FORMAT_B8G8R8_UINT = 34,
+    VK_FORMAT_B8G8R8_SINT = 35,
+    VK_FORMAT_B8G8R8_SRGB = 36,
+    VK_FORMAT_R8G8B8A8_UNORM = 37,
+    VK_FORMAT_R8G8B8A8_SNORM = 38,
+    VK_FORMAT_R8G8B8A8_USCALED = 39,
+    VK_FORMAT_R8G8B8A8_SSCALED = 40,
+    VK_FORMAT_R8G8B8A8_UINT = 41,
+    VK_FORMAT_R8G8B8A8_SINT = 42,
+    VK_FORMAT_R8G8B8A8_SRGB = 43,
+    VK_FORMAT_B8G8R8A8_UNORM = 44,
+    VK_FORMAT_B8G8R8A8_SNORM = 45,
+    VK_FORMAT_B8G8R8A8_USCALED = 46,
+    VK_FORMAT_B8G8R8A8_SSCALED = 47,
+    VK_FORMAT_B8G8R8A8_UINT = 48,
+    VK_FORMAT_B8G8R8A8_SINT = 49,
+    VK_FORMAT_B8G8R8A8_SRGB = 50,
+    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
+    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
+    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
+    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
+    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
+    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
+    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
+    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
+    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
+    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
+    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
+    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
+    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
+    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
+    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
+    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
+    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
+    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
+    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
+    VK_FORMAT_R16_UNORM = 70,
+    VK_FORMAT_R16_SNORM = 71,
+    VK_FORMAT_R16_USCALED = 72,
+    VK_FORMAT_R16_SSCALED = 73,
+    VK_FORMAT_R16_UINT = 74,
+    VK_FORMAT_R16_SINT = 75,
+    VK_FORMAT_R16_SFLOAT = 76,
+    VK_FORMAT_R16G16_UNORM = 77,
+    VK_FORMAT_R16G16_SNORM = 78,
+    VK_FORMAT_R16G16_USCALED = 79,
+    VK_FORMAT_R16G16_SSCALED = 80,
+    VK_FORMAT_R16G16_UINT = 81,
+    VK_FORMAT_R16G16_SINT = 82,
+    VK_FORMAT_R16G16_SFLOAT = 83,
+    VK_FORMAT_R16G16B16_UNORM = 84,
+    VK_FORMAT_R16G16B16_SNORM = 85,
+    VK_FORMAT_R16G16B16_USCALED = 86,
+    VK_FORMAT_R16G16B16_SSCALED = 87,
+    VK_FORMAT_R16G16B16_UINT = 88,
+    VK_FORMAT_R16G16B16_SINT = 89,
+    VK_FORMAT_R16G16B16_SFLOAT = 90,
+    VK_FORMAT_R16G16B16A16_UNORM = 91,
+    VK_FORMAT_R16G16B16A16_SNORM = 92,
+    VK_FORMAT_R16G16B16A16_USCALED = 93,
+    VK_FORMAT_R16G16B16A16_SSCALED = 94,
+    VK_FORMAT_R16G16B16A16_UINT = 95,
+    VK_FORMAT_R16G16B16A16_SINT = 96,
+    VK_FORMAT_R16G16B16A16_SFLOAT = 97,
+    VK_FORMAT_R32_UINT = 98,
+    VK_FORMAT_R32_SINT = 99,
+    VK_FORMAT_R32_SFLOAT = 100,
+    VK_FORMAT_R32G32_UINT = 101,
+    VK_FORMAT_R32G32_SINT = 102,
+    VK_FORMAT_R32G32_SFLOAT = 103,
+    VK_FORMAT_R32G32B32_UINT = 104,
+    VK_FORMAT_R32G32B32_SINT = 105,
+    VK_FORMAT_R32G32B32_SFLOAT = 106,
+    VK_FORMAT_R32G32B32A32_UINT = 107,
+    VK_FORMAT_R32G32B32A32_SINT = 108,
+    VK_FORMAT_R32G32B32A32_SFLOAT = 109,
+    VK_FORMAT_R64_UINT = 110,
+    VK_FORMAT_R64_SINT = 111,
+    VK_FORMAT_R64_SFLOAT = 112,
+    VK_FORMAT_R64G64_UINT = 113,
+    VK_FORMAT_R64G64_SINT = 114,
+    VK_FORMAT_R64G64_SFLOAT = 115,
+    VK_FORMAT_R64G64B64_UINT = 116,
+    VK_FORMAT_R64G64B64_SINT = 117,
+    VK_FORMAT_R64G64B64_SFLOAT = 118,
+    VK_FORMAT_R64G64B64A64_UINT = 119,
+    VK_FORMAT_R64G64B64A64_SINT = 120,
+    VK_FORMAT_R64G64B64A64_SFLOAT = 121,
+    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
+    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
+    VK_FORMAT_D16_UNORM = 124,
+    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
+    VK_FORMAT_D32_SFLOAT = 126,
+    VK_FORMAT_S8_UINT = 127,
+    VK_FORMAT_D16_UNORM_S8_UINT = 128,
+    VK_FORMAT_D24_UNORM_S8_UINT = 129,
+    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
+    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
+    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
+    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
+    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
+    VK_FORMAT_BC2_UNORM_BLOCK = 135,
+    VK_FORMAT_BC2_SRGB_BLOCK = 136,
+    VK_FORMAT_BC3_UNORM_BLOCK = 137,
+    VK_FORMAT_BC3_SRGB_BLOCK = 138,
+    VK_FORMAT_BC4_UNORM_BLOCK = 139,
+    VK_FORMAT_BC4_SNORM_BLOCK = 140,
+    VK_FORMAT_BC5_UNORM_BLOCK = 141,
+    VK_FORMAT_BC5_SNORM_BLOCK = 142,
+    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
+    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
+    VK_FORMAT_BC7_UNORM_BLOCK = 145,
+    VK_FORMAT_BC7_SRGB_BLOCK = 146,
+    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
+    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
+    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
+    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
+    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
+    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
+    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
+    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
+    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
+    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
+    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
+    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
+    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
+    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
+    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
+    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
+    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
+    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
+    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
+    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
+    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
+    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
+    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
+    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
+    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
+    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
+    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
+    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
+    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
+    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
+    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
+    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
+    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
+    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
+    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
+    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
+    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
+    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
+    VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
+    VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
+    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
+    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
+    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
+    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
+    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
+    VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
+    VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
+    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
+    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
+    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
+    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
+    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
+    VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
+    VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
+    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
+    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
+    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
+    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
+    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
+    VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
+    VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
+    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
+    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
+    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
+    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
+    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
+} VkFormat;
+----
diff --git a/protocols/vulkan/api/enums/VkFormatFeatureFlagBits.txt b/protocols/vulkan/api/enums/VkFormatFeatureFlagBits.txt
new file mode 100644
index 0000000..d8c76aa
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkFormatFeatureFlagBits.txt
@@ -0,0 +1,29 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFormatFeatureFlagBits,VkFormatFeatureFlagBits]]
+[source,c++]
+----
+typedef enum VkFormatFeatureFlagBits {
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
+    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
+    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
+    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
+    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
+    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
+    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
+    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
+    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
+    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
+    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
+    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
+    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
+    VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
+    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
+    VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
+    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
+} VkFormatFeatureFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkFrontFace.txt b/protocols/vulkan/api/enums/VkFrontFace.txt
new file mode 100644
index 0000000..ae1423b
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkFrontFace.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFrontFace,VkFrontFace]]
+[source,c++]
+----
+typedef enum VkFrontFace {
+    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
+    VK_FRONT_FACE_CLOCKWISE = 1,
+} VkFrontFace;
+----
diff --git a/protocols/vulkan/api/enums/VkImageAspectFlagBits.txt b/protocols/vulkan/api/enums/VkImageAspectFlagBits.txt
new file mode 100644
index 0000000..52771b8
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkImageAspectFlagBits.txt
@@ -0,0 +1,14 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageAspectFlagBits,VkImageAspectFlagBits]]
+[source,c++]
+----
+typedef enum VkImageAspectFlagBits {
+    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
+    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
+    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
+    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
+    VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
+    VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
+    VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
+} VkImageAspectFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkImageCreateFlagBits.txt b/protocols/vulkan/api/enums/VkImageCreateFlagBits.txt
new file mode 100644
index 0000000..93c5c56
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkImageCreateFlagBits.txt
@@ -0,0 +1,19 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageCreateFlagBits,VkImageCreateFlagBits]]
+[source,c++]
+----
+typedef enum VkImageCreateFlagBits {
+    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
+    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
+    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
+    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
+    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
+    VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
+    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
+    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
+    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
+    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
+    VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
+    VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
+} VkImageCreateFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkImageLayout.txt b/protocols/vulkan/api/enums/VkImageLayout.txt
new file mode 100644
index 0000000..b9a6aff
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkImageLayout.txt
@@ -0,0 +1,18 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageLayout,VkImageLayout]]
+[source,c++]
+----
+typedef enum VkImageLayout {
+    VK_IMAGE_LAYOUT_UNDEFINED = 0,
+    VK_IMAGE_LAYOUT_GENERAL = 1,
+    VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
+    VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
+    VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
+    VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
+    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
+    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
+    VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
+    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
+} VkImageLayout;
+----
diff --git a/protocols/vulkan/api/enums/VkImageTiling.txt b/protocols/vulkan/api/enums/VkImageTiling.txt
new file mode 100644
index 0000000..8bade70
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkImageTiling.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageTiling,VkImageTiling]]
+[source,c++]
+----
+typedef enum VkImageTiling {
+    VK_IMAGE_TILING_OPTIMAL = 0,
+    VK_IMAGE_TILING_LINEAR = 1,
+} VkImageTiling;
+----
diff --git a/protocols/vulkan/api/enums/VkImageType.txt b/protocols/vulkan/api/enums/VkImageType.txt
new file mode 100644
index 0000000..0323ce3
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkImageType.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageType,VkImageType]]
+[source,c++]
+----
+typedef enum VkImageType {
+    VK_IMAGE_TYPE_1D = 0,
+    VK_IMAGE_TYPE_2D = 1,
+    VK_IMAGE_TYPE_3D = 2,
+} VkImageType;
+----
diff --git a/protocols/vulkan/api/enums/VkImageUsageFlagBits.txt b/protocols/vulkan/api/enums/VkImageUsageFlagBits.txt
new file mode 100644
index 0000000..d972df5
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkImageUsageFlagBits.txt
@@ -0,0 +1,15 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageUsageFlagBits,VkImageUsageFlagBits]]
+[source,c++]
+----
+typedef enum VkImageUsageFlagBits {
+    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
+    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
+    VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
+    VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
+    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
+    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
+    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
+    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
+} VkImageUsageFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkImageViewType.txt b/protocols/vulkan/api/enums/VkImageViewType.txt
new file mode 100644
index 0000000..9f580dc
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkImageViewType.txt
@@ -0,0 +1,14 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageViewType,VkImageViewType]]
+[source,c++]
+----
+typedef enum VkImageViewType {
+    VK_IMAGE_VIEW_TYPE_1D = 0,
+    VK_IMAGE_VIEW_TYPE_2D = 1,
+    VK_IMAGE_VIEW_TYPE_3D = 2,
+    VK_IMAGE_VIEW_TYPE_CUBE = 3,
+    VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
+    VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
+    VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
+} VkImageViewType;
+----
diff --git a/protocols/vulkan/api/enums/VkIndexType.txt b/protocols/vulkan/api/enums/VkIndexType.txt
new file mode 100644
index 0000000..fe02c6e
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkIndexType.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkIndexType,VkIndexType]]
+[source,c++]
+----
+typedef enum VkIndexType {
+    VK_INDEX_TYPE_UINT16 = 0,
+    VK_INDEX_TYPE_UINT32 = 1,
+} VkIndexType;
+----
diff --git a/protocols/vulkan/api/enums/VkInternalAllocationType.txt b/protocols/vulkan/api/enums/VkInternalAllocationType.txt
new file mode 100644
index 0000000..ac9a0f1
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkInternalAllocationType.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkInternalAllocationType,VkInternalAllocationType]]
+[source,c++]
+----
+typedef enum VkInternalAllocationType {
+    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
+} VkInternalAllocationType;
+----
diff --git a/protocols/vulkan/api/enums/VkLogicOp.txt b/protocols/vulkan/api/enums/VkLogicOp.txt
new file mode 100644
index 0000000..664c729
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkLogicOp.txt
@@ -0,0 +1,23 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkLogicOp,VkLogicOp]]
+[source,c++]
+----
+typedef enum VkLogicOp {
+    VK_LOGIC_OP_CLEAR = 0,
+    VK_LOGIC_OP_AND = 1,
+    VK_LOGIC_OP_AND_REVERSE = 2,
+    VK_LOGIC_OP_COPY = 3,
+    VK_LOGIC_OP_AND_INVERTED = 4,
+    VK_LOGIC_OP_NO_OP = 5,
+    VK_LOGIC_OP_XOR = 6,
+    VK_LOGIC_OP_OR = 7,
+    VK_LOGIC_OP_NOR = 8,
+    VK_LOGIC_OP_EQUIVALENT = 9,
+    VK_LOGIC_OP_INVERT = 10,
+    VK_LOGIC_OP_OR_REVERSE = 11,
+    VK_LOGIC_OP_COPY_INVERTED = 12,
+    VK_LOGIC_OP_OR_INVERTED = 13,
+    VK_LOGIC_OP_NAND = 14,
+    VK_LOGIC_OP_SET = 15,
+} VkLogicOp;
+----
diff --git a/protocols/vulkan/api/enums/VkMemoryAllocateFlagBits.txt b/protocols/vulkan/api/enums/VkMemoryAllocateFlagBits.txt
new file mode 100644
index 0000000..f5d1eb5
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkMemoryAllocateFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkMemoryAllocateFlagBits,VkMemoryAllocateFlagBits]]
+[source,c++]
+----
+typedef enum VkMemoryAllocateFlagBits {
+    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
+} VkMemoryAllocateFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkMemoryHeapFlagBits.txt b/protocols/vulkan/api/enums/VkMemoryHeapFlagBits.txt
new file mode 100644
index 0000000..36f7f51
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkMemoryHeapFlagBits.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkMemoryHeapFlagBits,VkMemoryHeapFlagBits]]
+[source,c++]
+----
+typedef enum VkMemoryHeapFlagBits {
+    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
+    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
+} VkMemoryHeapFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkMemoryPropertyFlagBits.txt b/protocols/vulkan/api/enums/VkMemoryPropertyFlagBits.txt
new file mode 100644
index 0000000..1ff5640
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkMemoryPropertyFlagBits.txt
@@ -0,0 +1,13 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkMemoryPropertyFlagBits,VkMemoryPropertyFlagBits]]
+[source,c++]
+----
+typedef enum VkMemoryPropertyFlagBits {
+    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
+    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
+    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
+    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
+    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
+    VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
+} VkMemoryPropertyFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkObjectType.txt b/protocols/vulkan/api/enums/VkObjectType.txt
new file mode 100644
index 0000000..01c7a5e
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkObjectType.txt
@@ -0,0 +1,35 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkObjectType,VkObjectType]]
+[source,c++]
+----
+typedef enum VkObjectType {
+    VK_OBJECT_TYPE_UNKNOWN = 0,
+    VK_OBJECT_TYPE_INSTANCE = 1,
+    VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
+    VK_OBJECT_TYPE_DEVICE = 3,
+    VK_OBJECT_TYPE_QUEUE = 4,
+    VK_OBJECT_TYPE_SEMAPHORE = 5,
+    VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
+    VK_OBJECT_TYPE_FENCE = 7,
+    VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
+    VK_OBJECT_TYPE_BUFFER = 9,
+    VK_OBJECT_TYPE_IMAGE = 10,
+    VK_OBJECT_TYPE_EVENT = 11,
+    VK_OBJECT_TYPE_QUERY_POOL = 12,
+    VK_OBJECT_TYPE_BUFFER_VIEW = 13,
+    VK_OBJECT_TYPE_IMAGE_VIEW = 14,
+    VK_OBJECT_TYPE_SHADER_MODULE = 15,
+    VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
+    VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
+    VK_OBJECT_TYPE_RENDER_PASS = 18,
+    VK_OBJECT_TYPE_PIPELINE = 19,
+    VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
+    VK_OBJECT_TYPE_SAMPLER = 21,
+    VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
+    VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
+    VK_OBJECT_TYPE_FRAMEBUFFER = 24,
+    VK_OBJECT_TYPE_COMMAND_POOL = 25,
+    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
+    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
+} VkObjectType;
+----
diff --git a/protocols/vulkan/api/enums/VkPeerMemoryFeatureFlagBits.txt b/protocols/vulkan/api/enums/VkPeerMemoryFeatureFlagBits.txt
new file mode 100644
index 0000000..ebed5f9
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkPeerMemoryFeatureFlagBits.txt
@@ -0,0 +1,11 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPeerMemoryFeatureFlagBits,VkPeerMemoryFeatureFlagBits]]
+[source,c++]
+----
+typedef enum VkPeerMemoryFeatureFlagBits {
+    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
+    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
+    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
+    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
+} VkPeerMemoryFeatureFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkPhysicalDeviceType.txt b/protocols/vulkan/api/enums/VkPhysicalDeviceType.txt
new file mode 100644
index 0000000..3b2b81a
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkPhysicalDeviceType.txt
@@ -0,0 +1,12 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPhysicalDeviceType,VkPhysicalDeviceType]]
+[source,c++]
+----
+typedef enum VkPhysicalDeviceType {
+    VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
+    VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
+    VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
+    VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
+    VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
+} VkPhysicalDeviceType;
+----
diff --git a/protocols/vulkan/api/enums/VkPipelineBindPoint.txt b/protocols/vulkan/api/enums/VkPipelineBindPoint.txt
new file mode 100644
index 0000000..397a12d
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkPipelineBindPoint.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineBindPoint,VkPipelineBindPoint]]
+[source,c++]
+----
+typedef enum VkPipelineBindPoint {
+    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
+    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
+} VkPipelineBindPoint;
+----
diff --git a/protocols/vulkan/api/enums/VkPipelineCacheHeaderVersion.txt b/protocols/vulkan/api/enums/VkPipelineCacheHeaderVersion.txt
new file mode 100644
index 0000000..88ad18b
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkPipelineCacheHeaderVersion.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineCacheHeaderVersion,VkPipelineCacheHeaderVersion]]
+[source,c++]
+----
+typedef enum VkPipelineCacheHeaderVersion {
+    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
+} VkPipelineCacheHeaderVersion;
+----
diff --git a/protocols/vulkan/api/enums/VkPipelineCreateFlagBits.txt b/protocols/vulkan/api/enums/VkPipelineCreateFlagBits.txt
new file mode 100644
index 0000000..4aaca65
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkPipelineCreateFlagBits.txt
@@ -0,0 +1,12 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineCreateFlagBits,VkPipelineCreateFlagBits]]
+[source,c++]
+----
+typedef enum VkPipelineCreateFlagBits {
+    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
+    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
+    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
+    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
+    VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010,
+} VkPipelineCreateFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkPipelineStageFlagBits.txt b/protocols/vulkan/api/enums/VkPipelineStageFlagBits.txt
new file mode 100644
index 0000000..9f497e8
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkPipelineStageFlagBits.txt
@@ -0,0 +1,24 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineStageFlagBits,VkPipelineStageFlagBits]]
+[source,c++]
+----
+typedef enum VkPipelineStageFlagBits {
+    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
+    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
+    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
+    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
+    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
+    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
+    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
+    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
+    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
+    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
+    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
+    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
+    VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
+    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
+    VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
+    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
+    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
+} VkPipelineStageFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkPointClippingBehavior.txt b/protocols/vulkan/api/enums/VkPointClippingBehavior.txt
new file mode 100644
index 0000000..1627102
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkPointClippingBehavior.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPointClippingBehavior,VkPointClippingBehavior]]
+[source,c++]
+----
+typedef enum VkPointClippingBehavior {
+    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
+    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
+} VkPointClippingBehavior;
+----
diff --git a/protocols/vulkan/api/enums/VkPolygonMode.txt b/protocols/vulkan/api/enums/VkPolygonMode.txt
new file mode 100644
index 0000000..da0c66f
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkPolygonMode.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPolygonMode,VkPolygonMode]]
+[source,c++]
+----
+typedef enum VkPolygonMode {
+    VK_POLYGON_MODE_FILL = 0,
+    VK_POLYGON_MODE_LINE = 1,
+    VK_POLYGON_MODE_POINT = 2,
+} VkPolygonMode;
+----
diff --git a/protocols/vulkan/api/enums/VkPrimitiveTopology.txt b/protocols/vulkan/api/enums/VkPrimitiveTopology.txt
new file mode 100644
index 0000000..c877149
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkPrimitiveTopology.txt
@@ -0,0 +1,18 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPrimitiveTopology,VkPrimitiveTopology]]
+[source,c++]
+----
+typedef enum VkPrimitiveTopology {
+    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
+    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
+    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
+    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
+    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
+    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
+} VkPrimitiveTopology;
+----
diff --git a/protocols/vulkan/api/enums/VkQueryControlFlagBits.txt b/protocols/vulkan/api/enums/VkQueryControlFlagBits.txt
new file mode 100644
index 0000000..4c04ddc
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkQueryControlFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueryControlFlagBits,VkQueryControlFlagBits]]
+[source,c++]
+----
+typedef enum VkQueryControlFlagBits {
+    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
+} VkQueryControlFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkQueryPipelineStatisticFlagBits.txt b/protocols/vulkan/api/enums/VkQueryPipelineStatisticFlagBits.txt
new file mode 100644
index 0000000..d41c7e1
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkQueryPipelineStatisticFlagBits.txt
@@ -0,0 +1,18 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueryPipelineStatisticFlagBits,VkQueryPipelineStatisticFlagBits]]
+[source,c++]
+----
+typedef enum VkQueryPipelineStatisticFlagBits {
+    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
+    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
+    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
+    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
+    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
+    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
+    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
+    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
+    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
+    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
+    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
+} VkQueryPipelineStatisticFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkQueryResultFlagBits.txt b/protocols/vulkan/api/enums/VkQueryResultFlagBits.txt
new file mode 100644
index 0000000..b972349
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkQueryResultFlagBits.txt
@@ -0,0 +1,11 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueryResultFlagBits,VkQueryResultFlagBits]]
+[source,c++]
+----
+typedef enum VkQueryResultFlagBits {
+    VK_QUERY_RESULT_64_BIT = 0x00000001,
+    VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
+    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
+    VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
+} VkQueryResultFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkQueryType.txt b/protocols/vulkan/api/enums/VkQueryType.txt
new file mode 100644
index 0000000..768d353
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkQueryType.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueryType,VkQueryType]]
+[source,c++]
+----
+typedef enum VkQueryType {
+    VK_QUERY_TYPE_OCCLUSION = 0,
+    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
+    VK_QUERY_TYPE_TIMESTAMP = 2,
+} VkQueryType;
+----
diff --git a/protocols/vulkan/api/enums/VkQueueFlagBits.txt b/protocols/vulkan/api/enums/VkQueueFlagBits.txt
new file mode 100644
index 0000000..cc7666f
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkQueueFlagBits.txt
@@ -0,0 +1,12 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueueFlagBits,VkQueueFlagBits]]
+[source,c++]
+----
+typedef enum VkQueueFlagBits {
+    VK_QUEUE_GRAPHICS_BIT = 0x00000001,
+    VK_QUEUE_COMPUTE_BIT = 0x00000002,
+    VK_QUEUE_TRANSFER_BIT = 0x00000004,
+    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
+    VK_QUEUE_PROTECTED_BIT = 0x00000010,
+} VkQueueFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkResult.txt b/protocols/vulkan/api/enums/VkResult.txt
new file mode 100644
index 0000000..9e1610b
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkResult.txt
@@ -0,0 +1,27 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkResult,VkResult]]
+[source,c++]
+----
+typedef enum VkResult {
+    VK_SUCCESS = 0,
+    VK_NOT_READY = 1,
+    VK_TIMEOUT = 2,
+    VK_EVENT_SET = 3,
+    VK_EVENT_RESET = 4,
+    VK_INCOMPLETE = 5,
+    VK_ERROR_OUT_OF_HOST_MEMORY = -1,
+    VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
+    VK_ERROR_INITIALIZATION_FAILED = -3,
+    VK_ERROR_DEVICE_LOST = -4,
+    VK_ERROR_MEMORY_MAP_FAILED = -5,
+    VK_ERROR_LAYER_NOT_PRESENT = -6,
+    VK_ERROR_EXTENSION_NOT_PRESENT = -7,
+    VK_ERROR_FEATURE_NOT_PRESENT = -8,
+    VK_ERROR_INCOMPATIBLE_DRIVER = -9,
+    VK_ERROR_TOO_MANY_OBJECTS = -10,
+    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
+    VK_ERROR_FRAGMENTED_POOL = -12,
+    VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
+    VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
+} VkResult;
+----
diff --git a/protocols/vulkan/api/enums/VkSampleCountFlagBits.txt b/protocols/vulkan/api/enums/VkSampleCountFlagBits.txt
new file mode 100644
index 0000000..f4eb0f3
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSampleCountFlagBits.txt
@@ -0,0 +1,14 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSampleCountFlagBits,VkSampleCountFlagBits]]
+[source,c++]
+----
+typedef enum VkSampleCountFlagBits {
+    VK_SAMPLE_COUNT_1_BIT = 0x00000001,
+    VK_SAMPLE_COUNT_2_BIT = 0x00000002,
+    VK_SAMPLE_COUNT_4_BIT = 0x00000004,
+    VK_SAMPLE_COUNT_8_BIT = 0x00000008,
+    VK_SAMPLE_COUNT_16_BIT = 0x00000010,
+    VK_SAMPLE_COUNT_32_BIT = 0x00000020,
+    VK_SAMPLE_COUNT_64_BIT = 0x00000040,
+} VkSampleCountFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkSamplerAddressMode.txt b/protocols/vulkan/api/enums/VkSamplerAddressMode.txt
new file mode 100644
index 0000000..0c80a7e
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSamplerAddressMode.txt
@@ -0,0 +1,12 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSamplerAddressMode,VkSamplerAddressMode]]
+[source,c++]
+----
+typedef enum VkSamplerAddressMode {
+    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
+    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
+    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
+    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
+    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
+} VkSamplerAddressMode;
+----
diff --git a/protocols/vulkan/api/enums/VkSamplerMipmapMode.txt b/protocols/vulkan/api/enums/VkSamplerMipmapMode.txt
new file mode 100644
index 0000000..b5fc0d3
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSamplerMipmapMode.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSamplerMipmapMode,VkSamplerMipmapMode]]
+[source,c++]
+----
+typedef enum VkSamplerMipmapMode {
+    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
+    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
+} VkSamplerMipmapMode;
+----
diff --git a/protocols/vulkan/api/enums/VkSamplerYcbcrModelConversion.txt b/protocols/vulkan/api/enums/VkSamplerYcbcrModelConversion.txt
new file mode 100644
index 0000000..0cfb10c
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSamplerYcbcrModelConversion.txt
@@ -0,0 +1,12 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSamplerYcbcrModelConversion,VkSamplerYcbcrModelConversion]]
+[source,c++]
+----
+typedef enum VkSamplerYcbcrModelConversion {
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
+} VkSamplerYcbcrModelConversion;
+----
diff --git a/protocols/vulkan/api/enums/VkSamplerYcbcrRange.txt b/protocols/vulkan/api/enums/VkSamplerYcbcrRange.txt
new file mode 100644
index 0000000..45c978e
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSamplerYcbcrRange.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSamplerYcbcrRange,VkSamplerYcbcrRange]]
+[source,c++]
+----
+typedef enum VkSamplerYcbcrRange {
+    VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
+    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
+} VkSamplerYcbcrRange;
+----
diff --git a/protocols/vulkan/api/enums/VkSemaphoreImportFlagBits.txt b/protocols/vulkan/api/enums/VkSemaphoreImportFlagBits.txt
new file mode 100644
index 0000000..81d264f
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSemaphoreImportFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSemaphoreImportFlagBits,VkSemaphoreImportFlagBits]]
+[source,c++]
+----
+typedef enum VkSemaphoreImportFlagBits {
+    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
+} VkSemaphoreImportFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkShaderStageFlagBits.txt b/protocols/vulkan/api/enums/VkShaderStageFlagBits.txt
new file mode 100644
index 0000000..3ea73c2
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkShaderStageFlagBits.txt
@@ -0,0 +1,15 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkShaderStageFlagBits,VkShaderStageFlagBits]]
+[source,c++]
+----
+typedef enum VkShaderStageFlagBits {
+    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
+    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
+    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
+    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
+    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
+    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
+    VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
+    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
+} VkShaderStageFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkSharingMode.txt b/protocols/vulkan/api/enums/VkSharingMode.txt
new file mode 100644
index 0000000..13ae454
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSharingMode.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSharingMode,VkSharingMode]]
+[source,c++]
+----
+typedef enum VkSharingMode {
+    VK_SHARING_MODE_EXCLUSIVE = 0,
+    VK_SHARING_MODE_CONCURRENT = 1,
+} VkSharingMode;
+----
diff --git a/protocols/vulkan/api/enums/VkSparseImageFormatFlagBits.txt b/protocols/vulkan/api/enums/VkSparseImageFormatFlagBits.txt
new file mode 100644
index 0000000..2f23806
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSparseImageFormatFlagBits.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSparseImageFormatFlagBits,VkSparseImageFormatFlagBits]]
+[source,c++]
+----
+typedef enum VkSparseImageFormatFlagBits {
+    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
+    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
+    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
+} VkSparseImageFormatFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkSparseMemoryBindFlagBits.txt b/protocols/vulkan/api/enums/VkSparseMemoryBindFlagBits.txt
new file mode 100644
index 0000000..e170e6f
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSparseMemoryBindFlagBits.txt
@@ -0,0 +1,8 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSparseMemoryBindFlagBits,VkSparseMemoryBindFlagBits]]
+[source,c++]
+----
+typedef enum VkSparseMemoryBindFlagBits {
+    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
+} VkSparseMemoryBindFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkStencilFaceFlagBits.txt b/protocols/vulkan/api/enums/VkStencilFaceFlagBits.txt
new file mode 100644
index 0000000..951e58f
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkStencilFaceFlagBits.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkStencilFaceFlagBits,VkStencilFaceFlagBits]]
+[source,c++]
+----
+typedef enum VkStencilFaceFlagBits {
+    VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
+    VK_STENCIL_FACE_BACK_BIT = 0x00000002,
+    VK_STENCIL_FRONT_AND_BACK = 0x00000003,
+} VkStencilFaceFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkStencilOp.txt b/protocols/vulkan/api/enums/VkStencilOp.txt
new file mode 100644
index 0000000..9a9d331
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkStencilOp.txt
@@ -0,0 +1,15 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkStencilOp,VkStencilOp]]
+[source,c++]
+----
+typedef enum VkStencilOp {
+    VK_STENCIL_OP_KEEP = 0,
+    VK_STENCIL_OP_ZERO = 1,
+    VK_STENCIL_OP_REPLACE = 2,
+    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
+    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
+    VK_STENCIL_OP_INVERT = 5,
+    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
+    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
+} VkStencilOp;
+----
diff --git a/protocols/vulkan/api/enums/VkStructureType.txt b/protocols/vulkan/api/enums/VkStructureType.txt
new file mode 100644
index 0000000..c1c2d97
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkStructureType.txt
@@ -0,0 +1,121 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkStructureType,VkStructureType]]
+[source,c++]
+----
+typedef enum VkStructureType {
+    VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
+    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
+    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
+    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
+    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
+    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
+    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
+    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
+    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
+    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
+    VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
+    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
+    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
+    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
+    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
+    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
+    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
+    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
+    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
+    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
+    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
+    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
+    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
+    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
+    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
+    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
+    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
+    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
+    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
+    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
+    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
+    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
+    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
+    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
+    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
+    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
+    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
+    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
+    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
+    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
+    VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
+    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
+    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
+    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
+    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
+    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
+    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000,
+    VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
+    VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
+    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
+    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
+    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
+    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
+    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
+    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
+    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000,
+} VkStructureType;
+----
diff --git a/protocols/vulkan/api/enums/VkSubgroupFeatureFlagBits.txt b/protocols/vulkan/api/enums/VkSubgroupFeatureFlagBits.txt
new file mode 100644
index 0000000..2cf4183
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSubgroupFeatureFlagBits.txt
@@ -0,0 +1,15 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSubgroupFeatureFlagBits,VkSubgroupFeatureFlagBits]]
+[source,c++]
+----
+typedef enum VkSubgroupFeatureFlagBits {
+    VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
+    VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
+    VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
+    VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
+    VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
+    VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
+    VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
+    VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
+} VkSubgroupFeatureFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkSubpassContents.txt b/protocols/vulkan/api/enums/VkSubpassContents.txt
new file mode 100644
index 0000000..b68c96b
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSubpassContents.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSubpassContents,VkSubpassContents]]
+[source,c++]
+----
+typedef enum VkSubpassContents {
+    VK_SUBPASS_CONTENTS_INLINE = 0,
+    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
+} VkSubpassContents;
+----
diff --git a/protocols/vulkan/api/enums/VkSubpassDescriptionFlagBits.txt b/protocols/vulkan/api/enums/VkSubpassDescriptionFlagBits.txt
new file mode 100644
index 0000000..45d28a8
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSubpassDescriptionFlagBits.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSubpassDescriptionFlagBits,VkSubpassDescriptionFlagBits]]
+[source,c++]
+----
+typedef enum VkSubpassDescriptionFlagBits {
+} VkSubpassDescriptionFlagBits;
+----
diff --git a/protocols/vulkan/api/enums/VkSystemAllocationScope.txt b/protocols/vulkan/api/enums/VkSystemAllocationScope.txt
new file mode 100644
index 0000000..9316d8b
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkSystemAllocationScope.txt
@@ -0,0 +1,12 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSystemAllocationScope,VkSystemAllocationScope]]
+[source,c++]
+----
+typedef enum VkSystemAllocationScope {
+    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
+    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
+    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
+    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
+    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
+} VkSystemAllocationScope;
+----
diff --git a/protocols/vulkan/api/enums/VkTessellationDomainOrigin.txt b/protocols/vulkan/api/enums/VkTessellationDomainOrigin.txt
new file mode 100644
index 0000000..55639d7
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkTessellationDomainOrigin.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkTessellationDomainOrigin,VkTessellationDomainOrigin]]
+[source,c++]
+----
+typedef enum VkTessellationDomainOrigin {
+    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
+    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
+} VkTessellationDomainOrigin;
+----
diff --git a/protocols/vulkan/api/enums/VkVendorId.txt b/protocols/vulkan/api/enums/VkVendorId.txt
new file mode 100644
index 0000000..dc70de2
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkVendorId.txt
@@ -0,0 +1,10 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkVendorId,VkVendorId]]
+[source,c++]
+----
+typedef enum VkVendorId {
+    VK_VENDOR_ID_VIV = 0x10001,
+    VK_VENDOR_ID_VSI = 0x10002,
+    VK_VENDOR_ID_KAZAN = 0x10003,
+} VkVendorId;
+----
diff --git a/protocols/vulkan/api/enums/VkVertexInputRate.txt b/protocols/vulkan/api/enums/VkVertexInputRate.txt
new file mode 100644
index 0000000..0483902
--- /dev/null
+++ b/protocols/vulkan/api/enums/VkVertexInputRate.txt
@@ -0,0 +1,9 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkVertexInputRate,VkVertexInputRate]]
+[source,c++]
+----
+typedef enum VkVertexInputRate {
+    VK_VERTEX_INPUT_RATE_VERTEX = 0,
+    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
+} VkVertexInputRate;
+----
diff --git a/protocols/vulkan/api/flags/VkAccessFlags.txt b/protocols/vulkan/api/flags/VkAccessFlags.txt
new file mode 100644
index 0000000..872482f
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkAccessFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkAccessFlags,VkAccessFlags]]
+[source,c++]
+----
+typedef VkFlags VkAccessFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkAttachmentDescriptionFlags.txt b/protocols/vulkan/api/flags/VkAttachmentDescriptionFlags.txt
new file mode 100644
index 0000000..082dd0a
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkAttachmentDescriptionFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkAttachmentDescriptionFlags,VkAttachmentDescriptionFlags]]
+[source,c++]
+----
+typedef VkFlags VkAttachmentDescriptionFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkBufferCreateFlags.txt b/protocols/vulkan/api/flags/VkBufferCreateFlags.txt
new file mode 100644
index 0000000..6e6a11e
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkBufferCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkBufferCreateFlags,VkBufferCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkBufferCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkBufferUsageFlags.txt b/protocols/vulkan/api/flags/VkBufferUsageFlags.txt
new file mode 100644
index 0000000..91e7a63
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkBufferUsageFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkBufferUsageFlags,VkBufferUsageFlags]]
+[source,c++]
+----
+typedef VkFlags VkBufferUsageFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkBufferViewCreateFlags.txt b/protocols/vulkan/api/flags/VkBufferViewCreateFlags.txt
new file mode 100644
index 0000000..8b7bd4d
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkBufferViewCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkBufferViewCreateFlags,VkBufferViewCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkBufferViewCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkColorComponentFlags.txt b/protocols/vulkan/api/flags/VkColorComponentFlags.txt
new file mode 100644
index 0000000..2b1ba70
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkColorComponentFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkColorComponentFlags,VkColorComponentFlags]]
+[source,c++]
+----
+typedef VkFlags VkColorComponentFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkCommandBufferResetFlags.txt b/protocols/vulkan/api/flags/VkCommandBufferResetFlags.txt
new file mode 100644
index 0000000..3b274cd
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkCommandBufferResetFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandBufferResetFlags,VkCommandBufferResetFlags]]
+[source,c++]
+----
+typedef VkFlags VkCommandBufferResetFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkCommandBufferUsageFlags.txt b/protocols/vulkan/api/flags/VkCommandBufferUsageFlags.txt
new file mode 100644
index 0000000..bc63b89
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkCommandBufferUsageFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandBufferUsageFlags,VkCommandBufferUsageFlags]]
+[source,c++]
+----
+typedef VkFlags VkCommandBufferUsageFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkCommandPoolCreateFlags.txt b/protocols/vulkan/api/flags/VkCommandPoolCreateFlags.txt
new file mode 100644
index 0000000..4f5af57
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkCommandPoolCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandPoolCreateFlags,VkCommandPoolCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkCommandPoolCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkCommandPoolResetFlags.txt b/protocols/vulkan/api/flags/VkCommandPoolResetFlags.txt
new file mode 100644
index 0000000..fb8662e
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkCommandPoolResetFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandPoolResetFlags,VkCommandPoolResetFlags]]
+[source,c++]
+----
+typedef VkFlags VkCommandPoolResetFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkCommandPoolTrimFlags.txt b/protocols/vulkan/api/flags/VkCommandPoolTrimFlags.txt
new file mode 100644
index 0000000..1ca736d
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkCommandPoolTrimFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCommandPoolTrimFlags,VkCommandPoolTrimFlags]]
+[source,c++]
+----
+typedef VkFlags VkCommandPoolTrimFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkCullModeFlags.txt b/protocols/vulkan/api/flags/VkCullModeFlags.txt
new file mode 100644
index 0000000..6fd9b3f
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkCullModeFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkCullModeFlags,VkCullModeFlags]]
+[source,c++]
+----
+typedef VkFlags VkCullModeFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkDependencyFlags.txt b/protocols/vulkan/api/flags/VkDependencyFlags.txt
new file mode 100644
index 0000000..aba537d
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkDependencyFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDependencyFlags,VkDependencyFlags]]
+[source,c++]
+----
+typedef VkFlags VkDependencyFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkDescriptorPoolCreateFlags.txt b/protocols/vulkan/api/flags/VkDescriptorPoolCreateFlags.txt
new file mode 100644
index 0000000..9e652a8
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkDescriptorPoolCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDescriptorPoolCreateFlags,VkDescriptorPoolCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkDescriptorPoolCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkDescriptorPoolResetFlags.txt b/protocols/vulkan/api/flags/VkDescriptorPoolResetFlags.txt
new file mode 100644
index 0000000..da9f61c
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkDescriptorPoolResetFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDescriptorPoolResetFlags,VkDescriptorPoolResetFlags]]
+[source,c++]
+----
+typedef VkFlags VkDescriptorPoolResetFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkDescriptorSetLayoutCreateFlags.txt b/protocols/vulkan/api/flags/VkDescriptorSetLayoutCreateFlags.txt
new file mode 100644
index 0000000..8eb85fe
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkDescriptorSetLayoutCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDescriptorSetLayoutCreateFlags,VkDescriptorSetLayoutCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkDescriptorSetLayoutCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkDescriptorUpdateTemplateCreateFlags.txt b/protocols/vulkan/api/flags/VkDescriptorUpdateTemplateCreateFlags.txt
new file mode 100644
index 0000000..2d45a00
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkDescriptorUpdateTemplateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDescriptorUpdateTemplateCreateFlags,VkDescriptorUpdateTemplateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkDeviceCreateFlags.txt b/protocols/vulkan/api/flags/VkDeviceCreateFlags.txt
new file mode 100644
index 0000000..b543a95
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkDeviceCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDeviceCreateFlags,VkDeviceCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkDeviceCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkDeviceQueueCreateFlags.txt b/protocols/vulkan/api/flags/VkDeviceQueueCreateFlags.txt
new file mode 100644
index 0000000..c0d2287
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkDeviceQueueCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkDeviceQueueCreateFlags,VkDeviceQueueCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkDeviceQueueCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkEventCreateFlags.txt b/protocols/vulkan/api/flags/VkEventCreateFlags.txt
new file mode 100644
index 0000000..37eca7c
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkEventCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkEventCreateFlags,VkEventCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkEventCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkExternalFenceFeatureFlags.txt b/protocols/vulkan/api/flags/VkExternalFenceFeatureFlags.txt
new file mode 100644
index 0000000..b968089
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkExternalFenceFeatureFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalFenceFeatureFlags,VkExternalFenceFeatureFlags]]
+[source,c++]
+----
+typedef VkFlags VkExternalFenceFeatureFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkExternalFenceHandleTypeFlags.txt b/protocols/vulkan/api/flags/VkExternalFenceHandleTypeFlags.txt
new file mode 100644
index 0000000..1ac66f2
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkExternalFenceHandleTypeFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalFenceHandleTypeFlags,VkExternalFenceHandleTypeFlags]]
+[source,c++]
+----
+typedef VkFlags VkExternalFenceHandleTypeFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkExternalMemoryFeatureFlags.txt b/protocols/vulkan/api/flags/VkExternalMemoryFeatureFlags.txt
new file mode 100644
index 0000000..60af20a
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkExternalMemoryFeatureFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalMemoryFeatureFlags,VkExternalMemoryFeatureFlags]]
+[source,c++]
+----
+typedef VkFlags VkExternalMemoryFeatureFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkExternalMemoryHandleTypeFlags.txt b/protocols/vulkan/api/flags/VkExternalMemoryHandleTypeFlags.txt
new file mode 100644
index 0000000..dd0f11f
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkExternalMemoryHandleTypeFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalMemoryHandleTypeFlags,VkExternalMemoryHandleTypeFlags]]
+[source,c++]
+----
+typedef VkFlags VkExternalMemoryHandleTypeFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkExternalSemaphoreFeatureFlags.txt b/protocols/vulkan/api/flags/VkExternalSemaphoreFeatureFlags.txt
new file mode 100644
index 0000000..ea3ae40
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkExternalSemaphoreFeatureFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalSemaphoreFeatureFlags,VkExternalSemaphoreFeatureFlags]]
+[source,c++]
+----
+typedef VkFlags VkExternalSemaphoreFeatureFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkExternalSemaphoreHandleTypeFlags.txt b/protocols/vulkan/api/flags/VkExternalSemaphoreHandleTypeFlags.txt
new file mode 100644
index 0000000..1be21ee
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkExternalSemaphoreHandleTypeFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkExternalSemaphoreHandleTypeFlags,VkExternalSemaphoreHandleTypeFlags]]
+[source,c++]
+----
+typedef VkFlags VkExternalSemaphoreHandleTypeFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkFenceCreateFlags.txt b/protocols/vulkan/api/flags/VkFenceCreateFlags.txt
new file mode 100644
index 0000000..e818e66
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkFenceCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFenceCreateFlags,VkFenceCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkFenceCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkFenceImportFlags.txt b/protocols/vulkan/api/flags/VkFenceImportFlags.txt
new file mode 100644
index 0000000..4e674fb
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkFenceImportFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFenceImportFlags,VkFenceImportFlags]]
+[source,c++]
+----
+typedef VkFlags VkFenceImportFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkFormatFeatureFlags.txt b/protocols/vulkan/api/flags/VkFormatFeatureFlags.txt
new file mode 100644
index 0000000..34df36a
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkFormatFeatureFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFormatFeatureFlags,VkFormatFeatureFlags]]
+[source,c++]
+----
+typedef VkFlags VkFormatFeatureFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkFramebufferCreateFlags.txt b/protocols/vulkan/api/flags/VkFramebufferCreateFlags.txt
new file mode 100644
index 0000000..3ea4f27
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkFramebufferCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkFramebufferCreateFlags,VkFramebufferCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkFramebufferCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkImageAspectFlags.txt b/protocols/vulkan/api/flags/VkImageAspectFlags.txt
new file mode 100644
index 0000000..eb2fefd
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkImageAspectFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageAspectFlags,VkImageAspectFlags]]
+[source,c++]
+----
+typedef VkFlags VkImageAspectFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkImageCreateFlags.txt b/protocols/vulkan/api/flags/VkImageCreateFlags.txt
new file mode 100644
index 0000000..9ca5cc6
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkImageCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageCreateFlags,VkImageCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkImageCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkImageUsageFlags.txt b/protocols/vulkan/api/flags/VkImageUsageFlags.txt
new file mode 100644
index 0000000..b4f5b2e
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkImageUsageFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageUsageFlags,VkImageUsageFlags]]
+[source,c++]
+----
+typedef VkFlags VkImageUsageFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkImageViewCreateFlags.txt b/protocols/vulkan/api/flags/VkImageViewCreateFlags.txt
new file mode 100644
index 0000000..8e88358
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkImageViewCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkImageViewCreateFlags,VkImageViewCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkImageViewCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkInstanceCreateFlags.txt b/protocols/vulkan/api/flags/VkInstanceCreateFlags.txt
new file mode 100644
index 0000000..fcc3c6e
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkInstanceCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkInstanceCreateFlags,VkInstanceCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkInstanceCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkMemoryAllocateFlags.txt b/protocols/vulkan/api/flags/VkMemoryAllocateFlags.txt
new file mode 100644
index 0000000..e5cb2d8
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkMemoryAllocateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkMemoryAllocateFlags,VkMemoryAllocateFlags]]
+[source,c++]
+----
+typedef VkFlags VkMemoryAllocateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkMemoryHeapFlags.txt b/protocols/vulkan/api/flags/VkMemoryHeapFlags.txt
new file mode 100644
index 0000000..a053c19
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkMemoryHeapFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkMemoryHeapFlags,VkMemoryHeapFlags]]
+[source,c++]
+----
+typedef VkFlags VkMemoryHeapFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkMemoryMapFlags.txt b/protocols/vulkan/api/flags/VkMemoryMapFlags.txt
new file mode 100644
index 0000000..5eaa72b
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkMemoryMapFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkMemoryMapFlags,VkMemoryMapFlags]]
+[source,c++]
+----
+typedef VkFlags VkMemoryMapFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkMemoryPropertyFlags.txt b/protocols/vulkan/api/flags/VkMemoryPropertyFlags.txt
new file mode 100644
index 0000000..0321bfc
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkMemoryPropertyFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkMemoryPropertyFlags,VkMemoryPropertyFlags]]
+[source,c++]
+----
+typedef VkFlags VkMemoryPropertyFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPeerMemoryFeatureFlags.txt b/protocols/vulkan/api/flags/VkPeerMemoryFeatureFlags.txt
new file mode 100644
index 0000000..6d026dd
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPeerMemoryFeatureFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPeerMemoryFeatureFlags,VkPeerMemoryFeatureFlags]]
+[source,c++]
+----
+typedef VkFlags VkPeerMemoryFeatureFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineCacheCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineCacheCreateFlags.txt
new file mode 100644
index 0000000..b1157c0
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineCacheCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineCacheCreateFlags,VkPipelineCacheCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineCacheCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineColorBlendStateCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineColorBlendStateCreateFlags.txt
new file mode 100644
index 0000000..16f9b7a
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineColorBlendStateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineColorBlendStateCreateFlags,VkPipelineColorBlendStateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineColorBlendStateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineCreateFlags.txt
new file mode 100644
index 0000000..a3f8b0e
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineCreateFlags,VkPipelineCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineDepthStencilStateCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineDepthStencilStateCreateFlags.txt
new file mode 100644
index 0000000..4d82ea6
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineDepthStencilStateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineDepthStencilStateCreateFlags,VkPipelineDepthStencilStateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineDynamicStateCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineDynamicStateCreateFlags.txt
new file mode 100644
index 0000000..afd60d5
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineDynamicStateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineDynamicStateCreateFlags,VkPipelineDynamicStateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineDynamicStateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineInputAssemblyStateCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineInputAssemblyStateCreateFlags.txt
new file mode 100644
index 0000000..cca7f17
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineInputAssemblyStateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineInputAssemblyStateCreateFlags,VkPipelineInputAssemblyStateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineLayoutCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineLayoutCreateFlags.txt
new file mode 100644
index 0000000..49351be
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineLayoutCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineLayoutCreateFlags,VkPipelineLayoutCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineLayoutCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineMultisampleStateCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineMultisampleStateCreateFlags.txt
new file mode 100644
index 0000000..a40b6e5
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineMultisampleStateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineMultisampleStateCreateFlags,VkPipelineMultisampleStateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineMultisampleStateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineRasterizationStateCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineRasterizationStateCreateFlags.txt
new file mode 100644
index 0000000..773d811
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineRasterizationStateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineRasterizationStateCreateFlags,VkPipelineRasterizationStateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineRasterizationStateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineShaderStageCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineShaderStageCreateFlags.txt
new file mode 100644
index 0000000..c387290
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineShaderStageCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineShaderStageCreateFlags,VkPipelineShaderStageCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineShaderStageCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineStageFlags.txt b/protocols/vulkan/api/flags/VkPipelineStageFlags.txt
new file mode 100644
index 0000000..acbfee8
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineStageFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineStageFlags,VkPipelineStageFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineStageFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineTessellationStateCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineTessellationStateCreateFlags.txt
new file mode 100644
index 0000000..4a461ce
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineTessellationStateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineTessellationStateCreateFlags,VkPipelineTessellationStateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineTessellationStateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineVertexInputStateCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineVertexInputStateCreateFlags.txt
new file mode 100644
index 0000000..09ca0c2
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineVertexInputStateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineVertexInputStateCreateFlags,VkPipelineVertexInputStateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineVertexInputStateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkPipelineViewportStateCreateFlags.txt b/protocols/vulkan/api/flags/VkPipelineViewportStateCreateFlags.txt
new file mode 100644
index 0000000..5996716
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkPipelineViewportStateCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkPipelineViewportStateCreateFlags,VkPipelineViewportStateCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkPipelineViewportStateCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkQueryControlFlags.txt b/protocols/vulkan/api/flags/VkQueryControlFlags.txt
new file mode 100644
index 0000000..84e6091
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkQueryControlFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueryControlFlags,VkQueryControlFlags]]
+[source,c++]
+----
+typedef VkFlags VkQueryControlFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkQueryPipelineStatisticFlags.txt b/protocols/vulkan/api/flags/VkQueryPipelineStatisticFlags.txt
new file mode 100644
index 0000000..30e0bdb
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkQueryPipelineStatisticFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueryPipelineStatisticFlags,VkQueryPipelineStatisticFlags]]
+[source,c++]
+----
+typedef VkFlags VkQueryPipelineStatisticFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkQueryPoolCreateFlags.txt b/protocols/vulkan/api/flags/VkQueryPoolCreateFlags.txt
new file mode 100644
index 0000000..72f039b
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkQueryPoolCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueryPoolCreateFlags,VkQueryPoolCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkQueryPoolCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkQueryResultFlags.txt b/protocols/vulkan/api/flags/VkQueryResultFlags.txt
new file mode 100644
index 0000000..8aca275
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkQueryResultFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueryResultFlags,VkQueryResultFlags]]
+[source,c++]
+----
+typedef VkFlags VkQueryResultFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkQueueFlags.txt b/protocols/vulkan/api/flags/VkQueueFlags.txt
new file mode 100644
index 0000000..bc95339
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkQueueFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkQueueFlags,VkQueueFlags]]
+[source,c++]
+----
+typedef VkFlags VkQueueFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkRenderPassCreateFlags.txt b/protocols/vulkan/api/flags/VkRenderPassCreateFlags.txt
new file mode 100644
index 0000000..c5ab6d1
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkRenderPassCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkRenderPassCreateFlags,VkRenderPassCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkRenderPassCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkSampleCountFlags.txt b/protocols/vulkan/api/flags/VkSampleCountFlags.txt
new file mode 100644
index 0000000..cd58707
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkSampleCountFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSampleCountFlags,VkSampleCountFlags]]
+[source,c++]
+----
+typedef VkFlags VkSampleCountFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkSamplerCreateFlags.txt b/protocols/vulkan/api/flags/VkSamplerCreateFlags.txt
new file mode 100644
index 0000000..0a3114d
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkSamplerCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSamplerCreateFlags,VkSamplerCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkSamplerCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkSemaphoreCreateFlags.txt b/protocols/vulkan/api/flags/VkSemaphoreCreateFlags.txt
new file mode 100644
index 0000000..75c3c4f
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkSemaphoreCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSemaphoreCreateFlags,VkSemaphoreCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkSemaphoreCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkSemaphoreImportFlags.txt b/protocols/vulkan/api/flags/VkSemaphoreImportFlags.txt
new file mode 100644
index 0000000..fdac9c5
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkSemaphoreImportFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSemaphoreImportFlags,VkSemaphoreImportFlags]]
+[source,c++]
+----
+typedef VkFlags VkSemaphoreImportFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkShaderModuleCreateFlags.txt b/protocols/vulkan/api/flags/VkShaderModuleCreateFlags.txt
new file mode 100644
index 0000000..7c77525
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkShaderModuleCreateFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkShaderModuleCreateFlags,VkShaderModuleCreateFlags]]
+[source,c++]
+----
+typedef VkFlags VkShaderModuleCreateFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkShaderStageFlags.txt b/protocols/vulkan/api/flags/VkShaderStageFlags.txt
new file mode 100644
index 0000000..a057bb0
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkShaderStageFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkShaderStageFlags,VkShaderStageFlags]]
+[source,c++]
+----
+typedef VkFlags VkShaderStageFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkSparseImageFormatFlags.txt b/protocols/vulkan/api/flags/VkSparseImageFormatFlags.txt
new file mode 100644
index 0000000..a47b74a
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkSparseImageFormatFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSparseImageFormatFlags,VkSparseImageFormatFlags]]
+[source,c++]
+----
+typedef VkFlags VkSparseImageFormatFlags;
+
+----
diff --git a/protocols/vulkan/api/flags/VkSparseMemoryBindFlags.txt b/protocols/vulkan/api/flags/VkSparseMemoryBindFlags.txt
new file mode 100644
index 0000000..487dd1a
--- /dev/null
+++ b/protocols/vulkan/api/flags/VkSparseMemoryBindFlags.txt
@@ -0,0 +1,7 @@
+// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry
+[[VkSparseMemoryBindFlags,VkSparseMemoryBindFlags]]
+[source,c++]
+----
+typedef VkFlags VkSparseMemoryBindFlags;
+
+----