Change log for December 16, 2018 Vulkan 1.1.96 spec update:
* Update release number to 96. Public Issues: * Fix typo in `vk.xml` for `structextends` attribute of slink:VkPhysicalDeviceShadingRateImagePropertiesNV (public PR 870). * Fix links in optimized PDF output (public PR 879). Internal Issues: * Add a link to GitHub contributors in the <<credits, Other Credits>> section (internal issue 808). * Clarify the behavior of command aliases described in the <<versions,Core Revisions>> and <<initialization-functionpointers, Command Function Pointers>> sections and the registry schema document with respect to whether they are or are not the same entry point, and what the behaviour of the ftext:vkGet*ProcAddr commands is for each alias (internal issue 1462). * Update slink:VkPipelineShaderStageCreateInfo valid usage statements for writing to code:Layer and code:viewportIndex to apply to any vertex processing stage (internal issue 1475). * Make sparse image creation optional for Y'C~B~C~R~ formats in the <<features-required-format-support, Required Format Support>> section and the <<features-formats-requiring-sampler-ycbcr-conversion, Formats requiring sampler Y'C~B~C~R~ conversion for ename:VK_IMAGE_ASPECT_COLOR_BIT image views>> table (internal issue 1476). * Modify the valid usage statement for flink:vkCmdDrawIndirectByteCountEXT::pname:vertexStride to use the pname:maxTransformFeedbackBufferDataStride limit rather than the pname:maxVertexInputBindingStride limit, which is a better match for transform feedback related operations (internal issue 1487). * Changed all members of slink:VkPhysicalDevicePCIBusInfoPropertiesEXT to have the `uint32_t` type. This is an imcompatible change to an EXT that's very recently released; although this is against usual Vulkan WG policy, we discussed and consider this an acceptable risk, but have polled the mesa-dev list in case there are use cases we missed (internal issue 1492). * Set spec vetsion to 1 for `VK_GOOGLE_hlsl_functionality1` and `VK_GOOGLE_decorate_string` in `vk.xml` (internal MR 2948). * Remove redundant valid usage statement `VkImageCreateInfo-pNext-02395` (internal MR 2950). * Add `check_spec_links.py` script, use it in Gitlab CI, and fix many minor markup issues discovered by the script (internal MR 2955). * Update `BUILD.md` to the current Ruby version (2.5.3), and make some corresponding updates to per-platform build instructions (internal MR 2956). * Fix binding numbers and other details in flink:vkUpdateDescriptorSetWithTemplate.txt example code blocks (internal MR 2960). * Remove some nautovalidity="true" in `vk.xml` for NV extensions where it's clearly wrong (internal MR 2970).
This commit is contained in:
parent
56c5c6965e
commit
b557dd2167
|
@ -65,3 +65,7 @@ xml/diag.txt
|
|||
|
||||
# Auto-generated files
|
||||
# */timeMarker
|
||||
|
||||
# check_spec_links (and its tests) output
|
||||
applyfixes.sh
|
||||
xml/.cache
|
||||
|
|
|
@ -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:
|
||||
|
|
52
BUILD.adoc
52
BUILD.adoc
|
@ -427,7 +427,7 @@ work at least as well.
|
|||
|
||||
* GNU make (`make` version: 4.0.8-1; older versions probably OK)
|
||||
* 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
|
||||
|
|
2
Makefile
2
Makefile
|
@ -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
|
||||
|
|
|
@ -52,7 +52,7 @@ None.
|
|||
|
||||
=== New Enums
|
||||
|
||||
* elink:VkPipelineRasterizationConservativeStateCreateFlagsEXT
|
||||
* tlink:VkPipelineRasterizationConservativeStateCreateFlagsEXT
|
||||
* elink:VkConservativeRasterizationModeEXT
|
||||
|
||||
=== New Structures
|
||||
|
|
|
@ -47,7 +47,7 @@ None.
|
|||
|
||||
=== New Enums
|
||||
|
||||
* elink:VkPipelineDiscardRectangleStateCreateFlagsEXT
|
||||
* tlink:VkPipelineDiscardRectangleStateCreateFlagsEXT
|
||||
* elink:VkDiscardRectangleModeEXT
|
||||
|
||||
=== New Structures
|
||||
|
|
|
@ -23,7 +23,7 @@ slink:VkSurfaceKHR object.
|
|||
|
||||
=== New Enums
|
||||
|
||||
* elink:VkSurfaceCounterFlagsEXT
|
||||
* tlink:VkSurfaceCounterFlagsEXT
|
||||
* elink:VkSurfaceCounterFlagBitsEXT
|
||||
|
||||
=== New Structures
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -80,7 +80,7 @@ None.
|
|||
|
||||
=== New Enums
|
||||
|
||||
* elink:VkPipelineRasterizationStateStreamCreateFlagsEXT
|
||||
* tlink:VkPipelineRasterizationStateStreamCreateFlagsEXT
|
||||
|
||||
=== New Structures
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ slink:VkShaderModule.
|
|||
=== New Enums
|
||||
|
||||
* elink:VkValidationCacheHeaderVersionEXT
|
||||
* elink:VkValidationCacheCreateFlagsEXT
|
||||
* tlink:VkValidationCacheCreateFlagsEXT
|
||||
|
||||
=== New Structures
|
||||
|
||||
|
|
|
@ -125,9 +125,9 @@ Options for defining this transition include:
|
|||
* A new structure that can be added to the pname:pNext list in
|
||||
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
|
||||
|
|
|
@ -83,8 +83,8 @@ etc.).
|
|||
|
||||
=== New Flag Types
|
||||
|
||||
* elink:VkIndirectCommandsLayoutUsageFlagsNVX
|
||||
* elink:VkObjectEntryUsageFlagsNVX
|
||||
* tlink:VkIndirectCommandsLayoutUsageFlagsNVX
|
||||
* tlink:VkObjectEntryUsageFlagsNVX
|
||||
|
||||
=== New Enum Constants
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ None.
|
|||
|
||||
=== New Enums
|
||||
|
||||
* elink:VkPipelineCoverageToColorStateCreateFlagsNV
|
||||
* tlink:VkPipelineCoverageToColorStateCreateFlagsNV
|
||||
|
||||
=== New Structures
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ None.
|
|||
=== New Enums
|
||||
|
||||
* elink:VkCoverageModulationModeNV
|
||||
* elink:VkPipelineCoverageModulationStateCreateFlagsNV
|
||||
* tlink:VkPipelineCoverageModulationStateCreateFlagsNV
|
||||
|
||||
=== New Structures
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ None.
|
|||
=== New Enums
|
||||
|
||||
* elink:VkViewportCoordinateSwizzleNV
|
||||
* elink:VkPipelineViewportSwizzleStateCreateFlagsNV
|
||||
* tlink:VkPipelineViewportSwizzleStateCreateFlagsNV
|
||||
|
||||
=== New Structures
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
****
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 2596
|
||||
startVUID = 2598
|
||||
|
|
19
registry.txt
19
registry.txt
|
@ -823,9 +823,8 @@ tag are optional and may be in any order:
|
|||
* tag:alias - optional. Has no attributes and contains a string which
|
||||
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
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,133 @@
|
|||
#!/usr/bin/python3
|
||||
#
|
||||
# Copyright (c) 2018 Collabora, Ltd.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
|
||||
#
|
||||
# Purpose: This file contains tests for check_spec_links.py
|
||||
|
||||
from check_spec_links import MacroChecker, MessageId, shouldEntityBeText
|
||||
import pytest
|
||||
|
||||
|
||||
class CheckerWrapper(object):
|
||||
def __init__(self):
|
||||
self.ckr = MacroChecker(set([]))
|
||||
|
||||
def enabled(self, enabled_messages):
|
||||
self.ckr.enabled_messages = set(enabled_messages)
|
||||
return self
|
||||
|
||||
def check(self, string):
|
||||
return self.ckr.processString(string + '\n')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def ckr():
|
||||
return CheckerWrapper()
|
||||
|
||||
|
||||
def replacement(ckr):
|
||||
assert(len(ckr.messages) == 1)
|
||||
from pprint import pprint
|
||||
pprint(ckr.messages[0].script_location)
|
||||
pprint(ckr.messages[0].replacement)
|
||||
pprint(ckr.messages[0].fix)
|
||||
return ckr.messages[0].replacement
|
||||
|
||||
|
||||
def test_missing_macro(ckr):
|
||||
ckr.enabled([MessageId.MISSING_MACRO])
|
||||
assert(ckr.check('with vkFreeMemory by').numDiagnostics() == 1)
|
||||
|
||||
assert(not ckr.check('<<VkObjectType').messages)
|
||||
assert(not ckr.check('VkObjectType>>').messages)
|
||||
assert(not ckr.check(
|
||||
'VkObjectType and Vulkan Handle Relationship>> table').messages)
|
||||
|
||||
|
||||
def test_entity_detection(ckr):
|
||||
ckr.enabled([MessageId.BAD_ENTITY])
|
||||
# Should complain about BAD_ENTITY
|
||||
assert(ckr.check('flink:abcd').numDiagnostics() == 1)
|
||||
|
||||
# Should just give BAD_ENTITY (an error), not MISSING_TEXT (a warning).
|
||||
ckr.enabled(
|
||||
[MessageId.MISSING_TEXT, MessageId.BAD_ENTITY])
|
||||
assert(ckr.check('*flink:abcd*').numErrors() == 1)
|
||||
|
||||
|
||||
def test_wrong_macro(ckr):
|
||||
ckr.enabled([MessageId.WRONG_MACRO])
|
||||
assert(ckr.check('basetype:uint32_t').numErrors() == 1)
|
||||
assert(ckr.check('code:uint32_t').numErrors() == 0)
|
||||
|
||||
|
||||
def test_legacy(ckr):
|
||||
|
||||
ckr.enabled([MessageId.LEGACY])
|
||||
# Should complain about LEGACY
|
||||
assert(ckr.check('sname:VkDeviceMemory').numDiagnostics() == 1)
|
||||
|
||||
|
||||
def test_should_entity_be_text():
|
||||
assert(shouldEntityBeText('pBuffers[i]', '[i]'))
|
||||
assert(shouldEntityBeText('maxPerStage*', None))
|
||||
assert(shouldEntityBeText('VK_MEMORY_PLANE_[X]', '[X]'))
|
||||
assert(shouldEntityBeText('VK_MEMORY_PLANE[__x__]', '[__x__]'))
|
||||
assert(shouldEntityBeText('VK_MEMORY_PLANE___i___BIT_EXT', None))
|
||||
assert(False == shouldEntityBeText('VK_MEMORY_PLANE_i_BIT_EXT', None))
|
||||
|
||||
|
||||
def test_misused_text(ckr):
|
||||
ckr.enabled([MessageId.MISUSED_TEXT])
|
||||
|
||||
assert(ckr.check('etext:VK_MEMORY_PLANE_').numDiagnostics() == 0)
|
||||
assert(ckr.check('etext:VK_MEMORY_PLANE_[X]').numDiagnostics() == 0)
|
||||
assert(ckr.check('etext:VK_MEMORY_PLANE[i]').numDiagnostics() == 0)
|
||||
assert(ckr.check('etext:VK_MEMORY_PLANE[__x__]').numDiagnostics() == 0)
|
||||
|
||||
# Should be OK, since __i__ is a placeholder here
|
||||
assert(ckr.check('etext:VK_MEMORY_PLANE___i___BIT_EXT').numDiagnostics() == 0)
|
||||
|
||||
|
||||
def test_extension(ckr):
|
||||
ckr.enabled(set(MessageId))
|
||||
expected_replacement = '`<<VK_NV_mesh_shader>>`'
|
||||
assert(ckr.check('asdf VK_NV_mesh_shader asdf').messages)
|
||||
assert(replacement(ckr.check('asdf VK_NV_mesh_shader asdf'))
|
||||
== expected_replacement)
|
||||
|
||||
assert(ckr.check('asdf VK_NV_MESH_SHADER asdf').messages)
|
||||
assert(replacement(ckr.check('asdf VK_NV_MESH_SHADER asdf'))
|
||||
== expected_replacement)
|
||||
|
||||
assert(ckr.check('asdf ename:VK_NV_mesh_shader asdf').messages)
|
||||
assert(replacement(ckr.check('asdf ename:VK_NV_mesh_shader asdf'))
|
||||
== expected_replacement)
|
||||
|
||||
assert(ckr.check('asdf elink:VK_NV_mesh_shader asdf').messages)
|
||||
assert(replacement(ckr.check('asdf elink:VK_NV_mesh_shader asdf'))
|
||||
== expected_replacement)
|
||||
|
||||
assert(ckr.check('asdf elink:VK_NV_MESH_SHADER asdf').messages)
|
||||
assert(replacement(ckr.check('asdf elink:VK_NV_MESH_SHADER asdf'))
|
||||
== expected_replacement)
|
||||
|
||||
assert(not ckr.check('asdf `<<VK_NV_mesh_shader>>` asdf').messages)
|
||||
assert(not ckr.check('asdf `VK_NV_mesh_shader` asdf').messages)
|
||||
|
||||
# TODO can we auto-correct this to add the backticks?
|
||||
assert(not ckr.check('asdf <<VK_NV_mesh_shader>> asdf').messages)
|
20
xml/vk.xml
20
xml/vk.xml
|
@ -146,7 +146,7 @@ server.
|
|||
<type category="define">// Vulkan 1.1 version number
|
||||
#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=""VK_EXT_pci_bus_info"" name="VK_EXT_PCI_BUS_INFO_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"/>
|
||||
<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=""VK_GOOGLE_hlsl_functionality1"" 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=""VK_GOOGLE_decorate_string"" name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
|
|
Loading…
Reference in New Issue