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
# */timeMarker
# check_spec_links (and its tests) output
applyfixes.sh
xml/.cache

View File

@ -5,11 +5,20 @@ spec-generate:
stage: build
before_script:
- 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
- gem install asciidoctor asciidoctor-mathematical coderay json-schema
script:
- ./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:
when: always
paths:

View File

@ -427,7 +427,7 @@ work at least as well.
* GNU make (`make` version: 4.0.8-1; older versions probably OK)
* Python 3 (`python`, version: 3.4.2)
* Ruby (`ruby`, version: 2.3.3)
* Ruby (`ruby`, version: 2.5.3)
** The Ruby development package (`ruby-dev`) may also be required in some
environments.
* 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
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)
* 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 Mathematical (`asciidoctor-mathematical`, version 0.2.2)
* 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.
In particular, the latest versions of `asciidoctor-pdf` and
`asciidoctor-mathematical` contain important patches working around issues
we've discovered, and those patches may not be present in earlier versions.
`asciidoctor-mathematical` often solve problems we've encountered in older
versions.
====
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 \
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]
@ -733,11 +734,8 @@ The following ruby gems can be installed directly via the `gem install`
command, once the platform is set up:
----
gem install asciidoctor coderay json-schema
# Required only for pdf builds
gem install asciidoctor-mathematical
gem install --pre asciidoctor-pdf
gem install --no-rdoc --no-ri asciidoctor coderay json-schema asciidoctor-mathematical asciidoctor-diagram
gem install --no-rdoc --no-ri --pre asciidoctor-pdf
----
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:
----
gem update
gem update --no-rdoc --no-ri
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:
----
$ gem update
$ gem update --no-rdoc --no-ri
----
*ruby-enum*
@ -913,7 +911,6 @@ version of Ruby environment.
[NOTE]
.Note
====
* If you are new to Ruby, you should *completely remove* (through the
package manager, e.g. `sudo apt purge *packagename*`) all existing
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 \
libxml2-dev flex pkg-config libglib2.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
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
# Install Ruby 2.3.3
# This takes in excess of 20 min. to build!
# Install Ruby 2.5.3 (current as of this writing; earlier may work)
# Setting RUBY_CONFIGURE_OPTS dramatically cuts the install time, see
# https://github.com/rbenv/ruby-build/issues/1054#issuecomment-276934761
# suggests:
# "You can speed up Ruby installs by avoiding generating ri/RDoc
# documentation for them:
# RUBY_CONFIGURE_OPTS=--disable-install-doc rbenv install 2.3.3
# We have not tried this.
RUBY_CONFIGURE_OPTS=--disable-install-doc
export RUBY_CONFIGURE_OPTS
rbenv install 2.5.3
rbenv install 2.3.3
# Configure rbenv globally to always use Ruby 2.3.3.
echo "2.3.3" > ~/.rbenv/version
# Configure rbenv globally to always use Ruby 2.5.3.
echo "2.5.3" > ~/.rbenv/version
# Finally, install toolchain components.
# asciidoctor-mathematical also takes in excess of 20 min. to build!
# The same RUBY_CONFIGURE_OPTS advice above may apply here as well.
gem install asciidoctor coderay json-schema
gem install --pre asciidoctor-pdf
MATHEMATICAL_SKIP_STRDUP=1 gem install asciidoctor-mathematical
gem install --no-rdoc --no-ri asciidoctor coderay json-schema asciidoctor-mathematical asciidoctor-diagram
gem install --no-rdoc --no-ri --pre asciidoctor-pdf
----
@ -1035,6 +1027,8 @@ correctly on future launches.
[[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
random editing.
* 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
NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 95
PATCHVERSION = 96
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION)
else

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
include::meta/VK_EXT_pci_bus_info.txt[]
*Last Modified Date*::
2018-10-11
2018-12-10
*IP Status*::
No known IP claims.
*Contributors*::
@ -53,5 +53,7 @@ None.
=== 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)
- Initial revision

View File

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

View File

@ -32,7 +32,7 @@ slink:VkShaderModule.
=== New Enums
* elink:VkValidationCacheHeaderVersionEXT
* elink:VkValidationCacheCreateFlagsEXT
* tlink:VkValidationCacheCreateFlagsEXT
=== 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
slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier, and
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.
* A new bit in elink:VkDependencyFlags
* A new bit in tlink:VkDependencyFlags
* A new special queue family that represents an "`external`" queue.
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
external access, and therefore no clear way to use
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
entire pipeline barrier an internal->external or external->internal barrier.
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
barrier or dependency description semantics, so two bits might need to be
added to describe both internal->external and external->internal

View File

@ -83,8 +83,8 @@ etc.).
=== New Flag Types
* elink:VkIndirectCommandsLayoutUsageFlagsNVX
* elink:VkObjectEntryUsageFlagsNVX
* tlink:VkIndirectCommandsLayoutUsageFlagsNVX
* tlink:VkObjectEntryUsageFlagsNVX
=== New Enum Constants

View File

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

View File

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

View File

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

View File

@ -228,9 +228,12 @@ their name.
== Other Credits
In addition to the Working Group, the Vulkan Advisory Panel members provided
important real-world usage information and advice that helped guide design
decisions.
The Vulkan Advisory Panel members provided important real-world usage
information and advice that helped guide design 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
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
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
readability of the latest versions, this appendix gives an overview of the
changes as compared to earlier versions.
@ -231,19 +248,19 @@ command to <<vkEnumerateInstanceVersion, enumerate the instance version>>.
* elink:VkSemaphoreImportFlagBits
* elink:VkSubgroupFeatureFlagBits
* elink:VkTessellationDomainOrigin
* elink:VkCommandPoolTrimFlags
* elink:VkDescriptorUpdateTemplateCreateFlags
* elink:VkExternalFenceFeatureFlags
* elink:VkExternalFenceHandleTypeFlags
* elink:VkExternalMemoryFeatureFlags
* elink:VkExternalMemoryHandleTypeFlags
* elink:VkExternalSemaphoreFeatureFlags
* elink:VkExternalSemaphoreHandleTypeFlags
* elink:VkFenceImportFlags
* elink:VkMemoryAllocateFlags
* elink:VkPeerMemoryFeatureFlags
* elink:VkSemaphoreImportFlags
* elink:VkSubgroupFeatureFlags
* tlink:VkCommandPoolTrimFlags
* tlink:VkDescriptorUpdateTemplateCreateFlags
* tlink:VkExternalFenceFeatureFlags
* tlink:VkExternalFenceHandleTypeFlags
* tlink:VkExternalMemoryFeatureFlags
* tlink:VkExternalMemoryHandleTypeFlags
* tlink:VkExternalSemaphoreFeatureFlags
* tlink:VkExternalSemaphoreHandleTypeFlags
* tlink:VkFenceImportFlags
* tlink:VkMemoryAllocateFlags
* tlink:VkPeerMemoryFeatureFlags
* tlink:VkSemaphoreImportFlags
* tlink:VkSubgroupFeatureFlags
=== New Structures

View File

@ -296,7 +296,7 @@ endif::VK_KHR_shared_presentable_image[]
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277]]
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
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]]
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
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
as execution takes place on the processing sname:VkCommandBuffer.
* 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:sequencesCountBuffer where the count value is stored.
* pname:sequencesIndexBuffer must: be set if
pname:indirectCommandsLayout's
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.
* pname:sequencesIndexOffset is the byte offset into
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
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
generation.
At creation time the table is defined with a fixed amount of registration
slots for the individual resource types.
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.
@ -195,7 +195,7 @@ include::../../validity/protos/vkDestroyObjectTableNVX.txt[]
--
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
deleted.

View File

@ -325,7 +325,7 @@ pname:indexCount.
pname:indexType must: be ename:VK_INDEX_TYPE_UINT16,
ename:VK_INDEX_TYPE_UINT32, or ename:VK_INDEX_TYPE_NONE_NV
* [[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
* [[VUID-VkGeometryTrianglesNV-indexData-02435]]
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
index computation as code:instanceShaderBindingTableRecordOffset.
* 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.
The 8 byte value returned by flink:vkGetAccelerationStructureHandleNV
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.
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02489]]
If pname:update is ename:VK_TRUE, pname:src must: not be
ename:VK_NULL_HANDLE
dlink:VK_NULL_HANDLE
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02490]]
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

View File

@ -615,11 +615,11 @@ include::../api/structs/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.txt[]
* pname:bindingCount is zero or the number of elements in
pname:pBindingFlags.
* 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.
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.
Otherwise, the descriptor set layout binding at
slink:VkDescriptorSetLayoutCreateInfo::pname:pBindings[i] uses the flags in
@ -3506,12 +3506,12 @@ const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
1, // descriptorCount
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType
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
{
0, // binding
1, // binding
0, // dstArrayElement
3, // descriptorCount
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // descriptorType
@ -3521,11 +3521,12 @@ const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
// binding to an array of buffer views
{
0, // binding
3, // dstArrayElement
1, // descriptorCount
2, // binding
0, // dstArrayElement
2, // descriptorCount
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
},
};
@ -3534,15 +3535,15 @@ const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
const VkDescriptorUpdateTemplateCreateInfo createInfo =
{
VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType
NULL, // pNext
0, // flags
3, // descriptorUpdateEntryCount
descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries
NULL, // pNext
0, // flags
3, // descriptorUpdateEntryCount
descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries
VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, // templateType
myLayout, // descriptorSetLayout
0, // pipelineBindPoint, ignored by given templateType
0, // pipelineLayout, ignored by given templateType
0, // set, ignored by given templateType
myLayout, // descriptorSetLayout
0, // pipelineBindPoint, ignored by given templateType
0, // pipelineLayout, ignored by given templateType
0, // set, ignored by given templateType
};
VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;
@ -3844,11 +3845,6 @@ include::../validity/protos/vkCmdPushDescriptorSetWithTemplateKHR.txt[]
[source,c++]
---------------------------------------------------
struct AppBufferView {
VkBufferView bufferView;
uint32_t applicationRelatedInformation;
};
struct AppDataStructure
{
VkDescriptorImageInfo imageInfo; // a single image info
@ -3864,24 +3860,23 @@ const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
1, // descriptorCount
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType
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
const VkDescriptorUpdateTemplateCreateInfo createInfo =
{
VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType
NULL, // pNext
0, // flags
1, // descriptorUpdateEntryCount
descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries
VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, // templateType
0, // descriptorSetLayout, ignored by given templateType
VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint
myPipelineLayout, // pipelineLayout
0, // set
NULL, // pNext
0, // flags
1, // descriptorUpdateEntryCount
descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries
VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, // templateType
0, // descriptorSetLayout, ignored by given templateType
VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint
myPipelineLayout, // pipelineLayout
0, // set
};
VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;

View File

@ -829,6 +829,7 @@ endif::VK_KHR_device_group_creation[]
If pname:physicalDeviceCount is `1`, then pname:subsetAllocation must:
be ename:VK_FALSE.
include::../validity/structs/VkPhysicalDeviceGroupProperties.txt[]
--
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
pname:VkDeviceQueueCreateFlags creation flags, call:
tlink:VkDeviceQueueCreateFlags creation flags, call:
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.
The pname:pNext chain of sname:VkDeviceQueueInfo2 is used to provide
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.
* pname:queueFamilyIndex is the index of the queue family to which the
queue belongs.

View File

@ -2292,7 +2292,7 @@ The effective pname:firstVertex is zero.
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackDraw
* [[VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289]]
pname:vertexStride must be less than or equal to
slink:VkPhysicalDeviceLimits::pname:maxVertexInputBindingStride
slink:VkPhysicalDeviceLimits::pname:maxTransformFeedbackBufferDataStride
* [[VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290]]
pname:counterBuffer must: have been created with the
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
@ -2494,7 +2494,7 @@ include::../api/structs/VkConditionalRenderingBeginInfoEXT.txt[]
rendering.
* pname:offset is the byte offset into pname:buffer where the predicate is
located.
* pname:flags is a bitmask of elink:VkConditionalRenderingFlagsEXT
* pname:flags is a bitmask of tlink:VkConditionalRenderingFlagsEXT
specifying the behavior of conditional rendering.
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.
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
another.
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:maxFramebufferHeight | -
| code:uint32_t | pname:maxFramebufferLayers | -
| elink:VkSampleCountFlags | pname:framebufferColorSampleCounts | -
| elink:VkSampleCountFlags | pname:framebufferDepthSampleCounts | -
| elink:VkSampleCountFlags | pname:framebufferStencilSampleCounts | -
| elink:VkSampleCountFlags | pname:framebufferNoAttachmentsSampleCounts | -
| tlink:VkSampleCountFlags | pname:framebufferColorSampleCounts | -
| tlink:VkSampleCountFlags | pname:framebufferDepthSampleCounts | -
| tlink:VkSampleCountFlags | pname:framebufferStencilSampleCounts | -
| tlink:VkSampleCountFlags | pname:framebufferNoAttachmentsSampleCounts | -
| code:uint32_t | pname:maxColorAttachments | -
| elink:VkSampleCountFlags | pname:sampledImageColorSampleCounts | -
| elink:VkSampleCountFlags | pname:sampledImageIntegerSampleCounts | -
| elink:VkSampleCountFlags | pname:sampledImageDepthSampleCounts | -
| elink:VkSampleCountFlags | pname:sampledImageStencilSampleCounts | -
| elink:VkSampleCountFlags | pname:storageImageSampleCounts | pname:shaderStorageImageMultisample
| tlink:VkSampleCountFlags | pname:sampledImageColorSampleCounts | -
| tlink:VkSampleCountFlags | pname:sampledImageIntegerSampleCounts | -
| tlink:VkSampleCountFlags | pname:sampledImageDepthSampleCounts | -
| tlink:VkSampleCountFlags | pname:sampledImageStencilSampleCounts | -
| tlink:VkSampleCountFlags | pname:storageImageSampleCounts | pname:shaderStorageImageMultisample
| code:uint32_t | pname:maxSampleMaskWords | -
| basetype:VkBool32 | pname:timestampComputeAndGraphics | -
| code:float | pname:timestampPeriod | -
@ -4259,11 +4259,11 @@ ifdef::VK_EXT_sampler_filter_minmax[]
| basetype:VkBool32 | pname:filterMinmaxImageComponentMapping | `<<VK_EXT_sampler_filter_minmax>>`
endif::VK_EXT_sampler_filter_minmax[]
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:float | pname:extraPrimitiveOverestimationSizeGranularity | `<<VK_EXT_conservative_rasterization>>`
| code:float | pname:extraPrimitiveOverestimationSizeGranularity | `<<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:conservativeRasterizationPostDepthCoverage | `<<VK_EXT_conservative_rasterization>>`
endif::VK_EXT_conservative_rasterization[]
@ -6027,8 +6027,8 @@ endianness.
^|R ^|G ^|B ^|A 13+>s|etext:VK_FORMAT_R8G8B8A8_*
^|B ^|G ^|R ^|A 13+>s|etext:VK_FORMAT_B8G8R8A8_*
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
^|G~0~ ^|B ^|G~1~ ^|R 13+>s|etext:VK_FORMAT_G8B8G8R8_422_UNORM
^|B ^|G~0~ ^|R ^|G~1~ 13+>s|etext:VK_FORMAT_B8G8R8G8_422_UNORM
^|G~0~ ^|B ^|G~1~ ^|R 13+>s|ename:VK_FORMAT_G8B8G8R8_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[]
2+^|R 15+>s|etext:VK_FORMAT_R16_*
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
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_B16G16R16G16_422_UNORM
ename:VK_FORMAT_B16G16R16G16_422_UNORM
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
4+^|R 13+>s|etext:VK_FORMAT_R32_*
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
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
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_
and each etext:VK_IMAGE_ASPECT_PLANE___i___BIT a _format plane_.
@ -7119,8 +7119,9 @@ queried using the flink:vkGetPhysicalDeviceFormatProperties command.
[NOTE]
.Note
====
The required formats are supported for all elink:VkImageCreateFlags values
as long as those flag values are otherwise allowed.
Unless otherwise excluded below, the required formats are supported for all
tlink:VkImageCreateFlags values as long as those flag values are otherwise
allowed.
====
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
|====
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[]
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
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
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,
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
@ -8056,6 +8067,8 @@ include::../api/structs/VkTextureLODGatherFormatPropertiesAMD.txt[]
This field is set by the implementation.
User-specified value is ignored.
include::../validity/structs/VkTextureLODGatherFormatPropertiesAMD.txt[]
--
endif::VK_AMD_texture_gather_bias_lod[]
@ -8414,7 +8427,7 @@ including unknown and invalid modifier values.
* [[VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314]]
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, then
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]]
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, then
pname:queueFamilyIndexCount must: be greater than `1`.
@ -8536,7 +8549,7 @@ one of the following conditions is true:
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
flink:vkGetPhysicalDeviceFormatProperties is set
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
required.
endif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]

View File

@ -322,7 +322,7 @@ state>>:
* sname:VkPipeline
* sname:VkSampler
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
* basetype:VkSamplerYcbcrConversion
* slink:VkSamplerYcbcrConversion
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
* sname:VkDescriptorPool
* sname:VkFramebuffer
@ -398,7 +398,7 @@ be destroyed:
** sname:VkPipelineLayout
** sname:VkSampler
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
** basetype:VkSamplerYcbcrConversion
** slink:VkSamplerYcbcrConversion
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
** sname:VkDescriptorSetLayout
** 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
bits type is obtained by taking the flag type and replacing the trailing
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.
* 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

View File

@ -12,10 +12,25 @@ Vulkan commands, and creating a sname:VkInstance object.
[[initialization-functionpointers]]
== 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']
--
Vulkan commands are not necessarily exposed statically on a platform.
Function pointers for all Vulkan commands can: be obtained with the command:
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,
and the pname:pNext chain does not contain an instance of
slink:VkMemoryDedicatedAllocateInfo or
pname:VkMemoryDedicatedAllocateInfo::pname:image is
slink:VkMemoryDedicatedAllocateInfo::pname:image is
dlink:VK_NULL_HANDLE, the Android hardware buffer must: have a
code:AHardwareBuffer_Desc::code:format of
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:handleType is the type of the handle pname:fd.
* 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
****
@ -1799,6 +1801,8 @@ include::../api/structs/VkMemoryFdPropertiesKHR.txt[]
* pname:memoryTypeBits is a bitmask containing one bit set for every
memory type which the specified file descriptor can: be imported as.
include::../validity/structs/VkMemoryFdPropertiesKHR.txt[]
--
endif::VK_KHR_external_memory_fd[]
@ -2026,6 +2030,8 @@ include::../api/structs/VkMemoryGetAndroidHardwareBufferInfoANDROID.txt[]
be bound to pname:memory.
****
include::../validity/structs/VkMemoryGetAndroidHardwareBufferInfoANDROID.txt[]
--
[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: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
****
@ -2067,6 +2075,8 @@ include::../api/structs/VkAndroidHardwareBufferPropertiesANDROID.txt[]
memory type which the specified Android hardware buffer can: be imported
as.
include::../validity/structs/VkAndroidHardwareBufferPropertiesANDROID.txt[]
--
[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[]
* ename:VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT specifies that the memory can:
be accessed as the source of a ftext:vkCmdCopyBuffer,
ftext:vkCmdCopyImage, ftext:vkCmdCopyBufferToImage, or
ftext:vkCmdCopyImageToBuffer command.
be accessed as the source of a flink:vkCmdCopyBuffer,
flink:vkCmdCopyImage, flink:vkCmdCopyBufferToImage, or
flink:vkCmdCopyImageToBuffer command.
* ename:VK_PEER_MEMORY_FEATURE_COPY_DST_BIT specifies that the memory can:
be accessed as the destination of a ftext:vkCmdCopyBuffer,
ftext:vkCmdCopyImage, ftext:vkCmdCopyBufferToImage, or
ftext:vkCmdCopyImageToBuffer command.
be accessed as the destination of a flink:vkCmdCopyBuffer,
flink:vkCmdCopyImage, flink:vkCmdCopyBufferToImage, or
flink:vkCmdCopyImageToBuffer command.
* ename:VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT specifies that the memory
can: be read as any memory access type.
* 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
equal to
sname:VkPhysicalDeviceLimits::pname:maxGeometryShaderInvocations
* [[VUID-VkPipelineShaderStageCreateInfo-stage-00716]]
If pname:stage is ename:VK_SHADER_STAGE_GEOMETRY_BIT, and the identified
entry point writes to code:Layer for any primitive, it must: write the
same value to code:Layer for all vertices of a given primitive
* [[VUID-VkPipelineShaderStageCreateInfo-stage-00717]]
If pname:stage is ename:VK_SHADER_STAGE_GEOMETRY_BIT, and the identified
entry point writes to code:ViewportIndex for any primitive, it must:
write the same value to code:ViewportIndex for all vertices of a given
primitive
* [[VUID-VkPipelineShaderStageCreateInfo-stage-02596]]
If pname:stage is a vertex processing stage, and the identified entry
point writes to code:Layer for any primitive, it must: write the same
value to code:Layer for all vertices of a given primitive
* [[VUID-VkPipelineShaderStageCreateInfo-stage-02597]]
If pname:stage is a vertex processing stage, and the identified entry
point writes to code:ViewportIndex for any primitive, it must: write the
same value to code:ViewportIndex for all vertices of a given primitive
* [[VUID-VkPipelineShaderStageCreateInfo-stage-00718]]
If pname:stage is ename:VK_SHADER_STAGE_FRAGMENT_BIT, the identified
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.
* [[VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074]]
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.
* [[VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075]]
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
implementation sets
sname:VkPhysicalDeviceConservativeRasterizationPropertiesEXT::pname:conservativePointAndLineRasterization
to pname:VK_TRUE.
to ename:VK_TRUE.
sname:VkPipelineRasterizationConservativeStateCreateInfoEXT is defined as:
@ -2260,7 +2260,7 @@ endif::VK_EXT_fragment_density_map[]
For both overestimate and underestimate conservative rasterization modes a
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
sname:VkPhysicalDeviceConservativeRasterizationPropertiesEXT::pname:fullyCoveredFragmentShaderInputVariable
feature.

View File

@ -374,7 +374,7 @@ include::../api/protos/vkCmdBeginQueryIndexedEXT.txt[]
* pname:flags is a bitmask of elink:VkQueryControlFlagBits specifying
constraints on the types of queries that can: be performed.
* 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 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
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must: not specify a pname:layout equal to
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
* [[VUID-VkRenderPassCreateInfo-pAttachments-02511]]
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must: not specify a pname:layout equal to
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
* [[VUID-VkRenderPassCreateInfo-pAttachments-01566]]
For any member of pname:pAttachments with a pname:loadOp equal to
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
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]]
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
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]]
If the pname:pNext chain includes an instance of
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.
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
****
* [[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
sname:VkRenderPassCreateInfo::pname:attachmentCount
* [[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
sname:VkSubpassDescription::pname:pInputAttachments,
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:pPreserveAttachments for any subpass
* [[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
ename:VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, or
ename:VK_IMAGE_LAYOUT_GENERAL
* [[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:loadOp equal to ename:VK_ATTACHMENT_LOAD_OP_LOAD or
ename:VK_ATTACHMENT_LOAD_OP_DONT_CARE.
* [[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: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
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must: not specify a pname:layout equal to
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
pname:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
* [[VUID-VkRenderPassCreateInfo2KHR-pAttachments-02523]]
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must: not specify a pname:layout equal to
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL.
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL.
* [[VUID-VkRenderPassCreateInfo2KHR-pDependencies-03054]]
For any element of pname:pDependencies, if the pname:srcSubpass is not
ename:VK_SUBPASS_EXTERNAL, all stage flags included in the

View File

@ -96,7 +96,7 @@ endif::editing-notes[]
* [[VUID-VkBufferCreateInfo-sharingMode-00913]]
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
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]]
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
pname:queueFamilyIndexCount must: be greater than `1`
@ -874,7 +874,7 @@ endif::VK_VERSION_1_1,VK_KHR_external_memory[]
* [[VUID-VkImageCreateInfo-sharingMode-00941]]
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
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]]
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
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
the complete mipmap chain based on [eq]#pname:extent.width#,
[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]]
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
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]]
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
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]]
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
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[]
* pname:aspectMask is a elink:VkImageAspectFlags selecting the image
* pname:aspectMask is a tlink:VkImageAspectFlags selecting the image
_aspect_.
* pname:mipLevel selects the mipmap level.
* pname:arrayLayer selects the array layer.
@ -3912,7 +3904,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
slink:VkExternalMemoryBufferCreateInfo structure
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
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
in code:usage1, and they have the same
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_KHR_device_group+VK_KHR_swapchain[]
* [[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_VERSION_1_1+VK_KHR_swapchain[]
ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
@ -4926,7 +4918,7 @@ ifdef::VK_KHR_swapchain[]
* [[VUID-VkBindImageMemoryInfo-pNext-01632]]
If the pname:pNext chain does not include an instance of
slink:VkBindImageMemorySwapchainInfoKHR, pname:memory must: be a valid
dname:VkDeviceMemory handle
slink:VkDeviceMemory handle
endif::VK_KHR_swapchain[]
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_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
#define VK_HEADER_VERSION 95
#define VK_HEADER_VERSION 96
#define VK_NULL_HANDLE 0
@ -8862,16 +8862,16 @@ VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV(
#endif
#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"
typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
VkStructureType sType;
void* pNext;
uint16_t pciDomain;
uint8_t pciBus;
uint8_t pciDevice;
uint8_t pciFunction;
uint32_t pciDomain;
uint32_t pciBus;
uint32_t pciDevice;
uint32_t pciFunction;
} VkPhysicalDevicePCIBusInfoPropertiesEXT;
@ -8917,12 +8917,12 @@ typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT {
#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_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"

View File

@ -1,2 +1,2 @@
# 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
is the name of another command this command is an alias of, used
when promoting a function from vendor to Khronos extension or
Khronos extension to core API status. A command alias describes the
case where there are two function names which resolve to the _same_
entry point in the underlying layer stack.
Khronos extension to core API status. A command alias describes the case
where there are two function names which implement the same behavior.
* tag:description - optional. Unused text.
* tag:implicitexternsyncparams - optional. Contains a list of tag:param
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
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]]
== Command prototype (tag:proto tags)
@ -2011,6 +2021,9 @@ files and Python scripts are logged in Github history.
[[changelog]]
= 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
member and parameter attributes, if not specified.
* 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
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 95</type>
#define <name>VK_HEADER_VERSION</name> 96</type>
<type category="define">
#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><type>VkBool32</type> <name>viewportWScalingEnable</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 category="struct" name="VkViewportSwizzleNV">
<member><type>VkViewportCoordinateSwizzleNV</type> <name>x</name></member>
@ -2526,7 +2526,7 @@ server.
<member>const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkPipelineViewportSwizzleStateCreateFlagsNV</type> <name>flags</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 category="struct" name="VkPhysicalDeviceDiscardRectanglePropertiesEXT" structextends="VkPhysicalDeviceProperties2">
<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">
<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>uint16_t</type> <name>pciDomain</name></member>
<member><type>uint8_t</type> <name>pciBus</name></member>
<member><type>uint8_t</type> <name>pciDevice</name></member>
<member><type>uint8_t</type> <name>pciFunction</name></member>
<member><type>uint32_t</type> <name>pciDomain</name></member>
<member><type>uint32_t</type> <name>pciBus</name></member>
<member><type>uint32_t</type> <name>pciDevice</name></member>
<member><type>uint32_t</type> <name>pciFunction</name></member>
</type>
<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>
@ -10001,7 +10001,7 @@ server.
</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">
<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 offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"/>
<type name="VkPhysicalDevicePCIBusInfoPropertiesEXT"/>
@ -10091,13 +10091,13 @@ server.
</extension>
<extension name="VK_GOOGLE_hlsl_functionality1" number="224" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
<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"/>
</require>
</extension>
<extension name="VK_GOOGLE_decorate_string" number="225" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
<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"/>
</require>
</extension>