Change log for November 18, 2018 Vulkan 1.1.93 spec update:

* Update release number to 93.

Public Issues:

  * Add spec language for ename:VK_INDEX_TYPE_NONE_NV and fix up
    slink:VkAccelerationStructureTypeNV (public issue 848).
  * Add missing suffix in description of slink:VkSubpassDescription2KHR
    parameters (public pull request 851).
  * Fix miscellaneous typos (public pull request 855).
  * Add driver ID for Pastel (public pull request 856).
  * Add missing include directive for slink:VkMemoryWin32HandlePropertiesKHR
    implicit valid usage statements (public pull request 857).

Internal Issues:

  * Restrict the storage classes permitted for SPIR-V atomics to what is
    actually supported, in the <<spirvenv-module-validation, Validation
    Rules within a Module>> section (internal issue 1123).
  * Add a missing Valid Usage statement to slink:VkRenderPassCreateInfo for
    the case pname:stencilLoadOp == ename:VK_LOAD_OP_CLEAR, pname:layout ==
    ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL (internal issue
    1408).
  * Modify optimize-pdf script and Makefile to retain non-optimized original
    PDF on errors (internal issue 1435).
  * Add <<spirvenv-module-validation, SPIR-V validation rules>> stating that
    only the listed code:BuiltIn decorations are permitted, and only when
    relevante features and extensions are enabled (internal issue 1449).
  * Remove some duplicated Valid Usage IDs created via cut & paste error
    (internal issue 1455).
  * Build HTML output for extension reference pages (internal issue 1461).
  ** Improve genRef.py handling of aliases defined inside other refpages.
  ** Emit aliases in pygenerator.py.
  ** Add XML noautovalidity flag for VkRenderPassCreateFlags until there
     are some corresponding FlagBits defined.
  ** Corrected types= attribute on some refpage blocks to 'flags'
  ** Added refpage blocks for some missing types detected by CI tests.
  * Fixed many Valid Usage statement issues in slink:VkRenderPassCreateInfo,
    slink:VkSubpassDescription, slink:VkSubpassDescription2KHR,
    slink:VkSubpassDependency2KHR, flink:vkCmdBeginRenderPass,
    flink:vkCmdBeginRenderPass2KHR, and slink:VkRenderPassBeginInfo
    discovered while adding `VK_KHR_create_renderpass2` to the validation
    layers.

New Extensions:

  * `VK_EXT_scalar_block_layout`
  * `VK_EXT_separate_stencil_usage`
This commit is contained in:
Jon Leech 2018-11-18 02:55:14 -08:00
parent 7422fe10e9
commit 256a1ef661
59 changed files with 1045 additions and 483 deletions

1
.gitignore vendored
View File

@ -44,6 +44,7 @@ appendices/meta
# Files generated by extraction from spec source
man/PFN*.txt
man/A[A-Z][a-z]*.txt
man/[Vv][Kk]*.txt
man/apispec.txt
man/logfile

View File

@ -9,7 +9,7 @@ spec-generate:
- 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 manhtml manhtmlpages checkinc checklinks validusage
- ./makeAllExts QUIET= -j${nproc} -Otarget html styleguide registry manhtmlpages checkinc checklinks validusage
artifacts:
when: always
paths:

View File

@ -115,7 +115,7 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 92
PATCHVERSION = 93
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION)
else
@ -175,16 +175,14 @@ SVGFILES := $(wildcard $(IMAGEPATH)/*.svg)
# Top-level spec source file
SPECSRC := vkspec.txt
# Files making up sections of the API spec. The wildcard expression
# should work in extension branches to pull in those files as well.
# Static files making up sections of the API spec.
SPECFILES = $(wildcard chapters/[A-Za-z]*.txt appendices/[A-Za-z]*.txt chapters/*/[A-Za-z]*.txt appendices/*/[A-Za-z]*.txt)
GENINCLUDE = $(wildcard api/*/[A-Za-z]*.txt validity/*/[A-Za-z]*.txt hostsynctable/*.txt)
# Shorthand for where the extension appendix generated files go
METADIR = appendices/meta
# Generated dependencies of the spec
# Dynamically generated dependencies of the spec and other targets, from vk.xml
GENDEPENDS = api/timeMarker validity/timeMarker hostsynctable/timeMarker $(METADIR)/timeMarker
# All non-format-specific dependencies
COMMONDOCS = $(SPECFILES) $(GENINCLUDE) $(GENDEPENDS)
COMMONDOCS = $(SPECFILES) $(GENDEPENDS)
# Install katex in $(OUTDIR)/katex for reference by all HTML targets
# README.md is a proxy for all the katex files that need to be installed
@ -248,7 +246,7 @@ STYLEFILES = $(wildcard style/[A-Za-z]*.txt)
styleguide: $(OUTDIR)/styleguide.html
$(OUTDIR)/styleguide.html: KATEXDIR = katex
$(OUTDIR)/styleguide.html: $(STYLESRC) $(STYLEFILES) $(GENINCLUDE) $(GENDEPENDS) katexinst
$(OUTDIR)/styleguide.html: $(STYLESRC) $(STYLEFILES) $(GENDEPENDS) katexinst
$(QUIET)$(MKDIR) $(OUTDIR)
$(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ $(STYLESRC)
@ -310,47 +308,44 @@ MANSECTION := 3
# Ref page sources, split up by core API (CORE), KHR extensions (KHR), and
# other extensions (VEN). This is a hacky approach to ref page generation
# now that the single-branch model is in place, and there are outstanding
# issues to resolve it. For the moment, we always just build the core
# ref pages.
# issues to resolve it. For now, always build all reference pages.
# Changing MANSOURCES to e.g. $(CORESOURCES) will restore older behavior.
KHRSOURCES = $(wildcard $(MANDIR)/*KHR.txt)
MACROSOURCES = $(wildcard $(MANDIR)/VK_*[A-Z][A-Z].txt)
VENSOURCES = $(filter-out $(KHRSOURCES) $(MACROSOURCES),$(wildcard $(MANDIR)/*[A-Z][A-Z].txt))
CORESOURCES = $(filter-out $(KHRSOURCES) $(VENSOURCES),$(wildcard $(MANDIR)/[Vv][Kk]*.txt $(MANDIR)/PFN*.txt))
MANSOURCES = $(CORESOURCES)
MANSOURCES = $(wildcard $(MANDIR)/[Vv][Kk]*.txt $(MANDIR)/PFN*.txt)
MANCOPYRIGHT = $(MANDIR)/copyright-ccby.txt $(MANDIR)/footer.txt
# Automatic generation of ref pages. Needs to have a proper dependency
# causing the man page sources to be generated by running genRef (once),
# but adding $(MANSOURCES) to the targets causes genRef to run
# once/target.
# Generation of ref page asciidoctor sources by extraction from the
# specification.
#
# @@ Needs to pass in $(EXTOPTIONS) and use that to determine which
# pages to generate. As it stands, all the extension ref pages are
# also generated, though they are not usable at present.
# Should have a proper dependency causing the man page sources to be
# generated by running genRef (once), but adding $(MANSOURCES) to the
# targets causes genRef to run once/target.
#
# Should pass in $(EXTOPTIONS) to determine which pages to generate.
# For now, all core and extension ref pages are extracted by genRef.py.
LOGFILE = man/logfile
man/apispec.txt: $(SPECFILES) genRef.py reflib.py vkapi.py
$(PYTHON) genRef.py -log $(LOGFILE) $(SPECFILES)
# These dependencies don't take into account include directives
# These targets are HTML5 ref pages
#
# The recursive $(MAKE) is an apparently unavoidable hack, since the
# actual list of man page sources isn't known until after
# man/apispec.txt is generated.
manhtmlpages: man/apispec.txt
$(MAKE) buildmanpages
# buildmanpages: $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html)
# man/apispec.txt is generated. $(GENDEPENDS) is generated before
# running the recursive make, so it doesn't trigger twice
manhtmlpages: man/apispec.txt $(GENDEPENDS)
$(MAKE) -e buildmanpages
MANHTMLDIR = $(OUTDIR)/man/html
MANHTML = $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html)
buildmanpages: $(MANHTML)
$(MANHTMLDIR)/%.html: KATEXDIR = ../../katex
$(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) $(GENINCLUDE) $(GENDEPENDS) katexinst
$(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) $(GENDEPENDS) katexinst
$(QUIET)$(MKDIR) $(MANHTMLDIR)
$(QUIET)$(ASCIIDOC) -b html5 -a cross-file-links -a html_spec_relative='../../html/vkspec.html' $(ADOCOPTS) $(ADOCHTMLOPTS) -d manpage -o $@ $<
@ -362,7 +357,7 @@ $(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) $(GENINCLUDE) $(GENDEPENDS
manpdf: $(OUTDIR)/apispec.pdf
$(OUTDIR)/apispec.pdf: $(SPECVERSION) man/apispec.txt $(MANCOPYRIGHT) $(SVGFILES) $(GENINCLUDE) $(GENDEPENDS)
$(OUTDIR)/apispec.pdf: $(SPECVERSION) man/apispec.txt $(MANCOPYRIGHT) $(SVGFILES) $(GENDEPENDS)
$(QUIET)$(MKDIR) $(OUTDIR)
$(QUIET)$(MKDIR) $(PDFMATHDIR)
$(QUIET)$(ASCIIDOC) -b pdf -a html_spec_relative='html/vkspec.html' $(ADOCOPTS) $(ADOCPDFOPTS) -o $@ man/apispec.txt
@ -378,7 +373,7 @@ manhtml: $(OUTDIR)/apispec.html
$(OUTDIR)/apispec.html: KATEXDIR = katex
$(OUTDIR)/apispec.html: ADOCMISCOPTS =
$(OUTDIR)/apispec.html: $(SPECVERSION) man/apispec.txt $(MANCOPYRIGHT) $(SVGFILES) $(GENINCLUDE) $(GENDEPENDS) katexinst
$(OUTDIR)/apispec.html: $(SPECVERSION) man/apispec.txt $(MANCOPYRIGHT) $(SVGFILES) $(GENDEPENDS) katexinst
$(QUIET)$(MKDIR) $(OUTDIR)
$(QUIET)$(ASCIIDOC) -b html5 -a html_spec_relative='html/vkspec.html' $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ man/apispec.txt
@ -402,7 +397,7 @@ INSPEC = $(CHECKDIR)/inspec
NOTINSPEC = $(CHECKDIR)/notInSpec.txt
checkinc:
$(QUIET)if test ! -d $(CHECKDIR) ; then $(MKDIR) $(CHECKDIR) ; fi
$(QUIET)ls $(GENINCLUDE) | sort > $(ACTUAL)
$(QUIET)find api validity hostsynctable -name '*.txt' | sort > $(ACTUAL)
$(QUIET)cat $(SPECFILES) | \
egrep '^include::\.\./' | tr -d '[]' | \
sed -e 's#^include::\.\./##g' | sort > $(INCFILES)
@ -480,7 +475,7 @@ $(METADIR)/timeMarker: $(VKXML) $(GENVK)
# This leaves out config/extDependency.sh intentionally as it only
# needs to be updated when the extension dependencies in vk.xml change.
generated: vkapi.py api/timeMarker hostsynctable/timeMarker validity/timeMarker $(METADIR)/timeMarker
generated: vkapi.py $(GENDEPENDS)
# Extension dependencies derived from vk.xml
# Both Bash and Python versions are generated

View File

@ -18,9 +18,9 @@ include::meta/VK_AMD_shader_image_load_store_lod.txt[]
This extension adds support for the following SPIR-V extension in Vulkan:
* https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_shader_image_load_store_lod.html[+SPV_AMD_shader_image_load_store_lod+]
* https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_shader_image_load_store_lod.html[+SPV_AMD_shader_image_load_store_lod+]
=== Version History
* Revision 1, 2017-08-21 (Dominik Witczak)
- Initial draft
* Revision 1, 2017-08-21 (Dominik Witczak)
- Initial draft

View File

@ -100,5 +100,5 @@ else
=== Version History
* Revision 1, 2017-03-21 (Dominik Witczak)
- Initial draft
* Revision 1, 2017-03-21 (Dominik Witczak)
- Initial draft

View File

@ -0,0 +1,43 @@
// Copyright (c) 2017-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
include::meta/VK_EXT_scalar_block_layout.txt[]
*Last Modified Date*::
2018-11-14
*Contributors*::
- Jeff Bolz
- Jan-Harald Fredriksen
- Graeme Leese
- Jason Ekstrand
- John Kessenich
=== Short Description
Enables C-like structure layout for SPIR-V blocks.
=== Description
This extension modifies the alignment rules for uniform buffers, storage
buffers and push constants, allowing non-scalar types to be aligned solely
based on the size of their components, without additional requirements.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT
=== New Structures
* slink:VkPhysicalDeviceScalarBlockLayoutFeaturesEXT
=== Issues
None.
=== Version History
* Revision 1, 2018-11-14 (Tobias Hector)
- Initial draft

View File

@ -0,0 +1,42 @@
include::meta//VK_EXT_separate_stencil_usage.txt[]
*Last Modified Date*::
2018-11-08
*IP Status*::
No known IP claims.
*Contributors*::
- Daniel Rakos, AMD
- Jordan Logan, AMD
This extension allows specifying separate usage flags for the stencil aspect
of images with a depth-stencil format at image creation time.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT
=== New Enums
None.
=== New Structures
* slink:VkImageStencilUsageCreateInfoEXT
=== New Functions
None.
=== Issues
None.
=== Version History
* Revision 1, 2018-11-08 (Daniel Rakos)
- Internal revisions.

View File

@ -86,7 +86,8 @@ This extension adds support for the following SPIR-V extension in Vulkan:
** ename:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
* Extending elink:VkPipelineCreateFlagBits
** ename:VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV
* Extending elink:VkIndexType
** ename:VK_INDEX_TYPE_NONE_NV
=== New Enums
@ -97,6 +98,7 @@ This extension adds support for the following SPIR-V extension in Vulkan:
** elink:VkGeometryTypeNV
** elink:VkRayTracingShaderGroupTypeNV
** elink:VkAccelerationStructureMemoryRequirementsTypeNV
** elink:VkAccelerationStructureTypeNV
=== New Structures

View File

@ -44,10 +44,9 @@ None.
=== New Enum Constants
* Extending elink:VkStructureType
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
** ename:VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV
* Extending elink:VkStructureType
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
** ename:VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV
=== New Enums
@ -56,8 +55,8 @@ None.
=== New Structures
* slink:VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
* slink:VkPipelineRepresentativeFragmentTestStateCreateInfoNV
* slink:VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
* slink:VkPipelineRepresentativeFragmentTestStateCreateInfoNV
=== New Functions
@ -110,7 +109,7 @@ derivatives in the fragment shader.
=== Version History
* Revision 2, 2018-09-13 (pbrown)
- Add issues.
* Revision 1, 2018-08-22 (Kedarnath Thangudu)
- Internal Revisions
* Revision 2, 2018-09-13 (pbrown)
- Add issues.
* Revision 1, 2018-08-22 (Kedarnath Thangudu)
- Internal Revisions

View File

@ -503,7 +503,7 @@ endif::VK_NV_ray_tracing[]
** *SubgroupMemory*, *CrossWorkgroupMemory*, and *AtomicCounterMemory* are
ignored.
* Any code:OpVariable with an code:Initializer operand must: have one of
the following as its code:Storage code:Class operand:
the following as its *Storage Class* operand:
** *Output*
** *Private*
** *Function*
@ -540,6 +540,10 @@ endif::VK_NV_ray_tracing[]
code:OpTypeSampledImage, and arrays of these types must: not be stored
to or modified.
* Decorations
** Any code:BuiltIn decoration not listed in
<<interfaces-builtin-variables>> must: not be used.
** Any code:BuiltIn decoration that corresponds only to Vulkan features or
extensions that have not been enabled must: not be used.
** The code:GLSLShared and code:GLSLPacked decorations must: not be used.
** The code:Flat, code:NoPerspective, code:Sample, and code:Centroid
decorations must: not be used on variables with storage class other
@ -611,14 +615,14 @@ endif::VK_NV_compute_shader_derivatives[]
ifdef::VK_VERSION_1_1[]
* "`Result Type`" for *Non Uniform Group Operations* must: be limited to
32-bit float, 32-bit integer, boolean, or vectors of these types.
If the code:Float64 capability is enabled, double and vector of double
If the code:Float64 capability is enabled, double and vectors of double
types are also permitted.
* "`Mask`" for code:OpGroupNonUniformShuffleXor must: be a specialization
constant or a constant, or if the dynamic instance is called within a
loop construct it must: be one of:
. A specialization constant.
. A constant.
. An arthimetic operation whose operands are 1., 2., or 4.
. An arithmetic operation whose operands are 1., 2., or 4.
. A phi node whose operands are 1., 2., or 3.
* If code:OpGroupNonUniformBallotBitCount is used, the group operation
must: be one of:
@ -631,15 +635,27 @@ ifdef::VK_KHR_shader_atomic_int64[]
or a scalar 64-bit integer type if the code:Int64Atomics capability is
enabled,
endif::VK_KHR_shader_atomic_int64[]
for the _Result Type_ and the type of the value pointed to by _Pointer_.
for the value pointed to by _Pointer_.
ifdef::VK_KHR_shader_atomic_int64[]
** <<features-features-shaderBufferInt64Atomics,shaderBufferInt64Atomics>>
** <<features-features-shaderBufferInt64Atomics,shaderBufferInt64Atomics>>
must: be enabled for 64-bit integer atomic operations to be supported
on buffers.
** <<features-features-shaderSharedInt64Atomics,shaderSharedInt64Atomics>>
on a _Pointer_ with a *Storage Class* of
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
*StorageBuffer* or
endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
*Uniform*.
** <<features-features-shaderSharedInt64Atomics,shaderSharedInt64Atomics>>
must: be enabled for 64-bit integer atomic operations to be supported
on shared variables.
on a _Pointer_ with a *Storage Class* of *Workgroup*.
endif::VK_KHR_shader_atomic_int64[]
* The _Pointer_ operand of all atomic instructions must: have a *Storage
Class* limited to:
** *Uniform*
** *Workgroup*
** *Image*
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
** *StorageBuffer*
endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
ifdef::VK_EXT_descriptor_indexing[]
* If an instruction loads from or stores to a resource (including atomics
and image instructions) and the resource descriptor being accessed is

View File

@ -39,25 +39,41 @@ ename:VK_ERROR_FEATURE_NOT_PRESENT.
If information is successfully and fully queried, the function will return
ename:VK_SUCCESS.
For ename:VK_SHADER_INFO_TYPE_STATISTICS_AMD, an instance of
For pname:infoType ename:VK_SHADER_INFO_TYPE_STATISTICS_AMD, an instance of
sname:VkShaderStatisticsInfoAMD will be written to the buffer pointed to by
pname:pInfo.
This structure will be populated with statistics regarding the physical
device resources used by that shader along with other miscellaneous
information and is described in further detail below.
For ename:VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD, pname:pInfo points to a UTF-8
null-terminated string containing human-readable disassembly.
For pname:infoType ename:VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD, pname:pInfo
points to a UTF-8 null-terminated string containing human-readable
disassembly.
The exact formatting and contents of the disassembly string are
vendor-specific.
The formatting and contents of all other types of information, including
ename:VK_SHADER_INFO_TYPE_BINARY_AMD, are left to the vendor and are not
further specified by this extension.
pname:infoType ename:VK_SHADER_INFO_TYPE_BINARY_AMD, are left to the vendor
and are not further specified by this extension.
include::../validity/protos/vkGetShaderInfoAMD.txt[]
--
[open,refpage='VkShaderInfoTypeAMD',desc='Enum specifying which type of shader info to query',type='enums']
--
Possible values of flink:vkGetShaderInfoAMD::pname:infoType, specifying the
information being queried from a shader, are:
include::../api/enums/VkShaderInfoTypeAMD.txt[]
* ename:VK_SHADER_INFO_TYPE_STATISTICS_AMD specifies that device resources
used by a shader will be queried.
* ename:VK_SHADER_INFO_TYPE_BINARY_AMD specifies that
implementation-specific information will be queried.
* ename:VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD specifies that human-readable
dissassembly of a shader.
--
[open,refpage='VkShaderStatisticsInfoAMD',desc='Statistical information about a particular shader within a pipeline',type='structs']
--

View File

@ -110,7 +110,7 @@ include::../api/enums/VkDebugReportFlagBitsEXT.txt[]
--
[open,refpage='VkDebugReportFlagsEXT',desc='Bitmask of VkDebugReportFlagBitsEXT',type='enums']
[open,refpage='VkDebugReportFlagsEXT',desc='Bitmask of VkDebugReportFlagBitsEXT',type='flags']
--
include::../api/flags/VkDebugReportFlagsEXT.txt[]

View File

@ -340,7 +340,7 @@ An application can: register callbacks even when no validation layers are
enabled, but they will only be called for the Vulkan loader and, if
implemented, other layer and driver events.
[open,refpage='VkDebugUtilsMessengerEXT',desc='Opaque handle to a debug messenger object',type='structs']
[open,refpage='VkDebugUtilsMessengerEXT',desc='Opaque handle to a debug messenger object',type='handles']
--
A sname:VkDebugUtilsMessengerEXT is a messenger object which handles passing
@ -492,6 +492,14 @@ In addition, space has been left between the enums to allow for later
addition of new severities in between the existing values.
====
[open,refpage='VkDebugUtilsMessageSeverityFlagsEXT',desc='Bitmask of VkDebugUtilsMessageSeverityFlagBitsEXT',type='flags']
--
include::../api/flags/VkDebugUtilsMessageSeverityFlagsEXT.txt[]
tname:VkDebugUtilsMessageSeverityFlagsEXT is a bitmask type for setting a
mask of zero or more elink:VkDebugUtilsMessageSeverityFlagBitsEXT.
--
[open,refpage='VkDebugUtilsMessageTypeFlagBitsEXT',desc='Bitmask specifying which types of events cause a debug messenger callback',type='enums']
--
@ -515,6 +523,14 @@ include::../api/enums/VkDebugUtilsMessageTypeFlagBitsEXT.txt[]
--
[open,refpage='VkDebugUtilsMessageTypeFlagsEXT',desc='Bitmask of VkDebugUtilsMessageTypeFlagBitsEXT',type='flags']
--
include::../api/flags/VkDebugUtilsMessageTypeFlagsEXT.txt[]
tname:VkDebugUtilsMessageTypeFlagsEXT is a bitmask type for setting a mask
of zero or more elink:VkDebugUtilsMessageTypeFlagBitsEXT.
--
[open,refpage='PFN_vkDebugUtilsMessengerCallbackEXT',desc='Application-defined debug messenger callback function',type='funcpointers']
--

View File

@ -65,7 +65,7 @@ include::../../api/enums/VkSurfaceCounterFlagBitsEXT.txt[]
--
[open,refpage='VkSurfaceCounterFlagsEXT',desc='Bitmask of VkSurfaceCounterFlagBitsEXT',type='enums']
[open,refpage='VkSurfaceCounterFlagsEXT',desc='Bitmask of VkSurfaceCounterFlagBitsEXT',type='flags']
--
include::../../api/flags/VkSurfaceCounterFlagsEXT.txt[]

View File

@ -74,3 +74,12 @@ include::../../api/structs/VkAndroidSurfaceCreateInfoKHR.txt[]
include::../../validity/structs/VkAndroidSurfaceCreateInfoKHR.txt[]
--
[open,refpage='ANativeWindow',desc='Android native window type',type='defines']
--
To remove an unnecessary compile-time dependency, an incomplete type
definition of code:ANativeWindow is provided in the Vulkan headers:
include::../../api/defines/ANativeWindow.txt[]
The actual code:ANativeWindow type is defined in Android NDK headers.
--

View File

@ -751,7 +751,7 @@ include::../../api/enums/VkDisplayPlaneAlphaFlagBitsKHR.txt[]
--
[open,refpage='VkDisplayPlaneAlphaFlagsKHR',desc='Bitmask of VkDisplayPlaneAlphaFlagBitsKHR',type='enums']
[open,refpage='VkDisplayPlaneAlphaFlagsKHR',desc='Bitmask of VkDisplayPlaneAlphaFlagBitsKHR',type='flags']
--
include::../../api/flags/VkDisplayPlaneAlphaFlagsKHR.txt[]

View File

@ -73,10 +73,10 @@ The sname:VkRectLayerKHR structure is defined as:
include::../../api/structs/VkRectLayerKHR.txt[]
* pname:offset is the origin of the rectangle, in pixels.
* pname:extent is the size of the rectangle, in pixels.
* pname:layer is the layer of the image.
For images with only one layer, the value of pname:layer must: be 0.
* pname:offset is the origin of the rectangle, in pixels.
* pname:extent is the size of the rectangle, in pixels.
* pname:layer is the layer of the image.
For images with only one layer, the value of pname:layer must: be 0.
.Valid Usage
****

View File

@ -506,7 +506,7 @@ include::../../api/enums/VkSurfaceTransformFlagBitsKHR.txt[]
--
[open,refpage='VkSurfaceTransformFlagsKHR',desc='Bitmask of VkSurfaceTransformFlagBitsKHR',type='enums']
[open,refpage='VkSurfaceTransformFlagsKHR',desc='Bitmask of VkSurfaceTransformFlagBitsKHR',type='flags']
--
include::../../api/flags/VkSurfaceTransformFlagsKHR.txt[]
@ -548,7 +548,7 @@ These values are described as follows:
--
[open,refpage='VkCompositeAlphaFlagsKHR',desc='Bitmask of VkCompositeAlphaFlagBitsKHR',type='enums']
[open,refpage='VkCompositeAlphaFlagsKHR',desc='Bitmask of VkCompositeAlphaFlagBitsKHR',type='flags']
--
include::../../api/flags/VkCompositeAlphaFlagsKHR.txt[]
@ -1161,7 +1161,7 @@ include::../../api/enums/VkDeviceGroupPresentModeFlagBitsKHR.txt[]
--
[open,refpage='VkDeviceGroupPresentModeFlagsKHR',desc='Bitmask of VkDeviceGroupPresentModeFlagBitsKHR',type='enums']
[open,refpage='VkDeviceGroupPresentModeFlagsKHR',desc='Bitmask of VkDeviceGroupPresentModeFlagBitsKHR',type='flags']
--
include::../../api/flags/VkDeviceGroupPresentModeFlagsKHR.txt[]

View File

@ -373,7 +373,7 @@ endif::VK_VERSION_1_1[]
--
[open,refpage='VkSwapchainCreateFlagsKHR',desc='Bitmask of VkSwapchainCreateFlagBitsKHR',type='enums']
[open,refpage='VkSwapchainCreateFlagsKHR',desc='Bitmask of VkSwapchainCreateFlagBitsKHR',type='flags']
--
include::../../api/flags/VkSwapchainCreateFlagsKHR.txt[]

View File

@ -339,7 +339,7 @@ include::../../api/enums/VkIndirectCommandsLayoutUsageFlagBitsNVX.txt[]
--
[open,refpage='VkIndirectCommandsLayoutUsageFlagsNVX',desc='Bitmask of VkIndirectCommandsLayoutUsageFlagBitsNVX',type='enums']
[open,refpage='VkIndirectCommandsLayoutUsageFlagsNVX',desc='Bitmask of VkIndirectCommandsLayoutUsageFlagBitsNVX',type='flags']
--
include::../../api/flags/VkIndirectCommandsLayoutUsageFlagsNVX.txt[]

View File

@ -152,7 +152,7 @@ include::../../api/enums/VkObjectEntryUsageFlagBitsNVX.txt[]
--
[open,refpage='VkObjectEntryUsageFlagsNVX',desc='Bitmask of VkObjectEntryUsageFlagBitsNVX',type='enums']
[open,refpage='VkObjectEntryUsageFlagsNVX',desc='Bitmask of VkObjectEntryUsageFlagBitsNVX',type='flags']
--
include::../../api/flags/VkObjectEntryUsageFlagsNVX.txt[]

View File

@ -87,7 +87,7 @@ include::../../api/enums/VkExternalMemoryFeatureFlagBitsNV.txt[]
--
[open,refpage='VkExternalMemoryFeatureFlagsNV',desc='Bitmask of VkExternalMemoryFeatureFlagBitsNV',type='enums']
[open,refpage='VkExternalMemoryFeatureFlagsNV',desc='Bitmask of VkExternalMemoryFeatureFlagBitsNV',type='flags']
--
include::../../api/flags/VkExternalMemoryFeatureFlagsNV.txt[]

View File

@ -66,7 +66,7 @@ endif::editing-notes[]
--
[open,refpage='VkExternalMemoryHandleTypeFlagsNV',desc='Bitmask of VkExternalMemoryHandleTypeFlagBitsNV',type='enums']
[open,refpage='VkExternalMemoryHandleTypeFlagsNV',desc='Bitmask of VkExternalMemoryHandleTypeFlagBitsNV',type='flags']
--
include::../../api/flags/VkExternalMemoryHandleTypeFlagsNV.txt[]

View File

@ -92,9 +92,8 @@ include::../../api/structs/VkAccelerationStructureInfoNV.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:type is a elink:VkAccelerationStructureMemoryRequirementsTypeNV
value specifying the type of acceleration structure that will be
created.
* pname:type is a elink:VkAccelerationStructureTypeNV value specifying the
type of acceleration structure that will be created.
* pname:flags is a bitmask of elink:VkBuildAccelerationStructureFlagBitsNV
specifying additional parameters of the acceleration structure.
* pname:instanceCount specifies the number of instances that will be in
@ -138,6 +137,23 @@ include::../../validity/structs/VkAccelerationStructureInfoNV.txt[]
--
[open,refpage='VkAccelerationStructureTypeNV',desc='Type of acceleration structure',type='enums']
--
Values which can: be set in slink:VkAccelerationStructureInfoNV::pname:type,
specifying specifying the type of acceleration structure, are:
include::../../api/enums/VkAccelerationStructureTypeNV.txt[]
* ename:VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV is a bottom-level
acceleration structure containing the AABBs or geometry to be
intersected.
* ename:VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV is a top-level
acceleration structure containing instance data referring to
bottom-level level acceleration structures.
--
[open,refpage='VkBuildAccelerationStructureFlagBitsNV',desc='Bitmask specifying additional parameters for acceleration structure builds',type='enums']
--
@ -181,6 +197,14 @@ features are used.
====
--
[open,refpage='VkBuildAccelerationStructureFlagsNV',desc='Bitmask of VkBuildAccelerationStructureFlagBitsNV',type='flags']
--
include::../../api/flags/VkBuildAccelerationStructureFlagsNV.txt[]
tname:VkBuildAccelerationStructureFlagsNV is a bitmask type for setting a
mask of zero or more elink:VkBuildAccelerationStructureFlagBitsNV.
--
[open,refpage='VkGeometryNV',desc='Structure specifying a geometry in a bottom-level acceleration structure',type='structs']
--
@ -230,6 +254,14 @@ include::../../api/enums/VkGeometryFlagBitsNV.txt[]
--
[open,refpage='VkGeometryFlagsNV',desc='Bitmask of VkGeometryFlagBitsNV',type='flags']
--
include::../../api/flags/VkGeometryFlagsNV.txt[]
tname:VkGeometryFlagsNV is a bitmask type for setting a mask of zero or more
elink:VkGeometryFlagBitsNV.
--
[open,refpage='VkGeometryDataNV',desc='Structure specifying geometry in a bottom-level acceleration structure',type='structs']
--

View File

@ -211,8 +211,8 @@ When the command is executed, a ray generation group of [eq]#pname:width
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT.
ifdef::VK_IMG_filter_cubic[]
* [[VUID-vkCmdTraceRaysNV-None-02482]]
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as
a result of this command, then the image view's
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
result of this command, then the image view's
<<resources-image-view-format-features,format features>> must: contain
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
* [[VUID-vkCmdTraceRaysNV-None-02483]]
@ -456,6 +456,14 @@ flag.
--
[open,refpage='VkGeometryInstanceFlagsNV',desc='Bitmask of VkGeometryInstanceFlagBitsNV',type='flags']
--
include::../../api/flags/VkGeometryInstanceFlagsNV.txt[]
tname:VkGeometryInstanceFlagsNV is a bitmask type for setting a mask of zero
or more elink:VkGeometryInstanceFlagBitsNV.
--
[[acceleration-structure-geometry]]
=== Geometry

View File

@ -17,25 +17,24 @@ The sname:VkWin32KeyedMutexAcquireReleaseInfoNV structure is defined as:
include::../../api/structs/VkWin32KeyedMutexAcquireReleaseInfoNV.txt[]
* pname:acquireCount is the number of entries in the
pname:pAcquireSyncs, pname:pAcquireKeys, and
pname:pAcquireTimeoutMilliseconds arrays.
* pname:pAcquireSyncs is a pointer to an array of slink:VkDeviceMemory
objects which were imported from Direct3D 11 resources.
* pname:pAcquireKeys is a pointer to an array of mutex key values to
wait for prior to beginning the submitted work.
Entries refer to the keyed mutex associated with the corresponding
entries in pname:pAcquireSyncs.
* pname:pAcquireTimeoutMilliseconds is an array of timeout values, in
millisecond units, for each acquire specified in pname:pAcquireKeys.
* pname:releaseCount is the number of entries in the pname:pReleaseSyncs
and pname:pReleaseKeys arrays.
* pname:pReleaseSyncs is a pointer to an array of slink:VkDeviceMemory
objects which were imported from Direct3D 11 resources.
* pname:pReleaseKeys is a pointer to an array of mutex key values to set
when the submitted work has completed.
Entries refer to the keyed mutex associated with the corresponding
entries in pname:pReleaseSyncs.
* pname:acquireCount is the number of entries in the pname:pAcquireSyncs,
pname:pAcquireKeys, and pname:pAcquireTimeoutMilliseconds arrays.
* pname:pAcquireSyncs is a pointer to an array of slink:VkDeviceMemory
objects which were imported from Direct3D 11 resources.
* pname:pAcquireKeys is a pointer to an array of mutex key values to wait
for prior to beginning the submitted work.
Entries refer to the keyed mutex associated with the corresponding
entries in pname:pAcquireSyncs.
* pname:pAcquireTimeoutMilliseconds is an array of timeout values, in
millisecond units, for each acquire specified in pname:pAcquireKeys.
* pname:releaseCount is the number of entries in the pname:pReleaseSyncs
and pname:pReleaseKeys arrays.
* pname:pReleaseSyncs is a pointer to an array of slink:VkDeviceMemory
objects which were imported from Direct3D 11 resources.
* pname:pReleaseKeys is a pointer to an array of mutex key values to set
when the submitted work has completed.
Entries refer to the keyed mutex associated with the corresponding
entries in pname:pReleaseSyncs.
include::../../validity/structs/VkWin32KeyedMutexAcquireReleaseInfoNV.txt[]
--

View File

@ -421,7 +421,7 @@ ifdef::VK_EXT_depth_range_unrestricted[]
pname:depth must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
ifndef::VK_EXT_depth_range_unrestricted[]
* [[VUID-VkClearDepthStencilValue-depth-00022]]
* [[VUID-VkClearDepthStencilValue-depth-02506]]
pname:depth must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
****

View File

@ -225,7 +225,7 @@ endif::VK_VERSION_1_1[]
--
[open,refpage='VkCommandPoolCreateFlags',desc='Bitmask of VkCommandPoolCreateFlagBits',type='enums']
[open,refpage='VkCommandPoolCreateFlags',desc='Bitmask of VkCommandPoolCreateFlagBits',type='flags']
--
include::../api/flags/VkCommandPoolCreateFlags.txt[]
@ -300,7 +300,7 @@ cost of trimming is "`worth`" it.
include::../validity/protos/vkTrimCommandPool.txt[]
--
[open,refpage='VkCommandPoolTrimFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkCommandPoolTrimFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkCommandPoolTrimFlags.txt[]
@ -362,7 +362,7 @@ include::../api/enums/VkCommandPoolResetFlagBits.txt[]
--
[open,refpage='VkCommandPoolResetFlags',desc='Bitmask of VkCommandPoolResetFlagBits',type='enums']
[open,refpage='VkCommandPoolResetFlags',desc='Bitmask of VkCommandPoolResetFlagBits',type='flags']
--
include::../api/flags/VkCommandPoolResetFlags.txt[]
@ -531,7 +531,7 @@ include::../api/enums/VkCommandBufferResetFlagBits.txt[]
--
[open,refpage='VkCommandBufferResetFlags',desc='Bitmask of VkCommandBufferResetFlagBits',type='enums']
[open,refpage='VkCommandBufferResetFlags',desc='Bitmask of VkCommandBufferResetFlagBits',type='flags']
--
include::../api/flags/VkCommandBufferResetFlags.txt[]
@ -674,7 +674,7 @@ include::../api/enums/VkCommandBufferUsageFlagBits.txt[]
--
[open,refpage='VkCommandBufferUsageFlags',desc='Bitmask of VkCommandBufferUsageFlagBits',type='enums']
[open,refpage='VkCommandBufferUsageFlags',desc='Bitmask of VkCommandBufferUsageFlagBits',type='flags']
--
include::../api/flags/VkCommandBufferUsageFlags.txt[]

View File

@ -1422,36 +1422,35 @@ dimension, texels in the source extent are scaled and filtered to the
destination extent.
Scaling occurs via the following operations:
* For each destination texel, the integer coordinate of that texel is
converted to an unnormalized texture coordinate, using the effective
inverse of the equations described in
<<textures-unnormalized-to-integer, unnormalized to integer
conversion>>:
:: [eq]#u~base~ = i {plus} {onehalf}#
:: [eq]#v~base~ = j {plus} {onehalf}#
:: [eq]#w~base~ = k {plus} {onehalf}#
* These base coordinates are then offset by the first destination
offset:
:: [eq]#u~offset~ = u~base~ - x~dst0~#
:: [eq]#v~offset~ = v~base~ - y~dst0~#
:: [eq]#w~offset~ = w~base~ - z~dst0~#
:: [eq]#a~offset~ = a - pname:baseArrayCount~dst~#
* The scale is determined from the source and destination regions, and
applied to the offset coordinates:
:: [eq]#scale_u = (x~src1~ - x~src0~) / (x~dst1~ - x~dst0~)#
:: [eq]#scale_v = (y~src1~ - y~src0~) / (y~dst1~ - y~dst0~)#
:: [eq]#scale_w = (z~src1~ - z~src0~) / (z~dst1~ - z~dst0~)#
:: [eq]#u~scaled~ = u~offset~ * scale~u~#
:: [eq]#v~scaled~ = v~offset~ * scale~v~#
:: [eq]#w~scaled~ = w~offset~ * scale~w~#
* Finally the source offset is added to the scaled coordinates, to
determine the final unnormalized coordinates used to sample from
pname:srcImage: +
:: [eq]#u = u~scaled~ {plus} x~src0~#
:: [eq]#v = v~scaled~ {plus} y~src0~#
:: [eq]#w = w~scaled~ {plus} z~src0~#
:: [eq]#q = pname:mipLevel#
:: [eq]#a = a~offset~ {plus} pname:baseArrayCount~src~#
* For each destination texel, the integer coordinate of that texel is
converted to an unnormalized texture coordinate, using the effective
inverse of the equations described in
<<textures-unnormalized-to-integer, unnormalized to integer
conversion>>:
:: [eq]#u~base~ = i {plus} {onehalf}#
:: [eq]#v~base~ = j {plus} {onehalf}#
:: [eq]#w~base~ = k {plus} {onehalf}#
* These base coordinates are then offset by the first destination offset:
:: [eq]#u~offset~ = u~base~ - x~dst0~#
:: [eq]#v~offset~ = v~base~ - y~dst0~#
:: [eq]#w~offset~ = w~base~ - z~dst0~#
:: [eq]#a~offset~ = a - pname:baseArrayCount~dst~#
* The scale is determined from the source and destination regions, and
applied to the offset coordinates:
:: [eq]#scale_u = (x~src1~ - x~src0~) / (x~dst1~ - x~dst0~)#
:: [eq]#scale_v = (y~src1~ - y~src0~) / (y~dst1~ - y~dst0~)#
:: [eq]#scale_w = (z~src1~ - z~src0~) / (z~dst1~ - z~dst0~)#
:: [eq]#u~scaled~ = u~offset~ * scale~u~#
:: [eq]#v~scaled~ = v~offset~ * scale~v~#
:: [eq]#w~scaled~ = w~offset~ * scale~w~#
* Finally the source offset is added to the scaled coordinates, to
determine the final unnormalized coordinates used to sample from
pname:srcImage:
:: [eq]#u = u~scaled~ {plus} x~src0~#
:: [eq]#v = v~scaled~ {plus} y~src0~#
:: [eq]#w = w~scaled~ {plus} z~src0~#
:: [eq]#q = pname:mipLevel#
:: [eq]#a = a~offset~ {plus} pname:baseArrayCount~src~#
These coordinates are used to sample from the source image, as described in
<<textures, Image Operations chapter>>, with the filter mode equal to that

View File

@ -470,7 +470,7 @@ extensions are enabled in this build of the specification.
endif::VK_KHR_push_descriptor[]
--
[open,refpage='VkDescriptorSetLayoutCreateFlags',desc='Bitmask of VkDescriptorSetLayoutCreateFlagBits',type='enums']
[open,refpage='VkDescriptorSetLayoutCreateFlags',desc='Bitmask of VkDescriptorSetLayoutCreateFlagBits',type='flags']
--
include::../api/flags/VkDescriptorSetLayoutCreateFlags.txt[]
@ -781,6 +781,15 @@ implementation to observe updates to descriptors that are used.
====
--
[open,refpage='VkDescriptorBindingFlagsEXT',desc='Bitmask of VkDescriptorBindingFlagBitsEXT',type='flags']
--
include::../api/flags/VkDescriptorBindingFlagsEXT.txt[]
tname:VkDescriptorBindingFlagsEXT is a bitmask type for setting a mask of
zero or more elink:VkDescriptorBindingFlagBitsEXT.
--
endif::VK_EXT_descriptor_indexing[]
ifdef::VK_VERSION_1_1,VK_KHR_maintenance3[]
@ -1560,7 +1569,7 @@ endif::VK_NV_ray_tracing[]
include::../validity/structs/VkPipelineLayoutCreateInfo.txt[]
--
[open,refpage='VkPipelineLayoutCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineLayoutCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineLayoutCreateFlags.txt[]
@ -2003,7 +2012,7 @@ endif::VK_EXT_descriptor_indexing[]
--
[open,refpage='VkDescriptorPoolCreateFlags',desc='Bitmask of VkDescriptorPoolCreateFlagBits',type='enums']
[open,refpage='VkDescriptorPoolCreateFlags',desc='Bitmask of VkDescriptorPoolCreateFlagBits',type='flags']
--
include::../api/flags/VkDescriptorPoolCreateFlags.txt[]
@ -2361,7 +2370,7 @@ pool, and the descriptor sets are implicitly freed.
include::../validity/protos/vkResetDescriptorPool.txt[]
--
[open,refpage='VkDescriptorPoolResetFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkDescriptorPoolResetFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkDescriptorPoolResetFlags.txt[]
@ -3259,7 +3268,7 @@ include::../validity/structs/VkDescriptorUpdateTemplateCreateInfo.txt[]
--
[open,refpage='VkDescriptorUpdateTemplateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkDescriptorUpdateTemplateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkDescriptorUpdateTemplateCreateFlags.txt[]

View File

@ -654,7 +654,7 @@ For further details see <<devsandqueues-queues,Queues>>.
--
[open,refpage='VkQueueFlags',desc='Bitmask of VkQueueFlagBits',type='enums']
[open,refpage='VkQueueFlags',desc='Bitmask of VkQueueFlagBits',type='flags']
--
include::../api/flags/VkQueueFlags.txt[]
@ -973,7 +973,7 @@ endif::VK_AMD_negative_viewport_height[]
include::../validity/structs/VkDeviceCreateInfo.txt[]
--
[open,refpage='VkDeviceCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkDeviceCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkDeviceCreateFlags.txt[]
@ -1409,7 +1409,7 @@ include::../api/enums/VkDeviceQueueCreateFlagBits.txt[]
endif::VK_VERSION_1_1[]
[open,refpage='VkDeviceQueueCreateFlags',desc='Bitmask of VkDeviceQueueCreateFlagBits',type='enums']
[open,refpage='VkDeviceQueueCreateFlags',desc='Bitmask of VkDeviceQueueCreateFlagBits',type='flags']
--
include::../api/flags/VkDeviceQueueCreateFlags.txt[]

View File

@ -83,7 +83,7 @@ pname:vertexOffset value to the index value.
include::../validity/structs/VkPipelineInputAssemblyStateCreateInfo.txt[]
--
[open,refpage='VkPipelineInputAssemblyStateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineInputAssemblyStateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineInputAssemblyStateCreateFlags.txt[]
@ -485,6 +485,10 @@ include::../api/protos/vkCmdBindIndexBuffer.txt[]
* [[VUID-vkCmdBindIndexBuffer-buffer-00434]]
If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
ifdef::VK_NV_ray_tracing[]
* [[VUID-vkCmdBindIndexBuffer-indexType-02507]]
pname:indexType must: not be VK_INDEX_TYPE_NONE_NV.
endif::VK_NV_ray_tracing[]
****
include::../validity/protos/vkCmdBindIndexBuffer.txt[]
@ -503,7 +507,9 @@ include::../api/enums/VkIndexType.txt[]
integer values.
* ename:VK_INDEX_TYPE_UINT32 specifies that indices are 32-bit unsigned
integer values.
ifdef::VK_NV_ray_tracing[]
* ename:VK_INDEX_TYPE_NONE_NV specifies no indices are provided.
endif::VK_NV_ray_tracing[]
--
The parameters for each drawing command are specified directly in the
@ -2515,6 +2521,10 @@ command.
pname:offset must: be a multiple of 4
****
include::../validity/structs/VkConditionalRenderingBeginInfoEXT.txt[]
--
[open,refpage='VkConditionalRenderingFlagBitsEXT',desc='Specify the behavior of conditional rendering',type='enums']
--
@ -2532,12 +2542,13 @@ include::../api/enums/VkConditionalRenderingFlagBitsEXT.txt[]
--
[open,refpage='VkConditionalRenderingFlagsEXT',desc='Bitmask of VkConditionalRenderingFlagBitsEXT',type='enums']
[open,refpage='VkConditionalRenderingFlagsEXT',desc='Bitmask of VkConditionalRenderingFlagBitsEXT',type='flags']
--
include::../api/flags/VkConditionalRenderingFlagsEXT.txt[]
tname:VkConditionalRenderingFlagsEXT is a bitmask type for setting a mask of
zero or more elink:VkConditionalRenderingFlagBitsEXT.
--
[open,refpage='vkCmdEndConditionalRenderingEXT',desc='Define the end of a conditional rendering block',type='protos']
--

View File

@ -896,14 +896,14 @@ as:
include::../api/structs/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-shaderBufferInt64Atomics]]
pname:shaderBufferInt64Atomics indicates whether shaders can: support
64-bit unsigned and signed integer atomic operations on buffers.
* [[features-features-shaderSharedInt64Atomics]]
pname:shaderSharedInt64Atomics indicates whether shaders can: support
64-bit unsigned and signed integer atomic operations on shared memory.
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-shaderBufferInt64Atomics]]
pname:shaderBufferInt64Atomics indicates whether shaders can: support
64-bit unsigned and signed integer atomic operations on buffers.
* [[features-features-shaderSharedInt64Atomics]]
pname:shaderSharedInt64Atomics indicates whether shaders can: support
64-bit unsigned and signed integer atomic operations on shared memory.
include::../validity/structs/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.txt[]
@ -928,32 +928,32 @@ The slink:VkPhysicalDevice8BitStorageFeaturesKHR structure is defined as:
include::../api/structs/VkPhysicalDevice8BitStorageFeaturesKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-storageBuffer8BitAccess]]
pname:storageBuffer8BitAccess indicates whether objects in the
code:StorageBuffer storage class with the code:Block decoration can:
have 8-bit integer members.
If this feature is not enabled, 8-bit integer members must: not be used
in such objects.
This also indicates whether shader modules can: declare the
code:StorageBuffer8BitAccess capability.
* [[features-features-uniformAndStorageBuffer8BitAccess]]
pname:uniformAndStorageBuffer8BitAccess indicates whether objects in
the code:Uniform storage class with the code:Block decoration and in
the code:StorageBuffer storage class with the same decoration can: have
8-bit integer members.
If this feature is not enabled, 8-bit integer members must: not be used
in such objects.
This also indicates whether shader modules can: declare the
code:UniformAndStorageBuffer8BitAccess capability.
* [[features-features-storagePushConstant8]] pname:storagePushConstant8
indicates whether objects in the code:PushConstant storage class can:
have 8-bit integer members.
If this feature is not enabled, 8-bit integer members must: not be used
in such objects.
This also indicates whether shader modules can: declare the
code:StoragePushConstant8 capability.
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-storageBuffer8BitAccess]]
pname:storageBuffer8BitAccess indicates whether objects in the
code:StorageBuffer storage class with the code:Block decoration can:
have 8-bit integer members.
If this feature is not enabled, 8-bit integer members must: not be used
in such objects.
This also indicates whether shader modules can: declare the
code:StorageBuffer8BitAccess capability.
* [[features-features-uniformAndStorageBuffer8BitAccess]]
pname:uniformAndStorageBuffer8BitAccess indicates whether objects in the
code:Uniform storage class with the code:Block decoration and in the
code:StorageBuffer storage class with the same decoration can: have
8-bit integer members.
If this feature is not enabled, 8-bit integer members must: not be used
in such objects.
This also indicates whether shader modules can: declare the
code:UniformAndStorageBuffer8BitAccess capability.
* [[features-features-storagePushConstant8]] pname:storagePushConstant8
indicates whether objects in the code:PushConstant storage class can:
have 8-bit integer members.
If this feature is not enabled, 8-bit integer members must: not be used
in such objects.
This also indicates whether shader modules can: declare the
code:StoragePushConstant8 capability.
include::../validity/structs/VkPhysicalDevice8BitStorageFeaturesKHR.txt[]
@ -982,39 +982,39 @@ or the equivalent
include::../api/structs/VkPhysicalDevice16BitStorageFeaturesKHR.txt[]
endif::VK_KHR_16bit_storage[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-storageBuffer16BitAccess]]
pname:storageBuffer16BitAccess specifies whether objects in the
code:StorageBuffer storage class with the code:Block decoration can:
have 16-bit integer and 16-bit floating-point members.
If this feature is not enabled, 16-bit integer or 16-bit floating-point
members must: not be used in such objects.
This also specifies whether shader modules can: declare the
code:StorageBuffer16BitAccess capability.
* [[features-features-uniformAndStorageBuffer16BitAccess]]
pname:uniformAndStorageBuffer16BitAccess specifies whether objects in
the code:Uniform storage class with the code:Block decoration and in
the code:StorageBuffer storage class with the same decoration can: have
16-bit integer and 16-bit floating-point members.
If this feature is not enabled, 16-bit integer or 16-bit floating-point
members must: not be used in such objects.
This also specifies whether shader modules can: declare the
code:UniformAndStorageBuffer16BitAccess capability.
* [[features-features-storagePushConstant16]] pname:storagePushConstant16
specifies whether objects in the code:PushConstant storage class can:
have 16-bit integer and 16-bit floating-point members.
If this feature is not enabled, 16-bit integer or floating-point
members must: not be used in such objects.
This also specifies whether shader modules can: declare the
code:StoragePushConstant16 capability.
* [[features-features-storageInputOutput16]] pname:storageInputOutput16
specifies whether objects in the code:Input and code:Output storage
classes can: have 16-bit integer and 16-bit floating-point members.
If this feature is not enabled, 16-bit integer or 16-bit floating-point
members must: not be used in such objects.
This also specifies whether shader modules can: declare the
code:StorageInputOutput16 capability.
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-storageBuffer16BitAccess]]
pname:storageBuffer16BitAccess specifies whether objects in the
code:StorageBuffer storage class with the code:Block decoration can:
have 16-bit integer and 16-bit floating-point members.
If this feature is not enabled, 16-bit integer or 16-bit floating-point
members must: not be used in such objects.
This also specifies whether shader modules can: declare the
code:StorageBuffer16BitAccess capability.
* [[features-features-uniformAndStorageBuffer16BitAccess]]
pname:uniformAndStorageBuffer16BitAccess specifies whether objects in
the code:Uniform storage class with the code:Block decoration and in the
code:StorageBuffer storage class with the same decoration can: have
16-bit integer and 16-bit floating-point members.
If this feature is not enabled, 16-bit integer or 16-bit floating-point
members must: not be used in such objects.
This also specifies whether shader modules can: declare the
code:UniformAndStorageBuffer16BitAccess capability.
* [[features-features-storagePushConstant16]] pname:storagePushConstant16
specifies whether objects in the code:PushConstant storage class can:
have 16-bit integer and 16-bit floating-point members.
If this feature is not enabled, 16-bit integer or floating-point members
must: not be used in such objects.
This also specifies whether shader modules can: declare the
code:StoragePushConstant16 capability.
* [[features-features-storageInputOutput16]] pname:storageInputOutput16
specifies whether objects in the code:Input and code:Output storage
classes can: have 16-bit integer and 16-bit floating-point members.
If this feature is not enabled, 16-bit integer or 16-bit floating-point
members must: not be used in such objects.
This also specifies whether shader modules can: declare the
code:StorageInputOutput16 capability.
include::../validity/structs/VkPhysicalDevice16BitStorageFeatures.txt[]
@ -1487,18 +1487,18 @@ as:
include::../api/structs/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-vulkanMemoryModel]] pname:vulkanMemoryModel
indicates whether the Vulkan Memory Model is supported, as defined in
<<memory-model,Vulkan Memory Model>>.
This also indicates whether shader modules can: declare the
code:VulkanMemoryModelKHR capability.
* [[features-features-vulkanMemoryModelDeviceScope]]
pname:vulkanMemoryModelDeviceScope indicates whether the Vulkan Memory
Model can use code:Device scope synchronization.
This also indicates whether shader modules can: declare the
code:VulkanMemoryModelDeviceScopeKHR capability.
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-vulkanMemoryModel]] pname:vulkanMemoryModel
indicates whether the Vulkan Memory Model is supported, as defined in
<<memory-model,Vulkan Memory Model>>.
This also indicates whether shader modules can: declare the
code:VulkanMemoryModelKHR capability.
* [[features-features-vulkanMemoryModelDeviceScope]]
pname:vulkanMemoryModelDeviceScope indicates whether the Vulkan Memory
Model can use code:Device scope synchronization.
This also indicates whether shader modules can: declare the
code:VulkanMemoryModelDeviceScopeKHR capability.
include::../validity/structs/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.txt[]
@ -1758,6 +1758,35 @@ include::../validity/structs/VkPhysicalDeviceShadingRateImageFeaturesNV.txt[]
endif::VK_NV_shading_rate_image[]
ifdef::VK_EXT_scalar_block_layout[]
[open,refpage='VkPhysicalDeviceScalarBlockLayoutFeaturesEXT',desc='Structure indicating support for scalar block layouts',type='structs']
--
The sname:VkPhysicalDeviceScalarBlockLayoutFeaturesEXT structure is defined
as:
include::../api/structs/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.txt[]
The members of the sname:VkPhysicalDeviceScalarBlockLayoutFeaturesEXT
structure describe the following features:
* [[features-features-scalarBlockLayout]] pname:scalarBlockLayout
indicates that the implementation supports the layout of resource blocks
in shaders using <<interfaces-scalar-block-layout, scalar alignment>>.
If the sname:VkPhysicalDeviceScalarBlockLayoutFeaturesEXT structure is
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it
is filled with values indicating whether the feature is supported.
sname:VkPhysicalDeviceScalarBlockLayoutFeaturesEXT can: also be used in the
pname:pNext chain of slink:VkDeviceCreateInfo to enable this feature.
include::../validity/structs/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.txt[]
--
endif::VK_EXT_scalar_block_layout[]
[[features-features-requirements]]
=== Feature Requirements
@ -1823,6 +1852,10 @@ ifdef::VK_EXT_inline_uniform_block[]
`<<VK_EXT_inline_uniform_block>>` and `<<VK_EXT_descriptor_indexing>>`
extensions are both supported.
endif::VK_EXT_inline_uniform_block[]
ifdef::VK_EXT_scalar_block_layout[]
* If the `<<VK_EXT_scalar_block_layout>>` extension is supported:
** <<features-features-scalarBlockLayout,pname:scalarBlockLayout>>
endif::VK_EXT_scalar_block_layout[]
endif::VK_EXT_descriptor_indexing[]
All other features defined in the Specification are optional:.
@ -2609,7 +2642,7 @@ include::../api/enums/VkSampleCountFlagBits.txt[]
--
[open,refpage='VkSampleCountFlags',desc='Bitmask of VkSampleCountFlagBits',type='enums']
[open,refpage='VkSampleCountFlags',desc='Bitmask of VkSampleCountFlagBits',type='flags']
--
include::../api/flags/VkSampleCountFlags.txt[]
@ -2948,7 +2981,7 @@ endif::VK_NV_shader_subgroup_partitioned[]
--
[open,refpage='VkSubgroupFeatureFlags',desc='Bitmask of VkSubgroupFeatureFlagBits',type='enums']
[open,refpage='VkSubgroupFeatureFlags',desc='Bitmask of VkSubgroupFeatureFlagBits',type='flags']
--
include::../api/flags/VkSubgroupFeatureFlags.txt[]
@ -6389,7 +6422,7 @@ flink:vkGetPhysicalDeviceProperties::pname:format:
--
[open,refpage='VkFormatFeatureFlags',desc='Bitmask of VkFormatFeatureFlagBits',type='enums']
[open,refpage='VkFormatFeatureFlags',desc='Bitmask of VkFormatFeatureFlagBits',type='flags']
--
include::../api/flags/VkFormatFeatureFlags.txt[]
@ -7703,7 +7736,7 @@ endif::VK_EXT_external_memory_dma_buf[]
--
[open,refpage='VkExternalMemoryHandleTypeFlags',desc='Bitmask of VkExternalMemoryHandleTypeFlagBits',type='enums']
[open,refpage='VkExternalMemoryHandleTypeFlags',desc='Bitmask of VkExternalMemoryHandleTypeFlagBits',type='flags']
--
include::../api/flags/VkExternalMemoryHandleTypeFlags.txt[]
@ -7823,7 +7856,7 @@ endif::VK_ANDROID_external_memory_android_hardware_buffer[]
--
[open,refpage='VkExternalMemoryFeatureFlags',desc='Bitmask of VkExternalMemoryFeatureFlagBits',type='enums']
[open,refpage='VkExternalMemoryFeatureFlags',desc='Bitmask of VkExternalMemoryFeatureFlagBits',type='flags']
--
include::../api/flags/VkExternalMemoryFeatureFlags.txt[]
@ -8327,7 +8360,7 @@ following table:
--
[open,refpage='VkExternalSemaphoreHandleTypeFlags',desc='Bitmask of VkExternalSemaphoreHandleTypeFlagBits',type='enums']
[open,refpage='VkExternalSemaphoreHandleTypeFlags',desc='Bitmask of VkExternalSemaphoreHandleTypeFlagBits',type='flags']
--
include::../api/flags/VkExternalSemaphoreHandleTypeFlags.txt[]
@ -8394,7 +8427,7 @@ endif::VK_KHR_external_semaphore_capabilities[]
--
[open,refpage='VkExternalSemaphoreFeatureFlags',desc='Bitmask of VkExternalSemaphoreFeatureFlagBitsKHR',type='enums']
[open,refpage='VkExternalSemaphoreFeatureFlags',desc='Bitmask of VkExternalSemaphoreFeatureFlagBitsKHR',type='flags']
--
include::../api/flags/VkExternalSemaphoreFeatureFlags.txt[]
@ -8547,7 +8580,7 @@ following table:
--
[open,refpage='VkExternalFenceHandleTypeFlags',desc='Bitmask of VkExternalFenceHandleTypeFlagBits',type='enums']
[open,refpage='VkExternalFenceHandleTypeFlags',desc='Bitmask of VkExternalFenceHandleTypeFlagBits',type='flags']
--
include::../api/flags/VkExternalFenceHandleTypeFlags.txt[]
@ -8612,7 +8645,7 @@ endif::VK_KHR_external_fence_capabilities[]
type can: be imported to Vulkan fence objects.
--
[open,refpage='VkExternalFenceFeatureFlags',desc='Bitmask of VkExternalFenceFeatureFlagBits',type='enums']
[open,refpage='VkExternalFenceFeatureFlags',desc='Bitmask of VkExternalFenceFeatureFlagBits',type='flags']
--
include::../api/flags/VkExternalFenceFeatureFlags.txt[]

View File

@ -100,7 +100,7 @@ include::../api/structs/VkPipelineDiscardRectangleStateCreateInfoEXT.txt[]
include::../validity/structs/VkPipelineDiscardRectangleStateCreateInfoEXT.txt[]
--
[open,refpage='VkPipelineDiscardRectangleStateCreateFlagsEXT',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineDiscardRectangleStateCreateFlagsEXT',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineDiscardRectangleStateCreateFlagsEXT.txt[]
@ -721,7 +721,7 @@ include::../api/structs/VkPipelineDepthStencilStateCreateInfo.txt[]
include::../validity/structs/VkPipelineDepthStencilStateCreateInfo.txt[]
--
[open,refpage='VkPipelineDepthStencilStateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineDepthStencilStateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineDepthStencilStateCreateFlags.txt[]
@ -767,7 +767,7 @@ ifdef::VK_EXT_depth_range_unrestricted[]
pname:minDepthBounds must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
ifndef::VK_EXT_depth_range_unrestricted[]
* [[VUID-vkCmdSetDepthBounds-minDepthBounds-00600]]
* [[VUID-vkCmdSetDepthBounds-minDepthBounds-02508]]
pname:minDepthBounds must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
ifdef::VK_EXT_depth_range_unrestricted[]
@ -776,7 +776,7 @@ ifdef::VK_EXT_depth_range_unrestricted[]
pname:maxDepthBounds must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
ifndef::VK_EXT_depth_range_unrestricted[]
* [[VUID-vkCmdSetDepthBounds-maxDepthBounds-00601]]
* [[VUID-vkCmdSetDepthBounds-maxDepthBounds-02509]]
pname:maxDepthBounds must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
****
@ -903,7 +903,7 @@ include::../api/enums/VkStencilFaceFlagBits.txt[]
--
[open,refpage='VkStencilFaceFlags',desc='Bitmask of VkStencilFaceFlagBits',type='enums']
[open,refpage='VkStencilFaceFlags',desc='Bitmask of VkStencilFaceFlagBits',type='flags']
--
include::../api/flags/VkStencilFaceFlags.txt[]
@ -1248,7 +1248,7 @@ ename:VK_FALSE.
include::../validity/structs/VkPipelineCoverageToColorStateCreateInfoNV.txt[]
--
[open,refpage='VkPipelineCoverageToColorStateCreateFlagsNV',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineCoverageToColorStateCreateFlagsNV',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineCoverageToColorStateCreateFlagsNV.txt[]
@ -1374,7 +1374,7 @@ ename:VK_COVERAGE_MODULATION_MODE_NONE_NV.
include::../validity/structs/VkPipelineCoverageModulationStateCreateInfoNV.txt[]
--
[open,refpage='VkPipelineCoverageModulationStateCreateFlagsNV',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineCoverageModulationStateCreateFlagsNV',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineCoverageModulationStateCreateFlagsNV.txt[]

View File

@ -93,7 +93,7 @@ elements in the pname:pAttachments array must: be identical.
include::../validity/structs/VkPipelineColorBlendStateCreateInfo.txt[]
--
[open,refpage='VkPipelineColorBlendStateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineColorBlendStateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineColorBlendStateCreateFlags.txt[]
@ -541,7 +541,7 @@ enabled.
--
[open,refpage='VkColorComponentFlags',desc='Bitmask of VkColorComponentFlagBits',type='enums']
[open,refpage='VkColorComponentFlags',desc='Bitmask of VkColorComponentFlagBits',type='flags']
--
include::../api/flags/VkColorComponentFlags.txt[]

View File

@ -946,19 +946,40 @@ either in layered Specifications incorporating those extensions, or in
separate vendor-provided documents.
As a convenience to implementations and layers needing to iterate through a
structure pointer chain, the Vulkan API provides the following base
structures:
structure pointer chain, the Vulkan API provides two _base structures_.
These structures allow for some type safety, and can be used by Vulkan API
functions that operate on generic inputs and outputs.
[open,refpage='VkBaseInStructure',desc='Base structure for a read-only pointer chain',type='structs']
--
The sname:VkBaseInStructure structure is defined as:
include::../api/structs/VkBaseInStructure.txt[]
include::../api/structs/VkBaseOutStructure.txt[]
* pname:sType is the structure type of the structure being iterated
through.
* pname:pNext is `NULL` or a pointer to the next structure in a structure
chain.
sname:VkBaseInStructure can be used to facilitate iterating through a
read-only structure pointer chain.
--
[open,refpage='VkBaseOutStructure',desc='Base structure for a read-only pointer chain',type='structs']
--
The sname:VkBaseOutStructure structure is defined as:
include::../api/structs/VkBaseOutStructure.txt[]
* pname:sType is the structure type of the structure being iterated
through.
* pname:pNext is `NULL` or a pointer to the next structure in a structure
chain.
sname:VkBaseOutStructure can be used to facilitate iterating through a
structure pointer chain that returns data back to the application.
These structures allow for some type safety and can be used by Vulkan API
functions that operate on generic inputs and outputs.
--
[[fundamentals-validusage-nested-structs]]
==== Valid Usage for Nested Structures

View File

@ -313,7 +313,7 @@ include::../api/structs/VkPipelineVertexInputStateCreateInfo.txt[]
include::../validity/structs/VkPipelineVertexInputStateCreateInfo.txt[]
--
[open,refpage='VkPipelineVertexInputStateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineVertexInputStateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineVertexInputStateCreateFlags.txt[]

View File

@ -266,7 +266,7 @@ include::../api/structs/VkInstanceCreateInfo.txt[]
include::../validity/structs/VkInstanceCreateInfo.txt[]
--
[open,refpage='VkInstanceCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkInstanceCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkInstanceCreateFlags.txt[]

View File

@ -892,9 +892,36 @@ endif::VK_EXT_inline_uniform_block[]
[[interfaces-resources-layout]]
=== Offset and Stride Assignment
All variables with a storage class of code:PushConstant or code:Uniform
must: be explicitly laid out using the code:Offset, code:ArrayStride, and
code:MatrixStride decorations.
All variables with a storage class of code:Uniform, code:StorageBuffer, or
code:PushConstant must: be explicitly laid out using the code:Offset,
code:ArrayStride, and code:MatrixStride decorations.
[NOTE]
.Note
====
The numeric order of code:Offset decorations does not need to follow member
declaration order.
====
ifdef::VK_EXT_scalar_block_layout[]
If the <<features-features-scalarBlockLayout,pname:scalarBlockLayout>>
feature is enabled, then the layout of blocks in these storage classes must:
adhere to the <<interfaces-scalar-block-layout, Scalar Alignment>>
requirements below.
If the feature is not enabled, they must adhere to the stricter
<<interfaces-base-block-layout, Base Alignment>>.
[WARNING]
.Performance Note
====
Even if scalar alignment is supported, it is generally more performant to
use the _base alignment_.
====
[[interfaces-base-block-layout]]
==== Base Alignment
endif::VK_EXT_scalar_block_layout[]
There are two different layouts requirements depending on the specific
resources.
@ -957,8 +984,6 @@ endif::VK_VERSION_1_1,VK_KHR_relaxed_block_layout[]
* The code:Offset decoration of a member must: not place it between the
end of a structure or an array and the next multiple of the base
alignment of that structure or array.
* The numeric order of code:Offset decorations need not follow member
declaration order.
[NOTE]
.Note
@ -985,12 +1010,37 @@ a multiple of [eq]#16#.
The *std430 layout* in GLSL satisfies these rules.
====
ifdef::VK_EXT_scalar_block_layout[]
[[interfaces-scalar-block-layout]]
==== Scalar Alignment
The _scalar alignment_ of the type of an code:OpTypeStruct member of is
defined recursively as follows:
* A scalar of size [eq]#N# has a scalar alignment of [eq]#N#.
* A vector has a scalar alignment equal to that of its component type.
* A matrix has a scalar alignment equal to that of its component type.
* An array has a scalar alignment equal to that of its element type.
* A structure has a scalar alignment equal to the largest scalar alignment
of any of its members.
Every member of an code:OpTypeStruct with storage class of code:Uniform,
code:StorageBuffer, or code:PushConstant must: be laid out according to the
following rules:
* The code:Offset decoration must: be a multiple of its scalar alignment.
* Any code:ArrayStride or code:MatrixStride decoration must: be an integer
multiple of the scalar alignment of the array or matrix from above.
endif::VK_EXT_scalar_block_layout[]
[[interfaces-builtin-variables]]
== Built-In Variables
Built-in variables are accessed in shaders by declaring a variable decorated
with a code:BuiltIn decoration.
with a code:BuiltIn SPIR-V decoration.
The meaning of each code:BuiltIn decoration is as follows.
In the remainder of this section, the name of a built-in is used
interchangeably with a term equivalent to a variable decorated with that

View File

@ -724,7 +724,7 @@ endif::VK_KHR_device_group_creation[]
--
[open,refpage='VkMemoryHeapFlags',desc='Bitmask of VkMemoryHeapFlagBits',type='enums']
[open,refpage='VkMemoryHeapFlags',desc='Bitmask of VkMemoryHeapFlagBits',type='flags']
--
include::../api/flags/VkMemoryHeapFlags.txt[]
@ -791,7 +791,7 @@ endif::VK_VERSION_1_1[]
--
[open,refpage='VkMemoryPropertyFlags',desc='Bitmask of VkMemoryPropertyFlagBits',type='enums']
[open,refpage='VkMemoryPropertyFlags',desc='Bitmask of VkMemoryPropertyFlagBits',type='flags']
--
include::../api/flags/VkMemoryPropertyFlags.txt[]
@ -1900,7 +1900,7 @@ include::../validity/protos/vkGetMemoryHostPointerPropertiesEXT.txt[]
--
[open,refpage='VkMemoryHostPointerPropertiesEXT',desc'Properties of external memory host pointer',type='structs']
[open,refpage='VkMemoryHostPointerPropertiesEXT',desc='Properties of external memory host pointer',type='structs']
--
The sname:VkMemoryHostPointerPropertiesEXT structure is defined as:
@ -2274,7 +2274,7 @@ endif::VK_KHR_device_group[]
--
[open,refpage='VkMemoryAllocateFlags',desc='Bitmask of VkMemoryAllocateFlagBits',type='enums']
[open,refpage='VkMemoryAllocateFlags',desc='Bitmask of VkMemoryAllocateFlagBits',type='flags']
--
include::../api/flags/VkMemoryAllocateFlags.txt[]
@ -2445,7 +2445,7 @@ endif::VK_KHR_device_group[]
include::../validity/protos/vkMapMemory.txt[]
--
[open,refpage='VkMemoryMapFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkMemoryMapFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkMemoryMapFlags.txt[]
@ -2780,6 +2780,16 @@ variety of media APIs and the hardware used to implement them.
These Android hardware buffer objects may: be imported into
slink:VkDeviceMemory objects for access via Vulkan, or exported from Vulkan.
[open,refpage='AHardwareBuffer',desc='Android hardware buffer type',type='defines']
--
To remove an unnecessary compile-time dependency, an incomplete type
definition of code:AHardwareBuffer is provided in the Vulkan headers:
include::../api/defines/AHardwareBuffer.txt[]
The actual code:AHardwareBuffer type is defined in Android NDK headers.
--
[NOTE]
.Note
====
@ -3117,7 +3127,7 @@ but would scissor the rendering to only update local memory.
--
[open,refpage='VkPeerMemoryFeatureFlags',desc='Bitmask of VkPeerMemoryFeatureFlagBits',type='enums']
[open,refpage='VkPeerMemoryFeatureFlags',desc='Bitmask of VkPeerMemoryFeatureFlagBits',type='flags']
--
include::../api/flags/VkPeerMemoryFeatureFlags.txt[]

View File

@ -388,7 +388,7 @@ endif::VK_NV_mesh_shader[]
include::../validity/structs/VkPipelineShaderStageCreateInfo.txt[]
--
[open,refpage='VkPipelineShaderStageCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineShaderStageCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineShaderStageCreateFlags.txt[]
@ -444,7 +444,7 @@ Thus, it may not have the desired effect in all cases.
--
[open,refpage='VkShaderStageFlags',desc='Bitmask of VkShaderStageFlagBits',type='enums']
[open,refpage='VkShaderStageFlags',desc='Bitmask of VkShaderStageFlagBits',type='flags']
--
include::../api/flags/VkShaderStageFlags.txt[]
@ -801,7 +801,7 @@ ifndef::VK_EXT_depth_range_unrestricted[]
of pname:pDepthStencilState must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
ifdef::VK_EXT_depth_range_unrestricted[]
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755]]
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510]]
If the `<<VK_EXT_depth_range_unrestricted>>` extension is not enabled
and no element of the pname:pDynamicStates member of pname:pDynamicState
is ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS, and the
@ -1032,7 +1032,7 @@ information.
--
[open,refpage='VkPipelineCreateFlags',desc='Bitmask of VkPipelineCreateFlagBits',type='enums']
[open,refpage='VkPipelineCreateFlags',desc='Bitmask of VkPipelineCreateFlagBits',type='flags']
--
include::../api/flags/VkPipelineCreateFlags.txt[]
@ -1065,7 +1065,7 @@ include::../api/structs/VkPipelineDynamicStateCreateInfo.txt[]
include::../validity/structs/VkPipelineDynamicStateCreateInfo.txt[]
--
[open,refpage='VkPipelineDynamicStateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineDynamicStateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineDynamicStateCreateFlags.txt[]
@ -1467,7 +1467,7 @@ include::../api/structs/VkPipelineCacheCreateInfo.txt[]
include::../validity/structs/VkPipelineCacheCreateInfo.txt[]
--
[open,refpage='VkPipelineCacheCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineCacheCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineCacheCreateFlags.txt[]

View File

@ -105,7 +105,7 @@ endif::VK_NV_fill_rectangle[]
include::../validity/structs/VkPipelineRasterizationStateCreateInfo.txt[]
--
[open,refpage='VkPipelineRasterizationStateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineRasterizationStateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineRasterizationStateCreateFlags.txt[]
@ -164,7 +164,7 @@ endif::VK_NV_framebuffer_mixed_samples[]
include::../validity/structs/VkPipelineMultisampleStateCreateInfo.txt[]
--
[open,refpage='VkPipelineMultisampleStateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineMultisampleStateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineMultisampleStateCreateFlags.txt[]
@ -310,7 +310,7 @@ zero.
include::../validity/structs/VkPipelineRasterizationStateStreamCreateInfoEXT.txt[]
--
[open,refpage='VkPipelineRasterizationStateStreamCreateFlagsEXT',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineRasterizationStateStreamCreateFlagsEXT',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineRasterizationStateStreamCreateFlagsEXT.txt[]
@ -1699,7 +1699,7 @@ been discarded.
--
[open,refpage='VkCullModeFlags',desc='Bitmask of VkCullModeFlagBits',type='enums']
[open,refpage='VkCullModeFlags',desc='Bitmask of VkCullModeFlagBits',type='flags']
--
include::../api/flags/VkCullModeFlags.txt[]
@ -2067,7 +2067,7 @@ include::../api/structs/VkPipelineRasterizationConservativeStateCreateInfoEXT.tx
include::../validity/structs/VkPipelineRasterizationConservativeStateCreateInfoEXT.txt[]
--
[open,refpage='VkPipelineRasterizationConservativeStateCreateFlagsEXT',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineRasterizationConservativeStateCreateFlagsEXT',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineRasterizationConservativeStateCreateFlagsEXT.txt[]

View File

@ -90,7 +90,7 @@ ename:VK_QUERY_TYPE_PIPELINE_STATISTICS.
include::../validity/structs/VkQueryPoolCreateInfo.txt[]
--
[open,refpage='VkQueryPoolCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkQueryPoolCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkQueryPoolCreateFlags.txt[]
@ -462,7 +462,7 @@ include::../api/enums/VkQueryControlFlagBits.txt[]
--
[open,refpage='VkQueryControlFlags',desc='Bitmask of VkQueryControlFlagBits',type='enums']
[open,refpage='VkQueryControlFlags',desc='Bitmask of VkQueryControlFlagBits',type='flags']
--
include::../api/flags/VkQueryControlFlags.txt[]
@ -768,7 +768,7 @@ include::../api/enums/VkQueryResultFlagBits.txt[]
--
[open,refpage='VkQueryResultFlags',desc='Bitmask of VkQueryResultFlagBits',type='enums']
[open,refpage='VkQueryResultFlags',desc='Bitmask of VkQueryResultFlagBits',type='flags']
--
include::../api/flags/VkQueryResultFlags.txt[]
@ -1079,7 +1079,7 @@ fname:vkGetQueryPoolResults).
--
[open,refpage='VkQueryPipelineStatisticFlags',desc='Bitmask of VkQueryPipelineStatisticFlagBits',type='enums']
[open,refpage='VkQueryPipelineStatisticFlags',desc='Bitmask of VkQueryPipelineStatisticFlagBits',type='flags']
--
include::../api/flags/VkQueryPipelineStatisticFlags.txt[]

View File

@ -156,24 +156,16 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
of slink:VkSubpassDependency structures describing dependencies between
pairs of subpasses, or `NULL` if pname:dependencyCount is zero.
[NOTE]
.Note
====
Care should be taken to avoid a data race here; if any subpasses access
attachments with overlapping memory locations, and one of those accesses is
a write, a subpass dependency needs to be included between them.
====
.Valid Usage
****
* [[VUID-VkRenderPassCreateInfo-None-00832]]
If any two subpasses operate on attachments with overlapping ranges of
the same sname:VkDeviceMemory object, and at least one subpass writes to
that area of sname:VkDeviceMemory, a subpass dependency must: be
included (either directly or via some intermediate subpasses) between
them
* [[VUID-VkRenderPassCreateInfo-attachment-00833]]
If the pname:attachment member of any element of
pname:pInputAttachments, pname:pColorAttachments,
pname:pResolveAttachments or pname:pDepthStencilAttachment, or the
attachment indexed by any element of pname:pPreserveAttachments in any
element of pname:pSubpasses is bound to a range of a
sname:VkDeviceMemory object that overlaps with any other attachment in
any subpass (including the same subpass), the
sname:VkAttachmentDescription structures describing them must: include
ename:VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT in pname:flags
* [[VUID-VkRenderPassCreateInfo-attachment-00834]]
If the pname:attachment member of any element of
pname:pInputAttachments, pname:pColorAttachments,
@ -181,15 +173,18 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
element of pname:pPreserveAttachments in any element of pname:pSubpasses
is not ename:VK_ATTACHMENT_UNUSED, it must: be less than
pname:attachmentCount
* [[VUID-VkRenderPassCreateInfo-pPreserveAttachments-00835]]
The value of each element of the pname:pPreserveAttachments member in
each element of pname:pSubpasses must: not be ename:VK_ATTACHMENT_UNUSED
* [[VUID-VkRenderPassCreateInfo-pAttachments-00836]]
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.
* [[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.
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
* [[VUID-VkRenderPassCreateInfo-pAttachments-01566]]
For any member of pname:pAttachments with a pname:loadOp equal to
@ -215,11 +210,13 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
by its pname:subpass member
* [[VUID-VkRenderPassCreateInfo-pNext-01963]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassInputAttachmentAspectCreateInfo, the pname:aspectMask
member of any element of pname:pAspectReferences must: only include
aspects that are present in images of the pname:format of the input
attachment specified by the pname:subpass and pname:inputAttachment of
the same element of pname:pAspectReferences
slink:VkRenderPassInputAttachmentAspectCreateInfo, for any element of
the pname:pInputAttachments member of any element of pname:pSubpasses
where the pname:attachment member is not ename:VK_ATTACHMENT_UNUSED, the
pname:aspectMask member of the corresponding element of
slink:VkRenderPassInputAttachmentAspectCreateInfo::pname:pAspectReferences
must: only include aspects that are present in images of the format
specified by the element of pname:pAttachments at pname:attachment
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
* [[VUID-VkRenderPassCreateInfo-pNext-01928]]
@ -236,25 +233,59 @@ ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
slink:VkRenderPassMultiviewCreateInfo, for each non-zero element of
pname:pViewOffsets, the pname:srcSubpass and pname:dstSubpass members of
pname:pDependencies at the same index must: not be equal
* [[VUID-VkRenderPassCreateInfo-pNext-02512]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassMultiviewCreateInfo, for any element of
pname:pDependencies with a pname:dependencyFlags member that doesn't
include ename:VK_DEPENDENCY_VIEW_LOCAL_BIT, the corresponding element of
the pname:pViewOffsets member of that
slink:VkRenderPassMultiviewCreateInfo instance must: be `0`
* [[VUID-VkRenderPassCreateInfo-pNext-02513]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassMultiviewCreateInfo, elements of its pname:pViewMasks
member must: either all be `0`, or all not be `0`
* [[VUID-VkRenderPassCreateInfo-pNext-02514]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassMultiviewCreateInfo, and each element of its
pname:pViewMasks member is `0`, the pname:dependencyFlags member of each
element of pname:pDependencies must: not include
ename:VK_DEPENDENCY_VIEW_LOCAL_BIT
* [[VUID-VkRenderPassCreateInfo-pNext-02515]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassMultiviewCreateInfo, and each element of its
pname:pViewMasks member is `0`, pname:correlatedViewMaskCount must: be
`0`
* [[VUID-VkRenderPassCreateInfo-pNext-02516]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassMultiviewCreateInfo, each element of its
pname:pViewMask member must: not include a bit at a position greater
than the value of
slink:VkPhysicalDeviceLimits::pname:maxFramebufferLayers
endif::VK_VERSION_1_1,VK_KHR_multiview[]
* [[VUID-VkRenderPassCreateInfo-pDependencies-00837]]
For any element of pname:pDependencies, if the pname:srcSubpass is not
ename:VK_SUBPASS_EXTERNAL, all stage flags included in the
pname:srcStageMask member of that dependency must: be a pipeline stage
supported by the <<synchronization-pipeline-stages-types, pipeline>>
identified by the pname:pipelineBindPoint member of the source subpass.
identified by the pname:pipelineBindPoint member of the source subpass
* [[VUID-VkRenderPassCreateInfo-pDependencies-00838]]
For any element of pname:pDependencies, if the pname:dstSubpass is not
ename:VK_SUBPASS_EXTERNAL, all stage flags included in the
pname:dstStageMask member of that dependency must: be a pipeline stage
supported by the <<synchronization-pipeline-stages-types, pipeline>>
identified by the pname:pipelineBindPoint member of the source subpass.
identified by the pname:pipelineBindPoint member of the source subpass
* [[VUID-VkRenderPassCreateInfo-srcSubpass-02517]]
The pname:srcSubpass member of each element of pname:pDependencies must:
be less than pname:subpassCount
* [[VUID-VkRenderPassCreateInfo-dstSubpass-02518]]
The pname:dstSubpass member of each element of pname:pDependencies must:
be less than pname:subpassCount
****
include::../validity/structs/VkRenderPassCreateInfo.txt[]
--
[open,refpage='VkRenderPassCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkRenderPassCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkRenderPassCreateFlags.txt[]
@ -625,7 +656,7 @@ include::../api/enums/VkAttachmentDescriptionFlagBits.txt[]
--
[open,refpage='VkAttachmentDescriptionFlags',desc='Bitmask of VkAttachmentDescriptionFlagBits',type='enums']
[open,refpage='VkAttachmentDescriptionFlags',desc='Bitmask of VkAttachmentDescriptionFlagBits',type='flags']
--
include::../api/flags/VkAttachmentDescriptionFlags.txt[]
@ -880,19 +911,15 @@ endif::VK_AMD_mixed_attachment_samples[]
pname:pDepthStencilAttachment is not ename:VK_ATTACHMENT_UNUSED and any
attachments in pname:pColorAttachments are not
ename:VK_ATTACHMENT_UNUSED, they must: have the same sample count
* [[VUID-VkSubpassDescription-None-00852]]
If any input attachments are ename:VK_ATTACHMENT_UNUSED, then any
pipelines bound during the subpass must: not access those input
attachments from the fragment shader
* [[VUID-VkSubpassDescription-attachment-00853]]
The pname:attachment member of each element of
pname:pPreserveAttachments must: not be ename:VK_ATTACHMENT_UNUSED
* [[VUID-VkSubpassDescription-pPreserveAttachments-00854]]
Each element of pname:pPreserveAttachments must: not also be an element
of any other member of the subpass description
* [[VUID-VkSubpassDescription-layout-00855]]
If any attachment is used as both an input attachment and a color or
depth/stencil attachment, then each use must: use the same pname:layout
* [[VUID-VkSubpassDescription-layout-02519]]
If any attachment is used by more than one slink:VkAttachmentReference
member, then each use must: use the same pname:layout
ifdef::VK_NVX_multiview_per_view_attributes[]
* [[VUID-VkSubpassDescription-flags-00856]]
If pname:flags includes
@ -935,7 +962,7 @@ extensions are enabled in this build of the specification.
endif::VK_NVX_multiview_per_view_attributes[]
--
[open,refpage='VkSubpassDescriptionFlags',desc='Bitmask of VkSubpassDescriptionFlagBits',type='enums']
[open,refpage='VkSubpassDescriptionFlags',desc='Bitmask of VkSubpassDescriptionFlagBits',type='flags']
--
include::../api/flags/VkSubpassDescriptionFlags.txt[]
@ -1131,13 +1158,12 @@ layouts as follows:
<<synchronization-framebuffer-regions,framebuffer-space stage>>, then
pname:dependencyFlags must: include ename:VK_DEPENDENCY_BY_REGION_BIT
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
* [[VUID-VkSubpassDependency-dependencyFlags-00870]]
* [[VUID-VkSubpassDependency-dependencyFlags-02520]]
If pname:dependencyFlags includes ename:VK_DEPENDENCY_VIEW_LOCAL_BIT,
then both pname:srcSubpass and pname:dstSubpass must: not equal
ename:VK_SUBPASS_EXTERNAL
* [[VUID-VkSubpassDependency-dependencyFlags-00871]]
pname:srcSubpass must: not be equal to ename:VK_SUBPASS_EXTERNAL
* [[VUID-VkSubpassDependency-dependencyFlags-02521]]
If pname:dependencyFlags includes ename:VK_DEPENDENCY_VIEW_LOCAL_BIT,
then the render pass must: have multiview enabled
pname:dstSubpass must: not be equal to ename:VK_SUBPASS_EXTERNAL
* [[VUID-VkSubpassDependency-srcSubpass-00872]]
If pname:srcSubpass equals pname:dstSubpass and that subpass has more
than one bit set in the view mask, then pname:dependencyFlags must:
@ -1519,16 +1545,20 @@ respectively.
element of pname:pPreserveAttachments in any given element of
pname:pSubpasses is not ename:VK_ATTACHMENT_UNUSED, it must: be less
than pname:attachmentCount
* [[VUID-VkRenderPassCreateInfo2KHR-pPreserveAttachments-03052]]
The value of any element of the pname:pPreserveAttachments member in any
given element of pname:pSubpasses must: not be
ename:VK_ATTACHMENT_UNUSED
* [[VUID-VkRenderPassCreateInfo2KHR-pAttachments-03053]]
* [[VUID-VkRenderPassCreateInfo2KHR-pAttachments-02522]]
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.
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
* [[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.
* [[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
@ -1563,12 +1593,23 @@ respectively.
corresponding element of pname:pSubpasses includes more than one bit,
its pname:dependencyFlags member must: include
ename:VK_DEPENDENCY_VIEW_LOCAL_BIT
ifdef::VK_EXT_transform_feedback[]
* [[VUID-VkRenderPassCreateInfo2KHR-None-02348]]
If any two subpasses activate transform feedback to the same bound
transform feedback buffers a subpass dependency must: be included
(either directly or via some intermediate subpasses) between them
endif::VK_EXT_transform_feedback[]
* [[VUID-VkRenderPassCreateInfo2KHR-viewMask-02524]]
The pname:viewMask member must: not include a bit at a position greater
than the value of
slink:VkPhysicalDeviceLimits::pname:maxFramebufferLayers
* [[VUID-VkRenderPassCreateInfo2KHR-attachment-02525]]
If the pname:attachment member of any element of the
pname:pInputAttachments member of any element of pname:pSubpasses is not
ename:VK_ATTACHMENT_UNUSED, the pname:aspectMask member of that element
of pname:pInputAttachments must: only include aspects that are present
in images of the format specified by the element of pname:pAttachments
specified by pname:attachment
* [[VUID-VkRenderPassCreateInfo2KHR-srcSubpass-02526]]
The pname:srcSubpass member of each element of pname:pDependencies must:
be less than pname:subpassCount
* [[VUID-VkRenderPassCreateInfo2KHR-dstSubpass-02527]]
The pname:dstSubpass member of each element of pname:pDependencies must:
be less than pname:subpassCount
****
include::../validity/structs/VkRenderPassCreateInfo2KHR.txt[]
@ -1705,19 +1746,15 @@ endif::VK_AMD_mixed_attachment_samples[]
pname:pDepthStencilAttachment is not ename:VK_ATTACHMENT_UNUSED and any
attachments in pname:pColorAttachments are not
ename:VK_ATTACHMENT_UNUSED, they must: have the same sample count
* [[VUID-VkSubpassDescription2KHR-None-03072]]
If any input attachments are ename:VK_ATTACHMENT_UNUSED, then any
pipelines bound during the subpass must: not access those input
attachments from the fragment shader
* [[VUID-VkSubpassDescription2KHR-attachment-03073]]
The pname:attachment member of any element of pname:pPreserveAttachments
must: not be ename:VK_ATTACHMENT_UNUSED
* [[VUID-VkSubpassDescription2KHR-pPreserveAttachments-03074]]
Any given element of pname:pPreserveAttachments must: not also be an
element of any other member of the subpass description
* [[VUID-VkSubpassDescription2KHR-layout-03075]]
If any attachment is used as both an input attachment and a color or
depth/stencil attachment, then each use must: use the same pname:layout
* [[VUID-VkSubpassDescription2KHR-layout-02528]]
If any attachment is used by more than one slink:VkAttachmentReference
member, then each use must: use the same pname:layout
ifdef::VK_NVX_multiview_per_view_attributes[]
* [[VUID-VkSubpassDescription2KHR-flags-03076]]
If pname:flags includes
@ -1730,6 +1767,9 @@ endif::VK_NVX_multiview_per_view_attributes[]
* [[VUID-VkSubpassDescription2KHR-aspectMask-03176]]
The pname:aspectMask member of any element of pname:pInputAttachments
must: not be `0`
* [[VUID-VkSubpassDescription2KHR-aspectMask-02529]]
The pname:aspectMask member of each element of pname:pInputAttachments
must: not include ename:VK_IMAGE_ASPECT_METADATA_BIT
****
include::../validity/structs/VkSubpassDescription2KHR.txt[]
@ -1875,6 +1915,9 @@ corresponding subpass dependency.
pname:dstStageMask both include a
<<synchronization-framebuffer-regions,framebuffer-space stage>>, then
pname:dependencyFlags must: include ename:VK_DEPENDENCY_BY_REGION_BIT
* [[VUID-VkSubpassDependency2KHR-viewOffset-02530]]
If pname:viewOffset is not equal to `0`, pname:srcSubpass must: not be
equal to pname:dstSubpass
* [[VUID-VkSubpassDependency2KHR-dependencyFlags-03092]]
If pname:dependencyFlags does not include
ename:VK_DEPENDENCY_VIEW_LOCAL_BIT, pname:viewOffset must: be `0`
@ -2130,12 +2173,18 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
Each element of pname:pAttachments that is a 2D or 2D array image view
taken from a 3D image must: not be a depth/stencil format
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
* [[VUID-VkFramebufferCreateInfo-renderPass-02531]]
If pname:renderPass was specified with non-zero view masks, pname:layers
must: be greater than or equal to the greatest position of any bit
included in any of those view masks
endif::VK_VERSION_1_1,VK_KHR_multiview[]
****
include::../validity/structs/VkFramebufferCreateInfo.txt[]
--
[open,refpage='VkFramebufferCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkFramebufferCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkFramebufferCreateFlags.txt[]
@ -2287,7 +2336,13 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
create pname:renderPass must: be supported by the capabilities of the
queue family identified by the pname:queueFamilyIndex member of the
slink:VkCommandPoolCreateInfo used to create the command pool which
pname:commandBuffer was allocated from.
pname:commandBuffer was allocated from
* [[VUID-vkCmdBeginRenderPass-framebuffer-02532]]
For any attachment in pname:framebuffer that is used by pname:renderPass
and is bound to memory locations that are also bound to another
attachment used by pname:renderPass, and if at least one of those uses
causes either attachment to be written to, both attachments must: have
had the ename:VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT set
****
include::../validity/protos/vkCmdBeginRenderPass.txt[]
@ -2325,41 +2380,19 @@ record the commands for the first subpass of that render pass.
specified in the pname:framebuffer member of pname:pRenderPassBegin
must: have been created with ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
set
// The VU below comes in an alternate version when the extension is
// enabled.
ifndef::VK_KHR_maintenance2[]
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03095]]
If any of the pname:initialLayout or pname:finalLayout member of the
sname:VkAttachmentDescription structures or the pname:layout member of
the sname:VkAttachmentReference structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
corresponding attachment image subresource of the framebuffer specified
in the pname:framebuffer member of pname:pRenderPassBegin must: have
been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
endif::VK_KHR_maintenance2[]
// The nested ifdefs are there in anticipation of the hoped-for day when the
// VU extractor and validation layers can handle VU with imbedded
// conditionals.
ifdef::VK_KHR_maintenance2[]
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03096]]
If any of the pname:initialLayout or pname:finalLayout member of the
sname:VkAttachmentDescription structures or the pname:layout member of
the sname:VkAttachmentReference structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is
// ifdef::VK_KHR_maintenance2[]
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
// endif::VK_KHR_maintenance2[]
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
corresponding attachment image subresource of the framebuffer specified
in the pname:framebuffer member of pname:pRenderPassBegin must: have
been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
endif::VK_KHR_maintenance2[]
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03097]]
If any of the pname:initialLayout or pname:finalLayout member of the
sname:VkAttachmentDescription structures or the pname:layout member of
@ -2402,7 +2435,13 @@ endif::VK_KHR_maintenance2[]
create pname:renderPass must: be supported by the capabilities of the
queue family identified by the pname:queueFamilyIndex member of the
slink:VkCommandPoolCreateInfo used to create the command pool which
pname:commandBuffer was allocated from.
pname:commandBuffer was allocated from
* [[VUID-vkCmdBeginRenderPass2KHR-framebuffer-02533]]
For any attachment in pname:framebuffer that is used by pname:renderPass
and is bound to memory locations that are also bound to another
attachment used by pname:renderPass, and if at least one of those uses
causes either attachment to be written to, both attachments must: have
had the ename:VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT set
****
include::../validity/protos/vkCmdBeginRenderPass2KHR.txt[]
@ -2465,10 +2504,6 @@ pass.
in pname:renderPass that specifies a pname:loadOp (or
pname:stencilLoadOp, if the attachment has a depth/stencil format) of
ename:VK_ATTACHMENT_LOAD_OP_CLEAR
* [[VUID-VkRenderPassBeginInfo-clearValueCount-00903]]
If pname:clearValueCount is not `0`, pname:pClearValues must: be a valid
pointer to an array of pname:clearValueCount valid sname:VkClearValue
unions
* [[VUID-VkRenderPassBeginInfo-renderPass-00904]]
pname:renderPass must: be <<renderpass-compatibility,compatible>> with
the pname:renderPass member of the sname:VkFramebufferCreateInfo
@ -2790,7 +2825,6 @@ ifdef::VK_EXT_transform_feedback[]
* [[VUID-vkCmdNextSubpass-None-02349]]
This command must: not be recorded when transform feedback is active
endif::VK_EXT_transform_feedback[]
****
include::../validity/protos/vkCmdNextSubpass.txt[]

View File

@ -241,7 +241,7 @@ ifdef::VK_NV_ray_tracing[]
endif::VK_NV_ray_tracing[]
--
[open,refpage='VkBufferUsageFlags',desc='Bitmask of VkBufferUsageFlagBits',type='enums']
[open,refpage='VkBufferUsageFlags',desc='Bitmask of VkBufferUsageFlagBits',type='flags']
--
include::../api/flags/VkBufferUsageFlags.txt[]
@ -280,7 +280,7 @@ memory features supported on a device.
--
[open,refpage='VkBufferCreateFlags',desc='Bitmask of VkBufferCreateFlagBits',type='enums']
[open,refpage='VkBufferCreateFlags',desc='Bitmask of VkBufferCreateFlagBits',type='flags']
--
include::../api/flags/VkBufferCreateFlags.txt[]
@ -481,7 +481,7 @@ include::../api/structs/VkBufferViewCreateInfo.txt[]
include::../validity/structs/VkBufferViewCreateInfo.txt[]
--
[open,refpage='VkBufferViewCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkBufferViewCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkBufferViewCreateFlags.txt[]
@ -1223,6 +1223,41 @@ ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
structure whose pname:externalFormat member is not `0`, pname:tiling
must: be ename:VK_IMAGE_TILING_OPTIMAL.
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
ifdef::VK_EXT_separate_stencil_usage[]
* [[VUID-VkImageCreateInfo-format-02534]]
If pname:format is a depth-stencil format and the pname:pNext chain
contains an instance of slink:VkImageStencilUsageCreateInfoEXT, then its
pname:stencilUsage member must: only include
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT if pname:usage also
includes it
* [[VUID-VkImageCreateInfo-format-02535]]
If pname:format is a depth-stencil format and the pname:pNext chain
contains an instance of slink:VkImageStencilUsageCreateInfoEXT, then its
pname:stencilUsage member must: only include
ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT if pname:usage also
includes it
* [[VUID-VkImageCreateInfo-Format-02536]]
If pname:Format is a depth-stencil format and the pname:pNext chain
contains an instance of slink:VkImageStencilUsageCreateInfoEXT with its
pname:stencilUsage member including
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.width must: be
less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth
* [[VUID-VkImageCreateInfo-format-02537]]
If pname:format is a depth-stencil format and the pname:pNext chain
contains an instance of slink:VkImageStencilUsageCreateInfoEXT with its
pname:stencilUsage member including
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.height must: be
less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight
* [[VUID-VkImageCreateInfo-format-02538]]
If the <<features-features-shaderStorageImageMultisample,multisampled
storage images>> feature is not enabled, pname:format is a depth-stencil
format and the pname:pNext chain contains an instance of
slink:VkImageStencilUsageCreateInfoEXT with its pname:stencilUsage
including ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be
ename:VK_SAMPLE_COUNT_1_BIT
endif::VK_EXT_separate_stencil_usage[]
ifdef::VK_NV_corner_sampled_image[]
* [[VUID-VkImageCreateInfo-flags-02050]]
If pname:flags contains ename:VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV,
@ -1258,6 +1293,53 @@ endif::VK_NV_shading_rate_image[]
include::../validity/structs/VkImageCreateInfo.txt[]
--
ifdef::VK_EXT_separate_stencil_usage[]
[open,refpage='VkImageStencilUsageCreateInfoEXT',desc='Specify separate usage flags for the stencil aspect of a depth-stencil image',type='structs']
--
If the pname:pNext chain of slink:VkImageCreateInfo includes a
sname:VkImageStencilUsageCreateInfoEXT structure, then that structure
includes the usage flags specific to the stencil aspect of the image for an
image with a depth-stencil format.
The sname:VkImageStencilUsageCreateInfoEXT structure is defined as:
include::../api/structs/VkImageStencilUsageCreateInfoEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:stencilUsage is a bitmask of elink:VkImageUsageFlagBits describing
the intended usage of the stencil aspect of the image.
When this structure is not present in the pname:pNext chain of
sname:VkImageCreateInfo then the implicit value of pname:stencilUsage
matches that of sname:VkImageCreateInfo::pname:usage.
This structure can: also be included in the pname:pNext chain of
slink:VkPhysicalDeviceImageFormatInfo2 to query additional capabilities
specific to image creation parameter combinations including a separate set
of usage flags for the stencil aspect of the image using
flink:vkGetPhysicalDeviceImageFormatProperties2.
When this structure is not present in the pname:pNext chain of
sname:VkPhysicalDeviceImageFormatInfo2 then the implicit value of
pname:stencilUsage matches that of
sname:VkPhysicalDeviceImageFormatInfo2::pname:usage.
.Valid Usage
****
* [[VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-02539]]
If pname:stencilUsage includes
ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, then bits other than
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT must: not be set
****
include::../validity/structs/VkImageStencilUsageCreateInfoEXT.txt[]
--
endif::VK_EXT_separate_stencil_usage[]
ifdef::VK_NV_dedicated_allocation[]
[open,refpage='VkDedicatedAllocationImageCreateInfoNV',desc='Specify that an image is bound to a dedicated memory resource',type='structs']
@ -1615,7 +1697,7 @@ endif::VK_NV_shading_rate_image[]
--
[open,refpage='VkImageUsageFlags',desc='Bitmask of VkImageUsageFlagBits',type='enums']
[open,refpage='VkImageUsageFlags',desc='Bitmask of VkImageUsageFlagBits',type='flags']
--
include::../api/flags/VkImageUsageFlags.txt[]
@ -1729,7 +1811,7 @@ details.
--
[open,refpage='VkImageCreateFlags',desc='Bitmask of VkImageCreateFlagBits',type='enums']
[open,refpage='VkImageCreateFlags',desc='Bitmask of VkImageCreateFlagBits',type='flags']
--
include::../api/flags/VkImageCreateFlags.txt[]
@ -2557,7 +2639,16 @@ Some of the image creation parameters are inherited by the view.
In particular, image view creation inherits the implicit parameter
pname:usage specifying the allowed usages of the image view that, by
default, takes the value of the corresponding pname:usage parameter
specified in sname:VkImageCreateInfo at image creation time.
specified in sname:VkImageCreateInfo at image creation time
ifdef::VK_EXT_separate_stencil_usage[]
, except if the image has a depth-stencil format,
pname:subresourceRange.aspectMask specified in the pname:pCreateInfo
parameter includes ename:VK_IMAGE_ASPECT_STENCIL_BIT, and the pname:pNext
chain of sname:VkImageCreateInfo specified at image creation time contained
an instance of slink:VkImageStencilUsageCreateInfoEXT in which case it takes
the value of the pname:stencilUsage member of that structure
endif::VK_EXT_separate_stencil_usage[]
.
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
This implicit parameter can: be overriden by chaining a
slink:VkImageViewUsageCreateInfo structure through the pname:pNext member to
@ -3098,7 +3189,7 @@ endif::VK_NV_shading_rate_image[]
include::../validity/structs/VkImageViewCreateInfo.txt[]
--
[open,refpage='VkImageViewCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkImageViewCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkImageViewCreateFlags.txt[]
@ -3293,7 +3384,7 @@ include::../api/enums/VkImageAspectFlagBits.txt[]
--
[open,refpage='VkImageAspectFlags',desc='Bitmask of VkImageAspectFlagBits',type='enums']
[open,refpage='VkImageAspectFlags',desc='Bitmask of VkImageAspectFlagBits',type='flags']
--
include::../api/flags/VkImageAspectFlags.txt[]

View File

@ -248,7 +248,7 @@ endif::VK_EXT_sampler_filter_minmax[]
include::../validity/structs/VkSamplerCreateInfo.txt[]
--
[open,refpage='VkSamplerCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkSamplerCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkSamplerCreateFlags.txt[]
@ -462,7 +462,7 @@ include::../validity/structs/VkSamplerYcbcrConversionInfo.txt[]
--
[open,refpage='VkSamplerYcbcrConversion',desc='',type='handles']
[open,refpage='VkSamplerYcbcrConversion',desc='Opaque handle to a device-specific sampler Y\'C~B~C~R~ conversion description',type='handles']
--
A sampler Y'C~B~C~R~ conversion is an opaque representation of a

View File

@ -149,7 +149,7 @@ endif::VK_NV_glsl_shader[]
include::../validity/structs/VkShaderModuleCreateInfo.txt[]
--
[open,refpage='VkShaderModuleCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkShaderModuleCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkShaderModuleCreateFlags.txt[]
@ -1056,7 +1056,7 @@ include::../api/structs/VkValidationCacheCreateInfoEXT.txt[]
include::../validity/structs/VkValidationCacheCreateInfoEXT.txt[]
--
[open,refpage='VkValidationCacheCreateFlagsEXT',desc='Reserved for future use',type='enums']
[open,refpage='VkValidationCacheCreateFlagsEXT',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkValidationCacheCreateFlagsEXT.txt[]

View File

@ -816,7 +816,7 @@ include::../api/enums/VkSparseImageFormatFlagBits.txt[]
--
[open,refpage='VkSparseImageFormatFlags',desc='Bitmask of VkSparseImageFormatFlagBits',type='enums']
[open,refpage='VkSparseImageFormatFlags',desc='Bitmask of VkSparseImageFormatFlagBits',type='flags']
--
include::../api/flags/VkSparseImageFormatFlags.txt[]
@ -1395,7 +1395,7 @@ include::../api/enums/VkSparseMemoryBindFlagBits.txt[]
--
[open,refpage='VkSparseMemoryBindFlags',desc='Bitmask of VkSparseMemoryBindFlagBits',type='enums']
[open,refpage='VkSparseMemoryBindFlags',desc='Bitmask of VkSparseMemoryBindFlagBits',type='flags']
--
include::../api/flags/VkSparseMemoryBindFlags.txt[]

View File

@ -447,7 +447,7 @@ between queues.
--
[open,refpage='VkPipelineStageFlags',desc='Bitmask of VkPipelineStageFlagBits',type='enums']
[open,refpage='VkPipelineStageFlags',desc='Bitmask of VkPipelineStageFlagBits',type='flags']
--
include::../api/flags/VkPipelineStageFlags.txt[]
@ -905,7 +905,7 @@ explicit memory barrier.
--
[open,refpage='VkAccessFlags',desc='Bitmask of VkAccessFlagBits',type='enums']
[open,refpage='VkAccessFlags',desc='Bitmask of VkAccessFlagBits',type='flags']
--
include::../api/flags/VkAccessFlags.txt[]
@ -1221,7 +1221,7 @@ include::../api/enums/VkFenceCreateFlagBits.txt[]
--
[open,refpage='VkFenceCreateFlags',desc='Bitmask of VkFenceCreateFlagBits',type='enums']
[open,refpage='VkFenceCreateFlags',desc='Bitmask of VkFenceCreateFlagBits',type='flags']
--
include::../api/flags/VkFenceCreateFlags.txt[]
@ -2067,7 +2067,7 @@ endif::VK_KHR_external_fence[]
--
[open,refpage='VkFenceImportFlags',desc='Bitmask of VkFenceImportFlagBits',type='enums']
[open,refpage='VkFenceImportFlags',desc='Bitmask of VkFenceImportFlagBits',type='flags']
--
include::../api/flags/VkFenceImportFlags.txt[]
@ -2162,7 +2162,7 @@ include::../api/structs/VkSemaphoreCreateInfo.txt[]
include::../validity/structs/VkSemaphoreCreateInfo.txt[]
--
[open,refpage='VkSemaphoreCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkSemaphoreCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkSemaphoreCreateFlags.txt[]
@ -2965,7 +2965,7 @@ These bits have the following meanings:
--
[open,refpage='VkSemaphoreImportFlags',desc='Bitmask of VkSemaphoreImportFlagBits',type='enums']
[open,refpage='VkSemaphoreImportFlags',desc='Bitmask of VkSemaphoreImportFlagBits',type='flags']
--
include::../api/flags/VkSemaphoreImportFlags.txt[]
@ -3043,7 +3043,7 @@ include::../api/structs/VkEventCreateInfo.txt[]
include::../validity/structs/VkEventCreateInfo.txt[]
--
[open,refpage='VkEventCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkEventCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkEventCreateFlags.txt[]
@ -3715,7 +3715,7 @@ endif::VK_VERSION_1_1,VK_KHR_device_group[]
--
[open,refpage='VkDependencyFlags',desc='Bitmask of VkDependencyFlagBits',type='enums']
[open,refpage='VkDependencyFlags',desc='Bitmask of VkDependencyFlagBits',type='flags']
--
include::../api/flags/VkDependencyFlags.txt[]

View File

@ -515,7 +515,7 @@ include::../api/structs/VkPipelineTessellationStateCreateInfo.txt[]
include::../validity/structs/VkPipelineTessellationStateCreateInfo.txt[]
--
[open,refpage='VkPipelineTessellationStateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineTessellationStateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineTessellationStateCreateFlags.txt[]

View File

@ -385,7 +385,7 @@ include::../api/structs/VkPipelineViewportSwizzleStateCreateInfoNV.txt[]
include::../validity/structs/VkPipelineViewportSwizzleStateCreateInfoNV.txt[]
--
[open,refpage='VkPipelineViewportSwizzleStateCreateFlagsNV',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineViewportSwizzleStateCreateFlagsNV',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineViewportSwizzleStateCreateFlagsNV.txt[]
@ -838,7 +838,7 @@ endif::VK_NV_clip_space_w_scaling[]
include::../validity/structs/VkPipelineViewportStateCreateInfo.txt[]
--
[open,refpage='VkPipelineViewportStateCreateFlags',desc='Reserved for future use',type='enums']
[open,refpage='VkPipelineViewportStateCreateFlags',desc='Reserved for future use',type='flags']
--
include::../api/flags/VkPipelineViewportStateCreateFlags.txt[]
@ -1051,7 +1051,7 @@ ifdef::VK_EXT_depth_range_unrestricted[]
pname:minDepth must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
ifndef::VK_EXT_depth_range_unrestricted[]
* [[VUID-VkViewport-minDepth-01234]]
* [[VUID-VkViewport-minDepth-02540]]
pname:minDepth must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
ifdef::VK_EXT_depth_range_unrestricted[]
@ -1060,7 +1060,7 @@ ifdef::VK_EXT_depth_range_unrestricted[]
pname:maxDepth must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
ifndef::VK_EXT_depth_range_unrestricted[]
* [[VUID-VkViewport-maxDepth-01235]]
* [[VUID-VkViewport-maxDepth-02541]]
pname:maxDepth must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
****

View File

@ -68,6 +68,7 @@ fi
# -dProcessColorModel=/DeviceGray \
# -dColorConversionStrategy=/Gray \
ERRFILE=ERRS.optimize
"$GS" -q -dNOPAUSE -dBATCH -dSAFER -dNOOUTERSAVE \
-sDEVICE=pdfwrite \
-dPDFSETTINGS=/prepress \
@ -79,6 +80,17 @@ fi
-dDownsampleMonoImages=$DOWNSAMPLE_IMAGES \
-dMonoImageResolution=$IMAGE_DPI \
-sOutputFile="$FILE_OPTIMIZED" \
"$FILE" $FILE_PDFMARK
"$FILE" $FILE_PDFMARK 2> $ERRFILE
exit 0
status=$?
if test $status -ne 0 ; then
echo "$0: $GS return status = $status, aborting"
elif grep -q Error $ERRFILE ; then
echo "$0: $GS succeeded but found Error in $ERRFILE (follows), aborting"
echo '---------- Errors from $GS ----------'
grep Error $ERRFILE
echo '-------------------------------------'
status=1
fi
exit $status

109
genRef.py
View File

@ -20,7 +20,7 @@
# Usage: genRef.py files
from reflib import *
from vkapi import *
import vkapi
import argparse, copy, io, os, pdb, re, string, sys
# Return True if name is a Vulkan extension name (ends with an upper-case
@ -48,21 +48,21 @@ def printFooter(fp):
# Add a spec asciidoc macro prefix to a Vulkan name, depending on its type
# (protos, structs, enums, etc.)
def macroPrefix(name):
if name in basetypes.keys():
if name in vkapi.basetypes.keys():
return 'basetype:' + name
elif name in defines.keys():
elif name in vkapi.defines.keys():
return 'slink:' + name
elif name in enums.keys():
elif name in vkapi.enums.keys():
return 'elink:' + name
elif name in flags.keys():
elif name in vkapi.flags.keys():
return 'elink:' + name
elif name in funcpointers.keys():
elif name in vkapi.funcpointers.keys():
return 'tlink:' + name
elif name in handles.keys():
elif name in vkapi.handles.keys():
return 'slink:' + name
elif name in protos.keys():
elif name in vkapi.protos.keys():
return 'flink:' + name
elif name in structs.keys():
elif name in vkapi.structs.keys():
return 'slink:' + name
elif name == 'TBD':
return 'No cross-references are available'
@ -77,8 +77,8 @@ def seeAlsoList(apiName, explicitRefs = None):
refs = {}
# Add all the implicit references to refs
if apiName in mapDict.keys():
for name in sorted(mapDict[apiName].keys()):
if apiName in vkapi.mapDict.keys():
for name in sorted(vkapi.mapDict[apiName].keys()):
refs[name] = None
# Add all the explicit references
@ -467,14 +467,14 @@ def genSinglePageRef(baseDir):
# this for us.
sections = [
[ protos, 'protos', 'Vulkan Commands' ],
[ handles, 'handles', 'Object Handles' ],
[ structs, 'structs', 'Structures' ],
[ enums, 'enums', 'Enumerations' ],
[ flags, 'flags', 'Flags' ],
[ funcpointers, 'funcpointers', 'Function Pointer Types' ],
[ basetypes, 'basetypes', 'Vulkan Scalar types' ],
[ defines, 'defines', 'C Macro Definitions' ] ]
[ vkapi.protos, 'protos', 'Vulkan Commands' ],
[ vkapi.handles, 'handles', 'Object Handles' ],
[ vkapi.structs, 'structs', 'Structures' ],
[ vkapi.enums, 'enums', 'Enumerations' ],
[ vkapi.flags, 'flags', 'Flags' ],
[ vkapi.funcpointers, 'funcpointers', 'Function Pointer Types' ],
[ vkapi.basetypes, 'basetypes', 'Vulkan Scalar types' ],
[ vkapi.defines, 'defines', 'C Macro Definitions' ] ]
# Accumulate body of page
body = io.StringIO()
@ -489,20 +489,34 @@ def genSinglePageRef(baseDir):
'',
sep='\n', file=body)
# count = 0
for refPage in sorted(apiDict.keys()):
# if count > 3:
# continue
# count = count + 1
# Don't generate links for aliases, which are included with the
# aliased page
if refPage not in vkapi.alias:
if refPage not in vkapi.flags:
# Add page to body
print('include::' + refPage + '.txt[]', file=body)
elif vkapi.flags[refPage] is not None:
# Add page to body
print('include::' + refPage + '.txt[]', file=body)
else:
# Don't add page
logWarn('(Benign) Not including', refPage,
'in single-page reference',
'because it is an empty Flags type')
# Add page to body
# Previously, a page was added only when:
# if apiDict == defines or not isextension(refPage):
# Now, all extensions are added (though ideally, only the
# extensions specifically requested would be added - there's an
# implicit expectation here that 'make man/apispec.txt' was
# generated via 'makeAllExts' or equivalent).
print('include::' + refPage + '.txt[]', file=body)
# Previously, a page was added only when:
# if apiDict == defines or not isextension(refPage):
# Now, all extensions are added (though ideally, only the
# extensions specifically requested would be added - there's an
# implicit expectation here that 'make man/apispec.txt' was
# generated via 'makeAllExts' or equivalent).
else:
# Alternatively, we could (probably should) link to the
# aliased refpage
logWarn('(Benign) Not including', refPage,
'in single-page reference',
'because it is an alias of', vkapi.alias[refPage])
print('\n' + ':leveloffset: 0' + '\n', file=body)
@ -557,8 +571,8 @@ if __name__ == '__main__':
# autoGenFlagsPage is no longer needed because they are added to
# the spec sources now.
# for page in flags.keys():
# if not (page in genDict.keys()):
# autoGenFlagsPage(baseDir, page)
# if not (page in genDict.keys()):
# autoGenFlagsPage(baseDir, page)
# autoGenHandlePage is no longer needed because they are added to
# the spec sources now.
@ -567,20 +581,27 @@ if __name__ == '__main__':
# autoGenHandlePage(baseDir, page)
sections = [
[ flags, 'Flag Types' ],
[ enums, 'Enumerated Types' ],
[ structs, 'Structures' ],
[ protos, 'Prototypes' ],
[ funcpointers, 'Function Pointers' ],
[ basetypes, 'Vulkan Scalar Types' ] ]
[ vkapi.flags, 'Flags Type' ],
[ vkapi.enums, 'Enum Type ' ],
[ vkapi.structs, 'Structure ' ],
[ vkapi.protos, 'Command ' ],
[ vkapi.funcpointers, 'Funcptr ' ],
[ vkapi.basetypes, 'Base Type ' ] ]
# Summarize pages that weren't generated, for good or bad reasons
for (apiDict,title) in sections:
flagged = False
for page in apiDict.keys():
if not (page in genDict.keys()):
if not flagged:
logWarn(title, 'with no ref page generated:')
flagged = True
logWarn(' ', page)
# Page was not generated - why not?
if page in vkapi.alias:
logWarn('(Benign, is an alias) Ref page for', title, page, 'is aliased into', vkapi.alias[page])
elif page in vkapi.flags and vkapi.flags[page] is None:
logWarn('(Benign, no FlagBits defined) No ref page generated for ', title,
page)
else:
# Could introduce additional logic to detect
# external types and not emit them.
logWarn('No ref page generated for ', title, page)
genSinglePageRef(baseDir)

View File

@ -36,6 +36,8 @@ if __name__ == '__main__':
help='Generate internal build, not public')
parser.add_argument('-norefpages', action='store_true',
help='Do not generate refpages')
parser.add_argument('-singlerefpage', action='store_true',
help='Generate single-page refpage')
parser.add_argument('-chunked', action='store_true',
help='Always generate chunked HTML outputs')
parser.add_argument('-pdf', action='store_true',
@ -59,15 +61,17 @@ if __name__ == '__main__':
# Always build PDF for public releases
args.pdf = True
if args.norefpages:
refPageTargets = ''
else:
# Just generate separate reference pages, not the single-page
# 'manhtml' and 'manpdf' refpage targets.
refPageTargets = ' manhtmlpages'
# refPageTargets += ' manhtml'
# if args.pdf:
# refPageTargets += ' manpdf'
refPageTargets = ''
if not args.norefpages:
# Generate separate reference pages
refPageTargets += ' manhtmlpages'
if args.singlerefpage:
# Generate single-page refpage
refPageTargets += ' manhtml'
if args.pdf:
refPageTargets += ' manpdf'
specTargets = ' html'
if args.chunked:

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 92
#define VK_HEADER_VERSION 93
#define VK_NULL_HANDLE 0
@ -454,6 +454,8 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000,
VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000,
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
@ -1731,10 +1733,6 @@ typedef enum VkStencilFaceFlagBits {
} VkStencilFaceFlagBits;
typedef VkFlags VkStencilFaceFlags;
typedef enum VkRenderPassCreateFlagBits {
VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkRenderPassCreateFlagBits;
typedef struct VkApplicationInfo {
VkStructureType sType;
const void* pNext;
@ -8809,6 +8807,18 @@ typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
#define VK_EXT_scalar_block_layout 1
#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 scalarBlockLayout;
} VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
#define VK_GOOGLE_hlsl_functionality1 1
#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 0
#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1"
@ -8819,6 +8829,18 @@ typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string"
#define VK_EXT_separate_stencil_usage 1
#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
typedef struct VkImageStencilUsageCreateInfoEXT {
VkStructureType sType;
const void* pNext;
VkImageUsageFlags stencilUsage;
} VkImageStencilUsageCreateInfoEXT;
#ifdef __cplusplus
}
#endif

View File

@ -1,2 +1,2 @@
# The value to start tagging VU statements at, unless overridden by -nextvu
startVUID = 2506
startVUID = 2542

View File

@ -34,11 +34,10 @@ toc::[]
:test: 0
ifeval::["{test}"=="1"]
// include::config/mathtest.txt[]
include::chapters/fundamentals.txt[]
// Include or insert trivial test markup here, to bypass building full spec
// include::chapters/textest.txt[]
include::chapters/memory.txt[]
endif::[]
ifeval::["{test}"!="1"]

View File

@ -14,8 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import os,re,sys
import os,re,sys,io,pdb
from generator import *
from pprint import pprint
# PyOutputGenerator - subclass of OutputGenerator.
# Generates Python data structures describing API names and relationships.
@ -60,6 +61,7 @@ class PyOutputGenerator(OutputGenerator):
self.structs = {}
self.handles = {}
self.defines = {}
self.alias = {}
# Dictionary containing the type of a type name
# (e.g. the string name of the dictionary with its contents).
self.typeCategory = {}
@ -76,19 +78,24 @@ class PyOutputGenerator(OutputGenerator):
[ self.structs, 'structs' ],
[ self.handles, 'handles' ],
[ self.defines, 'defines' ],
[ self.typeCategory, 'typeCategory' ] ]
[ self.typeCategory, 'typeCategory' ],
[ self.alias, 'alias' ],
]
for (dict, name) in dicts:
write(name + ' = {}', file=self.outFile)
for key in sorted(dict.keys()):
write(name + '[' + enquote(key) + '] = ', dict[key], file=self.outFile)
write(name + '[' + enquote(key) + '] = ', dict[key],
file=self.outFile)
# Dictionary containing the relationships of a type
# (e.g. a dictionary with each related type as keys).
write('mapDict = {}', file=self.outFile)
# Could just print(self.mapDict), but prefer something human-readable
# Could just print(self.mapDict), but prefer something
# human-readable and stable-ordered
for baseType in sorted(self.mapDict.keys()):
write('mapDict[' + enquote(baseType) + '] = ', self.mapDict[baseType], file=self.outFile)
write('mapDict[' + enquote(baseType) + '] = ', file=self.outFile, end='')
pprint(self.mapDict[baseType], self.outFile)
OutputGenerator.endFile(self)
# Add a string entry to the dictionary, quoting it so it gets printed
@ -146,8 +153,13 @@ class PyOutputGenerator(OutputGenerator):
self.genStruct(typeinfo, name, alias)
else:
if alias:
# Always emit an alias
# Add name -> alias mapping
self.addName(self.alias, name, alias)
# Always emit an alias (?!)
count = 1
# May want to only emit full type definition when not an alias?
else:
# Extract the type name
# (from self.genOpts). Copy other text through unchanged.
@ -194,6 +206,13 @@ class PyOutputGenerator(OutputGenerator):
def genStruct(self, typeinfo, typeName, alias):
OutputGenerator.genStruct(self, typeinfo, typeName, alias)
if alias:
# Add name -> alias mapping
self.addName(self.alias, typeName, alias)
else:
# May want to only emit definition on this branch
True
members = [member.text for member in typeinfo.elem.findall('.//member/name')]
self.structs[typeName] = members
memberTypes = [member.text for member in typeinfo.elem.findall('.//member/type')]
@ -211,6 +230,13 @@ class PyOutputGenerator(OutputGenerator):
OutputGenerator.genGroup(self, groupinfo, groupName, alias)
groupElem = groupinfo.elem
if alias:
# Add name -> alias mapping
self.addName(self.alias, groupName, alias)
else:
# May want to only emit definition on this branch
True
# Loop over the nested 'enum' tags.
enumerants = [elem.get('name') for elem in groupElem.findall('enum')]
for name in enumerants:
@ -236,6 +262,13 @@ class PyOutputGenerator(OutputGenerator):
def genCmd(self, cmdinfo, name, alias):
OutputGenerator.genCmd(self, cmdinfo, name, alias)
if alias:
# Add name -> alias mapping
self.addName(self.alias, name, alias)
else:
# May want to only emit definition on this branch
True
# Add a typeCategory{} entry for the category of this type.
self.addName(self.typeCategory, name, 'protos')

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> 92</type>
#define <name>VK_HEADER_VERSION</name> 93</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -1253,7 +1253,7 @@ server.
<member><type>VkFramebuffer</type> <name>framebuffer</name></member>
<member><type>VkRect2D</type> <name>renderArea</name></member>
<member optional="true"><type>uint32_t</type> <name>clearValueCount</name></member>
<member len="clearValueCount" noautovalidity="true">const <type>VkClearValue</type>* <name>pClearValues</name></member>
<member len="clearValueCount">const <type>VkClearValue</type>* <name>pClearValues</name></member>
</type>
<type category="union" name="VkClearColorValue" comment="// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.">
<member><type>float</type> <name>float32</name>[4]</member>
@ -1312,7 +1312,7 @@ server.
<type category="struct" name="VkRenderPassCreateInfo">
<member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkRenderPassCreateFlags</type> <name>flags</name></member>
<member optional="true" noautovalidity="true"><type>VkRenderPassCreateFlags</type> <name>flags</name></member>
<member optional="true"><type>uint32_t</type> <name>attachmentCount</name></member>
<member len="attachmentCount">const <type>VkAttachmentDescription</type>* <name>pAttachments</name></member>
<member><type>uint32_t</type> <name>subpassCount</name></member>
@ -3170,7 +3170,7 @@ server.
<type category="struct" name="VkRenderPassCreateInfo2KHR">
<member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkRenderPassCreateFlags</type> <name>flags</name></member>
<member optional="true" noautovalidity="true"><type>VkRenderPassCreateFlags</type> <name>flags</name></member>
<member optional="true"><type>uint32_t</type> <name>attachmentCount</name></member>
<member len="attachmentCount">const <type>VkAttachmentDescription2KHR</type>* <name>pAttachments</name></member>
<member><type>uint32_t</type> <name>subpassCount</name></member>
@ -3585,11 +3585,21 @@ server.
<member><type>void</type>* <name>pNext</name></member>
<member><type>uint64_t</type> <name>drmFormatModifier</name></member>
</type>
<type category="struct" name="VkImageStencilUsageCreateInfoEXT" structextends="VkImageCreateInfo,VkPhysicalDeviceImageFormatInfo2">
<member values="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member><type>VkImageUsageFlags</type> <name>stencilUsage</name></member>
</type>
<type category="struct" name="VkDeviceMemoryOverallocationCreateInfoAMD" structextends="VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member><type>VkMemoryOverallocationBehaviorAMD</type> <name>overallocationBehavior</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceScalarBlockLayoutFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>scalarBlockLayout</name></member>
</type>
</types>
<comment>Vulkan enumerant (token) definitions</comment>
@ -7177,7 +7187,6 @@ server.
<type name="VkBaseOutStructure"/>
<type name="VkBaseInStructure"/>
<type name="VkVendorId"/>
<type name="VkRenderPassCreateFlagBits" comment="Workaround to get this included in the API even when it has no bits defined"/>
</require>
</feature>
<feature api="vulkan" name="VK_VERSION_1_1" number="1.1" comment="Vulkan 1.1 core API interface definitions.">
@ -7781,14 +7790,36 @@ server.
</extension>
<extension name="VK_AMD_extension_24" number="24" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
<require>
<enum value="0" name="VK_AMD_EXTENSION_24_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_extension_24&quot;" name="VK_AMD_EXTENSION_24_EXTENSION_NAME"/>
<enum value="0" name="VK_AMD_EXTENSION_24_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_extension_24&quot;" name="VK_AMD_EXTENSION_24_EXTENSION_NAME"/>
<enum bitpos="6" extends="VkQueueFlagBits" name="VK_QUEUE_RESERVED_6_BIT_KHR"/>
<enum bitpos="27" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_RESERVED_27_BIT_KHR"/>
<enum bitpos="30" extends="VkAccessFlagBits" name="VK_ACCESS_RESERVED_30_BIT_KHR"/>
<enum bitpos="31" extends="VkAccessFlagBits" name="VK_ACCESS_RESERVED_31_BIT_KHR"/>
<enum bitpos="14" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_RESERVED_14_BIT_KHR"/>
<enum bitpos="13" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_13_BIT_KHR"/>
<enum bitpos="14" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_14_BIT_KHR"/>
<enum bitpos="15" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_15_BIT_KHR"/>
<enum bitpos="27" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_RESERVED_27_BIT_KHR"/>
<enum bitpos="28" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_RESERVED_28_BIT_KHR"/>
<enum offset="8" extends="VkQueryType" name="VK_QUERY_TYPE_RESERVED_8"/>
</require>
</extension>
<extension name="VK_AMD_extension_25" number="25" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
<require>
<enum value="0" name="VK_AMD_EXTENSION_25_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_extension_25&quot;" name="VK_AMD_EXTENSION_25_EXTENSION_NAME"/>
<enum value="0" name="VK_AMD_EXTENSION_25_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_extension_25&quot;" name="VK_AMD_EXTENSION_25_EXTENSION_NAME"/>
<enum bitpos="5" extends="VkQueueFlagBits" name="VK_QUEUE_RESERVED_5_BIT_KHR"/>
<enum bitpos="26" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_RESERVED_26_BIT_KHR"/>
<enum bitpos="28" extends="VkAccessFlagBits" name="VK_ACCESS_RESERVED_28_BIT_KHR"/>
<enum bitpos="29" extends="VkAccessFlagBits" name="VK_ACCESS_RESERVED_29_BIT_KHR"/>
<enum bitpos="13" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_RESERVED_13_BIT_KHR"/>
<enum bitpos="10" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_10_BIT_KHR"/>
<enum bitpos="11" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_11_BIT_KHR"/>
<enum bitpos="12" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_12_BIT_KHR"/>
<enum bitpos="25" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_RESERVED_25_BIT_KHR"/>
<enum bitpos="26" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_RESERVED_26_BIT_KHR"/>
<enum offset="4" extends="VkQueryType" name="VK_QUERY_TYPE_RESERVED_4"/>
</require>
</extension>
<extension name="VK_AMD_gcn_shader" number="26" type="device" author="AMD" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan">
@ -9978,10 +10009,12 @@ server.
<enum bitpos="0" extends="VkRenderPassCreateFlagBits" name="VK_RENDER_PASS_CREATE_RESERVED_0_BIT_KHR"/>
</require>
</extension>
<extension name="VK_EXT_extension_222" number="222" author="EXT" contact="Tobias Hector @tobski" supported="disabled">
<extension name="VK_EXT_scalar_block_layout" number="222" requires="VK_KHR_get_physical_device_properties2" type="device" author="EXT" contact="Tobias Hector @tobski" supported="vulkan">
<require>
<enum value="0" name="VK_EXT_EXTENSION_222_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_222&quot;" name="VK_EXT_EXTENSION_222_EXTENSION_NAME"/>
<enum value="1" name="VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_scalar_block_layout&quot;" name="VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME"/>
<type name="VkPhysicalDeviceScalarBlockLayoutFeaturesEXT"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT"/>
</require>
</extension>
<extension name="VK_EXT_extension_223" number="223" author="EXT" contact="Tobias Hector @tobski" supported="disabled">
@ -10128,10 +10161,12 @@ server.
<enum value="&quot;VK_EXT_extension_246&quot;" name="VK_EXT_EXTENSION_246_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_247" number="247" author="EXT" contact="Daniel Rakos @drakos-amd" supported="disabled">
<extension name="VK_EXT_separate_stencil_usage" number="247" type="device" author="EXT" contact="Daniel Rakos @drakos-amd" supported="vulkan">
<require>
<enum value="0" name="VK_EXT_EXTENSION_247_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_247&quot;" name="VK_EXT_EXTENSION_247_EXTENSION_NAME"/>
<enum value="1" name="VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_separate_stencil_usage&quot;" name="VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT"/>
<type name="VkImageStencilUsageCreateInfoEXT"/>
</require>
</extension>
<extension name="VK_EXT_extension_248" number="248" author="EXT" contact="Karl Schultz @karlschultz" supported="disabled">