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:
parent
7422fe10e9
commit
256a1ef661
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
57
Makefile
57
Makefile
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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.
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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']
|
||||
--
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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']
|
||||
--
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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.
|
||||
--
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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
|
||||
****
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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']
|
||||
--
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
--
|
||||
|
|
|
@ -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[]
|
||||
****
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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']
|
||||
--
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
@ -1981,7 +1981,7 @@ The bias value [eq]#o# for a polygon is
|
|||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
o &= \mathrm{dbclamp}( m \times \mathtt{depthBiasSlopeFactor} + r \times \mathtt{depthBiasConstantFactor} ) \\
|
||||
\text{where} &\quad \mathrm{dbclamp}(x) =
|
||||
\text{where} &\quad \mathrm{dbclamp}(x) =
|
||||
\begin{cases}
|
||||
x & \mathtt{depthBiasClamp} = 0 \ \text{or}\ \texttt{NaN} \\
|
||||
\min(x, \mathtt{depthBiasClamp}) & \mathtt{depthBiasClamp} > 0 \\
|
||||
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
****
|
||||
|
|
|
@ -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
109
genRef.py
|
@ -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)
|
||||
|
|
22
genRelease
22
genRelease
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 2506
|
||||
startVUID = 2542
|
||||
|
|
|
@ -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"]
|
||||
|
|
|
@ -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')
|
||||
|
||||
|
|
65
xml/vk.xml
65
xml/vk.xml
|
@ -146,7 +146,7 @@ server.
|
|||
<type category="define">// Vulkan 1.1 version number
|
||||
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 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=""VK_AMD_extension_24"" name="VK_AMD_EXTENSION_24_EXTENSION_NAME"/>
|
||||
<enum value="0" name="VK_AMD_EXTENSION_24_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_extension_24"" 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=""VK_AMD_extension_25"" name="VK_AMD_EXTENSION_25_EXTENSION_NAME"/>
|
||||
<enum value="0" name="VK_AMD_EXTENSION_25_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_extension_25"" 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=""VK_EXT_extension_222"" name="VK_EXT_EXTENSION_222_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_scalar_block_layout"" 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=""VK_EXT_extension_246"" 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=""VK_EXT_extension_247"" name="VK_EXT_EXTENSION_247_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_separate_stencil_usage"" 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">
|
||||
|
|
Loading…
Reference in New Issue