Change log for December 16, 2018 Vulkan 1.1.96 spec update:
* Update release number to 96. Public Issues: * Fix typo in `vk.xml` for `structextends` attribute of slink:VkPhysicalDeviceShadingRateImagePropertiesNV (public PR 870). * Fix links in optimized PDF output (public PR 879). Internal Issues: * Add a link to GitHub contributors in the <<credits, Other Credits>> section (internal issue 808). * Clarify the behavior of command aliases described in the <<versions,Core Revisions>> and <<initialization-functionpointers, Command Function Pointers>> sections and the registry schema document with respect to whether they are or are not the same entry point, and what the behaviour of the ftext:vkGet*ProcAddr commands is for each alias (internal issue 1462). * Update slink:VkPipelineShaderStageCreateInfo valid usage statements for writing to code:Layer and code:viewportIndex to apply to any vertex processing stage (internal issue 1475). * Make sparse image creation optional for Y'C~B~C~R~ formats in the <<features-required-format-support, Required Format Support>> section and the <<features-formats-requiring-sampler-ycbcr-conversion, Formats requiring sampler Y'C~B~C~R~ conversion for ename:VK_IMAGE_ASPECT_COLOR_BIT image views>> table (internal issue 1476). * Modify the valid usage statement for flink:vkCmdDrawIndirectByteCountEXT::pname:vertexStride to use the pname:maxTransformFeedbackBufferDataStride limit rather than the pname:maxVertexInputBindingStride limit, which is a better match for transform feedback related operations (internal issue 1487). * Changed all members of slink:VkPhysicalDevicePCIBusInfoPropertiesEXT to have the `uint32_t` type. This is an imcompatible change to an EXT that's very recently released; although this is against usual Vulkan WG policy, we discussed and consider this an acceptable risk, but have polled the mesa-dev list in case there are use cases we missed (internal issue 1492). * Set spec vetsion to 1 for `VK_GOOGLE_hlsl_functionality1` and `VK_GOOGLE_decorate_string` in `vk.xml` (internal MR 2948). * Remove redundant valid usage statement `VkImageCreateInfo-pNext-02395` (internal MR 2950). * Add `check_spec_links.py` script, use it in Gitlab CI, and fix many minor markup issues discovered by the script (internal MR 2955). * Update `BUILD.md` to the current Ruby version (2.5.3), and make some corresponding updates to per-platform build instructions (internal MR 2956). * Fix binding numbers and other details in flink:vkUpdateDescriptorSetWithTemplate.txt example code blocks (internal MR 2960). * Remove some nautovalidity="true" in `vk.xml` for NV extensions where it's clearly wrong (internal MR 2970).
This commit is contained in:
parent
56c5c6965e
commit
b557dd2167
|
@ -65,3 +65,7 @@ xml/diag.txt
|
||||||
|
|
||||||
# Auto-generated files
|
# Auto-generated files
|
||||||
# */timeMarker
|
# */timeMarker
|
||||||
|
|
||||||
|
# check_spec_links (and its tests) output
|
||||||
|
applyfixes.sh
|
||||||
|
xml/.cache
|
||||||
|
|
|
@ -5,11 +5,20 @@ spec-generate:
|
||||||
stage: build
|
stage: build
|
||||||
before_script:
|
before_script:
|
||||||
- apt-get update -qq
|
- apt-get update -qq
|
||||||
- apt-get install -y -qq gcc git python3 ruby
|
- apt-get install -y -qq gcc git python3 python3-termcolor python3-pytest ruby
|
||||||
- apt-get install -y -qq cmake bison flex libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev ttf-lyx
|
- apt-get install -y -qq cmake bison flex libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev ttf-lyx
|
||||||
- gem install asciidoctor asciidoctor-mathematical coderay json-schema
|
- gem install asciidoctor asciidoctor-mathematical coderay json-schema
|
||||||
script:
|
script:
|
||||||
- ./makeAllExts QUIET= -j${nproc} -Otarget html styleguide registry manhtmlpages checkinc checklinks validusage
|
- ./makeAllExts QUIET= -j${nproc} -Otarget html styleguide registry manhtmlpages checkinc checklinks validusage
|
||||||
|
# Internal self-test of the script
|
||||||
|
- ( cd xml && py.test-3 )
|
||||||
|
- xml/check_spec_links.py --html=out/checks/problems.html > /dev/null || true
|
||||||
|
# Breaking the build if # of errors increases. We should manually ratchet ignore_count down as errors get fixed.
|
||||||
|
# If there are unfixable errors, add '--ignore_count #' where '#' is the
|
||||||
|
# number of them. This is a slightly crude way of enforcing "don't add
|
||||||
|
# errors" but simpler than the alternatives (running against master,
|
||||||
|
# diff, etc)
|
||||||
|
- xml/check_spec_links.py -Werror
|
||||||
artifacts:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
paths:
|
paths:
|
||||||
|
|
52
BUILD.adoc
52
BUILD.adoc
|
@ -427,7 +427,7 @@ work at least as well.
|
||||||
|
|
||||||
* GNU make (`make` version: 4.0.8-1; older versions probably OK)
|
* GNU make (`make` version: 4.0.8-1; older versions probably OK)
|
||||||
* Python 3 (`python`, version: 3.4.2)
|
* Python 3 (`python`, version: 3.4.2)
|
||||||
* Ruby (`ruby`, version: 2.3.3)
|
* Ruby (`ruby`, version: 2.5.3)
|
||||||
** The Ruby development package (`ruby-dev`) may also be required in some
|
** The Ruby development package (`ruby-dev`) may also be required in some
|
||||||
environments.
|
environments.
|
||||||
* Git command-line client (`git`, version: 2.1.4).
|
* Git command-line client (`git`, version: 2.1.4).
|
||||||
|
@ -448,9 +448,10 @@ environment managers below.
|
||||||
Please read the remainder of this document (other than platform-specific
|
Please read the remainder of this document (other than platform-specific
|
||||||
parts you don't use) completely before trying to install.
|
parts you don't use) completely before trying to install.
|
||||||
|
|
||||||
* Asciidoctor (`asciidoctor`, version: 1.5.6.1)
|
* Asciidoctor (`asciidoctor`, version: 1.5.8)
|
||||||
* Coderay (`coderay`, version 1.1.2)
|
* Coderay (`coderay`, version 1.1.2)
|
||||||
* JSON Schema (`json-schema`, version 2.8.0)
|
* JSON Schema (`json-schema`, version 2.8.1)
|
||||||
|
* Asciidoctor Diagram (`asciidoctor-diagram`, version: 1.5.11)
|
||||||
* Asciidoctor PDF (`asciidoctor-pdf`, version: 1.5.0.alpha16)
|
* Asciidoctor PDF (`asciidoctor-pdf`, version: 1.5.0.alpha16)
|
||||||
* Asciidoctor Mathematical (`asciidoctor-mathematical`, version 0.2.2)
|
* Asciidoctor Mathematical (`asciidoctor-mathematical`, version 0.2.2)
|
||||||
* https://github.com/asciidoctor/asciidoctor-mathematical#dependencies[Dependencies
|
* https://github.com/asciidoctor/asciidoctor-mathematical#dependencies[Dependencies
|
||||||
|
@ -468,8 +469,8 @@ parts you don't use) completely before trying to install.
|
||||||
====
|
====
|
||||||
Older versions of these packages may work, but are not recommended.
|
Older versions of these packages may work, but are not recommended.
|
||||||
In particular, the latest versions of `asciidoctor-pdf` and
|
In particular, the latest versions of `asciidoctor-pdf` and
|
||||||
`asciidoctor-mathematical` contain important patches working around issues
|
`asciidoctor-mathematical` often solve problems we've encountered in older
|
||||||
we've discovered, and those patches may not be present in earlier versions.
|
versions.
|
||||||
====
|
====
|
||||||
|
|
||||||
Only the `asciidoctor` and `coderay` gems are needed for the HTML `make`
|
Only the `asciidoctor` and `coderay` gems are needed for the HTML `make`
|
||||||
|
@ -669,7 +670,7 @@ System dependencies can be installed via apt:
|
||||||
----
|
----
|
||||||
sudo apt install build-essential python3 git cmake bison flex \
|
sudo apt install build-essential python3 git cmake bison flex \
|
||||||
libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev \
|
libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev \
|
||||||
libpango1.0-dev fonts-lyx ghostscript
|
libpango1.0-dev fonts-lyx ghostscript libreadline-dev
|
||||||
----
|
----
|
||||||
|
|
||||||
[NOTE]
|
[NOTE]
|
||||||
|
@ -733,11 +734,8 @@ The following ruby gems can be installed directly via the `gem install`
|
||||||
command, once the platform is set up:
|
command, once the platform is set up:
|
||||||
|
|
||||||
----
|
----
|
||||||
gem install asciidoctor coderay json-schema
|
gem install --no-rdoc --no-ri asciidoctor coderay json-schema asciidoctor-mathematical asciidoctor-diagram
|
||||||
|
gem install --no-rdoc --no-ri --pre asciidoctor-pdf
|
||||||
# Required only for pdf builds
|
|
||||||
gem install asciidoctor-mathematical
|
|
||||||
gem install --pre asciidoctor-pdf
|
|
||||||
----
|
----
|
||||||
|
|
||||||
Depending on Ruby environment `gem` may require `sudo`.
|
Depending on Ruby environment `gem` may require `sudo`.
|
||||||
|
@ -748,7 +746,7 @@ by passing `--no-rdoc --no-ri` arguments.
|
||||||
It may be beneficial to use updated packages via:
|
It may be beneficial to use updated packages via:
|
||||||
|
|
||||||
----
|
----
|
||||||
gem update
|
gem update --no-rdoc --no-ri
|
||||||
gem clean
|
gem clean
|
||||||
----
|
----
|
||||||
|
|
||||||
|
@ -829,7 +827,7 @@ If you already have the gem dependencies previously installed, if there are
|
||||||
new versions, then updating to them instead might help:
|
new versions, then updating to them instead might help:
|
||||||
|
|
||||||
----
|
----
|
||||||
$ gem update
|
$ gem update --no-rdoc --no-ri
|
||||||
----
|
----
|
||||||
|
|
||||||
*ruby-enum*
|
*ruby-enum*
|
||||||
|
@ -913,7 +911,6 @@ version of Ruby environment.
|
||||||
[NOTE]
|
[NOTE]
|
||||||
.Note
|
.Note
|
||||||
====
|
====
|
||||||
|
|
||||||
* If you are new to Ruby, you should *completely remove* (through the
|
* If you are new to Ruby, you should *completely remove* (through the
|
||||||
package manager, e.g. `sudo apt purge *packagename*`) all existing
|
package manager, e.g. `sudo apt purge *packagename*`) all existing
|
||||||
Ruby and asciidoctor infrastructure on your machine before trying to use
|
Ruby and asciidoctor infrastructure on your machine before trying to use
|
||||||
|
@ -968,7 +965,7 @@ sudo apt-get install autoconf bison build-essential libssl-dev \
|
||||||
libffi-dev libgdbm3 libgdbm-dev cmake libxml2 \
|
libffi-dev libgdbm3 libgdbm-dev cmake libxml2 \
|
||||||
libxml2-dev flex pkg-config libglib2.0-dev \
|
libxml2-dev flex pkg-config libglib2.0-dev \
|
||||||
libcairo-dev libpango1.0-dev libgdk-pixbuf2.0-dev \
|
libcairo-dev libpango1.0-dev libgdk-pixbuf2.0-dev \
|
||||||
libpangocairo-1.0
|
libpangocairo-1.0 libreadline-dev
|
||||||
|
|
||||||
# Install rbenv from https://github.com/rbenv/rbenv
|
# Install rbenv from https://github.com/rbenv/rbenv
|
||||||
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
||||||
|
@ -990,27 +987,22 @@ echo 'eval "$(rbenv init -)"' >> .bashrc
|
||||||
|
|
||||||
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
|
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
|
||||||
|
|
||||||
# Install Ruby 2.3.3
|
# Install Ruby 2.5.3 (current as of this writing; earlier may work)
|
||||||
# This takes in excess of 20 min. to build!
|
# Setting RUBY_CONFIGURE_OPTS dramatically cuts the install time, see
|
||||||
# https://github.com/rbenv/ruby-build/issues/1054#issuecomment-276934761
|
# https://github.com/rbenv/ruby-build/issues/1054#issuecomment-276934761
|
||||||
# suggests:
|
RUBY_CONFIGURE_OPTS=--disable-install-doc
|
||||||
# "You can speed up Ruby installs by avoiding generating ri/RDoc
|
export RUBY_CONFIGURE_OPTS
|
||||||
# documentation for them:
|
rbenv install 2.5.3
|
||||||
# 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.5.3.
|
||||||
|
echo "2.5.3" > ~/.rbenv/version
|
||||||
# Configure rbenv globally to always use Ruby 2.3.3.
|
|
||||||
echo "2.3.3" > ~/.rbenv/version
|
|
||||||
|
|
||||||
# Finally, install toolchain components.
|
# Finally, install toolchain components.
|
||||||
# asciidoctor-mathematical also takes in excess of 20 min. to build!
|
# asciidoctor-mathematical also takes in excess of 20 min. to build!
|
||||||
# The same RUBY_CONFIGURE_OPTS advice above may apply here as well.
|
# The same RUBY_CONFIGURE_OPTS advice above may apply here as well.
|
||||||
|
|
||||||
gem install asciidoctor coderay json-schema
|
gem install --no-rdoc --no-ri asciidoctor coderay json-schema asciidoctor-mathematical asciidoctor-diagram
|
||||||
gem install --pre asciidoctor-pdf
|
gem install --no-rdoc --no-ri --pre asciidoctor-pdf
|
||||||
MATHEMATICAL_SKIP_STRDUP=1 gem install asciidoctor-mathematical
|
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|
||||||
|
@ -1035,6 +1027,8 @@ correctly on future launches.
|
||||||
[[history]]
|
[[history]]
|
||||||
== Revision History
|
== Revision History
|
||||||
|
|
||||||
|
* 2018-12-04 - Update Rbenv and ruby gem installation instructions and
|
||||||
|
package dependencies for Linux and Ubuntu/Windows 10.
|
||||||
* 2018-10-25 - Update Troubleshooting, and Windows and Linux build. Plus
|
* 2018-10-25 - Update Troubleshooting, and Windows and Linux build. Plus
|
||||||
random editing.
|
random editing.
|
||||||
* 2018-03-13 - Rename to BUILD.adoc and update for new directory
|
* 2018-03-13 - Rename to BUILD.adoc and update for new directory
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -115,7 +115,7 @@ VERBOSE =
|
||||||
# ADOCOPTS options for asciidoc->HTML5 output
|
# ADOCOPTS options for asciidoc->HTML5 output
|
||||||
|
|
||||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||||
PATCHVERSION = 95
|
PATCHVERSION = 96
|
||||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||||
else
|
else
|
||||||
|
|
|
@ -52,7 +52,7 @@ None.
|
||||||
|
|
||||||
=== New Enums
|
=== New Enums
|
||||||
|
|
||||||
* elink:VkPipelineRasterizationConservativeStateCreateFlagsEXT
|
* tlink:VkPipelineRasterizationConservativeStateCreateFlagsEXT
|
||||||
* elink:VkConservativeRasterizationModeEXT
|
* elink:VkConservativeRasterizationModeEXT
|
||||||
|
|
||||||
=== New Structures
|
=== New Structures
|
||||||
|
|
|
@ -47,7 +47,7 @@ None.
|
||||||
|
|
||||||
=== New Enums
|
=== New Enums
|
||||||
|
|
||||||
* elink:VkPipelineDiscardRectangleStateCreateFlagsEXT
|
* tlink:VkPipelineDiscardRectangleStateCreateFlagsEXT
|
||||||
* elink:VkDiscardRectangleModeEXT
|
* elink:VkDiscardRectangleModeEXT
|
||||||
|
|
||||||
=== New Structures
|
=== New Structures
|
||||||
|
|
|
@ -23,7 +23,7 @@ slink:VkSurfaceKHR object.
|
||||||
|
|
||||||
=== New Enums
|
=== New Enums
|
||||||
|
|
||||||
* elink:VkSurfaceCounterFlagsEXT
|
* tlink:VkSurfaceCounterFlagsEXT
|
||||||
* elink:VkSurfaceCounterFlagBitsEXT
|
* elink:VkSurfaceCounterFlagBitsEXT
|
||||||
|
|
||||||
=== New Structures
|
=== New Structures
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
include::meta/VK_EXT_pci_bus_info.txt[]
|
include::meta/VK_EXT_pci_bus_info.txt[]
|
||||||
|
|
||||||
*Last Modified Date*::
|
*Last Modified Date*::
|
||||||
2018-10-11
|
2018-12-10
|
||||||
*IP Status*::
|
*IP Status*::
|
||||||
No known IP claims.
|
No known IP claims.
|
||||||
*Contributors*::
|
*Contributors*::
|
||||||
|
@ -53,5 +53,7 @@ None.
|
||||||
|
|
||||||
=== Version History
|
=== Version History
|
||||||
|
|
||||||
|
* Revision 2, 2018-12-10 (Daniel Rakos)
|
||||||
|
- Changed all members of the new structure to have the uint32_t type
|
||||||
* Revision 1, 2018-10-11 (Daniel Rakos)
|
* Revision 1, 2018-10-11 (Daniel Rakos)
|
||||||
- Initial revision
|
- Initial revision
|
||||||
|
|
|
@ -80,7 +80,7 @@ None.
|
||||||
|
|
||||||
=== New Enums
|
=== New Enums
|
||||||
|
|
||||||
* elink:VkPipelineRasterizationStateStreamCreateFlagsEXT
|
* tlink:VkPipelineRasterizationStateStreamCreateFlagsEXT
|
||||||
|
|
||||||
=== New Structures
|
=== New Structures
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ slink:VkShaderModule.
|
||||||
=== New Enums
|
=== New Enums
|
||||||
|
|
||||||
* elink:VkValidationCacheHeaderVersionEXT
|
* elink:VkValidationCacheHeaderVersionEXT
|
||||||
* elink:VkValidationCacheCreateFlagsEXT
|
* tlink:VkValidationCacheCreateFlagsEXT
|
||||||
|
|
||||||
=== New Structures
|
=== New Structures
|
||||||
|
|
||||||
|
|
|
@ -125,9 +125,9 @@ Options for defining this transition include:
|
||||||
* A new structure that can be added to the pname:pNext list in
|
* A new structure that can be added to the pname:pNext list in
|
||||||
slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier, and
|
slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier, and
|
||||||
slink:VkImageMemoryBarrier.
|
slink:VkImageMemoryBarrier.
|
||||||
* A new bit in elink:VkAccessFlags that can be set to indicate an
|
* A new bit in tlink:VkAccessFlags that can be set to indicate an
|
||||||
"`external`" access.
|
"`external`" access.
|
||||||
* A new bit in elink:VkDependencyFlags
|
* A new bit in tlink:VkDependencyFlags
|
||||||
* A new special queue family that represents an "`external`" queue.
|
* A new special queue family that represents an "`external`" queue.
|
||||||
|
|
||||||
A new structure has the advantage that the type of external transition can
|
A new structure has the advantage that the type of external transition can
|
||||||
|
@ -144,11 +144,11 @@ purpose.
|
||||||
However, there is no obvious pipeline stage that would correspond to an
|
However, there is no obvious pipeline stage that would correspond to an
|
||||||
external access, and therefore no clear way to use
|
external access, and therefore no clear way to use
|
||||||
ename:VK_ACCESS_MEMORY_READ_BIT or ename:VK_ACCESS_MEMORY_WRITE_BIT.
|
ename:VK_ACCESS_MEMORY_READ_BIT or ename:VK_ACCESS_MEMORY_WRITE_BIT.
|
||||||
elink:VkDependencyFlags and elink:VkPipelineStageFlags operate at command
|
tlink:VkDependencyFlags and tlink:VkPipelineStageFlags operate at command
|
||||||
granularity rather than image or buffer granularity, which would make an
|
granularity rather than image or buffer granularity, which would make an
|
||||||
entire pipeline barrier an internal->external or external->internal barrier.
|
entire pipeline barrier an internal->external or external->internal barrier.
|
||||||
This may not be a problem in practice, but seems like the wrong scope.
|
This may not be a problem in practice, but seems like the wrong scope.
|
||||||
Another downside of elink:VkDependencyFlags is that it lacks inherent
|
Another downside of tlink:VkDependencyFlags is that it lacks inherent
|
||||||
directionality: There are not ptext:src and ptext:dst variants of it in the
|
directionality: There are not ptext:src and ptext:dst variants of it in the
|
||||||
barrier or dependency description semantics, so two bits might need to be
|
barrier or dependency description semantics, so two bits might need to be
|
||||||
added to describe both internal->external and external->internal
|
added to describe both internal->external and external->internal
|
||||||
|
|
|
@ -83,8 +83,8 @@ etc.).
|
||||||
|
|
||||||
=== New Flag Types
|
=== New Flag Types
|
||||||
|
|
||||||
* elink:VkIndirectCommandsLayoutUsageFlagsNVX
|
* tlink:VkIndirectCommandsLayoutUsageFlagsNVX
|
||||||
* elink:VkObjectEntryUsageFlagsNVX
|
* tlink:VkObjectEntryUsageFlagsNVX
|
||||||
|
|
||||||
=== New Enum Constants
|
=== New Enum Constants
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ None.
|
||||||
|
|
||||||
=== New Enums
|
=== New Enums
|
||||||
|
|
||||||
* elink:VkPipelineCoverageToColorStateCreateFlagsNV
|
* tlink:VkPipelineCoverageToColorStateCreateFlagsNV
|
||||||
|
|
||||||
=== New Structures
|
=== New Structures
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ None.
|
||||||
=== New Enums
|
=== New Enums
|
||||||
|
|
||||||
* elink:VkCoverageModulationModeNV
|
* elink:VkCoverageModulationModeNV
|
||||||
* elink:VkPipelineCoverageModulationStateCreateFlagsNV
|
* tlink:VkPipelineCoverageModulationStateCreateFlagsNV
|
||||||
|
|
||||||
=== New Structures
|
=== New Structures
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ None.
|
||||||
=== New Enums
|
=== New Enums
|
||||||
|
|
||||||
* elink:VkViewportCoordinateSwizzleNV
|
* elink:VkViewportCoordinateSwizzleNV
|
||||||
* elink:VkPipelineViewportSwizzleStateCreateFlagsNV
|
* tlink:VkPipelineViewportSwizzleStateCreateFlagsNV
|
||||||
|
|
||||||
=== New Structures
|
=== New Structures
|
||||||
|
|
||||||
|
|
|
@ -228,9 +228,12 @@ their name.
|
||||||
|
|
||||||
== Other Credits
|
== Other Credits
|
||||||
|
|
||||||
In addition to the Working Group, the Vulkan Advisory Panel members provided
|
The Vulkan Advisory Panel members provided important real-world usage
|
||||||
important real-world usage information and advice that helped guide design
|
information and advice that helped guide design decisions.
|
||||||
decisions.
|
|
||||||
|
The wider Vulkan community have provided useful feedback, questions and spec
|
||||||
|
changes that have helped improve the quality of the Specification via
|
||||||
|
link:https://github.com/KhronosGroup/Vulkan-Docs/graphs/contributors[GitHub].
|
||||||
|
|
||||||
Administrative support to the Working Group for Vulkan 1.1 was provided by
|
Administrative support to the Working Group for Vulkan 1.1 was provided by
|
||||||
Khronos staff including Angela Cheng, Ann Thorsnes, Emily Stearns, Liz
|
Khronos staff including Angela Cheng, Ann Thorsnes, Emily Stearns, Liz
|
||||||
|
|
|
@ -20,6 +20,23 @@ Any differences between the core and extension version of the functionality
|
||||||
will be documented in the extension appendix, and mentioned briefly in the
|
will be documented in the extension appendix, and mentioned briefly in the
|
||||||
version description in this appendix.
|
version description in this appendix.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
.Note
|
||||||
|
====
|
||||||
|
For structure and enumeration aliases, the aliased extension type is
|
||||||
|
semantically identical to the new core type.
|
||||||
|
The C99 headers simply `typedef` the aliases to the core types.
|
||||||
|
|
||||||
|
For command aliases, however, there are two separate entry point
|
||||||
|
definitions, due to the fact that the C99 ABI has no way to alias command
|
||||||
|
definitions without resorting to the preprocessor.
|
||||||
|
Calling via either entry point definition will produce identical behavior
|
||||||
|
within the bounds of the specification, and should still invoke the same
|
||||||
|
entry point in the implementation.
|
||||||
|
Debug tools may use separate entry points with different debug behavior; to
|
||||||
|
write the appropriate command name to an output log, for instance.
|
||||||
|
====
|
||||||
|
|
||||||
It's possible to build the specification for earlier versions, but to aid
|
It's possible to build the specification for earlier versions, but to aid
|
||||||
readability of the latest versions, this appendix gives an overview of the
|
readability of the latest versions, this appendix gives an overview of the
|
||||||
changes as compared to earlier versions.
|
changes as compared to earlier versions.
|
||||||
|
@ -231,19 +248,19 @@ command to <<vkEnumerateInstanceVersion, enumerate the instance version>>.
|
||||||
* elink:VkSemaphoreImportFlagBits
|
* elink:VkSemaphoreImportFlagBits
|
||||||
* elink:VkSubgroupFeatureFlagBits
|
* elink:VkSubgroupFeatureFlagBits
|
||||||
* elink:VkTessellationDomainOrigin
|
* elink:VkTessellationDomainOrigin
|
||||||
* elink:VkCommandPoolTrimFlags
|
* tlink:VkCommandPoolTrimFlags
|
||||||
* elink:VkDescriptorUpdateTemplateCreateFlags
|
* tlink:VkDescriptorUpdateTemplateCreateFlags
|
||||||
* elink:VkExternalFenceFeatureFlags
|
* tlink:VkExternalFenceFeatureFlags
|
||||||
* elink:VkExternalFenceHandleTypeFlags
|
* tlink:VkExternalFenceHandleTypeFlags
|
||||||
* elink:VkExternalMemoryFeatureFlags
|
* tlink:VkExternalMemoryFeatureFlags
|
||||||
* elink:VkExternalMemoryHandleTypeFlags
|
* tlink:VkExternalMemoryHandleTypeFlags
|
||||||
* elink:VkExternalSemaphoreFeatureFlags
|
* tlink:VkExternalSemaphoreFeatureFlags
|
||||||
* elink:VkExternalSemaphoreHandleTypeFlags
|
* tlink:VkExternalSemaphoreHandleTypeFlags
|
||||||
* elink:VkFenceImportFlags
|
* tlink:VkFenceImportFlags
|
||||||
* elink:VkMemoryAllocateFlags
|
* tlink:VkMemoryAllocateFlags
|
||||||
* elink:VkPeerMemoryFeatureFlags
|
* tlink:VkPeerMemoryFeatureFlags
|
||||||
* elink:VkSemaphoreImportFlags
|
* tlink:VkSemaphoreImportFlags
|
||||||
* elink:VkSubgroupFeatureFlags
|
* tlink:VkSubgroupFeatureFlags
|
||||||
|
|
||||||
|
|
||||||
=== New Structures
|
=== New Structures
|
||||||
|
|
|
@ -296,7 +296,7 @@ endif::VK_KHR_shared_presentable_image[]
|
||||||
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277]]
|
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277]]
|
||||||
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
||||||
pname:queueFamilyIndexCount basetype:uint32_t values
|
pname:queueFamilyIndexCount code:uint32_t values
|
||||||
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278]]
|
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278]]
|
||||||
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
pname:queueFamilyIndexCount must: be greater than `1`
|
pname:queueFamilyIndexCount must: be greater than `1`
|
||||||
|
|
|
@ -100,13 +100,13 @@ include::../../api/structs/VkCmdProcessCommandsInfoNVX.txt[]
|
||||||
If pname:targetCommandBuffer is `NULL` an implicit reservation as well
|
If pname:targetCommandBuffer is `NULL` an implicit reservation as well
|
||||||
as execution takes place on the processing sname:VkCommandBuffer.
|
as execution takes place on the processing sname:VkCommandBuffer.
|
||||||
* pname:sequencesCountBuffer can: be slink:VkBuffer from which the actual
|
* pname:sequencesCountBuffer can: be slink:VkBuffer from which the actual
|
||||||
amount of sequences is sourced from as ftext:uint32_t value.
|
amount of sequences is sourced from as code:uint32_t value.
|
||||||
* pname:sequencesCountOffset is the byte offset into
|
* pname:sequencesCountOffset is the byte offset into
|
||||||
pname:sequencesCountBuffer where the count value is stored.
|
pname:sequencesCountBuffer where the count value is stored.
|
||||||
* pname:sequencesIndexBuffer must: be set if
|
* pname:sequencesIndexBuffer must: be set if
|
||||||
pname:indirectCommandsLayout's
|
pname:indirectCommandsLayout's
|
||||||
ename:VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX is set
|
ename:VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX is set
|
||||||
and provides the used sequence indices as ftext:uint32_t array.
|
and provides the used sequence indices as code:uint32_t array.
|
||||||
Otherwise it must: be dlink:VK_NULL_HANDLE.
|
Otherwise it must: be dlink:VK_NULL_HANDLE.
|
||||||
* pname:sequencesIndexOffset is the byte offset into
|
* pname:sequencesIndexOffset is the byte offset into
|
||||||
pname:sequencesIndexBuffer where the index values start.
|
pname:sequencesIndexBuffer where the index values start.
|
||||||
|
|
|
@ -11,14 +11,14 @@ include::../../api/handles/VkObjectTableNVX.txt[]
|
||||||
|
|
||||||
This is required as the CPU-side object pointers, for example when binding a
|
This is required as the CPU-side object pointers, for example when binding a
|
||||||
sname:VkPipeline or sname:VkDescriptorSet, cannot be used by the device.
|
sname:VkPipeline or sname:VkDescriptorSet, cannot be used by the device.
|
||||||
The combination of sname:VkObjectTableNVX and ftext:uint32_t table indices
|
The combination of sname:VkObjectTableNVX and code:uint32_t table indices
|
||||||
stored inside a sname:VkBuffer serve that purpose during device command
|
stored inside a sname:VkBuffer serve that purpose during device command
|
||||||
generation.
|
generation.
|
||||||
|
|
||||||
At creation time the table is defined with a fixed amount of registration
|
At creation time the table is defined with a fixed amount of registration
|
||||||
slots for the individual resource types.
|
slots for the individual resource types.
|
||||||
A detailed resource binding can then later be registered via
|
A detailed resource binding can then later be registered via
|
||||||
flink:vkRegisterObjectsNVX at any ftext:uint32_t index below the allocated
|
flink:vkRegisterObjectsNVX at any code:uint32_t index below the allocated
|
||||||
maximum.
|
maximum.
|
||||||
|
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ include::../../validity/protos/vkDestroyObjectTableNVX.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
Resource bindings of Vulkan objects are registered at an arbitrary
|
Resource bindings of Vulkan objects are registered at an arbitrary
|
||||||
ftext:uint32_t index within an object table.
|
code:uint32_t index within an object table.
|
||||||
As long as the object table references such objects, they must: not be
|
As long as the object table references such objects, they must: not be
|
||||||
deleted.
|
deleted.
|
||||||
|
|
||||||
|
|
|
@ -325,7 +325,7 @@ pname:indexCount.
|
||||||
pname:indexType must: be ename:VK_INDEX_TYPE_UINT16,
|
pname:indexType must: be ename:VK_INDEX_TYPE_UINT16,
|
||||||
ename:VK_INDEX_TYPE_UINT32, or ename:VK_INDEX_TYPE_NONE_NV
|
ename:VK_INDEX_TYPE_UINT32, or ename:VK_INDEX_TYPE_NONE_NV
|
||||||
* [[VUID-VkGeometryTrianglesNV-indexData-02434]]
|
* [[VUID-VkGeometryTrianglesNV-indexData-02434]]
|
||||||
pname:indexData must: be ename:VK_NULL_HANDLE if pname:indexType is
|
pname:indexData must: be dlink:VK_NULL_HANDLE if pname:indexType is
|
||||||
ename:VK_INDEX_TYPE_NONE_NV
|
ename:VK_INDEX_TYPE_NONE_NV
|
||||||
* [[VUID-VkGeometryTrianglesNV-indexData-02435]]
|
* [[VUID-VkGeometryTrianglesNV-indexData-02435]]
|
||||||
pname:indexData must: be a valid sname:VkBuffer handle if
|
pname:indexData must: be a valid sname:VkBuffer handle if
|
||||||
|
|
|
@ -401,7 +401,7 @@ bytes of data.
|
||||||
The value contributed by this instance to the hit shader binding table
|
The value contributed by this instance to the hit shader binding table
|
||||||
index computation as code:instanceShaderBindingTableRecordOffset.
|
index computation as code:instanceShaderBindingTableRecordOffset.
|
||||||
* pname:flags The high 8 bits of the same integer as pname:instanceOffset.
|
* pname:flags The high 8 bits of the same integer as pname:instanceOffset.
|
||||||
slink:VkGeometryInstanceFlagBitsNV values that apply to this instance.
|
elink:VkGeometryInstanceFlagBitsNV values that apply to this instance.
|
||||||
* pname:accelerationStructure.
|
* pname:accelerationStructure.
|
||||||
The 8 byte value returned by flink:vkGetAccelerationStructureHandleNV
|
The 8 byte value returned by flink:vkGetAccelerationStructureHandleNV
|
||||||
for the bottom level acceleration structure referred to by this
|
for the bottom level acceleration structure referred to by this
|
||||||
|
@ -535,7 +535,7 @@ include::../../api/protos/vkCmdBuildAccelerationStructureNV.txt[]
|
||||||
greater than or equal to the number of vertices, indices, and AABBs.
|
greater than or equal to the number of vertices, indices, and AABBs.
|
||||||
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02489]]
|
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02489]]
|
||||||
If pname:update is ename:VK_TRUE, pname:src must: not be
|
If pname:update is ename:VK_TRUE, pname:src must: not be
|
||||||
ename:VK_NULL_HANDLE
|
dlink:VK_NULL_HANDLE
|
||||||
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02490]]
|
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02490]]
|
||||||
If pname:update is ename:VK_TRUE, pname:src must: have been built before
|
If pname:update is ename:VK_TRUE, pname:src must: have been built before
|
||||||
with ename:VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV set in
|
with ename:VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV set in
|
||||||
|
|
|
@ -615,11 +615,11 @@ include::../api/structs/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.txt[]
|
||||||
* pname:bindingCount is zero or the number of elements in
|
* pname:bindingCount is zero or the number of elements in
|
||||||
pname:pBindingFlags.
|
pname:pBindingFlags.
|
||||||
* pname:pBindingFlags is a pointer to an array of
|
* pname:pBindingFlags is a pointer to an array of
|
||||||
elink:VkDescriptorBindingFlagsEXT bitfields, one for each descriptor set
|
tlink:VkDescriptorBindingFlagsEXT bitfields, one for each descriptor set
|
||||||
layout binding.
|
layout binding.
|
||||||
|
|
||||||
If pname:bindingCount is zero or if this structure is not in the pname:pNext
|
If pname:bindingCount is zero or if this structure is not in the pname:pNext
|
||||||
chain, the elink:VkDescriptorBindingFlagsEXT for each descriptor set layout
|
chain, the tlink:VkDescriptorBindingFlagsEXT for each descriptor set layout
|
||||||
binding is considered to be zero.
|
binding is considered to be zero.
|
||||||
Otherwise, the descriptor set layout binding at
|
Otherwise, the descriptor set layout binding at
|
||||||
slink:VkDescriptorSetLayoutCreateInfo::pname:pBindings[i] uses the flags in
|
slink:VkDescriptorSetLayoutCreateInfo::pname:pBindings[i] uses the flags in
|
||||||
|
@ -3506,12 +3506,12 @@ const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
|
||||||
1, // descriptorCount
|
1, // descriptorCount
|
||||||
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType
|
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType
|
||||||
offsetof(AppDataStructure, imageInfo), // offset
|
offsetof(AppDataStructure, imageInfo), // offset
|
||||||
0 // stride is not required if descriptorCount is 1.
|
0 // stride is not required if descriptorCount is 1
|
||||||
},
|
},
|
||||||
|
|
||||||
// binding to an array of buffer descriptors
|
// binding to an array of buffer descriptors
|
||||||
{
|
{
|
||||||
0, // binding
|
1, // binding
|
||||||
0, // dstArrayElement
|
0, // dstArrayElement
|
||||||
3, // descriptorCount
|
3, // descriptorCount
|
||||||
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // descriptorType
|
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // descriptorType
|
||||||
|
@ -3521,11 +3521,12 @@ const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
|
||||||
|
|
||||||
// binding to an array of buffer views
|
// binding to an array of buffer views
|
||||||
{
|
{
|
||||||
0, // binding
|
2, // binding
|
||||||
3, // dstArrayElement
|
0, // dstArrayElement
|
||||||
1, // descriptorCount
|
2, // descriptorCount
|
||||||
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, // descriptorType
|
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, // descriptorType
|
||||||
offsetof(AppDataStructure, bufferView), // offset
|
offsetof(AppDataStructure, bufferView) +
|
||||||
|
offsetof(AppBufferView, bufferView), // offset
|
||||||
sizeof(AppBufferView) // stride, bufferViews do not have to be compact
|
sizeof(AppBufferView) // stride, bufferViews do not have to be compact
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -3844,11 +3845,6 @@ include::../validity/protos/vkCmdPushDescriptorSetWithTemplateKHR.txt[]
|
||||||
[source,c++]
|
[source,c++]
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
|
|
||||||
struct AppBufferView {
|
|
||||||
VkBufferView bufferView;
|
|
||||||
uint32_t applicationRelatedInformation;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct AppDataStructure
|
struct AppDataStructure
|
||||||
{
|
{
|
||||||
VkDescriptorImageInfo imageInfo; // a single image info
|
VkDescriptorImageInfo imageInfo; // a single image info
|
||||||
|
@ -3864,9 +3860,8 @@ const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
|
||||||
1, // descriptorCount
|
1, // descriptorCount
|
||||||
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType
|
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType
|
||||||
offsetof(AppDataStructure, imageInfo), // offset
|
offsetof(AppDataStructure, imageInfo), // offset
|
||||||
0 // stride is not required if descriptorCount is 1.
|
0 // stride is not required if descriptorCount is 1
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// create a descriptor update template for descriptor set updates
|
// create a descriptor update template for descriptor set updates
|
||||||
|
|
|
@ -829,6 +829,7 @@ endif::VK_KHR_device_group_creation[]
|
||||||
If pname:physicalDeviceCount is `1`, then pname:subsetAllocation must:
|
If pname:physicalDeviceCount is `1`, then pname:subsetAllocation must:
|
||||||
be ename:VK_FALSE.
|
be ename:VK_FALSE.
|
||||||
|
|
||||||
|
include::../validity/structs/VkPhysicalDeviceGroupProperties.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
endif::VK_VERSION_1_1,VK_KHR_device_group_creation[]
|
endif::VK_VERSION_1_1,VK_KHR_device_group_creation[]
|
||||||
|
@ -1539,7 +1540,7 @@ ifdef::VK_VERSION_1_1[]
|
||||||
--
|
--
|
||||||
|
|
||||||
To retrieve a handle to a slink:VkQueue object with specific
|
To retrieve a handle to a slink:VkQueue object with specific
|
||||||
pname:VkDeviceQueueCreateFlags creation flags, call:
|
tlink:VkDeviceQueueCreateFlags creation flags, call:
|
||||||
|
|
||||||
include::../api/protos/vkGetDeviceQueue2.txt[]
|
include::../api/protos/vkGetDeviceQueue2.txt[]
|
||||||
|
|
||||||
|
@ -1563,7 +1564,7 @@ include::../api/structs/VkDeviceQueueInfo2.txt[]
|
||||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||||
The pname:pNext chain of sname:VkDeviceQueueInfo2 is used to provide
|
The pname:pNext chain of sname:VkDeviceQueueInfo2 is used to provide
|
||||||
additional image parameters to fname:vkGetDeviceQueue2.
|
additional image parameters to fname:vkGetDeviceQueue2.
|
||||||
* pname:flags is a elink:VkDeviceQueueCreateFlags value indicating the
|
* pname:flags is a tlink:VkDeviceQueueCreateFlags value indicating the
|
||||||
flags used to create the device queue.
|
flags used to create the device queue.
|
||||||
* pname:queueFamilyIndex is the index of the queue family to which the
|
* pname:queueFamilyIndex is the index of the queue family to which the
|
||||||
queue belongs.
|
queue belongs.
|
||||||
|
|
|
@ -2292,7 +2292,7 @@ The effective pname:firstVertex is zero.
|
||||||
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackDraw
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackDraw
|
||||||
* [[VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289]]
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289]]
|
||||||
pname:vertexStride must be less than or equal to
|
pname:vertexStride must be less than or equal to
|
||||||
slink:VkPhysicalDeviceLimits::pname:maxVertexInputBindingStride
|
slink:VkPhysicalDeviceLimits::pname:maxTransformFeedbackBufferDataStride
|
||||||
* [[VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290]]
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290]]
|
||||||
pname:counterBuffer must: have been created with the
|
pname:counterBuffer must: have been created with the
|
||||||
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||||
|
@ -2494,7 +2494,7 @@ include::../api/structs/VkConditionalRenderingBeginInfoEXT.txt[]
|
||||||
rendering.
|
rendering.
|
||||||
* pname:offset is the byte offset into pname:buffer where the predicate is
|
* pname:offset is the byte offset into pname:buffer where the predicate is
|
||||||
located.
|
located.
|
||||||
* pname:flags is a bitmask of elink:VkConditionalRenderingFlagsEXT
|
* pname:flags is a bitmask of tlink:VkConditionalRenderingFlagsEXT
|
||||||
specifying the behavior of conditional rendering.
|
specifying the behavior of conditional rendering.
|
||||||
|
|
||||||
If the 32-bit value at pname:offset in pname:buffer memory is zero, then the
|
If the 32-bit value at pname:offset in pname:buffer memory is zero, then the
|
||||||
|
|
|
@ -264,7 +264,7 @@ ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to
|
||||||
indicate that not all the available properties were returned.
|
indicate that not all the available properties were returned.
|
||||||
|
|
||||||
Because the list of available layers may change externally between calls to
|
Because the list of available layers may change externally between calls to
|
||||||
pname:vkEnumerateInstanceExtensionProperties, two calls may retrieve
|
flink:vkEnumerateInstanceExtensionProperties, two calls may retrieve
|
||||||
different results if a pname:pLayerName is available in one call but not in
|
different results if a pname:pLayerName is available in one call but not in
|
||||||
another.
|
another.
|
||||||
The extensions supported by a layer may also change between two calls, e.g.
|
The extensions supported by a layer may also change between two calls, e.g.
|
||||||
|
|
|
@ -4225,16 +4225,16 @@ whether or not the feature is enabled.
|
||||||
| code:uint32_t | pname:maxFramebufferWidth | -
|
| code:uint32_t | pname:maxFramebufferWidth | -
|
||||||
| code:uint32_t | pname:maxFramebufferHeight | -
|
| code:uint32_t | pname:maxFramebufferHeight | -
|
||||||
| code:uint32_t | pname:maxFramebufferLayers | -
|
| code:uint32_t | pname:maxFramebufferLayers | -
|
||||||
| elink:VkSampleCountFlags | pname:framebufferColorSampleCounts | -
|
| tlink:VkSampleCountFlags | pname:framebufferColorSampleCounts | -
|
||||||
| elink:VkSampleCountFlags | pname:framebufferDepthSampleCounts | -
|
| tlink:VkSampleCountFlags | pname:framebufferDepthSampleCounts | -
|
||||||
| elink:VkSampleCountFlags | pname:framebufferStencilSampleCounts | -
|
| tlink:VkSampleCountFlags | pname:framebufferStencilSampleCounts | -
|
||||||
| elink:VkSampleCountFlags | pname:framebufferNoAttachmentsSampleCounts | -
|
| tlink:VkSampleCountFlags | pname:framebufferNoAttachmentsSampleCounts | -
|
||||||
| code:uint32_t | pname:maxColorAttachments | -
|
| code:uint32_t | pname:maxColorAttachments | -
|
||||||
| elink:VkSampleCountFlags | pname:sampledImageColorSampleCounts | -
|
| tlink:VkSampleCountFlags | pname:sampledImageColorSampleCounts | -
|
||||||
| elink:VkSampleCountFlags | pname:sampledImageIntegerSampleCounts | -
|
| tlink:VkSampleCountFlags | pname:sampledImageIntegerSampleCounts | -
|
||||||
| elink:VkSampleCountFlags | pname:sampledImageDepthSampleCounts | -
|
| tlink:VkSampleCountFlags | pname:sampledImageDepthSampleCounts | -
|
||||||
| elink:VkSampleCountFlags | pname:sampledImageStencilSampleCounts | -
|
| tlink:VkSampleCountFlags | pname:sampledImageStencilSampleCounts | -
|
||||||
| elink:VkSampleCountFlags | pname:storageImageSampleCounts | pname:shaderStorageImageMultisample
|
| tlink:VkSampleCountFlags | pname:storageImageSampleCounts | pname:shaderStorageImageMultisample
|
||||||
| code:uint32_t | pname:maxSampleMaskWords | -
|
| code:uint32_t | pname:maxSampleMaskWords | -
|
||||||
| basetype:VkBool32 | pname:timestampComputeAndGraphics | -
|
| basetype:VkBool32 | pname:timestampComputeAndGraphics | -
|
||||||
| code:float | pname:timestampPeriod | -
|
| code:float | pname:timestampPeriod | -
|
||||||
|
@ -4259,11 +4259,11 @@ ifdef::VK_EXT_sampler_filter_minmax[]
|
||||||
| basetype:VkBool32 | pname:filterMinmaxImageComponentMapping | `<<VK_EXT_sampler_filter_minmax>>`
|
| basetype:VkBool32 | pname:filterMinmaxImageComponentMapping | `<<VK_EXT_sampler_filter_minmax>>`
|
||||||
endif::VK_EXT_sampler_filter_minmax[]
|
endif::VK_EXT_sampler_filter_minmax[]
|
||||||
ifdef::VK_EXT_conservative_rasterization[]
|
ifdef::VK_EXT_conservative_rasterization[]
|
||||||
| basetype:float | pname:primitiveOverestimationSize | `<<VK_EXT_conservative_rasterization>>`
|
| code:float | pname:primitiveOverestimationSize | `<<VK_EXT_conservative_rasterization>>`
|
||||||
| basetype:VkBool32 | pname:maxExtraPrimitiveOverestimationSize | `<<VK_EXT_conservative_rasterization>>`
|
| basetype:VkBool32 | pname:maxExtraPrimitiveOverestimationSize | `<<VK_EXT_conservative_rasterization>>`
|
||||||
| basetype:float | pname:extraPrimitiveOverestimationSizeGranularity | `<<VK_EXT_conservative_rasterization>>`
|
| code:float | pname:extraPrimitiveOverestimationSizeGranularity | `<<VK_EXT_conservative_rasterization>>`
|
||||||
| basetype:VkBool32 | pname:degenerateTriangleRasterized | `<<VK_EXT_conservative_rasterization>>`
|
| basetype:VkBool32 | pname:degenerateTriangleRasterized | `<<VK_EXT_conservative_rasterization>>`
|
||||||
| basetype:float | pname:degenerateLinesRasterized | `<<VK_EXT_conservative_rasterization>>`
|
| code:float | pname:degenerateLinesRasterized | `<<VK_EXT_conservative_rasterization>>`
|
||||||
| basetype:VkBool32 | pname:fullyCoveredFragmentShaderInputVariable | `<<VK_EXT_conservative_rasterization>>`
|
| basetype:VkBool32 | pname:fullyCoveredFragmentShaderInputVariable | `<<VK_EXT_conservative_rasterization>>`
|
||||||
| basetype:VkBool32 | pname:conservativeRasterizationPostDepthCoverage | `<<VK_EXT_conservative_rasterization>>`
|
| basetype:VkBool32 | pname:conservativeRasterizationPostDepthCoverage | `<<VK_EXT_conservative_rasterization>>`
|
||||||
endif::VK_EXT_conservative_rasterization[]
|
endif::VK_EXT_conservative_rasterization[]
|
||||||
|
@ -6027,8 +6027,8 @@ endianness.
|
||||||
^|R ^|G ^|B ^|A 13+>s|etext:VK_FORMAT_R8G8B8A8_*
|
^|R ^|G ^|B ^|A 13+>s|etext:VK_FORMAT_R8G8B8A8_*
|
||||||
^|B ^|G ^|R ^|A 13+>s|etext:VK_FORMAT_B8G8R8A8_*
|
^|B ^|G ^|R ^|A 13+>s|etext:VK_FORMAT_B8G8R8A8_*
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
^|G~0~ ^|B ^|G~1~ ^|R 13+>s|etext:VK_FORMAT_G8B8G8R8_422_UNORM
|
^|G~0~ ^|B ^|G~1~ ^|R 13+>s|ename:VK_FORMAT_G8B8G8R8_422_UNORM
|
||||||
^|B ^|G~0~ ^|R ^|G~1~ 13+>s|etext:VK_FORMAT_B8G8R8G8_422_UNORM
|
^|B ^|G~0~ ^|R ^|G~1~ 13+>s|ename:VK_FORMAT_B8G8R8G8_422_UNORM
|
||||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
2+^|R 15+>s|etext:VK_FORMAT_R16_*
|
2+^|R 15+>s|etext:VK_FORMAT_R16_*
|
||||||
2+^|R 2+^|G 13+>s|etext:VK_FORMAT_R16G16_*
|
2+^|R 2+^|G 13+>s|etext:VK_FORMAT_R16G16_*
|
||||||
|
@ -6040,7 +6040,7 @@ etext:VK_FORMAT_G12X4B12X4G12X4R12X4_4PACK16_422_UNORM
|
||||||
etext:VK_FORMAT_G16B16G16R16_UNORM
|
etext:VK_FORMAT_G16B16G16R16_UNORM
|
||||||
2+^|B 2+^|G~0~ 2+^|R 2+^|G~1~ 9+>s|etext:VK_FORMAT_B10X6G10X6R10X6G10X6_4PACK16_422_UNORM
|
2+^|B 2+^|G~0~ 2+^|R 2+^|G~1~ 9+>s|etext:VK_FORMAT_B10X6G10X6R10X6G10X6_4PACK16_422_UNORM
|
||||||
etext:VK_FORMAT_B12X4G12X4R12X4G12X4_4PACK16_422_UNORM
|
etext:VK_FORMAT_B12X4G12X4R12X4G12X4_4PACK16_422_UNORM
|
||||||
etext:VK_FORMAT_B16G16R16G16_422_UNORM
|
ename:VK_FORMAT_B16G16R16G16_422_UNORM
|
||||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
4+^|R 13+>s|etext:VK_FORMAT_R32_*
|
4+^|R 13+>s|etext:VK_FORMAT_R32_*
|
||||||
4+^|R 4+^|G 9+>s|etext:VK_FORMAT_R32G32_*
|
4+^|R 4+^|G 9+>s|etext:VK_FORMAT_R32G32_*
|
||||||
|
@ -7039,7 +7039,7 @@ pname:drmFormatModifierPlaneCount) is distinct from its _format planecount_
|
||||||
(in the sense of
|
(in the sense of
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
|
||||||
Y'C~B~C~R~ formats).
|
Y'C~B~C~R~ formats).
|
||||||
In elink:VkImageAspectFlags, each
|
In tlink:VkImageAspectFlags, each
|
||||||
etext:VK_IMAGE_ASPECT_MEMORY_PLANE___i___BIT_EXT represents a _memory plane_
|
etext:VK_IMAGE_ASPECT_MEMORY_PLANE___i___BIT_EXT represents a _memory plane_
|
||||||
and each etext:VK_IMAGE_ASPECT_PLANE___i___BIT a _format plane_.
|
and each etext:VK_IMAGE_ASPECT_PLANE___i___BIT a _format plane_.
|
||||||
|
|
||||||
|
@ -7119,8 +7119,9 @@ queried using the flink:vkGetPhysicalDeviceFormatProperties command.
|
||||||
[NOTE]
|
[NOTE]
|
||||||
.Note
|
.Note
|
||||||
====
|
====
|
||||||
The required formats are supported for all elink:VkImageCreateFlags values
|
Unless otherwise excluded below, the required formats are supported for all
|
||||||
as long as those flag values are otherwise allowed.
|
tlink:VkImageCreateFlags values as long as those flag values are otherwise
|
||||||
|
allowed.
|
||||||
====
|
====
|
||||||
|
|
||||||
The following tables show which feature bits must: be supported for each
|
The following tables show which feature bits must: be supported for each
|
||||||
|
@ -7723,6 +7724,16 @@ s| Format s| Planes
|
||||||
12+| Format features marked {sym1} must: be supported only if slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures is enabled
|
12+| Format features marked {sym1} must: be supported only if slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures is enabled
|
||||||
|====
|
|====
|
||||||
|
|
||||||
|
Implementations are not required to support the
|
||||||
|
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
|
||||||
|
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or
|
||||||
|
ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT tlink:VkImageCreateFlags for the
|
||||||
|
above formats that require <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
|
||||||
|
conversion>>.
|
||||||
|
To determine whether the implementation supports sparse image creation flags
|
||||||
|
with these formats use flink:vkGetPhysicalDeviceImageFormatProperties or
|
||||||
|
flink:vkGetPhysicalDeviceImageFormatProperties2.
|
||||||
|
|
||||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
|
|
||||||
ifdef::VK_EXT_fragment_density_map[]
|
ifdef::VK_EXT_fragment_density_map[]
|
||||||
|
@ -7778,9 +7789,9 @@ returns ename:VK_ERROR_FORMAT_NOT_SUPPORTED.
|
||||||
|
|
||||||
The limitations on an image format that are reported by
|
The limitations on an image format that are reported by
|
||||||
fname:vkGetPhysicalDeviceImageFormatProperties have the following property:
|
fname:vkGetPhysicalDeviceImageFormatProperties have the following property:
|
||||||
if code:usage1 and code:usage2 of type elink:VkImageUsageFlags are such that
|
if code:usage1 and code:usage2 of type tlink:VkImageUsageFlags are such that
|
||||||
the bits set in code:usage1 are a subset of the bits set in code:usage2, and
|
the bits set in code:usage1 are a subset of the bits set in code:usage2, and
|
||||||
code:flags1 and code:flags2 of type elink:VkImageCreateFlags are such that
|
code:flags1 and code:flags2 of type tlink:VkImageCreateFlags are such that
|
||||||
the bits set in code:flags1 are a subset of the bits set in code:flags2,
|
the bits set in code:flags1 are a subset of the bits set in code:flags2,
|
||||||
then the limitations for code:usage1 and code:flags1 must: be no more strict
|
then the limitations for code:usage1 and code:flags1 must: be no more strict
|
||||||
than the limitations for code:usage2 and code:flags2, for all values of
|
than the limitations for code:usage2 and code:flags2, for all values of
|
||||||
|
@ -8056,6 +8067,8 @@ include::../api/structs/VkTextureLODGatherFormatPropertiesAMD.txt[]
|
||||||
This field is set by the implementation.
|
This field is set by the implementation.
|
||||||
User-specified value is ignored.
|
User-specified value is ignored.
|
||||||
|
|
||||||
|
include::../validity/structs/VkTextureLODGatherFormatPropertiesAMD.txt[]
|
||||||
|
|
||||||
--
|
--
|
||||||
endif::VK_AMD_texture_gather_bias_lod[]
|
endif::VK_AMD_texture_gather_bias_lod[]
|
||||||
|
|
||||||
|
@ -8414,7 +8427,7 @@ including unknown and invalid modifier values.
|
||||||
* [[VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314]]
|
* [[VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, then
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, then
|
||||||
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
||||||
pname:queueFamilyIndexCount basetype:uint32_t values.
|
pname:queueFamilyIndexCount code:uint32_t values.
|
||||||
* [[VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315]]
|
* [[VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, then
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, then
|
||||||
pname:queueFamilyIndexCount must: be greater than `1`.
|
pname:queueFamilyIndexCount must: be greater than `1`.
|
||||||
|
@ -8536,7 +8549,7 @@ one of the following conditions is true:
|
||||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||||
flink:vkGetPhysicalDeviceFormatProperties is set
|
flink:vkGetPhysicalDeviceFormatProperties is set
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
ifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
||||||
* pname:VkPhysicalDeviceExternalImageFormatInfoKHR::pname:handleType is an
|
* slink:VkPhysicalDeviceExternalImageFormatInfoKHR::pname:handleType is an
|
||||||
external handle type for which multisampled image support is not
|
external handle type for which multisampled image support is not
|
||||||
required.
|
required.
|
||||||
endif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
endif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
||||||
|
|
|
@ -322,7 +322,7 @@ state>>:
|
||||||
* sname:VkPipeline
|
* sname:VkPipeline
|
||||||
* sname:VkSampler
|
* sname:VkSampler
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* basetype:VkSamplerYcbcrConversion
|
* slink:VkSamplerYcbcrConversion
|
||||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* sname:VkDescriptorPool
|
* sname:VkDescriptorPool
|
||||||
* sname:VkFramebuffer
|
* sname:VkFramebuffer
|
||||||
|
@ -398,7 +398,7 @@ be destroyed:
|
||||||
** sname:VkPipelineLayout
|
** sname:VkPipelineLayout
|
||||||
** sname:VkSampler
|
** sname:VkSampler
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
** basetype:VkSamplerYcbcrConversion
|
** slink:VkSamplerYcbcrConversion
|
||||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
** sname:VkDescriptorSetLayout
|
** sname:VkDescriptorSetLayout
|
||||||
** sname:VkDescriptorPool
|
** sname:VkDescriptorPool
|
||||||
|
@ -877,7 +877,7 @@ A bit flag is valid if:
|
||||||
* The bit flag is defined as part of the etext:Vk*FlagBits type, where the
|
* The bit flag is defined as part of the etext:Vk*FlagBits type, where the
|
||||||
bits type is obtained by taking the flag type and replacing the trailing
|
bits type is obtained by taking the flag type and replacing the trailing
|
||||||
etext:Flags with etext:FlagBits.
|
etext:Flags with etext:FlagBits.
|
||||||
For example, a flag value of type elink:VkColorComponentFlags must:
|
For example, a flag value of type tlink:VkColorComponentFlags must:
|
||||||
contain only bit flags defined by elink:VkColorComponentFlagBits.
|
contain only bit flags defined by elink:VkColorComponentFlagBits.
|
||||||
* The flag is allowed in the context in which it is being used.
|
* The flag is allowed in the context in which it is being used.
|
||||||
For example, in some cases, certain bit flags or combinations of bit
|
For example, in some cases, certain bit flags or combinations of bit
|
||||||
|
|
|
@ -12,10 +12,25 @@ Vulkan commands, and creating a sname:VkInstance object.
|
||||||
[[initialization-functionpointers]]
|
[[initialization-functionpointers]]
|
||||||
== Command Function Pointers
|
== Command Function Pointers
|
||||||
|
|
||||||
|
Vulkan commands are not necessarily exposed by static linking on a platform.
|
||||||
|
Commands to query function pointers for Vulkan commands are described below.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
.Note
|
||||||
|
====
|
||||||
|
When extensions are promoted or otherwise incorporated into another
|
||||||
|
extension or Vulkan core version, commands that have the same definition and
|
||||||
|
behavior are referred to as "`aliases`", and are documented as such.
|
||||||
|
Whilst the behavior of each command alias is identical, the behavior of
|
||||||
|
retrieving each alias's function pointer is not.
|
||||||
|
A function pointer for a given alias can only be retrieved if the extension
|
||||||
|
or version that introduced that alias is supported and enabled, irrespective
|
||||||
|
of whether any other alias is available.
|
||||||
|
====
|
||||||
|
|
||||||
[open,refpage='vkGetInstanceProcAddr',desc='Return a function pointer for a command',type='protos',xrefs='PFN_vkVoidFunction']
|
[open,refpage='vkGetInstanceProcAddr',desc='Return a function pointer for a command',type='protos',xrefs='PFN_vkVoidFunction']
|
||||||
--
|
--
|
||||||
|
|
||||||
Vulkan commands are not necessarily exposed statically on a platform.
|
|
||||||
Function pointers for all Vulkan commands can: be obtained with the command:
|
Function pointers for all Vulkan commands can: be obtained with the command:
|
||||||
|
|
||||||
include::../api/protos/vkGetInstanceProcAddr.txt[]
|
include::../api/protos/vkGetInstanceProcAddr.txt[]
|
||||||
|
|
|
@ -1103,7 +1103,7 @@ ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||||
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,
|
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,
|
||||||
and the pname:pNext chain does not contain an instance of
|
and the pname:pNext chain does not contain an instance of
|
||||||
slink:VkMemoryDedicatedAllocateInfo or
|
slink:VkMemoryDedicatedAllocateInfo or
|
||||||
pname:VkMemoryDedicatedAllocateInfo::pname:image is
|
slink:VkMemoryDedicatedAllocateInfo::pname:image is
|
||||||
dlink:VK_NULL_HANDLE, the Android hardware buffer must: have a
|
dlink:VK_NULL_HANDLE, the Android hardware buffer must: have a
|
||||||
code:AHardwareBuffer_Desc::code:format of
|
code:AHardwareBuffer_Desc::code:format of
|
||||||
code:AHARDWAREBUFFER_FORMAT_BLOB and a
|
code:AHARDWAREBUFFER_FORMAT_BLOB and a
|
||||||
|
@ -1771,7 +1771,9 @@ include::../api/protos/vkGetMemoryFdPropertiesKHR.txt[]
|
||||||
* pname:device is the logical device that will be importing pname:fd.
|
* pname:device is the logical device that will be importing pname:fd.
|
||||||
* pname:handleType is the type of the handle pname:fd.
|
* pname:handleType is the type of the handle pname:fd.
|
||||||
* pname:fd is the handle which will be imported.
|
* pname:fd is the handle which will be imported.
|
||||||
* pname:pMemoryFdProperties will return properties of the handle pname:fd.
|
* pname:pMemoryFdProperties is a pointer to a
|
||||||
|
slink:VkMemoryFdPropertiesKHR structure in which the properties of the
|
||||||
|
handle pname:fd are returned.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
@ -1799,6 +1801,8 @@ include::../api/structs/VkMemoryFdPropertiesKHR.txt[]
|
||||||
* pname:memoryTypeBits is a bitmask containing one bit set for every
|
* pname:memoryTypeBits is a bitmask containing one bit set for every
|
||||||
memory type which the specified file descriptor can: be imported as.
|
memory type which the specified file descriptor can: be imported as.
|
||||||
|
|
||||||
|
include::../validity/structs/VkMemoryFdPropertiesKHR.txt[]
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
||||||
endif::VK_KHR_external_memory_fd[]
|
endif::VK_KHR_external_memory_fd[]
|
||||||
|
@ -2026,6 +2030,8 @@ include::../api/structs/VkMemoryGetAndroidHardwareBufferInfoANDROID.txt[]
|
||||||
be bound to pname:memory.
|
be bound to pname:memory.
|
||||||
****
|
****
|
||||||
|
|
||||||
|
include::../validity/structs/VkMemoryGetAndroidHardwareBufferInfoANDROID.txt[]
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
||||||
[open,refpage='vkGetAndroidHardwareBufferPropertiesANDROID',desc='Get Properties of External Memory Android Hardware Buffers',type='protos']
|
[open,refpage='vkGetAndroidHardwareBufferPropertiesANDROID',desc='Get Properties of External Memory Android Hardware Buffers',type='protos']
|
||||||
|
@ -2038,7 +2044,9 @@ include::../api/protos/vkGetAndroidHardwareBufferPropertiesANDROID.txt[]
|
||||||
|
|
||||||
* pname:device is the logical device that will be importing pname:buffer.
|
* pname:device is the logical device that will be importing pname:buffer.
|
||||||
* pname:buffer is the Android hardware buffer which will be imported.
|
* pname:buffer is the Android hardware buffer which will be imported.
|
||||||
* pname:pProperties will return properties of pname:buffer.
|
* pname:pProperties is a pointer to a
|
||||||
|
slink:VkAndroidHardwareBufferPropertiesANDROID structure in which the
|
||||||
|
properties of pname:buffer are returned.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
@ -2067,6 +2075,8 @@ include::../api/structs/VkAndroidHardwareBufferPropertiesANDROID.txt[]
|
||||||
memory type which the specified Android hardware buffer can: be imported
|
memory type which the specified Android hardware buffer can: be imported
|
||||||
as.
|
as.
|
||||||
|
|
||||||
|
include::../validity/structs/VkAndroidHardwareBufferPropertiesANDROID.txt[]
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
||||||
[open,refpage='VkAndroidHardwareBufferFormatPropertiesANDROID',desc='Structure describing the image format properties of an Android hardware buffer',type='structs']
|
[open,refpage='VkAndroidHardwareBufferFormatPropertiesANDROID',desc='Structure describing the image format properties of an Android hardware buffer',type='structs']
|
||||||
|
@ -3100,13 +3110,13 @@ include::../api/enums/VkPeerMemoryFeatureFlagBitsKHR.txt[]
|
||||||
endif::VK_KHR_device_group[]
|
endif::VK_KHR_device_group[]
|
||||||
|
|
||||||
* ename:VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT specifies that the memory can:
|
* ename:VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT specifies that the memory can:
|
||||||
be accessed as the source of a ftext:vkCmdCopyBuffer,
|
be accessed as the source of a flink:vkCmdCopyBuffer,
|
||||||
ftext:vkCmdCopyImage, ftext:vkCmdCopyBufferToImage, or
|
flink:vkCmdCopyImage, flink:vkCmdCopyBufferToImage, or
|
||||||
ftext:vkCmdCopyImageToBuffer command.
|
flink:vkCmdCopyImageToBuffer command.
|
||||||
* ename:VK_PEER_MEMORY_FEATURE_COPY_DST_BIT specifies that the memory can:
|
* ename:VK_PEER_MEMORY_FEATURE_COPY_DST_BIT specifies that the memory can:
|
||||||
be accessed as the destination of a ftext:vkCmdCopyBuffer,
|
be accessed as the destination of a flink:vkCmdCopyBuffer,
|
||||||
ftext:vkCmdCopyImage, ftext:vkCmdCopyBufferToImage, or
|
flink:vkCmdCopyImage, flink:vkCmdCopyBufferToImage, or
|
||||||
ftext:vkCmdCopyImageToBuffer command.
|
flink:vkCmdCopyImageToBuffer command.
|
||||||
* ename:VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT specifies that the memory
|
* ename:VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT specifies that the memory
|
||||||
can: be read as any memory access type.
|
can: be read as any memory access type.
|
||||||
* ename:VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT specifies that the memory
|
* ename:VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT specifies that the memory
|
||||||
|
|
|
@ -346,15 +346,14 @@ endif::VK_NV_mesh_shader[]
|
||||||
specifies an invocation count that is greater than `0` and less than or
|
specifies an invocation count that is greater than `0` and less than or
|
||||||
equal to
|
equal to
|
||||||
sname:VkPhysicalDeviceLimits::pname:maxGeometryShaderInvocations
|
sname:VkPhysicalDeviceLimits::pname:maxGeometryShaderInvocations
|
||||||
* [[VUID-VkPipelineShaderStageCreateInfo-stage-00716]]
|
* [[VUID-VkPipelineShaderStageCreateInfo-stage-02596]]
|
||||||
If pname:stage is ename:VK_SHADER_STAGE_GEOMETRY_BIT, and the identified
|
If pname:stage is a vertex processing stage, and the identified entry
|
||||||
entry point writes to code:Layer for any primitive, it must: write the
|
point writes to code:Layer for any primitive, it must: write the same
|
||||||
same value to code:Layer for all vertices of a given primitive
|
value to code:Layer for all vertices of a given primitive
|
||||||
* [[VUID-VkPipelineShaderStageCreateInfo-stage-00717]]
|
* [[VUID-VkPipelineShaderStageCreateInfo-stage-02597]]
|
||||||
If pname:stage is ename:VK_SHADER_STAGE_GEOMETRY_BIT, and the identified
|
If pname:stage is a vertex processing stage, and the identified entry
|
||||||
entry point writes to code:ViewportIndex for any primitive, it must:
|
point writes to code:ViewportIndex for any primitive, it must: write the
|
||||||
write the same value to code:ViewportIndex for all vertices of a given
|
same value to code:ViewportIndex for all vertices of a given primitive
|
||||||
primitive
|
|
||||||
* [[VUID-VkPipelineShaderStageCreateInfo-stage-00718]]
|
* [[VUID-VkPipelineShaderStageCreateInfo-stage-00718]]
|
||||||
If pname:stage is ename:VK_SHADER_STAGE_FRAGMENT_BIT, the identified
|
If pname:stage is ename:VK_SHADER_STAGE_FRAGMENT_BIT, the identified
|
||||||
entry point must: not include any output variables in its interface
|
entry point must: not include any output variables in its interface
|
||||||
|
|
|
@ -1178,7 +1178,7 @@ corresponds to the coverage sample numbered _i_ in the multi-pixel fragment.
|
||||||
more than one pixel.
|
more than one pixel.
|
||||||
* [[VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074]]
|
* [[VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074]]
|
||||||
pname:sampleCount must: correspond to a sample count enumerated in
|
pname:sampleCount must: correspond to a sample count enumerated in
|
||||||
elink:VkSampleCountFlags whose corresponding bit is set in
|
tlink:VkSampleCountFlags whose corresponding bit is set in
|
||||||
slink:VkPhysicalDeviceLimits::pname:framebufferNoAttachmentsSampleCounts.
|
slink:VkPhysicalDeviceLimits::pname:framebufferNoAttachmentsSampleCounts.
|
||||||
* [[VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075]]
|
* [[VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075]]
|
||||||
pname:sampleLocationCount must: be equal to the product of
|
pname:sampleLocationCount must: be equal to the product of
|
||||||
|
@ -2069,7 +2069,7 @@ creating the graphics pipeline.
|
||||||
Enabling these modes also affects line and point rasterization if the
|
Enabling these modes also affects line and point rasterization if the
|
||||||
implementation sets
|
implementation sets
|
||||||
sname:VkPhysicalDeviceConservativeRasterizationPropertiesEXT::pname:conservativePointAndLineRasterization
|
sname:VkPhysicalDeviceConservativeRasterizationPropertiesEXT::pname:conservativePointAndLineRasterization
|
||||||
to pname:VK_TRUE.
|
to ename:VK_TRUE.
|
||||||
|
|
||||||
sname:VkPipelineRasterizationConservativeStateCreateInfoEXT is defined as:
|
sname:VkPipelineRasterizationConservativeStateCreateInfoEXT is defined as:
|
||||||
|
|
||||||
|
@ -2260,7 +2260,7 @@ endif::VK_EXT_fragment_density_map[]
|
||||||
|
|
||||||
For both overestimate and underestimate conservative rasterization modes a
|
For both overestimate and underestimate conservative rasterization modes a
|
||||||
fragment has all of its pixel squares fully covered by the generating
|
fragment has all of its pixel squares fully covered by the generating
|
||||||
primitive must: set code:FullyCoveredEXT to pname:VK_TRUE if the
|
primitive must: set code:FullyCoveredEXT to ename:VK_TRUE if the
|
||||||
implementation enables the
|
implementation enables the
|
||||||
sname:VkPhysicalDeviceConservativeRasterizationPropertiesEXT::pname:fullyCoveredFragmentShaderInputVariable
|
sname:VkPhysicalDeviceConservativeRasterizationPropertiesEXT::pname:fullyCoveredFragmentShaderInputVariable
|
||||||
feature.
|
feature.
|
||||||
|
|
|
@ -374,7 +374,7 @@ include::../api/protos/vkCmdBeginQueryIndexedEXT.txt[]
|
||||||
* pname:flags is a bitmask of elink:VkQueryControlFlagBits specifying
|
* pname:flags is a bitmask of elink:VkQueryControlFlagBits specifying
|
||||||
constraints on the types of queries that can: be performed.
|
constraints on the types of queries that can: be performed.
|
||||||
* pname:index is the query type specific index.
|
* pname:index is the query type specific index.
|
||||||
When the query type is pname:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
|
When the query type is ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
|
||||||
the index represents the vertex stream.
|
the index represents the vertex stream.
|
||||||
|
|
||||||
The fname:vkCmdBeginQueryIndexedEXT command operates the same as the
|
The fname:vkCmdBeginQueryIndexedEXT command operates the same as the
|
||||||
|
|
|
@ -177,25 +177,25 @@ a write, a subpass dependency needs to be included between them.
|
||||||
For any member of pname:pAttachments with a pname:loadOp equal to
|
For any member of pname:pAttachments with a pname:loadOp equal to
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||||
must: not specify a pname:layout equal to
|
must: not specify a pname:layout equal to
|
||||||
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
|
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
|
||||||
* [[VUID-VkRenderPassCreateInfo-pAttachments-02511]]
|
* [[VUID-VkRenderPassCreateInfo-pAttachments-02511]]
|
||||||
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
|
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||||
must: not specify a pname:layout equal to
|
must: not specify a pname:layout equal to
|
||||||
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
|
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
* [[VUID-VkRenderPassCreateInfo-pAttachments-01566]]
|
* [[VUID-VkRenderPassCreateInfo-pAttachments-01566]]
|
||||||
For any member of pname:pAttachments with a pname:loadOp equal to
|
For any member of pname:pAttachments with a pname:loadOp equal to
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||||
must: not specify a pname:layout equal to
|
must: not specify a pname:layout equal to
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL.
|
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL.
|
||||||
* [[VUID-VkRenderPassCreateInfo-pAttachments-01567]]
|
* [[VUID-VkRenderPassCreateInfo-pAttachments-01567]]
|
||||||
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
|
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||||
must: not specify a pname:layout equal to
|
must: not specify a pname:layout equal to
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL.
|
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL.
|
||||||
* [[VUID-VkRenderPassCreateInfo-pNext-01926]]
|
* [[VUID-VkRenderPassCreateInfo-pNext-01926]]
|
||||||
If the pname:pNext chain includes an instance of
|
If the pname:pNext chain includes an instance of
|
||||||
slink:VkRenderPassInputAttachmentAspectCreateInfo, the pname:subpass
|
slink:VkRenderPassInputAttachmentAspectCreateInfo, the pname:subpass
|
||||||
|
@ -468,16 +468,16 @@ device when drawing commands in the renderpass execute
|
||||||
ename:VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT.
|
ename:VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT.
|
||||||
|
|
||||||
If this structure is not present, it is as if
|
If this structure is not present, it is as if
|
||||||
pname:fragmentDensityMapAttachment was given as code:VK_ATTACHMENT_UNUSED.
|
pname:fragmentDensityMapAttachment was given as ename:VK_ATTACHMENT_UNUSED.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547]]
|
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547]]
|
||||||
If pname:fragmentDensityMapAttachment is not code:VK_ATTACHMENT_UNUSED,
|
If pname:fragmentDensityMapAttachment is not ename:VK_ATTACHMENT_UNUSED,
|
||||||
pname:fragmentDensityMapAttachment must: be less than
|
pname:fragmentDensityMapAttachment must: be less than
|
||||||
sname:VkRenderPassCreateInfo::pname:attachmentCount
|
sname:VkRenderPassCreateInfo::pname:attachmentCount
|
||||||
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548]]
|
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548]]
|
||||||
If pname:fragmentDensityMapAttachment is not code:VK_ATTACHMENT_UNUSED,
|
If pname:fragmentDensityMapAttachment is not ename:VK_ATTACHMENT_UNUSED,
|
||||||
pname:fragmentDensityMapAttachment must: not be an element of
|
pname:fragmentDensityMapAttachment must: not be an element of
|
||||||
sname:VkSubpassDescription::pname:pInputAttachments,
|
sname:VkSubpassDescription::pname:pInputAttachments,
|
||||||
sname:VkSubpassDescription::pname:pColorAttachments,
|
sname:VkSubpassDescription::pname:pColorAttachments,
|
||||||
|
@ -485,17 +485,17 @@ pname:fragmentDensityMapAttachment was given as code:VK_ATTACHMENT_UNUSED.
|
||||||
sname:VkSubpassDescription::pname:pDepthStencilAttachment, or
|
sname:VkSubpassDescription::pname:pDepthStencilAttachment, or
|
||||||
sname:VkSubpassDescription::pname:pPreserveAttachments for any subpass
|
sname:VkSubpassDescription::pname:pPreserveAttachments for any subpass
|
||||||
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549]]
|
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549]]
|
||||||
If pname:fragmentDensityMapAttachment is not code:VK_ATTACHMENT_UNUSED,
|
If pname:fragmentDensityMapAttachment is not ename:VK_ATTACHMENT_UNUSED,
|
||||||
pname:layout must: be equal to
|
pname:layout must: be equal to
|
||||||
ename:VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, or
|
ename:VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, or
|
||||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||||
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550]]
|
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550]]
|
||||||
If pname:fragmentDensityMapAttachment is not code:VK_ATTACHMENT_UNUSED,
|
If pname:fragmentDensityMapAttachment is not ename:VK_ATTACHMENT_UNUSED,
|
||||||
pname:fragmentDensityMapAttachment must: reference an attachment with a
|
pname:fragmentDensityMapAttachment must: reference an attachment with a
|
||||||
pname:loadOp equal to ename:VK_ATTACHMENT_LOAD_OP_LOAD or
|
pname:loadOp equal to ename:VK_ATTACHMENT_LOAD_OP_LOAD or
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_DONT_CARE.
|
ename:VK_ATTACHMENT_LOAD_OP_DONT_CARE.
|
||||||
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551]]
|
* [[VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551]]
|
||||||
If pname:fragmentDensityMapAttachment is not code:VK_ATTACHMENT_UNUSED,
|
If pname:fragmentDensityMapAttachment is not ename:VK_ATTACHMENT_UNUSED,
|
||||||
pname:fragmentDensityMapAttachment must: reference an attachment with a
|
pname:fragmentDensityMapAttachment must: reference an attachment with a
|
||||||
pname:storeOp equal to ename:VK_ATTACHMENT_STORE_OP_DONT_CARE.
|
pname:storeOp equal to ename:VK_ATTACHMENT_STORE_OP_DONT_CARE.
|
||||||
****
|
****
|
||||||
|
@ -1613,16 +1613,16 @@ respectively.
|
||||||
For any member of pname:pAttachments with a pname:loadOp equal to
|
For any member of pname:pAttachments with a pname:loadOp equal to
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||||
must: not specify a pname:layout equal to
|
must: not specify a pname:layout equal to
|
||||||
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
|
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
|
||||||
* [[VUID-VkRenderPassCreateInfo2KHR-pAttachments-02523]]
|
* [[VUID-VkRenderPassCreateInfo2KHR-pAttachments-02523]]
|
||||||
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
|
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||||
must: not specify a pname:layout equal to
|
must: not specify a pname:layout equal to
|
||||||
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL.
|
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL.
|
||||||
* [[VUID-VkRenderPassCreateInfo2KHR-pDependencies-03054]]
|
* [[VUID-VkRenderPassCreateInfo2KHR-pDependencies-03054]]
|
||||||
For any element of pname:pDependencies, if the pname:srcSubpass is not
|
For any element of pname:pDependencies, if the pname:srcSubpass is not
|
||||||
ename:VK_SUBPASS_EXTERNAL, all stage flags included in the
|
ename:VK_SUBPASS_EXTERNAL, all stage flags included in the
|
||||||
|
|
|
@ -96,7 +96,7 @@ endif::editing-notes[]
|
||||||
* [[VUID-VkBufferCreateInfo-sharingMode-00913]]
|
* [[VUID-VkBufferCreateInfo-sharingMode-00913]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
||||||
pname:queueFamilyIndexCount basetype:uint32_t values
|
pname:queueFamilyIndexCount code:uint32_t values
|
||||||
* [[VUID-VkBufferCreateInfo-sharingMode-00914]]
|
* [[VUID-VkBufferCreateInfo-sharingMode-00914]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
pname:queueFamilyIndexCount must: be greater than `1`
|
pname:queueFamilyIndexCount must: be greater than `1`
|
||||||
|
@ -874,7 +874,7 @@ endif::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||||
* [[VUID-VkImageCreateInfo-sharingMode-00941]]
|
* [[VUID-VkImageCreateInfo-sharingMode-00941]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
||||||
pname:queueFamilyIndexCount basetype:uint32_t values
|
pname:queueFamilyIndexCount code:uint32_t values
|
||||||
* [[VUID-VkImageCreateInfo-sharingMode-00942]]
|
* [[VUID-VkImageCreateInfo-sharingMode-00942]]
|
||||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||||
pname:queueFamilyIndexCount must: be greater than `1`
|
pname:queueFamilyIndexCount must: be greater than `1`
|
||||||
|
@ -1232,14 +1232,6 @@ ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||||
pname:mipLevels must: either be `1` or equal to the number of levels in
|
pname:mipLevels must: either be `1` or equal to the number of levels in
|
||||||
the complete mipmap chain based on [eq]#pname:extent.width#,
|
the complete mipmap chain based on [eq]#pname:extent.width#,
|
||||||
[eq]#pname:extent.height#, and [eq]#pname:extent.depth#.
|
[eq]#pname:extent.height#, and [eq]#pname:extent.depth#.
|
||||||
* [[VUID-VkImageCreateInfo-pNext-02395]]
|
|
||||||
If the pname:pNext chain includes a
|
|
||||||
slink:VkExternalMemoryImageCreateInfo structure whose pname:handleTypes
|
|
||||||
member includes
|
|
||||||
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,
|
|
||||||
and pname:format is ename:VK_FORMAT_UNDEFINED, then the pname:pNext
|
|
||||||
chain must: include a slink:VkExternalFormatANDROID structure whose
|
|
||||||
pname:externalFormat member is not `0`.
|
|
||||||
* [[VUID-VkImageCreateInfo-pNext-02396]]
|
* [[VUID-VkImageCreateInfo-pNext-02396]]
|
||||||
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
|
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
|
||||||
structure whose pname:externalFormat member is not `0`, pname:flags
|
structure whose pname:externalFormat member is not `0`, pname:flags
|
||||||
|
@ -1247,7 +1239,7 @@ ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||||
* [[VUID-VkImageCreateInfo-pNext-02397]]
|
* [[VUID-VkImageCreateInfo-pNext-02397]]
|
||||||
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
|
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
|
||||||
structure whose pname:externalFormat member is not `0`, pname:usage
|
structure whose pname:externalFormat member is not `0`, pname:usage
|
||||||
must: not include any usages except pname:VK_IMAGE_USAGE_SAMPLED_BIT.
|
must: not include any usages except ename:VK_IMAGE_USAGE_SAMPLED_BIT.
|
||||||
* [[VUID-VkImageCreateInfo-pNext-02398]]
|
* [[VUID-VkImageCreateInfo-pNext-02398]]
|
||||||
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
|
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
|
||||||
structure whose pname:externalFormat member is not `0`, pname:tiling
|
structure whose pname:externalFormat member is not `0`, pname:tiling
|
||||||
|
@ -2055,7 +2047,7 @@ The sname:VkImageSubresource structure is defined as:
|
||||||
|
|
||||||
include::../api/structs/VkImageSubresource.txt[]
|
include::../api/structs/VkImageSubresource.txt[]
|
||||||
|
|
||||||
* pname:aspectMask is a elink:VkImageAspectFlags selecting the image
|
* pname:aspectMask is a tlink:VkImageAspectFlags selecting the image
|
||||||
_aspect_.
|
_aspect_.
|
||||||
* pname:mipLevel selects the mipmap level.
|
* pname:mipLevel selects the mipmap level.
|
||||||
* pname:arrayLayer selects the array layer.
|
* pname:arrayLayer selects the array layer.
|
||||||
|
@ -3912,7 +3904,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||||
slink:VkExternalMemoryBufferCreateInfo structure
|
slink:VkExternalMemoryBufferCreateInfo structure
|
||||||
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
|
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||||
passed to fname:vkCreateBuffer.
|
passed to fname:vkCreateBuffer.
|
||||||
Further, if code:usage1 and code:usage2 of type elink:VkBufferUsageFlags
|
Further, if code:usage1 and code:usage2 of type tlink:VkBufferUsageFlags
|
||||||
are such that the bits set in code:usage2 are a subset of the bits set
|
are such that the bits set in code:usage2 are a subset of the bits set
|
||||||
in code:usage1, and they have the same
|
in code:usage1, and they have the same
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
|
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||||
|
@ -4885,7 +4877,7 @@ endif::VK_NV_dedicated_allocation[]
|
||||||
ifndef::VK_VERSION_1_1+VK_KHR_swapchain[]
|
ifndef::VK_VERSION_1_1+VK_KHR_swapchain[]
|
||||||
ifndef::VK_KHR_device_group+VK_KHR_swapchain[]
|
ifndef::VK_KHR_device_group+VK_KHR_swapchain[]
|
||||||
* [[VUID-VkBindImageMemoryInfo-memory-01625]]
|
* [[VUID-VkBindImageMemoryInfo-memory-01625]]
|
||||||
pname:memory must: be a valid dname:VkDeviceMemory handle
|
pname:memory must: be a valid slink:VkDeviceMemory handle
|
||||||
endif::VK_KHR_device_group+VK_KHR_swapchain[]
|
endif::VK_KHR_device_group+VK_KHR_swapchain[]
|
||||||
endif::VK_VERSION_1_1+VK_KHR_swapchain[]
|
endif::VK_VERSION_1_1+VK_KHR_swapchain[]
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
|
ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
|
||||||
|
@ -4926,7 +4918,7 @@ ifdef::VK_KHR_swapchain[]
|
||||||
* [[VUID-VkBindImageMemoryInfo-pNext-01632]]
|
* [[VUID-VkBindImageMemoryInfo-pNext-01632]]
|
||||||
If the pname:pNext chain does not include an instance of
|
If the pname:pNext chain does not include an instance of
|
||||||
slink:VkBindImageMemorySwapchainInfoKHR, pname:memory must: be a valid
|
slink:VkBindImageMemorySwapchainInfoKHR, pname:memory must: be a valid
|
||||||
dname:VkDeviceMemory handle
|
slink:VkDeviceMemory handle
|
||||||
endif::VK_KHR_swapchain[]
|
endif::VK_KHR_swapchain[]
|
||||||
endif::VK_VERSION_1_1,VK_KHR_device_group[]
|
endif::VK_VERSION_1_1,VK_KHR_device_group[]
|
||||||
****
|
****
|
||||||
|
|
|
@ -43,7 +43,7 @@ extern "C" {
|
||||||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||||
// Version of this file
|
// Version of this file
|
||||||
#define VK_HEADER_VERSION 95
|
#define VK_HEADER_VERSION 96
|
||||||
|
|
||||||
|
|
||||||
#define VK_NULL_HANDLE 0
|
#define VK_NULL_HANDLE 0
|
||||||
|
@ -8862,16 +8862,16 @@ VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV(
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VK_EXT_pci_bus_info 1
|
#define VK_EXT_pci_bus_info 1
|
||||||
#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 1
|
#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2
|
||||||
#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info"
|
#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info"
|
||||||
|
|
||||||
typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
|
typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
|
||||||
VkStructureType sType;
|
VkStructureType sType;
|
||||||
void* pNext;
|
void* pNext;
|
||||||
uint16_t pciDomain;
|
uint32_t pciDomain;
|
||||||
uint8_t pciBus;
|
uint32_t pciBus;
|
||||||
uint8_t pciDevice;
|
uint32_t pciDevice;
|
||||||
uint8_t pciFunction;
|
uint32_t pciFunction;
|
||||||
} VkPhysicalDevicePCIBusInfoPropertiesEXT;
|
} VkPhysicalDevicePCIBusInfoPropertiesEXT;
|
||||||
|
|
||||||
|
|
||||||
|
@ -8917,12 +8917,12 @@ typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT {
|
||||||
|
|
||||||
|
|
||||||
#define VK_GOOGLE_hlsl_functionality1 1
|
#define VK_GOOGLE_hlsl_functionality1 1
|
||||||
#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 0
|
#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 1
|
||||||
#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1"
|
#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1"
|
||||||
|
|
||||||
|
|
||||||
#define VK_GOOGLE_decorate_string 1
|
#define VK_GOOGLE_decorate_string 1
|
||||||
#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 0
|
#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1
|
||||||
#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string"
|
#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||||
startVUID = 2596
|
startVUID = 2598
|
||||||
|
|
19
registry.txt
19
registry.txt
|
@ -823,9 +823,8 @@ tag are optional and may be in any order:
|
||||||
* tag:alias - optional. Has no attributes and contains a string which
|
* tag:alias - optional. Has no attributes and contains a string which
|
||||||
is the name of another command this command is an alias of, used
|
is the name of another command this command is an alias of, used
|
||||||
when promoting a function from vendor to Khronos extension or
|
when promoting a function from vendor to Khronos extension or
|
||||||
Khronos extension to core API status. A command alias describes the
|
Khronos extension to core API status. A command alias describes the case
|
||||||
case where there are two function names which resolve to the _same_
|
where there are two function names which implement the same behavior.
|
||||||
entry point in the underlying layer stack.
|
|
||||||
* tag:description - optional. Unused text.
|
* tag:description - optional. Unused text.
|
||||||
* tag:implicitexternsyncparams - optional. Contains a list of tag:param
|
* tag:implicitexternsyncparams - optional. Contains a list of tag:param
|
||||||
tags, each containing asciidoc source text describing an object which is
|
tags, each containing asciidoc source text describing an object which is
|
||||||
|
@ -833,6 +832,17 @@ tag are optional and may be in any order:
|
||||||
<<tag-command:param:attr,requires external synchronization>>. The text
|
<<tag-command:param:attr,requires external synchronization>>. The text
|
||||||
is intended to be incorporated into the API specification.
|
is intended to be incorporated into the API specification.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
.Note
|
||||||
|
====
|
||||||
|
Versions of the registry documentation prior to 1.1.93 asserted that
|
||||||
|
command aliases "`resolve to the _same_ entry point in the underlying layer
|
||||||
|
stack.`"
|
||||||
|
Whilst this may be true on many implementations, it is not required - each
|
||||||
|
command alias must be queried separately through flink:vkGetInstanceProcAddr
|
||||||
|
or flink:vkGetDeviceProcAddr.
|
||||||
|
====
|
||||||
|
|
||||||
|
|
||||||
[[tag-command:proto]]
|
[[tag-command:proto]]
|
||||||
== Command prototype (tag:proto tags)
|
== Command prototype (tag:proto tags)
|
||||||
|
@ -2011,6 +2021,9 @@ files and Python scripts are logged in Github history.
|
||||||
[[changelog]]
|
[[changelog]]
|
||||||
= Change Log
|
= Change Log
|
||||||
|
|
||||||
|
* 2018-12-06 - Specify that command aliases are not guaranteed to resolve
|
||||||
|
to the same entry point in the underlying layer stack, matching a
|
||||||
|
related clarification in the Vulkan Specification.
|
||||||
* 2018-10-01 - Add description of the default value of attr:optional
|
* 2018-10-01 - Add description of the default value of attr:optional
|
||||||
member and parameter attributes, if not specified.
|
member and parameter attributes, if not specified.
|
||||||
* 2018-08-28 - Add optional attr:provisional attribute to tag:extension
|
* 2018-08-28 - Add optional attr:provisional attribute to tag:extension
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,133 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018 Collabora, Ltd.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
|
||||||
|
#
|
||||||
|
# Purpose: This file contains tests for check_spec_links.py
|
||||||
|
|
||||||
|
from check_spec_links import MacroChecker, MessageId, shouldEntityBeText
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
class CheckerWrapper(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.ckr = MacroChecker(set([]))
|
||||||
|
|
||||||
|
def enabled(self, enabled_messages):
|
||||||
|
self.ckr.enabled_messages = set(enabled_messages)
|
||||||
|
return self
|
||||||
|
|
||||||
|
def check(self, string):
|
||||||
|
return self.ckr.processString(string + '\n')
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def ckr():
|
||||||
|
return CheckerWrapper()
|
||||||
|
|
||||||
|
|
||||||
|
def replacement(ckr):
|
||||||
|
assert(len(ckr.messages) == 1)
|
||||||
|
from pprint import pprint
|
||||||
|
pprint(ckr.messages[0].script_location)
|
||||||
|
pprint(ckr.messages[0].replacement)
|
||||||
|
pprint(ckr.messages[0].fix)
|
||||||
|
return ckr.messages[0].replacement
|
||||||
|
|
||||||
|
|
||||||
|
def test_missing_macro(ckr):
|
||||||
|
ckr.enabled([MessageId.MISSING_MACRO])
|
||||||
|
assert(ckr.check('with vkFreeMemory by').numDiagnostics() == 1)
|
||||||
|
|
||||||
|
assert(not ckr.check('<<VkObjectType').messages)
|
||||||
|
assert(not ckr.check('VkObjectType>>').messages)
|
||||||
|
assert(not ckr.check(
|
||||||
|
'VkObjectType and Vulkan Handle Relationship>> table').messages)
|
||||||
|
|
||||||
|
|
||||||
|
def test_entity_detection(ckr):
|
||||||
|
ckr.enabled([MessageId.BAD_ENTITY])
|
||||||
|
# Should complain about BAD_ENTITY
|
||||||
|
assert(ckr.check('flink:abcd').numDiagnostics() == 1)
|
||||||
|
|
||||||
|
# Should just give BAD_ENTITY (an error), not MISSING_TEXT (a warning).
|
||||||
|
ckr.enabled(
|
||||||
|
[MessageId.MISSING_TEXT, MessageId.BAD_ENTITY])
|
||||||
|
assert(ckr.check('*flink:abcd*').numErrors() == 1)
|
||||||
|
|
||||||
|
|
||||||
|
def test_wrong_macro(ckr):
|
||||||
|
ckr.enabled([MessageId.WRONG_MACRO])
|
||||||
|
assert(ckr.check('basetype:uint32_t').numErrors() == 1)
|
||||||
|
assert(ckr.check('code:uint32_t').numErrors() == 0)
|
||||||
|
|
||||||
|
|
||||||
|
def test_legacy(ckr):
|
||||||
|
|
||||||
|
ckr.enabled([MessageId.LEGACY])
|
||||||
|
# Should complain about LEGACY
|
||||||
|
assert(ckr.check('sname:VkDeviceMemory').numDiagnostics() == 1)
|
||||||
|
|
||||||
|
|
||||||
|
def test_should_entity_be_text():
|
||||||
|
assert(shouldEntityBeText('pBuffers[i]', '[i]'))
|
||||||
|
assert(shouldEntityBeText('maxPerStage*', None))
|
||||||
|
assert(shouldEntityBeText('VK_MEMORY_PLANE_[X]', '[X]'))
|
||||||
|
assert(shouldEntityBeText('VK_MEMORY_PLANE[__x__]', '[__x__]'))
|
||||||
|
assert(shouldEntityBeText('VK_MEMORY_PLANE___i___BIT_EXT', None))
|
||||||
|
assert(False == shouldEntityBeText('VK_MEMORY_PLANE_i_BIT_EXT', None))
|
||||||
|
|
||||||
|
|
||||||
|
def test_misused_text(ckr):
|
||||||
|
ckr.enabled([MessageId.MISUSED_TEXT])
|
||||||
|
|
||||||
|
assert(ckr.check('etext:VK_MEMORY_PLANE_').numDiagnostics() == 0)
|
||||||
|
assert(ckr.check('etext:VK_MEMORY_PLANE_[X]').numDiagnostics() == 0)
|
||||||
|
assert(ckr.check('etext:VK_MEMORY_PLANE[i]').numDiagnostics() == 0)
|
||||||
|
assert(ckr.check('etext:VK_MEMORY_PLANE[__x__]').numDiagnostics() == 0)
|
||||||
|
|
||||||
|
# Should be OK, since __i__ is a placeholder here
|
||||||
|
assert(ckr.check('etext:VK_MEMORY_PLANE___i___BIT_EXT').numDiagnostics() == 0)
|
||||||
|
|
||||||
|
|
||||||
|
def test_extension(ckr):
|
||||||
|
ckr.enabled(set(MessageId))
|
||||||
|
expected_replacement = '`<<VK_NV_mesh_shader>>`'
|
||||||
|
assert(ckr.check('asdf VK_NV_mesh_shader asdf').messages)
|
||||||
|
assert(replacement(ckr.check('asdf VK_NV_mesh_shader asdf'))
|
||||||
|
== expected_replacement)
|
||||||
|
|
||||||
|
assert(ckr.check('asdf VK_NV_MESH_SHADER asdf').messages)
|
||||||
|
assert(replacement(ckr.check('asdf VK_NV_MESH_SHADER asdf'))
|
||||||
|
== expected_replacement)
|
||||||
|
|
||||||
|
assert(ckr.check('asdf ename:VK_NV_mesh_shader asdf').messages)
|
||||||
|
assert(replacement(ckr.check('asdf ename:VK_NV_mesh_shader asdf'))
|
||||||
|
== expected_replacement)
|
||||||
|
|
||||||
|
assert(ckr.check('asdf elink:VK_NV_mesh_shader asdf').messages)
|
||||||
|
assert(replacement(ckr.check('asdf elink:VK_NV_mesh_shader asdf'))
|
||||||
|
== expected_replacement)
|
||||||
|
|
||||||
|
assert(ckr.check('asdf elink:VK_NV_MESH_SHADER asdf').messages)
|
||||||
|
assert(replacement(ckr.check('asdf elink:VK_NV_MESH_SHADER asdf'))
|
||||||
|
== expected_replacement)
|
||||||
|
|
||||||
|
assert(not ckr.check('asdf `<<VK_NV_mesh_shader>>` asdf').messages)
|
||||||
|
assert(not ckr.check('asdf `VK_NV_mesh_shader` asdf').messages)
|
||||||
|
|
||||||
|
# TODO can we auto-correct this to add the backticks?
|
||||||
|
assert(not ckr.check('asdf <<VK_NV_mesh_shader>> asdf').messages)
|
20
xml/vk.xml
20
xml/vk.xml
|
@ -146,7 +146,7 @@ server.
|
||||||
<type category="define">// Vulkan 1.1 version number
|
<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>
|
#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
|
<type category="define">// Version of this file
|
||||||
#define <name>VK_HEADER_VERSION</name> 95</type>
|
#define <name>VK_HEADER_VERSION</name> 96</type>
|
||||||
|
|
||||||
<type category="define">
|
<type category="define">
|
||||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||||
|
@ -2513,7 +2513,7 @@ server.
|
||||||
<member>const <type>void</type>* <name>pNext</name></member>
|
<member>const <type>void</type>* <name>pNext</name></member>
|
||||||
<member><type>VkBool32</type> <name>viewportWScalingEnable</name></member>
|
<member><type>VkBool32</type> <name>viewportWScalingEnable</name></member>
|
||||||
<member><type>uint32_t</type> <name>viewportCount</name></member>
|
<member><type>uint32_t</type> <name>viewportCount</name></member>
|
||||||
<member noautovalidity="true" len="viewportCount">const <type>VkViewportWScalingNV</type>* <name>pViewportWScalings</name></member>
|
<member len="viewportCount">const <type>VkViewportWScalingNV</type>* <name>pViewportWScalings</name></member>
|
||||||
</type>
|
</type>
|
||||||
<type category="struct" name="VkViewportSwizzleNV">
|
<type category="struct" name="VkViewportSwizzleNV">
|
||||||
<member><type>VkViewportCoordinateSwizzleNV</type> <name>x</name></member>
|
<member><type>VkViewportCoordinateSwizzleNV</type> <name>x</name></member>
|
||||||
|
@ -2526,7 +2526,7 @@ server.
|
||||||
<member>const <type>void</type>* <name>pNext</name></member>
|
<member>const <type>void</type>* <name>pNext</name></member>
|
||||||
<member optional="true"><type>VkPipelineViewportSwizzleStateCreateFlagsNV</type> <name>flags</name></member>
|
<member optional="true"><type>VkPipelineViewportSwizzleStateCreateFlagsNV</type> <name>flags</name></member>
|
||||||
<member><type>uint32_t</type> <name>viewportCount</name></member>
|
<member><type>uint32_t</type> <name>viewportCount</name></member>
|
||||||
<member noautovalidity="true" optional="true" len="viewportCount">const <type>VkViewportSwizzleNV</type>* <name>pViewportSwizzles</name></member>
|
<member len="viewportCount">const <type>VkViewportSwizzleNV</type>* <name>pViewportSwizzles</name></member>
|
||||||
</type>
|
</type>
|
||||||
<type category="struct" name="VkPhysicalDeviceDiscardRectanglePropertiesEXT" structextends="VkPhysicalDeviceProperties2">
|
<type category="struct" name="VkPhysicalDeviceDiscardRectanglePropertiesEXT" structextends="VkPhysicalDeviceProperties2">
|
||||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
|
@ -3235,10 +3235,10 @@ server.
|
||||||
<type category="struct" name="VkPhysicalDevicePCIBusInfoPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
|
<type category="struct" name="VkPhysicalDevicePCIBusInfoPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
|
||||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
<member><type>void</type>* <name>pNext</name></member>
|
<member><type>void</type>* <name>pNext</name></member>
|
||||||
<member><type>uint16_t</type> <name>pciDomain</name></member>
|
<member><type>uint32_t</type> <name>pciDomain</name></member>
|
||||||
<member><type>uint8_t</type> <name>pciBus</name></member>
|
<member><type>uint32_t</type> <name>pciBus</name></member>
|
||||||
<member><type>uint8_t</type> <name>pciDevice</name></member>
|
<member><type>uint32_t</type> <name>pciDevice</name></member>
|
||||||
<member><type>uint8_t</type> <name>pciFunction</name></member>
|
<member><type>uint32_t</type> <name>pciFunction</name></member>
|
||||||
</type>
|
</type>
|
||||||
<type category="struct" name="VkImportAndroidHardwareBufferInfoANDROID" structextends="VkMemoryAllocateInfo">
|
<type category="struct" name="VkImportAndroidHardwareBufferInfoANDROID" structextends="VkMemoryAllocateInfo">
|
||||||
<member values="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
|
@ -10001,7 +10001,7 @@ server.
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_EXT_pci_bus_info" number="213" type="device" author="EXT" requires="VK_KHR_get_physical_device_properties2" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
|
<extension name="VK_EXT_pci_bus_info" number="213" type="device" author="EXT" requires="VK_KHR_get_physical_device_properties2" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="1" name="VK_EXT_PCI_BUS_INFO_SPEC_VERSION"/>
|
<enum value="2" name="VK_EXT_PCI_BUS_INFO_SPEC_VERSION"/>
|
||||||
<enum value=""VK_EXT_pci_bus_info"" name="VK_EXT_PCI_BUS_INFO_EXTENSION_NAME"/>
|
<enum value=""VK_EXT_pci_bus_info"" name="VK_EXT_PCI_BUS_INFO_EXTENSION_NAME"/>
|
||||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"/>
|
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"/>
|
||||||
<type name="VkPhysicalDevicePCIBusInfoPropertiesEXT"/>
|
<type name="VkPhysicalDevicePCIBusInfoPropertiesEXT"/>
|
||||||
|
@ -10091,13 +10091,13 @@ server.
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_GOOGLE_hlsl_functionality1" number="224" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
|
<extension name="VK_GOOGLE_hlsl_functionality1" number="224" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="0" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION"/>
|
<enum value="1" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION"/>
|
||||||
<enum value=""VK_GOOGLE_hlsl_functionality1"" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME"/>
|
<enum value=""VK_GOOGLE_hlsl_functionality1"" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_GOOGLE_decorate_string" number="225" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
|
<extension name="VK_GOOGLE_decorate_string" number="225" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="0" name="VK_GOOGLE_DECORATE_STRING_SPEC_VERSION"/>
|
<enum value="1" name="VK_GOOGLE_DECORATE_STRING_SPEC_VERSION"/>
|
||||||
<enum value=""VK_GOOGLE_decorate_string"" name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/>
|
<enum value=""VK_GOOGLE_decorate_string"" name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
Loading…
Reference in New Issue