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:
Jon Leech 2018-12-16 22:22:53 -08:00
parent 56c5c6965e
commit b557dd2167
41 changed files with 2458 additions and 211 deletions

4
.gitignore vendored
View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -52,7 +52,7 @@ None.
=== New Enums === New Enums
* elink:VkPipelineRasterizationConservativeStateCreateFlagsEXT * tlink:VkPipelineRasterizationConservativeStateCreateFlagsEXT
* elink:VkConservativeRasterizationModeEXT * elink:VkConservativeRasterizationModeEXT
=== New Structures === New Structures

View File

@ -47,7 +47,7 @@ None.
=== New Enums === New Enums
* elink:VkPipelineDiscardRectangleStateCreateFlagsEXT * tlink:VkPipelineDiscardRectangleStateCreateFlagsEXT
* elink:VkDiscardRectangleModeEXT * elink:VkDiscardRectangleModeEXT
=== New Structures === New Structures

View File

@ -23,7 +23,7 @@ slink:VkSurfaceKHR object.
=== New Enums === New Enums
* elink:VkSurfaceCounterFlagsEXT * tlink:VkSurfaceCounterFlagsEXT
* elink:VkSurfaceCounterFlagBitsEXT * elink:VkSurfaceCounterFlagBitsEXT
=== New Structures === New Structures

View File

@ -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

View File

@ -80,7 +80,7 @@ None.
=== New Enums === New Enums
* elink:VkPipelineRasterizationStateStreamCreateFlagsEXT * tlink:VkPipelineRasterizationStateStreamCreateFlagsEXT
=== New Structures === New Structures

View File

@ -32,7 +32,7 @@ slink:VkShaderModule.
=== New Enums === New Enums
* elink:VkValidationCacheHeaderVersionEXT * elink:VkValidationCacheHeaderVersionEXT
* elink:VkValidationCacheCreateFlagsEXT * tlink:VkValidationCacheCreateFlagsEXT
=== New Structures === New Structures

View File

@ -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

View File

@ -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

View File

@ -30,7 +30,7 @@ None.
=== New Enums === New Enums
* elink:VkPipelineCoverageToColorStateCreateFlagsNV * tlink:VkPipelineCoverageToColorStateCreateFlagsNV
=== New Structures === New Structures

View File

@ -57,7 +57,7 @@ None.
=== New Enums === New Enums
* elink:VkCoverageModulationModeNV * elink:VkCoverageModulationModeNV
* elink:VkPipelineCoverageModulationStateCreateFlagsNV * tlink:VkPipelineCoverageModulationStateCreateFlagsNV
=== New Structures === New Structures

View File

@ -38,7 +38,7 @@ None.
=== New Enums === New Enums
* elink:VkViewportCoordinateSwizzleNV * elink:VkViewportCoordinateSwizzleNV
* elink:VkPipelineViewportSwizzleStateCreateFlagsNV * tlink:VkPipelineViewportSwizzleStateCreateFlagsNV
=== New Structures === New Structures

View File

@ -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

View File

@ -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

View File

@ -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`

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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
}, },
}; };
@ -3534,15 +3535,15 @@ const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
const VkDescriptorUpdateTemplateCreateInfo createInfo = const VkDescriptorUpdateTemplateCreateInfo createInfo =
{ {
VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType
NULL, // pNext NULL, // pNext
0, // flags 0, // flags
3, // descriptorUpdateEntryCount 3, // descriptorUpdateEntryCount
descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries
VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, // templateType VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, // templateType
myLayout, // descriptorSetLayout myLayout, // descriptorSetLayout
0, // pipelineBindPoint, ignored by given templateType 0, // pipelineBindPoint, ignored by given templateType
0, // pipelineLayout, ignored by given templateType 0, // pipelineLayout, ignored by given templateType
0, // set, ignored by given templateType 0, // set, ignored by given templateType
}; };
VkDescriptorUpdateTemplate myDescriptorUpdateTemplate; VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;
@ -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,24 +3860,23 @@ 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
const VkDescriptorUpdateTemplateCreateInfo createInfo = const VkDescriptorUpdateTemplateCreateInfo createInfo =
{ {
VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType
NULL, // pNext NULL, // pNext
0, // flags 0, // flags
1, // descriptorUpdateEntryCount 1, // descriptorUpdateEntryCount
descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries
VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, // templateType VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, // templateType
0, // descriptorSetLayout, ignored by given templateType 0, // descriptorSetLayout, ignored by given templateType
VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint
myPipelineLayout, // pipelineLayout myPipelineLayout, // pipelineLayout
0, // set 0, // set
}; };
VkDescriptorUpdateTemplate myDescriptorUpdateTemplate; VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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[]

View File

@ -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

View File

@ -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[]

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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[]
**** ****

View File

@ -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"

View File

@ -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

View File

@ -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

2047
xml/check_spec_links.py Executable file

File diff suppressed because it is too large Load Diff

View File

@ -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)

View File

@ -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="&quot;VK_EXT_pci_bus_info&quot;" name="VK_EXT_PCI_BUS_INFO_EXTENSION_NAME"/> <enum value="&quot;VK_EXT_pci_bus_info&quot;" 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="&quot;VK_GOOGLE_hlsl_functionality1&quot;" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME"/> <enum value="&quot;VK_GOOGLE_hlsl_functionality1&quot;" 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="&quot;VK_GOOGLE_decorate_string&quot;" name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/> <enum value="&quot;VK_GOOGLE_decorate_string&quot;" name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/>
</require> </require>
</extension> </extension>