Change log for April 7, 2019 Vulkan 1.1.106 spec update:
* Update release number to 106. Public Issues: * Add searchbox and generate search index for the chunked HTML target. Note that doing this requires several new toolchain components to build the `chunked` target (public issue 578 / internal issue 1352). * Remove descriptions of flink:vkCreateSampler sampler constraints which were repeated in the valid usage statements (public pull request 648). * Fix sense of conditional around a valid usage statement in the <<copies>> chapter (public issue 942). Internal Issues: * Add missing pname:extent.width and pname:extent.height valid usage statements for flink:vkCmdClearAttachments (internal issue 1583). * Fix some inconsistencies in structures and corresponding pname:sType enumerant names by renaming sname:VkPhysicalDeviceShaderDrawParameterFeatures -> slink:slink:VkPhysicalDeviceShaderDrawParametersFeatures; sname:VkPhysicalDeviceVariablePointerFeatures -> slink:VkPhysicalDeviceVariablePointerFeatures; sname:VkPhysicalDeviceVariablePointerFeaturesKHR -> slink:VkPhysicalDeviceVariablePointerFeaturesKHR; sname:VkPhysicalDeviceBufferAddressFeaturesEXT -> slink:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES -> ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES; etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES -> ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES; etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR -> ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR; and etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT -> ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT. The old names are still available as aliases for backwards compatibility. This change required introducing valid XML markup which externally written XML processing scripts may need to be modified to accomodate, to support multiple aliases of a single command or token name (internal issue 1592). * Add slink:VkDevice as the first parameter to flink:vkSetLocalDimmingAMD (internal issue 1618). * Improve CI header compilation tests to test all Vulkan platform includes, using fake platform headers where needed, and change the `allchecks` Makefile target to use the more comprehensive `check_spec_links.py` script instead of the retired `checkinc` and `checklinks` targets. * Move descriptions of the ASTC compressed texture decode mode from the <<appendix-compressedtex-astc,appendix>> to the recently updated external Khronos Data Format Specification. * Fix minor markup and spelling issues in the `VK_NV_ray_tracing` extension.
This commit is contained in:
parent
84fcf6fb4e
commit
b1042a3204
|
@ -68,6 +68,8 @@ hpp-generate:
|
|||
allow_failure: true
|
||||
|
||||
# Compile a simple test program that uses vulkan.h
|
||||
# The fake platform headers in tests/ allow compiling with all Vulkan
|
||||
# platforms at once.
|
||||
h-compile:
|
||||
stage: test
|
||||
dependencies:
|
||||
|
@ -75,26 +77,9 @@ h-compile:
|
|||
before_script:
|
||||
- apt-get update -qq
|
||||
- apt-get install -y -qq gcc clang
|
||||
- echo "#include <vulkan/vulkan.h>" > /tmp/htest.c
|
||||
- echo "int main()" >> /tmp/htest.c
|
||||
- echo "{" >> /tmp/htest.c
|
||||
- echo " const VkInstanceCreateInfo instance_info = {" >> /tmp/htest.c
|
||||
- echo " .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO," >> /tmp/htest.c
|
||||
- echo " .pNext = NULL," >> /tmp/htest.c
|
||||
- echo " .flags = 0," >> /tmp/htest.c
|
||||
- echo " .pApplicationInfo = NULL," >> /tmp/htest.c
|
||||
- echo " .enabledLayerCount = 0," >> /tmp/htest.c
|
||||
- echo " .ppEnabledLayerNames = NULL," >> /tmp/htest.c
|
||||
- echo " .enabledExtensionCount = 0," >> /tmp/htest.c
|
||||
- echo " .ppEnabledExtensionNames = NULL," >> /tmp/htest.c
|
||||
- echo " };" >> /tmp/htest.c
|
||||
- echo " VkInstance instance;" >> /tmp/htest.c
|
||||
- echo " vkCreateInstance(&instance_info, NULL, &instance);" >> /tmp/htest.c
|
||||
- echo " vkDestroyInstance(instance, NULL);" >>/tmp/htest.c
|
||||
- echo "}" >> /tmp/htest.c
|
||||
script:
|
||||
- gcc -c -std=c11 -Iinclude -Wall -Wextra -Werror /tmp/htest.c
|
||||
- clang -c -std=c11 -Iinclude -Wall -Wextra -Werror /tmp/htest.c
|
||||
- gcc -c -std=c11 -Iinclude -Itests -Wall -Wextra -Werror tests/htest.c
|
||||
- clang -c -std=c11 -Iinclude -Itests -Wall -Wextra -Werror tests/htest.c
|
||||
|
||||
# Compile a simple test program that uses vulkan.hpp
|
||||
hpp-compile:
|
||||
|
@ -105,14 +90,7 @@ hpp-compile:
|
|||
before_script:
|
||||
- apt-get update -qq
|
||||
- apt-get install -y -qq g++ clang
|
||||
- echo "#include <vulkan/vulkan.hpp>" > /tmp/hpptest.cpp
|
||||
- echo "int main()" >> /tmp/hpptest.cpp
|
||||
- echo "{" >> /tmp/hpptest.cpp
|
||||
- echo " auto const instance_info = vk::InstanceCreateInfo();" >> /tmp/hpptest.cpp
|
||||
- echo " vk::Instance instance;" >> /tmp/hpptest.cpp
|
||||
- echo " vk::createInstance(&instance_info, nullptr, &instance);" >> /tmp/hpptest.cpp
|
||||
- echo "}" >> /tmp/hpptest.cpp
|
||||
script:
|
||||
- g++ -c -std=c++11 -Iinclude -IVulkan-Hpp -Wall -Wextra -Werror /tmp/hpptest.cpp
|
||||
- clang++ -c -std=c++11 -Iinclude -IVulkan-Hpp -Wall -Wextra -Werror /tmp/hpptest.cpp
|
||||
- g++ -c -std=c++11 -Iinclude -IVulkan-Hpp -Wall -Wextra -Werror tests/hpptest.cpp
|
||||
- clang++ -c -std=c++11 -Iinclude -IVulkan-Hpp -Wall -Wextra -Werror tests/hpptest.cpp
|
||||
allow_failure: true
|
||||
|
|
82
BUILD.adoc
82
BUILD.adoc
|
@ -34,7 +34,7 @@ which builds an HTML5 specification output.
|
|||
$ make all
|
||||
|
||||
builds the spec targets `html`, `pdf`, `styleguide`, `registry`, `manhtml`,
|
||||
`manpdf`, `manhtmlpages`, `checkinc`, and `checklinks`.
|
||||
`manpdf`, `manhtmlpages`, and `allchecks`
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -71,11 +71,8 @@ XML Registry schema document::
|
|||
* `manpdf` -- Single-file PDF in `$(OUTDIR)/apispec.pdf`
|
||||
* `manhtmlpages` -- File-per-entry-point HTML in `$(OUTDIR)/man/html/*`
|
||||
<<validation-scripts,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`
|
||||
* None at present. The `allchecks` target writes to standard output unless
|
||||
the underlying script is given additional options.
|
||||
Valid usage database::
|
||||
* `validusage` - json database of all valid usage statements in the
|
||||
specification. Must be built with `./makeAllExts` (for now).
|
||||
|
@ -209,38 +206,14 @@ builds.
|
|||
[[validation-scripts]]
|
||||
=== 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 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.
|
||||
|
||||
The `checkinc` target uses Unix filters to determine which autogenerated API
|
||||
include files are used (and not used) in the spec.
|
||||
It generates `notInSpec.txt` report.
|
||||
This contains 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.
|
||||
The `allchecks` Makefile target runs a Python script that looks for markup
|
||||
errors, missing interfaces, macro misuse, and inconsistencies in the
|
||||
specification text.
|
||||
This script is necessarily heuristic, since it's dealing with lots of
|
||||
hand-written material, but it identifies many problems and can suggest
|
||||
solutions.
|
||||
This script is also run as part of the CI tests in the internal Khronos
|
||||
gitlab repository.
|
||||
|
||||
|
||||
[[macros]]
|
||||
|
@ -415,6 +388,7 @@ Fences are used with the +++<<vkQueueSubmit>>+++ command...
|
|||
|
||||
// editing-note: why would I though. There are xlink: macros for that.
|
||||
|
||||
|
||||
[[depends]]
|
||||
== Software Dependencies
|
||||
|
||||
|
@ -440,6 +414,24 @@ work at least as well.
|
|||
This is for the PDF build, and it can still progress without it.
|
||||
Ghostscript is used to optimize the size of the PDF, so it will be order
|
||||
of magnitude smaller if it is included.
|
||||
* The following dependencies are required only if building the
|
||||
`chunked` target (chunked HTML output).
|
||||
** Node (`nodejs`, version: 8.11.1)
|
||||
*** Node Package Manager (`npm`, version: 5.8.0), for installing Lunr
|
||||
** Lunr (`lunr`, version: 2.3.6), installed with npm.
|
||||
One of the lunr files, `lunr.js`, is also incorporated into this
|
||||
repository under `config/chunkindex/lunr.js`, so it will always be
|
||||
available at spec load time. It is possible that there will be
|
||||
incompatibilities between the installed version of lunr used to build
|
||||
the index, and the copy of `lunr.js` included with the repository. If
|
||||
so, update the repository copy of the file from your lunr distribution,
|
||||
or install the specific lunr version 2.3.6 corresponding to the
|
||||
repository copy.
|
||||
*** Ensure that the installed `lunr` package is found by `node` at
|
||||
runtime. This may require setting the environment variable NODE_PATH
|
||||
to the path where `lunr` is installed. This path will probably be
|
||||
`/usr/lib/node_modules`, if you install `nodejs` and `npm` from
|
||||
deb.nodesource.com .
|
||||
|
||||
The following Ruby Gems and platform package dependencies must also be
|
||||
installed.
|
||||
|
@ -752,7 +744,7 @@ gem clean
|
|||
|
||||
|
||||
[[depends-chunker]]
|
||||
=== Asciidoctor-chunker
|
||||
=== Asciidoctor-chunker and Index Generation
|
||||
|
||||
To generate the `chunked` HTML target, you must install
|
||||
https://github.com/wshito/asciidoctor-chunker[`asciidoctor-chunker`] and
|
||||
|
@ -767,6 +759,18 @@ Note that both Roswell and asciidoctor-chunker are installed outside the
|
|||
scope of the Vulkan Specification repository (in system directories, and
|
||||
in your home directory, respectively).
|
||||
|
||||
You must also install these Javascript dependencies to generate the
|
||||
index, partly as system packages, and partly with npm. Note that npm is not
|
||||
packaged for Debian 9, thus it's installed from deb.nodesource.com following
|
||||
https://linuxize.com/post/how-to-install-node-js-on-debian-9/
|
||||
|
||||
----
|
||||
curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -
|
||||
# nodejs also installs npm
|
||||
sudo apt install nodejs
|
||||
sudo npm install -g lunr@2.3.6
|
||||
setenv NODE_PATH /usr/lib/node_modules
|
||||
----
|
||||
|
||||
[[troubleshooting]]
|
||||
== Troubleshooting
|
||||
|
|
|
@ -8,6 +8,64 @@ public pull requests that have been accepted.
|
|||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for April 7, 2019 Vulkan 1.1.106 spec update:
|
||||
|
||||
* Update release number to 106.
|
||||
|
||||
Public Issues:
|
||||
|
||||
* Add searchbox and generate search index for the chunked HTML target.
|
||||
Note that doing this requires several new toolchain components to build
|
||||
the `chunked` target (public issue 578 / internal issue 1352).
|
||||
* Remove descriptions of flink:vkCreateSampler sampler constraints which
|
||||
were repeated in the valid usage statements (public pull request 648).
|
||||
* Fix sense of conditional around a valid usage statement in the
|
||||
<<copies>> chapter (public issue 942).
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Add missing pname:extent.width and pname:extent.height valid usage
|
||||
statements for flink:vkCmdClearAttachments (internal issue 1583).
|
||||
* Fix some inconsistencies in structures and corresponding pname:sType
|
||||
enumerant names by renaming
|
||||
sname:VkPhysicalDeviceShaderDrawParameterFeatures ->
|
||||
slink:slink:VkPhysicalDeviceShaderDrawParametersFeatures;
|
||||
sname:VkPhysicalDeviceVariablePointerFeatures ->
|
||||
slink:VkPhysicalDeviceVariablePointerFeatures;
|
||||
sname:VkPhysicalDeviceVariablePointerFeaturesKHR ->
|
||||
slink:VkPhysicalDeviceVariablePointerFeaturesKHR;
|
||||
sname:VkPhysicalDeviceBufferAddressFeaturesEXT ->
|
||||
slink:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
|
||||
etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES
|
||||
->
|
||||
ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
|
||||
etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES ->
|
||||
ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
|
||||
etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR ->
|
||||
ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR;
|
||||
and etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT
|
||||
->
|
||||
ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT.
|
||||
The old names are still available as aliases for backwards
|
||||
compatibility. This change required introducing valid XML markup which
|
||||
externally written XML processing scripts may need to be modified to
|
||||
accomodate, to support multiple aliases of a single command or token
|
||||
name (internal issue 1592).
|
||||
* Add slink:VkDevice as the first parameter to flink:vkSetLocalDimmingAMD
|
||||
(internal issue 1618).
|
||||
* Improve CI header compilation tests to test all Vulkan platform
|
||||
includes, using fake platform headers where needed, and change the
|
||||
`allchecks` Makefile target to use the more comprehensive
|
||||
`check_spec_links.py` script instead of the retired `checkinc` and
|
||||
`checklinks` targets.
|
||||
* Move descriptions of the ASTC compressed texture decode mode from the
|
||||
<<appendix-compressedtex-astc,appendix>> to the recently updated
|
||||
external Khronos Data Format Specification.
|
||||
* Fix minor markup and spelling issues in the `VK_NV_ray_tracing`
|
||||
extension.
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for March 19, 2019 Vulkan 1.1.105 spec update (GDC edition):
|
||||
|
||||
* Update release number to 105.
|
||||
|
|
30
Makefile
30
Makefile
|
@ -59,8 +59,7 @@ IMAGEOPTS = inline
|
|||
# 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
|
||||
# allchecks - Python sanity checker for script markup and macro use
|
||||
|
||||
all: alldocs allchecks
|
||||
|
||||
|
@ -70,7 +69,8 @@ allspecs: html pdf styleguide registry
|
|||
|
||||
allman: manhtml manpdf manhtmlpages
|
||||
|
||||
allchecks: checkinc checklinks
|
||||
allchecks:
|
||||
$(PYTHON) $(SCRIPTS)/check_spec_links.py -Werror
|
||||
|
||||
# Note that the := assignments below are immediate, not deferred, and
|
||||
# are therefore order-dependent in the Makefile
|
||||
|
@ -78,6 +78,9 @@ allchecks: checkinc checklinks
|
|||
QUIET ?= @
|
||||
PYTHON ?= python3
|
||||
ASCIIDOC ?= asciidoctor
|
||||
RUBY = ruby
|
||||
NODEJS = node
|
||||
PATCH = patch
|
||||
RM = rm -f
|
||||
RMRF = rm -rf
|
||||
MKDIR = mkdir -p
|
||||
|
@ -118,7 +121,7 @@ VERBOSE =
|
|||
# ADOCOPTS options for asciidoc->HTML5 output
|
||||
|
||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||
PATCHVERSION = 105
|
||||
PATCHVERSION = 106
|
||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||
else
|
||||
|
@ -203,10 +206,22 @@ $(OUTDIR)/$(KATEXDIR)/README.md: katex/README.md
|
|||
ROSWELL = ros
|
||||
ROSWELLOPTS ?= dynamic-space-size=4000
|
||||
CHUNKER = $(HOME)/common-lisp/asciidoctor-chunker/roswell/asciidoctor-chunker.ros
|
||||
|
||||
CHUNKINDEX = $(CURDIR)/config/chunkindex
|
||||
# Only the $(ROSWELL) step is required unless the search index is to be
|
||||
# generated and incorporated into the chunked spec.
|
||||
#
|
||||
# Dropped $(QUIET) for now
|
||||
# Should set NODE_PATH=/usr/local/lib/node_modules or wherever, outside Makefile
|
||||
# Copying chunked.js into target avoids a warning from the chunker
|
||||
chunked: $(HTMLDIR)/vkspec.html $(SPECSRC) $(COMMONDOCS)
|
||||
$(QUIET)$(PATCH) $(HTMLDIR)/vkspec.html -o $(HTMLDIR)/prechunked.html $(CHUNKINDEX)/custom.patch
|
||||
$(QUIET)$(CP) $(CHUNKINDEX)/chunked.css $(CHUNKINDEX)/chunked.js \
|
||||
$(CHUNKINDEX)/lunr.js $(HTMLDIR)
|
||||
$(QUIET)$(ROSWELL) $(ROSWELLOPTS) $(CHUNKER) \
|
||||
$(HTMLDIR)/vkspec.html -o $(HTMLDIR)
|
||||
$(HTMLDIR)/prechunked.html -o $(HTMLDIR)
|
||||
$(QUIET)$(RM) prechunked.html
|
||||
$(QUIET)$(RUBY) $(CHUNKINDEX)/generate-index.rb $(HTMLDIR)/chap*html | \
|
||||
$(NODEJS) $(CHUNKINDEX)/build-index.js > $(HTMLDIR)/search.index.js
|
||||
|
||||
html: $(HTMLDIR)/vkspec.html $(SPECSRC) $(COMMONDOCS)
|
||||
|
||||
|
@ -292,11 +307,12 @@ clean_man:
|
|||
clean_checks:
|
||||
$(QUIET)$(RMRF) $(CHECKDIR)
|
||||
|
||||
MANTRASH = $(filter-out $(MANDIR)/copyright-ccby.txt $(MANDIR)/footer.txt,$(wildcard $(MANDIR)/*.txt)) $(LOGFILE)
|
||||
clean_generated:
|
||||
$(QUIET)$(RMRF) api/* hostsynctable/* validity/* $(METADIR)/*
|
||||
$(QUIET)$(RMRF) include/vulkan/vulkan_*.h $(SCRIPTS)/vkapi.py
|
||||
$(QUIET)$(RM) config/extDependency.*
|
||||
$(QUIET)$(RM) man/apispec.txt $(LOGFILE) man/[Vv][Kk]*.txt man/PFN*.txt
|
||||
$(QUIET)$(RM) $(MANTRASH)
|
||||
$(QUIET)$(RMRF) $(PDFMATHDIR)
|
||||
|
||||
clean_validusage:
|
||||
|
|
10
README.adoc
10
README.adoc
|
@ -47,9 +47,8 @@ ChangeLog.txt Change log summary for each public spec update
|
|||
Makefile, make* Makefile and helper build scripts (see BUILD.adoc)
|
||||
appendices/ Specification appendices
|
||||
chapters/ Specification chapters
|
||||
config/ Asciidoctor configuration
|
||||
config/ Asciidoctor configuration, CSS, and index generator
|
||||
images/ Images (figures, diagrams, icons)
|
||||
include/vulkan/ Vulkan headers, generated from the Registry
|
||||
man/ Reference (man) pages for the API; mostly extracted from the spec source
|
||||
out/ Default directory for the generated documents
|
||||
scripts/ Helper scripts used in specification, header, and reference page generation
|
||||
|
@ -74,10 +73,9 @@ See link:xml/README.adoc[xml/README.adoc].
|
|||
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 into `xml/`
|
||||
and running:
|
||||
The generated files are not checked into the repository.
|
||||
If you change `vk.xml`, you can regenerate the headers by going into
|
||||
`xml/` and running:
|
||||
|
||||
$ make clean install
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ None
|
|||
=== New Enum Constants
|
||||
|
||||
* Extending elink:VkStructureType:
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT
|
||||
|
||||
|
@ -48,7 +48,7 @@ None
|
|||
|
||||
=== New Structures
|
||||
|
||||
* slink:VkPhysicalDeviceBufferAddressFeaturesEXT
|
||||
* slink:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
|
||||
* slink:VkBufferDeviceAddressInfoEXT
|
||||
* slink:VkBufferDeviceAddressCreateInfoEXT
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ ifdef::VK_VERSION_1_1[]
|
|||
* Extending elink:VkDescriptorUpdateTemplateType
|
||||
** ename:VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
|
||||
endif::VK_VERSION_1_1[]
|
||||
|
||||
=== New Enums
|
||||
|
||||
None.
|
||||
|
|
|
@ -42,7 +42,7 @@ The second, code:VariablePointers, is optional.
|
|||
|
||||
=== New Structures
|
||||
|
||||
* slink:VkPhysicalDeviceVariablePointerFeaturesKHR
|
||||
* slink:VkPhysicalDeviceVariablePointersFeaturesKHR
|
||||
|
||||
=== New SPIR-V Capabilities
|
||||
|
||||
|
|
|
@ -122,10 +122,8 @@ ifdef::VK_EXT_astc_decode_mode[]
|
|||
|
||||
=== ASTC decode mode
|
||||
|
||||
If the `VK_EXT_astc_decode_mode` extension is enabled the ASTC decoding
|
||||
described in the <<data-format,Khronos Data Format Specification>> is
|
||||
modified by replacing or modifying the corresponding sections as described
|
||||
below.
|
||||
If the `VK_EXT_astc_decode_mode` extension is enabled, the decode mode is
|
||||
determined as follows:
|
||||
|
||||
.Mapping of Vulkan ASTC decoding format to ASTC decoding modes
|
||||
[width="75%",options="header",cols="75%,25%"]
|
||||
|
@ -136,243 +134,8 @@ below.
|
|||
| ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 ^| decode_rgb9e5
|
||||
|====
|
||||
|
||||
==== LDR and HDR Modes
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
This replaces section 16.5 in the <<data-format,Khronos Data Format
|
||||
Specification>>.
|
||||
====
|
||||
|
||||
The decoding process for LDR content can be simplified if it is known in
|
||||
advance that sRGB output is required.
|
||||
This selection is therefore included as part of the global configuration.
|
||||
|
||||
The two modes differ in various ways, as shown in
|
||||
<<appendix-compressedtex-astc-differences-between-ldr-and-hdr-modes, ASTC
|
||||
differences between LDR and HDR modes>>.
|
||||
|
||||
[[appendix-compressedtex-astc-differences-between-ldr-and-hdr-modes]]
|
||||
.ASTC differences between LDR and HDR modes
|
||||
[width="75%",options="header"]
|
||||
|====
|
||||
| Operation | LDR Mode | HDR Mode
|
||||
| Returned Value | Determined by decoding mode | Determined by decoding mode
|
||||
| sRGB compatible | Yes | No
|
||||
| LDR endpoint decoding precision | 16 bits, or 8 bits for sRGB | 16 bits
|
||||
| HDR endpoint mode results | Error color | As decoded
|
||||
| Error results | Error color | Vector of NaNs (0xFFFF)
|
||||
|====
|
||||
|
||||
The type of the values returned by the decoding process is determined by the
|
||||
decoding mode as shown in <<appendix-compressedtex-astc-decoding-modes, ASTC
|
||||
decoding modes>>.
|
||||
|
||||
[[appendix-compressedtex-astc-decoding-modes]]
|
||||
.ASTC decoding modes
|
||||
[width="75%",options="header"]
|
||||
|====
|
||||
| Decode mode | LDR Mode | HDR Mode
|
||||
| decode_float16 | Vector of FP16 values | Vector of FP16 values
|
||||
| decode_unorm8 | Vector of 8-bit unsigned normalized values | invalid
|
||||
| decode_rgb9e5 | Vector using a shared exponent format | Vector using a shared exponent format
|
||||
|====
|
||||
|
||||
Using the decode_unorm8 decoding mode in HDR mode gives undefined results.
|
||||
|
||||
For sRGB, the decoding mode is ignored, and the decoding always returns a
|
||||
vector of 8-bit unsigned normalized values.
|
||||
|
||||
The error color is opaque fully-saturated magenta [eq]#[(R,G,B,A) =
|
||||
(0xFF,0x00,0xFF,0xFF)#.
|
||||
This has been chosen as it is much more noticeable than black or white, and
|
||||
occurs far less often in valid images.
|
||||
|
||||
For linear RGB decode, the error color may: be either opaque fully-saturated
|
||||
magenta [eq]#(R,G,B,A) = (1.0,0.0,1.0,1.0)# or a vector of four NaNs
|
||||
[eq]#(R,G,B,A) = (NaN,NaN,NaN,NaN)#.
|
||||
In the latter case, the recommended [eq]#NaN# value returned is
|
||||
[eq]#0xFFFF#.
|
||||
|
||||
When using the decode_rgb9e5 decoding mode in HDR mode, error results will
|
||||
return the error color because NaN cannot be represented.
|
||||
|
||||
The error color is returned as an informative response to invalid
|
||||
conditions, including invalid block encodings or use of reserved endpoint
|
||||
modes.
|
||||
|
||||
Future, forward-compatible extensions to ASTC may define valid
|
||||
interpretations of these conditions, which will decode to some other color.
|
||||
Therefore, encoders and applications must not rely on invalid encodings as a
|
||||
way of generating the error color.
|
||||
|
||||
|
||||
[[appendix-compressedtex-astc-weight-application]]
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
This replaces section 16.19 in the <<data-format,Khronos Data Format
|
||||
Specification>>.
|
||||
====
|
||||
|
||||
Once the effective weight _i_ for the texel has been calculated, the color
|
||||
endpoints are interpolated and expanded.
|
||||
|
||||
For LDR endpoint modes, each color component C is calculated from the
|
||||
corresponding 8-bit endpoint components C~0~ and C~1~ as follows:
|
||||
|
||||
If sRGB conversion is not enabled, or for the alpha channel in any case,
|
||||
C~0~ and C~1~ are first expanded to 16 bits by bit replication:
|
||||
|
||||
-----
|
||||
C0 = (C0 << 8) | C0; C1 = (C1 << 8) | C1;
|
||||
-----
|
||||
|
||||
If sRGB conversion is enabled, C~0~ and C~1~ for the R, G, and B channels
|
||||
are expanded to 16 bits differently, as follows:
|
||||
|
||||
-----
|
||||
C0 = (C0 << 8) | 0x80; C1 = (C1 << 8) | 0x80;
|
||||
-----
|
||||
|
||||
C~0~ and C~1~ are then interpolated to produce a UNORM16 result C:
|
||||
|
||||
-----
|
||||
C = floor( (C0*(64-i) + C1*i + 32)/64 )
|
||||
-----
|
||||
|
||||
If sRGB conversion is not enabled and the decoding mode is decode_float16,
|
||||
then if C = 65535 the final result is 1.0 (0x3C00); otherwise C is divided
|
||||
by 65536 and the infinite-precision result of the division is converted to
|
||||
FP16 with round-to-zero semantics.
|
||||
|
||||
If sRGB conversion is not enabled and the decoding mode is decode_unorm8,
|
||||
then top 8 bits of the interpolation result for the R, G, B, and A channels
|
||||
are used as the final result.
|
||||
|
||||
If sRGB conversion is not enabled and the decoding mode is decode_rgb9e5,
|
||||
then the final result is a combination of the (UNORM16) values of C for the
|
||||
three color components (Cr, Cg, and Cb) computed as follows:
|
||||
|
||||
-----
|
||||
int lz = clz17( Cr | Cg | Cb | 1);
|
||||
if (Cr == 65535 ) { Cr = 65536; lz = 0; }
|
||||
if (Cg == 65535 ) { Cg = 65536; lz = 0; }
|
||||
if (Cb == 65535 ) { Cb = 65536; lz = 0; }
|
||||
Cr <<= lz;
|
||||
Cg <<= lz;
|
||||
Cb <<= lz;
|
||||
Cr = (Cr >> 8) & 0x1FF;
|
||||
Cg = (Cg >> 8) & 0x1FF;
|
||||
Cb = (Cb >> 8) & 0x1FF;
|
||||
uint32_t exponent = 16 - lz;
|
||||
uint32_t texel = (exponent << 27) | (Cb << 18) | (Cg << 9) | Cr;
|
||||
-----
|
||||
|
||||
The clz17() function counts leading zeros in a 17-bit value.
|
||||
|
||||
If sRGB conversion is enabled, then the decoding mode is ignored, and the
|
||||
top 8 bits of the interpolation result for the R, G and B channels are
|
||||
passed to the external sRGB conversion block and used as the final result.
|
||||
The A channle uses the decode_float16 decoding mode.
|
||||
|
||||
For HDR endpoint modes, color values are represented in a 12-bit
|
||||
pseudo-logarithmic representation, and interpolation occurs in a
|
||||
piecewise-approximate logarithmic manner as follows:
|
||||
|
||||
In LDR mode, the error result is returned.
|
||||
|
||||
In HDR mode, the color components from each endpoint, C~0~ and C~1~, are
|
||||
initially shifted left 4 bits to become 16-bit integer values and these are
|
||||
interpolated in the same way as LDR.
|
||||
The 16-bit value C is then decomposed into the top five bits, E, and the
|
||||
bottom 11 bits M, which are then processed and recombined with E to form the
|
||||
final value C~f~:
|
||||
|
||||
-----
|
||||
C = floor( (C0*(64-i) + C1*i + 32)/64 )
|
||||
E = (C & 0xF800) >> 11; M = C & 0x7FF;
|
||||
if (M < 512) { Mt = 3*M; }
|
||||
else if (M >= 1536) { Mt = 5*M - 2048; }
|
||||
else { Mt = 4*M - 512; }
|
||||
Cf = (E<<10) + (Mt>>3)
|
||||
-----
|
||||
|
||||
This interpolation is a considerably closer approximation to a logarithmic
|
||||
space than simple 16-bit interpolation.
|
||||
|
||||
This final value C~f~ is interpreted as an IEEE FP16 value.
|
||||
If the result is +Inf or NaN, it is converted to the bit pattern 0x7BFF,
|
||||
which is the largest representable finite value.
|
||||
|
||||
If the decoding mode is decode_rgb9e5, then the final result is a
|
||||
combination of the (IEEE FP16) values of Cf for the three color components
|
||||
(Cr, Cg, and Cb) computed as follows:
|
||||
|
||||
-----
|
||||
if( Cr > 0x7c00 ) Cr = 0; else if( Cr == 0x7c00 ) Cr = 0x7bff;
|
||||
if( Cg > 0x7c00 ) Cg = 0; else if( Cg == 0x7c00 ) Cg = 0x7bff;
|
||||
if( Cb > 0x7c00 ) Cb = 0; else if( Cb == 0x7c00 ) Cb = 0x7bff;
|
||||
int Re = (Cr >> 10) & 0x1F;
|
||||
int Ge = (Cg >> 10) & 0x1F;
|
||||
int Be = (Cb >> 10) & 0x1F;
|
||||
int Rex = Re == 0 ? 1 : Re;
|
||||
int Gex = Ge == 0 ? 1 : Ge;
|
||||
int Bex = Be == 0 ? 1 : Be;
|
||||
int Xm = ((Cr | Cg | Cb) & 0x200) >> 9;
|
||||
int Xe = Re | Ge | Be;
|
||||
uint32_t rshift, gshift, bshift, expo;
|
||||
|
||||
if (Xe == 0)
|
||||
{
|
||||
expo = rshift = gshift = bshift = Xm;
|
||||
}
|
||||
else if (Re >= Ge && Re >= Be)
|
||||
{
|
||||
expo = Rex + 1;
|
||||
rshift = 2;
|
||||
gshift = Rex - Gex + 2;
|
||||
bshift = Rex - Bex + 2;
|
||||
}
|
||||
else if (Ge >= Be)
|
||||
{
|
||||
expo = Gex + 1;
|
||||
rshift = Gex - Rex + 2;
|
||||
gshift = 2;
|
||||
bshift = Gex - Bex + 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
expo = Bex + 1;
|
||||
rshift = Bex - Rex + 2;
|
||||
gshift = Bex - Gex + 2;
|
||||
bshift = 2;
|
||||
}
|
||||
|
||||
int Rm = (Cr & 0x3FF) | (Re == 0 ? 0 : 0x400);
|
||||
int Gm = (Cg & 0x3FF) | (Ge == 0 ? 0 : 0x400);
|
||||
int Bm = (Cb & 0x3FF) | (Be == 0 ? 0 : 0x400);
|
||||
Rm = (Rm >> rshift) & 0x1FF;
|
||||
Gm = (Gm >> gshift) & 0x1FF;
|
||||
Bm = (Bm >> bshift) & 0x1FF;
|
||||
|
||||
uint32_t texel = (expo << 27) | (Bm << 18) | (Gm << 9) | (Rm << 0);
|
||||
-----
|
||||
|
||||
=== Void-Extent Blocks
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
This modifies section 16.23 in the <<data-format,Khronos Data Format
|
||||
Specification>>.
|
||||
====
|
||||
|
||||
In the HDR case, if the decoding mode is decode_rgb9e5, then any negative
|
||||
color component values are set to 0 before conversion to the shared exponent
|
||||
format (as described in <<appendix-compressedtex-astc-weight-application,
|
||||
Weight Application>>).
|
||||
|
||||
Otherwise, the ASTC decode mode is decode_float16.
|
||||
endif::VK_EXT_astc_decode_mode[]
|
||||
ifndef::VK_EXT_astc_decode_mode[]
|
||||
The ASTC decode mode is decode_float16.
|
||||
endif::VK_EXT_astc_decode_mode[]
|
||||
|
|
|
@ -174,7 +174,7 @@ command to <<vkEnumerateInstanceVersion, enumerate the instance version>>.
|
|||
** ename:VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
|
||||
** ename:VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
|
||||
|
@ -202,7 +202,7 @@ command to <<vkEnumerateInstanceVersion, enumerate the instance version>>.
|
|||
** ename:VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
|
||||
** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
|
||||
|
||||
|
||||
=== New Enums
|
||||
|
@ -295,10 +295,10 @@ command to <<vkEnumerateInstanceVersion, enumerate the instance version>>.
|
|||
* slink:VkPhysicalDeviceProtectedMemoryFeatures
|
||||
* slink:VkPhysicalDeviceProtectedMemoryProperties
|
||||
* slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures
|
||||
* slink:VkPhysicalDeviceShaderDrawParameterFeatures
|
||||
* slink:VkPhysicalDeviceShaderDrawParametersFeatures
|
||||
* slink:VkPhysicalDeviceSparseImageFormatInfo2
|
||||
* slink:VkPhysicalDeviceSubgroupProperties
|
||||
* slink:VkPhysicalDeviceVariablePointerFeatures
|
||||
* slink:VkPhysicalDeviceVariablePointersFeatures
|
||||
* slink:VkPipelineTessellationDomainOriginStateCreateInfo
|
||||
* slink:VkProtectedSubmitInfo
|
||||
* slink:VkQueueFamilyProperties2
|
||||
|
|
|
@ -519,6 +519,7 @@ swapchain by calling:
|
|||
|
||||
include::../../api/protos/vkSetLocalDimmingAMD.txt[]
|
||||
|
||||
* pname:device is the device associated with pname:swapChain.
|
||||
* pname:swapChain handle to enable local dimming.
|
||||
* pname:localDimmingEnable specifies whether local dimming is enabled for
|
||||
the swapchain.
|
||||
|
|
|
@ -1,14 +1,5 @@
|
|||
// This section is included inside the Resource Descriptors chapter (descriptorsets.txt)
|
||||
|
||||
[[descriptorsets-accelerationstructure]]
|
||||
=== Acceleration Structure
|
||||
|
||||
An _acceleration structure_
|
||||
(ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV) is a descriptor type
|
||||
that is used to retrieve scene geometry from within shaders bound to ray
|
||||
tracing pipelines.
|
||||
Shaders have read-only access to the memory.
|
||||
|
||||
[open,refpage='VkWriteDescriptorSetAccelerationStructureNV',desc='Structure specifying acceleration to query for memory requirements',type='structs']
|
||||
--
|
||||
The sname:VkWriteDescriptorSetAccelerationStructureNV structure is defined
|
||||
|
|
|
@ -232,7 +232,8 @@ include::../../api/protos/vkGetRayTracingShaderGroupHandlesNV.txt[]
|
|||
* pname:pipeline is the ray tracing pipeline object that contains the
|
||||
shaders.
|
||||
* pname:firstGroup is the index of the first group to retrieve a handle
|
||||
for from the sname:VkPipelineShaderStageCreateInfo::pname:pGroups array.
|
||||
for from the slink:VkRayTracingShaderGroupCreateInfoNV::pname:pGroups
|
||||
array.
|
||||
* pname:groupCount is the number of shader handles to retrieve.
|
||||
* pname:dataSize is the size in bytes of the buffer pointed to by
|
||||
pname:pData.
|
||||
|
|
|
@ -557,7 +557,7 @@ include::../../api/protos/vkCmdBuildAccelerationStructureNV.txt[]
|
|||
* [[VUID-vkCmdBuildAccelerationStructureNV-dst-02488]]
|
||||
pname:dst must: have been created with compatible
|
||||
slink:VkAccelerationStructureInfoNV where
|
||||
slink:VkAccelerationStructureInfoNV:::pname:type and
|
||||
slink:VkAccelerationStructureInfoNV::pname:type and
|
||||
slink:VkAccelerationStructureInfoNV::pname:flags are identical,
|
||||
slink:VkAccelerationStructureInfoNV::pname:instanceCount and
|
||||
slink:VkAccelerationStructureInfoNV::pname:geometryCount for pname:dst
|
||||
|
|
|
@ -304,6 +304,12 @@ ename:VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT stages.
|
|||
contains ename:VK_IMAGE_ASPECT_STENCIL_BIT, then the current subpass'
|
||||
depth/stencil attachment must: either be ename:VK_ATTACHMENT_UNUSED, or
|
||||
must: have a stencil component
|
||||
* [[VUID-vkCmdClearAttachments-rect-02682]]
|
||||
The pname:rect member of each element of pname:pRects must: have an
|
||||
pname:extent.width greater than `0`
|
||||
* [[VUID-vkCmdClearAttachments-rect-02683]]
|
||||
The pname:rect member of each element of pname:pRects must: have an
|
||||
pname:extent.height greater than `0`
|
||||
* [[VUID-vkCmdClearAttachments-pRects-00016]]
|
||||
The rectangular region specified by each element of pname:pRects must:
|
||||
be contained within the render area of the current render pass instance
|
||||
|
|
|
@ -54,7 +54,7 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
|||
ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage bit enabled and destination
|
||||
buffers must: have been created with the
|
||||
ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage bit enabled.
|
||||
ifdef::VK_EXT_separate_stencil_usage[]
|
||||
ifndef::VK_EXT_separate_stencil_usage[]
|
||||
* Source images must: have been created with
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT set in
|
||||
slink:VkImageCreateInfo::pname:usage
|
||||
|
|
|
@ -338,6 +338,15 @@ ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, or
|
|||
ename:VK_IMAGE_LAYOUT_GENERAL layout in order to access its data in a
|
||||
shader.
|
||||
|
||||
[[descriptorsets-accelerationstructure]]
|
||||
=== Acceleration Structure
|
||||
|
||||
An _acceleration structure_
|
||||
(ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV) is a descriptor type
|
||||
that is used to retrieve scene geometry from within shaders bound to ray
|
||||
tracing pipelines.
|
||||
Shaders have read-only access to the memory.
|
||||
|
||||
[[descriptorsets-sets]]
|
||||
== Descriptor Sets
|
||||
|
||||
|
|
|
@ -758,19 +758,19 @@ include::../validity/structs/VkPhysicalDeviceFeatures.txt[]
|
|||
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
|
||||
|
||||
[open,refpage='VkPhysicalDeviceVariablePointerFeatures',desc='Structure describing variable pointers features that can be supported by an implementation',type='structs']
|
||||
[open,refpage='VkPhysicalDeviceVariablePointersFeatures',desc='Structure describing variable pointers features that can be supported by an implementation',type='structs']
|
||||
--
|
||||
The sname:VkPhysicalDeviceVariablePointerFeatures structure is defined as:
|
||||
The sname:VkPhysicalDeviceVariablePointersFeatures structure is defined as:
|
||||
|
||||
include::../api/structs/VkPhysicalDeviceVariablePointerFeatures.txt[]
|
||||
include::../api/structs/VkPhysicalDeviceVariablePointersFeatures.txt[]
|
||||
|
||||
ifdef::VK_KHR_variable_pointers[]
|
||||
or the equivalent
|
||||
|
||||
include::../api/structs/VkPhysicalDeviceVariablePointerFeaturesKHR.txt[]
|
||||
include::../api/structs/VkPhysicalDeviceVariablePointersFeaturesKHR.txt[]
|
||||
endif::VK_KHR_variable_pointers[]
|
||||
|
||||
The members of the sname:VkPhysicalDeviceVariablePointerFeatures structure
|
||||
The members of the sname:VkPhysicalDeviceVariablePointersFeatures structure
|
||||
describe the following features:
|
||||
|
||||
* [[features-variablePointersStorageBuffer]]
|
||||
|
@ -784,20 +784,20 @@ describe the following features:
|
|||
When this feature is not enabled, shader modules must: not declare the
|
||||
`VariablePointers` capability.
|
||||
|
||||
If the sname:VkPhysicalDeviceVariablePointerFeatures structure is included
|
||||
If the sname:VkPhysicalDeviceVariablePointersFeatures structure is included
|
||||
in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2, it is filled
|
||||
with values indicating whether each feature is supported.
|
||||
sname:VkPhysicalDeviceVariablePointerFeatures can: also be used in the
|
||||
sname:VkPhysicalDeviceVariablePointersFeatures can: also be used in the
|
||||
pname:pNext chain of slink:VkDeviceCreateInfo to enable the features.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkPhysicalDeviceVariablePointerFeatures-variablePointers-01431]]
|
||||
* [[VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431]]
|
||||
If pname:variablePointers is enabled then
|
||||
pname:variablePointersStorageBuffer must: also be enabled.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceVariablePointerFeatures.txt[]
|
||||
include::../validity/structs/VkPhysicalDeviceVariablePointersFeatures.txt[]
|
||||
--
|
||||
|
||||
endif::VK_VERSION_1_1,VK_KHR_variable_pointers[]
|
||||
|
@ -1146,21 +1146,21 @@ include::../validity/structs/VkPhysicalDeviceConditionalRenderingFeaturesEXT.txt
|
|||
endif::VK_EXT_conditional_rendering[]
|
||||
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
[open,refpage='VkPhysicalDeviceShaderDrawParameterFeatures',desc='Structure describing shader draw parameter features that can be supported by an implementation',type='structs']
|
||||
[open,refpage='VkPhysicalDeviceShaderDrawParametersFeatures',desc='Structure describing shader draw parameter features that can be supported by an implementation',type='structs']
|
||||
--
|
||||
The sname:VkPhysicalDeviceShaderDrawParameterFeatures structure is defined
|
||||
The sname:VkPhysicalDeviceShaderDrawParametersFeatures structure is defined
|
||||
as:
|
||||
|
||||
include::../api/structs/VkPhysicalDeviceShaderDrawParameterFeatures.txt[]
|
||||
include::../api/structs/VkPhysicalDeviceShaderDrawParametersFeatures.txt[]
|
||||
|
||||
* [[features-shaderDrawParameters]] pname:shaderDrawParameters specifies
|
||||
whether shader draw parameters are supported.
|
||||
|
||||
If the sname:VkPhysicalDeviceShaderDrawParameterFeatures structure is
|
||||
If the sname:VkPhysicalDeviceShaderDrawParametersFeatures structure is
|
||||
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2, it is
|
||||
filled with a value indicating whether the feature is supported.
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceShaderDrawParameterFeatures.txt[]
|
||||
include::../validity/structs/VkPhysicalDeviceShaderDrawParametersFeatures.txt[]
|
||||
--
|
||||
endif::VK_VERSION_1_1[]
|
||||
|
||||
|
@ -1888,14 +1888,15 @@ endif::VK_EXT_memory_priority[]
|
|||
|
||||
ifdef::VK_EXT_buffer_device_address[]
|
||||
|
||||
[open,refpage='VkPhysicalDeviceBufferAddressFeaturesEXT',desc='Structure describing buffer address features that can be supported by an implementation',type='structs']
|
||||
[open,refpage='VkPhysicalDeviceBufferDeviceAddressFeaturesEXT',desc='Structure describing buffer address features that can be supported by an implementation',type='structs']
|
||||
--
|
||||
The sname:VkPhysicalDeviceBufferAddressFeaturesEXT structure is defined as:
|
||||
The sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure is
|
||||
defined as:
|
||||
|
||||
include::../api/structs/VkPhysicalDeviceBufferAddressFeaturesEXT.txt[]
|
||||
include::../api/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.txt[]
|
||||
|
||||
The members of the sname:VkPhysicalDeviceBufferAddressFeaturesEXT structure
|
||||
describe the following features:
|
||||
The members of the sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
|
||||
structure describe the following features:
|
||||
|
||||
* [[features-bufferDeviceAddress]] pname:bufferDeviceAddress indicates
|
||||
that the implementation supports accessing buffer memory in shaders as
|
||||
|
@ -1922,13 +1923,13 @@ support shared GPU virtual addresses for multi-device configurations.
|
|||
|
||||
See flink:vkGetBufferDeviceAddressEXT for more information.
|
||||
|
||||
If the sname:VkPhysicalDeviceBufferAddressFeaturesEXT structure is included
|
||||
in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it is filled
|
||||
with values indicating whether the feature is supported.
|
||||
sname:VkPhysicalDeviceBufferAddressFeaturesEXT can: also be used in the
|
||||
pname:pNext chain of slink:VkDeviceCreateInfo to enable features.
|
||||
If the sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure is
|
||||
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it
|
||||
is filled with values indicating whether the feature is supported.
|
||||
sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT can: also be used in
|
||||
the pname:pNext chain of slink:VkDeviceCreateInfo to enable features.
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceBufferAddressFeaturesEXT.txt[]
|
||||
include::../validity/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.txt[]
|
||||
--
|
||||
|
||||
endif::VK_EXT_buffer_device_address[]
|
||||
|
|
|
@ -127,7 +127,7 @@ http://dx.doi.org/10.1109/IEEESTD.2008.4610935, August, 2008.
|
|||
[[data-format]] A. Garrard, _Khronos Data Format Specification, version
|
||||
1.2_,
|
||||
https://www.khronos.org/registry/DataFormat/specs/1.2/dataformat.1.2.html,
|
||||
September, 2017.
|
||||
March, 2019.
|
||||
|
||||
// If the author name is placed on a standalone line, we see the mysterious
|
||||
// asciidoc error 'list item index: expected 2 got 10'. Apparently the 'A.'
|
||||
|
|
|
@ -11,14 +11,14 @@ Some Vulkan commands specify geometric objects to be drawn or computational
|
|||
work to be performed, while others specify state controlling how objects are
|
||||
handled by the various pipeline stages, or control data transfer between
|
||||
memory organized as images and buffers.
|
||||
ifndef::VK_NV_raytracing[]
|
||||
ifndef::VK_NV_ray_tracing[]
|
||||
Commands are effectively sent through a processing pipeline, either a
|
||||
_graphics pipeline_ or a _compute pipeline_.
|
||||
endif::VK_NV_raytracing[]
|
||||
ifdef::VK_NV_raytracing[]
|
||||
endif::VK_NV_ray_tracing[]
|
||||
ifdef::VK_NV_ray_tracing[]
|
||||
Commands are effectively sent through a processing pipeline, either a
|
||||
_graphics pipeline_, a _compute pipeline_, or a _ray tracing pipeline_.
|
||||
endif::VK_NV_raytracing[]
|
||||
endif::VK_NV_ray_tracing[]
|
||||
|
||||
ifdef::VK_NV_mesh_shader[]
|
||||
The graphics pipeline can be operated in two modes, as either _primitive
|
||||
|
@ -117,14 +117,14 @@ another.
|
|||
[open,refpage='VkPipeline',desc='Opaque handle to a pipeline object',type='handles']
|
||||
--
|
||||
|
||||
ifndef::VK_NV_raytracing[]
|
||||
ifndef::VK_NV_ray_tracing[]
|
||||
Compute and graphics pipelines are each represented by sname:VkPipeline
|
||||
handles:
|
||||
endif::VK_NV_raytracing[]
|
||||
ifdef::VK_NV_raytracing[]
|
||||
endif::VK_NV_ray_tracing[]
|
||||
ifdef::VK_NV_ray_tracing[]
|
||||
Compute, graphics, and ray tracing pipelines are each represented by
|
||||
sname:VkPipeline handles:
|
||||
endif::VK_NV_raytracing[]
|
||||
endif::VK_NV_ray_tracing[]
|
||||
|
||||
include::../api/handles/VkPipeline.txt[]
|
||||
|
||||
|
|
|
@ -23,3 +23,8 @@ using Docbook for PDFs.
|
|||
## Stylesheets
|
||||
|
||||
`khronos.css` is the stylesheet used for HTML output.
|
||||
|
||||
## Chunked Spec Index
|
||||
|
||||
`chunkindex` contains scripts for building and using a search index for the
|
||||
Vulkan chunked HTML specification.
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
ifdef::env-github[]
|
||||
:note-caption: :information_source:
|
||||
endif::[]
|
||||
|
||||
= Index Building For Vulkan Chunked HTML Output
|
||||
|
||||
This directory contains scripts which help a search index, and add a
|
||||
searchbox using this index into each page of the Vulkan chunked HTML
|
||||
specification output. These files include:
|
||||
|
||||
[options="compact"]
|
||||
* README.adoc - this file
|
||||
* build-index.js - build a JSON search index from generate-index.rb output
|
||||
* chunked.css - CSS for the searchbox
|
||||
* chunked.js - Script to load and execute the searchbox
|
||||
* custom.patch - Patch to generated HTML to include chunked.js / chunked.css
|
||||
* generate-index.rb - generate an index of the HTML documents
|
||||
* lunr.js - utility functions taken from the lunr package
|
||||
|
||||
= Credits and Licenses
|
||||
|
||||
The indexing tools and toolchain was created by Baldur Karlsson in
|
||||
https://github.com/baldurk/vkdocs-chunked-builder
|
||||
Files created in that project are under the Apache 2.0 license.
|
||||
|
||||
Portions of the chunked.js script are taken from
|
||||
https://github.com/filamentgroup/loadJS/blob/master/loadJS.js
|
||||
These portions are copyright Scott Jehl, Filament Group, Inc., under an MIT
|
||||
license.
|
||||
|
||||
The lunr.js script is taken from the 'lunr' npm package, version 2.3.6. It
|
||||
is copyright Oliver Nightingale, under an MIT license.
|
|
@ -0,0 +1,43 @@
|
|||
// Copyright (c) 2019 Baldur Karlsson
|
||||
//
|
||||
// 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
|
||||
|
||||
var lunr = require('lunr'),
|
||||
stdin = process.stdin,
|
||||
stdout = process.stdout,
|
||||
buffer = []
|
||||
|
||||
stdin.resume()
|
||||
stdin.setEncoding('utf8')
|
||||
|
||||
stdin.on('data', function (data) {
|
||||
buffer.push(data)
|
||||
})
|
||||
|
||||
stdin.on('end', function () {
|
||||
var documents = JSON.parse(buffer.join(''))
|
||||
|
||||
var idx = lunr(function () {
|
||||
this.ref('id')
|
||||
this.field('title')
|
||||
this.field('body')
|
||||
|
||||
documents.forEach(function (doc) {
|
||||
this.add(doc)
|
||||
}, this)
|
||||
})
|
||||
|
||||
stdout.write("var searchindex = " + JSON.stringify(idx) + ";\n")
|
||||
|
||||
var searchlookup = {};
|
||||
|
||||
for(var i=0; i < documents.length; i++) {
|
||||
searchlookup[documents[i].id] = documents[i].title;
|
||||
}
|
||||
|
||||
stdout.write("var searchlookup = " + JSON.stringify(searchlookup) + ";\n")
|
||||
})
|
|
@ -0,0 +1,82 @@
|
|||
// Copyright (c) 2019 Baldur Karlsson
|
||||
//
|
||||
// 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
|
||||
|
||||
a.headerlink { display: none; text-decoration: none; }
|
||||
|
||||
h2:hover a.headerlink { display: inline; }
|
||||
h3:hover a.headerlink { display: inline; }
|
||||
h4:hover a.headerlink { display: inline; }
|
||||
h5:hover a.headerlink { display: inline; }
|
||||
h6:hover a.headerlink { display: inline; }
|
||||
|
||||
div.searchbox {
|
||||
background-color: white;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) {
|
||||
div#toc {
|
||||
padding-top: 6em !important;
|
||||
}
|
||||
|
||||
div.searchbox {
|
||||
display: block;
|
||||
position: fixed;
|
||||
left: 0px;
|
||||
max-width: 13.5em;
|
||||
padding-left: 20px;
|
||||
padding-top: 20px;
|
||||
margin-top: 0px;
|
||||
top: 0px;
|
||||
//border-bottom: 1px solid black;
|
||||
//box-shadow: 0px 10px 20px -10px #444444;
|
||||
z-index: 1000;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1280px) {
|
||||
div.searchbox {
|
||||
max-width: 18em;
|
||||
}
|
||||
|
||||
div.searchbox input {
|
||||
width: 17em;
|
||||
}
|
||||
}
|
||||
|
||||
div.searchbox div.results {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
div.searchbox label {
|
||||
display: block;
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
div.searchbox input {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
ol#results li a {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.link {
|
||||
position: absolute;
|
||||
z-index: 1000;
|
||||
right: 4em;
|
||||
margin-top: 0.5em;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.listingblock:hover .link {
|
||||
display: block;
|
||||
}
|
|
@ -0,0 +1,185 @@
|
|||
/*! loadJS: load a JS file asynchronously. [c]2014 @scottjehl, Filament Group, Inc. (Based on http://goo.gl/REQGQ by Paul Irish). Licensed MIT */
|
||||
(function( w ){
|
||||
var loadJS = function( src, cb, ordered ){
|
||||
"use strict";
|
||||
var tmp;
|
||||
var ref = w.document.getElementsByTagName( "script" )[ 0 ];
|
||||
var script = w.document.createElement( "script" );
|
||||
|
||||
if (typeof(cb) === 'boolean') {
|
||||
tmp = ordered;
|
||||
ordered = cb;
|
||||
cb = tmp;
|
||||
}
|
||||
|
||||
script.src = src;
|
||||
script.async = !ordered;
|
||||
ref.parentNode.insertBefore( script, ref );
|
||||
|
||||
if (cb && typeof(cb) === "function") {
|
||||
script.onload = cb;
|
||||
}
|
||||
return script;
|
||||
};
|
||||
// commonjs
|
||||
if( typeof module !== "undefined" ){
|
||||
module.exports = loadJS;
|
||||
}
|
||||
else {
|
||||
w.loadJS = loadJS;
|
||||
}
|
||||
}( typeof global !== "undefined" ? global : this ));
|
||||
/*! end loadJS */
|
||||
|
||||
// Remaining portions of this file are
|
||||
//
|
||||
// Copyright (c) 2019 Baldur Karlsson
|
||||
//
|
||||
// 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
|
||||
|
||||
var searchengine = undefined;
|
||||
|
||||
// scroll to the first <a> linking to a chapter
|
||||
function scrollChapter(element, chapter) {
|
||||
for(var i=0; i < element.children.length; i++) {
|
||||
if(element.children[i].nodeName == "A" && element.children[i].href.indexOf(chapter) >= 0) {
|
||||
element.children[i].scrollIntoView(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
if(scrollChapter(element.children[i], chapter))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
var results = undefined;
|
||||
var searchbox = undefined;
|
||||
var searchTimeout = undefined;
|
||||
|
||||
function clearSearch() {
|
||||
while(results.children.length > 0) {
|
||||
results.removeChild(results.children[0]);
|
||||
}
|
||||
|
||||
document.getElementById("resultsdiv").classList.remove("results");
|
||||
}
|
||||
|
||||
function doSearch() {
|
||||
clearSearch();
|
||||
|
||||
var searchtext = searchbox.value;
|
||||
|
||||
if(searchtext == '')
|
||||
return;
|
||||
|
||||
if(searchtext.indexOf(' ') == -1 && searchtext.indexOf('\t') == -1 && searchtext.indexOf('"') == -1)
|
||||
searchtext = searchtext + ' ' + searchtext + '*';
|
||||
|
||||
searchtext = searchtext.replace(/"/g, '')
|
||||
|
||||
var searchresults = searchengine.search(searchtext);
|
||||
|
||||
if(searchresults.length == 0) {
|
||||
var r = document.createElement('LI');
|
||||
r.innerHTML = 'No results';
|
||||
|
||||
results.appendChild(r);
|
||||
}
|
||||
|
||||
document.getElementById("resultsdiv").classList.add("results");
|
||||
|
||||
for(var i=0; i < 10 && i < searchresults.length; i++) {
|
||||
var a = document.createElement('A');
|
||||
a.setAttribute('href', searchresults[i].ref);
|
||||
a.innerHTML = searchlookup[searchresults[i].ref];
|
||||
|
||||
var r = document.createElement('LI');
|
||||
r.appendChild(a);
|
||||
|
||||
results.appendChild(r);
|
||||
}
|
||||
}
|
||||
|
||||
function searchInput(e) {
|
||||
if(searchTimeout !== undefined)
|
||||
clearTimeout(searchTimeout);
|
||||
|
||||
searchTimeout = setTimeout(doSearch, 50);
|
||||
}
|
||||
|
||||
function searchKeyDown(e) {
|
||||
if(e.keyCode == 27) {
|
||||
// escape
|
||||
if(searchTimeout !== undefined)
|
||||
clearTimeout(searchTimeout);
|
||||
|
||||
searchbox.value = '';
|
||||
|
||||
clearSearch();
|
||||
} else if(e.keyCode == 10 || e.keyCode == 13) {
|
||||
// enter/return
|
||||
doSearch();
|
||||
} else if(e.keyCode == 8) {
|
||||
clearSearch();
|
||||
|
||||
searchInput(e);
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
// get the chapter name from the current URL
|
||||
var chap = window.location.pathname.replace(/.*\//, '');
|
||||
|
||||
var toc = document.getElementById("toc");
|
||||
|
||||
// Scroll the sidebar to the appropriate chapter
|
||||
if(chap != "") {
|
||||
scrollChapter(toc, chap);
|
||||
toc.scrollTop -= 96;
|
||||
}
|
||||
|
||||
// add anchor links
|
||||
["h2","h3","h4","h5","h6"].forEach(function(hX) {
|
||||
var headers = document.getElementsByTagName(hX);
|
||||
|
||||
for(var i=0; i < headers.length; i++) {
|
||||
var header = headers[i];
|
||||
if(header.id.length > 0) {
|
||||
header.innerHTML += ' <a class="headerlink" href="#' + header.id + '\">\u00B6</a>';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var blocks = document.getElementsByClassName("listingblock")
|
||||
|
||||
for(var i=0; i < blocks.length; i++) {
|
||||
if(blocks[i].id.length > 0) {
|
||||
var a = document.createElement("A");
|
||||
a.innerHTML = '\u00B6';
|
||||
a.setAttribute('class', 'link');
|
||||
a.setAttribute('href', '#' + blocks[i].id);
|
||||
|
||||
blocks[i].insertBefore(a, blocks[i].childNodes[0]);
|
||||
}
|
||||
}
|
||||
|
||||
results = document.getElementById('results');
|
||||
searchbox = document.getElementById('searchbox');
|
||||
|
||||
loadJS("lunr.js", function() {
|
||||
loadJS(searchindexurl, function() {
|
||||
searchengine = lunr.Index.load(searchindex);
|
||||
|
||||
searchbox.value = '';
|
||||
searchbox.disabled = false;
|
||||
searchbox.addEventListener('keydown', searchKeyDown, false);
|
||||
searchbox.addEventListener('input', searchInput, false);
|
||||
}, true);
|
||||
}, true);
|
||||
});
|
|
@ -0,0 +1,22 @@
|
|||
--- vkspec.html 2018-08-26 12:27:18.567949774 +0100
|
||||
+++ vkspec.html 2018-08-26 13:19:36.665955764 +0100
|
||||
@@ -818,4 +818,7 @@
|
||||
</style>
|
||||
<link rel="stylesheet" href="../katex/katex.min.css">
|
||||
+<link href="chunked.css?4" rel="stylesheet">
|
||||
+<script>var searchindexurl = 'search.index.js?4' + (document.title.replace(/[^0-9.]/g, ''));</script>
|
||||
+<script src="chunked.js?4"></script>
|
||||
<script src="../katex/katex.min.js"></script>
|
||||
<script src="../katex/contrib/auto-render.min.js"></script>
|
||||
@@ -848,4 +851,5 @@
|
||||
<div id="toc" class="toc2">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
+<ul class="sectlevel1"><li><a href="#preamble">0. Preamble</a></li></ul>
|
||||
<ul class="sectlevel1">
|
||||
<li><a href="#introduction">1. Introduction</a>
|
||||
@@ -1233,4 +1237,5 @@
|
||||
</ul>
|
||||
</div>
|
||||
+<div class="searchbox"><label for="searchbox">Search: </label><input id="searchbox" type="text" disabled="disabled" value="Loading Search Data" /><div id="resultsdiv"><ol id="results"></ol></div></div>
|
||||
</div>
|
||||
<div id="content">
|
|
@ -0,0 +1,64 @@
|
|||
#!/usr/bin/env ruby
|
||||
#
|
||||
# Copyright (c) 2019 Baldur Karlsson
|
||||
#
|
||||
# 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
|
||||
|
||||
require 'pp'
|
||||
require 'json'
|
||||
|
||||
data = []
|
||||
|
||||
ARGV.each do |file|
|
||||
|
||||
curdata = nil
|
||||
extappendix = false
|
||||
curext = ""
|
||||
|
||||
File.readlines(file).each do |line|
|
||||
|
||||
text = line.gsub(/<\/?[^>]*>/, "")
|
||||
|
||||
# Special case - set up high quality results for given structs
|
||||
if line =~ /div id="([vV][kK][^"]*)"/ then
|
||||
id = $1
|
||||
|
||||
data << { :id => File.basename(file) + "#" + id, :title => id, :body => id }
|
||||
end
|
||||
|
||||
if line =~ /h[0-9]\s*id="([^"]*)"/ then
|
||||
|
||||
id = $1
|
||||
|
||||
if curdata != nil then
|
||||
data << curdata
|
||||
end
|
||||
|
||||
if text =~ /Appendix.*Extensions/ then
|
||||
extappendix = true
|
||||
end
|
||||
|
||||
if extappendix and text =~ /^VK_.*/ then
|
||||
curext = text
|
||||
elsif curext != "" then
|
||||
text = "#{curext.strip} - #{text}"
|
||||
end
|
||||
|
||||
curdata = { :id => File.basename(file) + "#" + id, :title => text, :body => "" }
|
||||
elsif curdata != nil then
|
||||
curdata[:body] += " " + text
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if curdata != nil then
|
||||
data << curdata
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
puts JSON.generate(data)
|
File diff suppressed because it is too large
Load Diff
|
@ -1,2 +1,2 @@
|
|||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 2682
|
||||
startVUID = 2684
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
ifdef::env-github[]
|
||||
:note-caption: :information_source:
|
||||
endif::[]
|
||||
|
||||
= Vulkan^(R)^ API Header Tests
|
||||
|
||||
This directory contains simple compilation tests used by the CI script
|
||||
(../.gitlab-ci.yml) for the Vulkan C headers generated here, and the
|
||||
Vulkan-Hpp C++ headers generated by that project:
|
||||
|
||||
[options="compact"]
|
||||
* htest.c - test C headers, including all Vulkan platform headers
|
||||
** ggp_c/, wayland-client.h, windows.h, X11/, xcb/, zircon/ - fake platform
|
||||
headers used when compiling in an environment without the actual
|
||||
platform headers.
|
||||
* hpptest.cpp - test C++ headers
|
||||
|
||||
The 'make test' target in ../xml also builds the C header test.
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef _X11_XLIB_H_
|
||||
#define _X11_XLIB_H_
|
||||
|
||||
// "X11/Xlib.h" for non-X11 compilation environment
|
||||
|
||||
typedef int Display;
|
||||
typedef int Window;
|
||||
typedef int VisualID;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef _XRANDR_H_
|
||||
#define _XRANDR_H_
|
||||
|
||||
// "X11/extensions/Xrandr.h" for non-X11 compilation environment
|
||||
|
||||
typedef int RROutput;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,4 @@
|
|||
// "ggp_c/vulkan_types.h" for non-GGP compilation environment
|
||||
|
||||
typedef int GgpStreamDescriptor;
|
||||
typedef int GgpFrameToken;
|
|
@ -0,0 +1,7 @@
|
|||
#include <vulkan/vulkan.hpp>
|
||||
int main()
|
||||
{
|
||||
auto const instance_info = vk::InstanceCreateInfo();
|
||||
vk::Instance instance;
|
||||
vk::createInstance(&instance_info, nullptr, &instance);
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
//% gcc -c -Wall -I. -I../include htest.c
|
||||
|
||||
// Simple compilation test for Vulkan headers, including all platform
|
||||
// headers.
|
||||
// To allow compilation in environments without one or more platforms, fake
|
||||
// headers for different platforms are supplied. They provide just the types
|
||||
// Vulkan platforms require.
|
||||
// When a new Vulkan platform is defined, the corresponding USE_PLATFORM
|
||||
// header definition, and any supporting fake platform headers, should be
|
||||
// defined here, along with a trivial compilation test using a Vulkan type
|
||||
// or function specific to that platform.
|
||||
|
||||
// Enable each platform when vulkan.h is included
|
||||
|
||||
#define VK_USE_PLATFORM_ANDROID_KHR // No headers needed
|
||||
#define VK_USE_PLATFORM_FUCHSIA // <zircon/types.h>
|
||||
#define VK_USE_PLATFORM_GGP // <ggp_c/vulkan_types.h>
|
||||
#define VK_USE_PLATFORM_IOS_MVK // No headers needed
|
||||
#define VK_USE_PLATFORM_MACOS_MVK // No headers needed
|
||||
#define VK_USE_PLATFORM_METAL_EXT // No headers needed
|
||||
#define VK_USE_PLATFORM_VI_NN // No headers needed
|
||||
#define VK_USE_PLATFORM_WAYLAND_KHR // <wayland-client.h>
|
||||
#define VK_USE_PLATFORM_WIN32_KHR // <windows.h>
|
||||
#define VK_USE_PLATFORM_XCB_KHR // <xcb/xcb.h>
|
||||
#define VK_USE_PLATFORM_XLIB_KHR // <X11/Xlib.h>
|
||||
#define VK_USE_PLATFORM_XLIB_XRANDR_EXT // <X11/extensions/Xrandr.h>
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
// Sanity check with a type or function from each platform header in turn
|
||||
|
||||
VkAndroidSurfaceCreateFlagsKHR android_flags;
|
||||
VkImagePipeSurfaceCreateFlagsFUCHSIA fuchsia_flags;
|
||||
VkStreamDescriptorSurfaceCreateFlagsGGP ggp_flags;
|
||||
VkIOSSurfaceCreateFlagsMVK ios_flags;
|
||||
VkMacOSSurfaceCreateFlagsMVK macos_flags;
|
||||
VkMetalSurfaceCreateFlagsEXT metal_flags;
|
||||
VkViSurfaceCreateFlagsNN vi_flags;
|
||||
VkWaylandSurfaceCreateFlagsKHR wayland_flags;
|
||||
VkWin32SurfaceCreateFlagsKHR win32_flags;
|
||||
VkXcbSurfaceCreateFlagsKHR xcb_flags;
|
||||
VkXlibSurfaceCreateFlagsKHR xlib_flags;
|
||||
|
||||
int main(void) {
|
||||
const VkInstanceCreateInfo instance_info = {
|
||||
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
|
||||
.pNext = NULL,
|
||||
.flags = 0,
|
||||
.pApplicationInfo = NULL,
|
||||
.enabledLayerCount = 0,
|
||||
.ppEnabledLayerNames = NULL,
|
||||
.enabledExtensionCount = 0,
|
||||
.ppEnabledExtensionNames = NULL,
|
||||
};
|
||||
VkInstance instance;
|
||||
vkCreateInstance(&instance_info, NULL, &instance);
|
||||
vkDestroyInstance(instance, NULL);
|
||||
|
||||
// Test XLIB_XRANDR_EXT platform, which doesn't define a new type
|
||||
VkResult xrandr_result = vkAcquireXlibDisplayEXT((VkPhysicalDevice)0, (Display *)NULL, (VkDisplayKHR)0);
|
||||
|
||||
(void)xrandr_result;
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
// "windows.h" for non-Windows compilation environment
|
||||
typedef int DWORD;
|
||||
typedef int HANDLE;
|
||||
typedef int HINSTANCE;
|
||||
typedef int HMONITOR;
|
||||
typedef int HWND;
|
||||
typedef int LPCWSTR;
|
||||
typedef int SECURITY_ATTRIBUTES;
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
// "xcb/xcb.h" for non-X11 compilation environment
|
||||
|
||||
typedef int xcb_connection_t;
|
||||
typedef int xcb_window_t;
|
||||
typedef int xcb_visualid_t;
|
|
@ -0,0 +1,3 @@
|
|||
// "zircon/types.h" for non-Zircon compilation environment
|
||||
|
||||
typedef int zx_handle_t;
|
11
xml/Makefile
11
xml/Makefile
|
@ -37,6 +37,7 @@ GENOPTS =
|
|||
# clean - remove installed and intermediate files.
|
||||
|
||||
INCLUDE = ../include
|
||||
TESTS = ../tests
|
||||
VULKAN = $(INCLUDE)/vulkan
|
||||
SRC = ../src
|
||||
|
||||
|
@ -81,11 +82,11 @@ validate:
|
|||
TESTDEFS = -DVK_USE_PLATFORM_XCB_KHR -DVK_USE_PLATFORM_XLIB_KHR
|
||||
|
||||
test: $(HEADERS) $(VULKAN)/vulkan.h $(VULKAN)/vk_platform.h
|
||||
gcc -Wall -pedantic -std=c99 -c -I$(INCLUDE) test.c
|
||||
g++ -Wall -c -std=c++98 -I$(INCLUDE) test.c
|
||||
g++ -Wall -c -std=c++11 -I$(INCLUDE) test.c
|
||||
gcc $(TESTDEFS) -Wall -pedantic -std=c99 -c -I$(INCLUDE) test.c
|
||||
rm test.o
|
||||
gcc -Wall -std=c99 -c -I$(INCLUDE) -I$(TESTS) $(TESTS)/htest.c
|
||||
gcc -Wall -std=c11 -c -I$(INCLUDE) -I$(TESTS) $(TESTS)/htest.c
|
||||
g++ -Wall -c -std=c++98 -I$(INCLUDE) -I$(TESTS) $(TESTS)/htest.c
|
||||
g++ -Wall -c -std=c++11 -I$(INCLUDE) -I$(TESTS) $(TESTS)/htest.c
|
||||
rm -f $(TESTS)/test.o
|
||||
|
||||
################################################
|
||||
|
||||
|
|
44
xml/test.c
44
xml/test.c
|
@ -1,44 +0,0 @@
|
|||
/*% gcc -Wall -I.. -c test.c
|
||||
* Tiny test to make sure vulkan.h compiles.
|
||||
* Should be compiled with one or more platform-specific defines enabled:
|
||||
*
|
||||
* VK_USE_PLATFORM_ANDROID_KHR
|
||||
* VK_USE_PLATFORM_IOS_MVK
|
||||
* VK_USE_PLATFORM_MACOS_MVK
|
||||
* VK_USE_PLATFORM_MIR_KHR
|
||||
* VK_USE_PLATFORM_VI_NN
|
||||
* VK_USE_PLATFORM_WAYLAND_KHR
|
||||
* VK_USE_PLATFORM_WIN32_KHR
|
||||
* VK_USE_PLATFORM_XCB_KHR
|
||||
* VK_USE_PLATFORM_XLIB_KHR
|
||||
*
|
||||
* This relies on the model that all platform extensions go into a
|
||||
* corresponding platform-specific header, so their presence can be tested.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include "vulkan/vulkan.h"
|
||||
|
||||
int main(int ac, const char **av) {
|
||||
VkStructureType sType;
|
||||
VkResult result;
|
||||
|
||||
// Suppress warnings about unused variables
|
||||
(void)sType; (void)result;
|
||||
|
||||
sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
|
||||
result = VK_SUBOPTIMAL_KHR;
|
||||
result = VK_ERROR_OUT_OF_DATE_KHR;
|
||||
|
||||
printf("VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 0x%08x\n",
|
||||
(unsigned int)VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR);
|
||||
printf("VK_SUBOPTIMAL_KHR = 0x%08x\n",
|
||||
(unsigned int)VK_SUBOPTIMAL_KHR);
|
||||
printf("VK_ERROR_OUT_OF_DATE_KHR = 0x%08x\n",
|
||||
(unsigned int)VK_ERROR_OUT_OF_DATE_KHR);
|
||||
printf("VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x%08x\n",
|
||||
(unsigned int)VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT);
|
||||
printf("VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 0x%08x\n",
|
||||
(unsigned int)VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR);
|
||||
|
||||
return 0;
|
||||
}
|
37
xml/vk.xml
37
xml/vk.xml
|
@ -153,7 +153,7 @@ server.
|
|||
<type category="define">// Vulkan 1.1 version number
|
||||
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 105</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 106</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
|
@ -2046,13 +2046,15 @@ typedef void <name>CAMetalLayer</name>;
|
|||
<member noautovalidity="true"><type>VkExtent2D</type> <name>extent</name><comment>Dimensions of a rectangle that has not changed, in pixels of a presentation images</comment></member>
|
||||
<member><type>uint32_t</type> <name>layer</name><comment>Layer of a swapchain's image(s), for stereoscopic-3D images</comment></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceVariablePointerFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<type category="struct" name="VkPhysicalDeviceVariablePointersFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>variablePointersStorageBuffer</name></member>
|
||||
<member><type>VkBool32</type> <name>variablePointers</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceVariablePointerFeaturesKHR" alias="VkPhysicalDeviceVariablePointerFeatures"/>
|
||||
<type category="struct" name="VkPhysicalDeviceVariablePointersFeaturesKHR" alias="VkPhysicalDeviceVariablePointersFeatures"/>
|
||||
<type category="struct" name="VkPhysicalDeviceVariablePointerFeaturesKHR" alias="VkPhysicalDeviceVariablePointersFeatures"/>
|
||||
<type category="struct" name="VkPhysicalDeviceVariablePointerFeatures" alias="VkPhysicalDeviceVariablePointersFeatures"/>
|
||||
<type category="struct" name="VkExternalMemoryProperties" returnedonly="true">
|
||||
<member><type>VkExternalMemoryFeatureFlags</type> <name>externalMemoryFeatures</name></member>
|
||||
<member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member>
|
||||
|
@ -2971,11 +2973,12 @@ typedef void <name>CAMetalLayer</name>;
|
|||
<member><type>VkBool32</type> <name>supported</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDescriptorSetLayoutSupportKHR" alias="VkDescriptorSetLayoutSupport"/>
|
||||
<type category="struct" name="VkPhysicalDeviceShaderDrawParameterFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<type category="struct" name="VkPhysicalDeviceShaderDrawParametersFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderDrawParameters</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceShaderDrawParameterFeatures" alias="VkPhysicalDeviceShaderDrawParametersFeatures"/>
|
||||
<type category="struct" name="VkPhysicalDeviceFloat16Int8FeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
|
@ -3761,13 +3764,14 @@ typedef void <name>CAMetalLayer</name>;
|
|||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>float</type> <name>priority</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceBufferAddressFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>bufferDeviceAddress</name></member>
|
||||
<member><type>VkBool32</type> <name>bufferDeviceAddressCaptureReplay</name></member>
|
||||
<member><type>VkBool32</type> <name>bufferDeviceAddressMultiDevice</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceBufferAddressFeaturesEXT" alias="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT"/>
|
||||
<type category="struct" name="VkBufferDeviceAddressInfoEXT">
|
||||
<member values="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
|
@ -6932,6 +6936,7 @@ typedef void <name>CAMetalLayer</name>;
|
|||
</command>
|
||||
<command>
|
||||
<proto><type>void</type> <name>vkSetLocalDimmingAMD</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param><type>VkSwapchainKHR</type> <name>swapChain</name></param>
|
||||
<param><type>VkBool32</type> <name>localDimmingEnable</name></param>
|
||||
</command>
|
||||
|
@ -7720,8 +7725,10 @@ typedef void <name>CAMetalLayer</name>;
|
|||
<type name="VkPhysicalDeviceMultiviewProperties"/>
|
||||
</require>
|
||||
<require comment="Promoted from VK_KHR_variable_pointers">
|
||||
<enum extends="VkStructureType" extnumber="121" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"/>
|
||||
<enum extends="VkStructureType" extnumber="121" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"/>
|
||||
<type name="VkPhysicalDeviceVariablePointerFeatures"/>
|
||||
<type name="VkPhysicalDeviceVariablePointersFeatures"/>
|
||||
</require>
|
||||
<require comment="Originally based on VK_KHR_protected_memory (extension 146), which was never published; thus the mystifying large value= numbers below. These are not aliased since they weren't actually promoted from an extension.">
|
||||
<enum extends="VkStructureType" extnumber="146" offset="0" name="VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"/>
|
||||
|
@ -7890,8 +7897,10 @@ typedef void <name>CAMetalLayer</name>;
|
|||
<command name="vkGetDescriptorSetLayoutSupport"/>
|
||||
</require>
|
||||
<require comment="Promoted from VK_KHR_shader_draw_parameters, with a feature support query added">
|
||||
<enum extends="VkStructureType" extnumber="64" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"/>
|
||||
<enum extends="VkStructureType" extnumber="64" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"/>
|
||||
<type name="VkPhysicalDeviceShaderDrawParameterFeatures"/>
|
||||
<type name="VkPhysicalDeviceShaderDrawParametersFeatures"/>
|
||||
</require>
|
||||
</feature>
|
||||
|
||||
|
@ -9312,7 +9321,9 @@ typedef void <name>CAMetalLayer</name>;
|
|||
<enum value="1" name="VK_KHR_VARIABLE_POINTERS_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_variable_pointers"" name="VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"/>
|
||||
<type name="VkPhysicalDeviceVariablePointerFeaturesKHR"/>
|
||||
<type name="VkPhysicalDeviceVariablePointersFeaturesKHR"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_get_display_properties2" number="122" type="instance" requires="VK_KHR_display" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
|
||||
|
@ -10028,6 +10039,8 @@ typedef void <name>CAMetalLayer</name>;
|
|||
<require>
|
||||
<enum value="0" name="VK_QCOM_extension_172_SPEC_VERSION"/>
|
||||
<enum value=""VK_QCOM_extension_172"" name="VK_QCOM_extension_172_EXTENSION_NAME"/>
|
||||
<enum bitpos="2" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_RESERVED_2_BIT_QCOM"/>
|
||||
<enum bitpos="3" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_RESERVED_3_BIT_QCOM"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_QCOM_extension_173" number="173" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
|
||||
|
@ -10601,13 +10614,15 @@ typedef void <name>CAMetalLayer</name>;
|
|||
<require>
|
||||
<enum value="2" name="VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_buffer_device_address"" name="VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT"/>
|
||||
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"/>
|
||||
<enum bitpos="17" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"/>
|
||||
<enum bitpos="4" extends="VkBufferCreateFlagBits" name="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"/>
|
||||
<enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_INVALID_DEVICE_ADDRESS_EXT"/>
|
||||
<type name="VkPhysicalDeviceBufferAddressFeaturesEXT"/>
|
||||
<type name="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT"/>
|
||||
<type name="VkBufferDeviceAddressInfoEXT"/>
|
||||
<type name="VkBufferDeviceAddressCreateInfoEXT"/>
|
||||
<command name="vkGetBufferDeviceAddressEXT"/>
|
||||
|
|
Loading…
Reference in New Issue