From 256a1ef66182b2d458148f2fdea183557ea3f507 Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Sun, 18 Nov 2018 02:55:14 -0800 Subject: [PATCH] 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 <> 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 <> 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` --- .gitignore | 1 + .gitlab-ci.yml | 2 +- Makefile | 57 +++-- .../VK_AMD_shader_image_load_store_lod.txt | 6 +- appendices/VK_AMD_texture_gather_bias_lod.txt | 4 +- appendices/VK_EXT_scalar_block_layout.txt | 43 ++++ appendices/VK_EXT_separate_stencil_usage.txt | 42 ++++ appendices/VK_NV_ray_tracing.txt | 4 +- .../VK_NV_representative_fragment_test.txt | 19 +- appendices/spirvenv.txt | 32 ++- chapters/VK_AMD_shader_info.txt | 26 ++- chapters/VK_EXT_debug_report.txt | 2 +- chapters/VK_EXT_debug_utils.txt | 18 +- .../surface_capabilities.txt | 2 +- .../platformCreateSurface_android.txt | 9 + chapters/VK_KHR_display/display.txt | 2 +- chapters/VK_KHR_incremental_present/wsi.txt | 8 +- chapters/VK_KHR_surface/wsi.txt | 6 +- chapters/VK_KHR_swapchain/wsi.txt | 2 +- .../indirectcommands.txt | 2 +- .../objecttable.txt | 2 +- .../external_image_format.txt | 2 +- .../import_memory_win32.txt | 2 +- .../raytracing-resources.txt | 38 ++- chapters/VK_NV_ray_tracing/raytracing.txt | 12 +- .../keyed_mutex_submit.txt | 37 ++- chapters/clears.txt | 2 +- chapters/cmdbuffers.txt | 10 +- chapters/copies.txt | 59 +++-- chapters/descriptorsets.txt | 19 +- chapters/devsandqueues.txt | 6 +- chapters/drawing.txt | 17 +- chapters/features.txt | 209 ++++++++++------- chapters/fragops.txt | 14 +- chapters/framebuffer.txt | 4 +- chapters/fundamentals.txt | 31 ++- chapters/fxvertex.txt | 2 +- chapters/initialization.txt | 2 +- chapters/interfaces.txt | 62 ++++- chapters/memory.txt | 22 +- chapters/pipelines.txt | 12 +- chapters/primsrast.txt | 12 +- chapters/queries.txt | 8 +- chapters/renderpass.txt | 216 ++++++++++-------- chapters/resources.txt | 107 ++++++++- chapters/samplers.txt | 4 +- chapters/shaders.txt | 4 +- chapters/sparsemem.txt | 4 +- chapters/synchronization.txt | 16 +- chapters/tessellation.txt | 2 +- chapters/vertexpostproc.txt | 8 +- config/optimize-pdf | 16 +- genRef.py | 109 +++++---- genRelease | 22 +- include/vulkan/vulkan_core.h | 32 ++- reflow_count.py | 2 +- vkspec.txt | 5 +- xml/pygenerator.py | 45 +++- xml/vk.xml | 65 ++++-- 59 files changed, 1045 insertions(+), 483 deletions(-) create mode 100644 appendices/VK_EXT_scalar_block_layout.txt create mode 100644 appendices/VK_EXT_separate_stencil_usage.txt diff --git a/.gitignore b/.gitignore index b6a818e0..c417d3b3 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 10583b02..c912036b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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: diff --git a/Makefile b/Makefile index a9cf3fc8..5527201e 100644 --- a/Makefile +++ b/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 diff --git a/appendices/VK_AMD_shader_image_load_store_lod.txt b/appendices/VK_AMD_shader_image_load_store_lod.txt index b672eecb..9d3b8bb4 100644 --- a/appendices/VK_AMD_shader_image_load_store_lod.txt +++ b/appendices/VK_AMD_shader_image_load_store_lod.txt @@ -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 diff --git a/appendices/VK_AMD_texture_gather_bias_lod.txt b/appendices/VK_AMD_texture_gather_bias_lod.txt index 7753bcbb..55d51bc2 100644 --- a/appendices/VK_AMD_texture_gather_bias_lod.txt +++ b/appendices/VK_AMD_texture_gather_bias_lod.txt @@ -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 diff --git a/appendices/VK_EXT_scalar_block_layout.txt b/appendices/VK_EXT_scalar_block_layout.txt new file mode 100644 index 00000000..66f6e86d --- /dev/null +++ b/appendices/VK_EXT_scalar_block_layout.txt @@ -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 diff --git a/appendices/VK_EXT_separate_stencil_usage.txt b/appendices/VK_EXT_separate_stencil_usage.txt new file mode 100644 index 00000000..779f2839 --- /dev/null +++ b/appendices/VK_EXT_separate_stencil_usage.txt @@ -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. diff --git a/appendices/VK_NV_ray_tracing.txt b/appendices/VK_NV_ray_tracing.txt index b28a0d1e..b0dcc2f6 100644 --- a/appendices/VK_NV_ray_tracing.txt +++ b/appendices/VK_NV_ray_tracing.txt @@ -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 diff --git a/appendices/VK_NV_representative_fragment_test.txt b/appendices/VK_NV_representative_fragment_test.txt index f0c0df50..e6d863e9 100644 --- a/appendices/VK_NV_representative_fragment_test.txt +++ b/appendices/VK_NV_representative_fragment_test.txt @@ -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 diff --git a/appendices/spirvenv.txt b/appendices/spirvenv.txt index 347f9a39..c630d17f 100644 --- a/appendices/spirvenv.txt +++ b/appendices/spirvenv.txt @@ -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 + <> 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[] - ** <> + ** <> must: be enabled for 64-bit integer atomic operations to be supported - on buffers. - ** <> + 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*. + ** <> 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 diff --git a/chapters/VK_AMD_shader_info.txt b/chapters/VK_AMD_shader_info.txt index 0407001c..4511d215 100644 --- a/chapters/VK_AMD_shader_info.txt +++ b/chapters/VK_AMD_shader_info.txt @@ -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'] -- diff --git a/chapters/VK_EXT_debug_report.txt b/chapters/VK_EXT_debug_report.txt index 1ce494ce..bf559ddc 100644 --- a/chapters/VK_EXT_debug_report.txt +++ b/chapters/VK_EXT_debug_report.txt @@ -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[] diff --git a/chapters/VK_EXT_debug_utils.txt b/chapters/VK_EXT_debug_utils.txt index b999bc17..48add891 100644 --- a/chapters/VK_EXT_debug_utils.txt +++ b/chapters/VK_EXT_debug_utils.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'] -- diff --git a/chapters/VK_EXT_display_surface_counter/surface_capabilities.txt b/chapters/VK_EXT_display_surface_counter/surface_capabilities.txt index e118f617..dfb98d92 100644 --- a/chapters/VK_EXT_display_surface_counter/surface_capabilities.txt +++ b/chapters/VK_EXT_display_surface_counter/surface_capabilities.txt @@ -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[] diff --git a/chapters/VK_KHR_android_surface/platformCreateSurface_android.txt b/chapters/VK_KHR_android_surface/platformCreateSurface_android.txt index 96dc609e..a94424b7 100644 --- a/chapters/VK_KHR_android_surface/platformCreateSurface_android.txt +++ b/chapters/VK_KHR_android_surface/platformCreateSurface_android.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. +-- diff --git a/chapters/VK_KHR_display/display.txt b/chapters/VK_KHR_display/display.txt index 847ef10f..e4d52174 100644 --- a/chapters/VK_KHR_display/display.txt +++ b/chapters/VK_KHR_display/display.txt @@ -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[] diff --git a/chapters/VK_KHR_incremental_present/wsi.txt b/chapters/VK_KHR_incremental_present/wsi.txt index 8800d000..42be3a9d 100644 --- a/chapters/VK_KHR_incremental_present/wsi.txt +++ b/chapters/VK_KHR_incremental_present/wsi.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 **** diff --git a/chapters/VK_KHR_surface/wsi.txt b/chapters/VK_KHR_surface/wsi.txt index 80e432f2..0e332079 100644 --- a/chapters/VK_KHR_surface/wsi.txt +++ b/chapters/VK_KHR_surface/wsi.txt @@ -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[] diff --git a/chapters/VK_KHR_swapchain/wsi.txt b/chapters/VK_KHR_swapchain/wsi.txt index ce35e888..a4e3041f 100644 --- a/chapters/VK_KHR_swapchain/wsi.txt +++ b/chapters/VK_KHR_swapchain/wsi.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[] diff --git a/chapters/VK_NVX_device_generated_commands/indirectcommands.txt b/chapters/VK_NVX_device_generated_commands/indirectcommands.txt index bf3b3447..d3161932 100644 --- a/chapters/VK_NVX_device_generated_commands/indirectcommands.txt +++ b/chapters/VK_NVX_device_generated_commands/indirectcommands.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[] diff --git a/chapters/VK_NVX_device_generated_commands/objecttable.txt b/chapters/VK_NVX_device_generated_commands/objecttable.txt index 1646a2c6..ce3b5f8e 100644 --- a/chapters/VK_NVX_device_generated_commands/objecttable.txt +++ b/chapters/VK_NVX_device_generated_commands/objecttable.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[] diff --git a/chapters/VK_NV_external_memory_capabilities/external_image_format.txt b/chapters/VK_NV_external_memory_capabilities/external_image_format.txt index e0b84e7c..f8d53711 100644 --- a/chapters/VK_NV_external_memory_capabilities/external_image_format.txt +++ b/chapters/VK_NV_external_memory_capabilities/external_image_format.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[] diff --git a/chapters/VK_NV_external_memory_win32/import_memory_win32.txt b/chapters/VK_NV_external_memory_win32/import_memory_win32.txt index cba0e4e3..e4059128 100644 --- a/chapters/VK_NV_external_memory_win32/import_memory_win32.txt +++ b/chapters/VK_NV_external_memory_win32/import_memory_win32.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[] diff --git a/chapters/VK_NV_ray_tracing/raytracing-resources.txt b/chapters/VK_NV_ray_tracing/raytracing-resources.txt index a0abf5d3..c53e920a 100644 --- a/chapters/VK_NV_ray_tracing/raytracing-resources.txt +++ b/chapters/VK_NV_ray_tracing/raytracing-resources.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'] -- diff --git a/chapters/VK_NV_ray_tracing/raytracing.txt b/chapters/VK_NV_ray_tracing/raytracing.txt index 9d031526..0b5323e9 100644 --- a/chapters/VK_NV_ray_tracing/raytracing.txt +++ b/chapters/VK_NV_ray_tracing/raytracing.txt @@ -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 <> 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 diff --git a/chapters/VK_NV_win32_keyed_mutex/keyed_mutex_submit.txt b/chapters/VK_NV_win32_keyed_mutex/keyed_mutex_submit.txt index c73a6bb0..d77d8f10 100644 --- a/chapters/VK_NV_win32_keyed_mutex/keyed_mutex_submit.txt +++ b/chapters/VK_NV_win32_keyed_mutex/keyed_mutex_submit.txt @@ -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[] -- diff --git a/chapters/clears.txt b/chapters/clears.txt index f2af48e5..58d4a2d8 100644 --- a/chapters/clears.txt +++ b/chapters/clears.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[] **** diff --git a/chapters/cmdbuffers.txt b/chapters/cmdbuffers.txt index 8470317d..de988e18 100644 --- a/chapters/cmdbuffers.txt +++ b/chapters/cmdbuffers.txt @@ -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[] diff --git a/chapters/copies.txt b/chapters/copies.txt index 8d59c6fe..2651b1a0 100644 --- a/chapters/copies.txt +++ b/chapters/copies.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 - <>: - :: [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 + <>: + :: [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 <>, with the filter mode equal to that diff --git a/chapters/descriptorsets.txt b/chapters/descriptorsets.txt index 6af3b4b9..e374551b 100644 --- a/chapters/descriptorsets.txt +++ b/chapters/descriptorsets.txt @@ -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[] diff --git a/chapters/devsandqueues.txt b/chapters/devsandqueues.txt index 179370d3..0791aecb 100644 --- a/chapters/devsandqueues.txt +++ b/chapters/devsandqueues.txt @@ -654,7 +654,7 @@ For further details see <>. -- -[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[] diff --git a/chapters/drawing.txt b/chapters/drawing.txt index 60d82711..bd984674 100644 --- a/chapters/drawing.txt +++ b/chapters/drawing.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'] -- diff --git a/chapters/features.txt b/chapters/features.txt index 2428c08a..0648ee70 100644 --- a/chapters/features.txt +++ b/chapters/features.txt @@ -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 - <>. - 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 + <>. + 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 <>. + +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[] `<>` and `<>` extensions are both supported. endif::VK_EXT_inline_uniform_block[] +ifdef::VK_EXT_scalar_block_layout[] + * If the `<>` extension is supported: + ** <> +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[] diff --git a/chapters/fragops.txt b/chapters/fragops.txt index efcba884..28f56d7c 100644 --- a/chapters/fragops.txt +++ b/chapters/fragops.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[] diff --git a/chapters/framebuffer.txt b/chapters/framebuffer.txt index f63a51b0..844c3e88 100644 --- a/chapters/framebuffer.txt +++ b/chapters/framebuffer.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[] diff --git a/chapters/fundamentals.txt b/chapters/fundamentals.txt index 079045ae..10376d46 100644 --- a/chapters/fundamentals.txt +++ b/chapters/fundamentals.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 diff --git a/chapters/fxvertex.txt b/chapters/fxvertex.txt index 773bedc3..3a296051 100644 --- a/chapters/fxvertex.txt +++ b/chapters/fxvertex.txt @@ -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[] diff --git a/chapters/initialization.txt b/chapters/initialization.txt index bbdcd364..24e059fa 100644 --- a/chapters/initialization.txt +++ b/chapters/initialization.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[] diff --git a/chapters/interfaces.txt b/chapters/interfaces.txt index 94ba8d9e..0a56c38a 100755 --- a/chapters/interfaces.txt +++ b/chapters/interfaces.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 <> +feature is enabled, then the layout of blocks in these storage classes must: +adhere to the <> +requirements below. +If the feature is not enabled, they must adhere to the stricter +<>. + +[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 diff --git a/chapters/memory.txt b/chapters/memory.txt index f987a762..c258459d 100644 --- a/chapters/memory.txt +++ b/chapters/memory.txt @@ -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[] diff --git a/chapters/pipelines.txt b/chapters/pipelines.txt index b8cdaa5c..c0086d8c 100644 --- a/chapters/pipelines.txt +++ b/chapters/pipelines.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 `<>` 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[] diff --git a/chapters/primsrast.txt b/chapters/primsrast.txt index 573c54ce..4c351f2b 100644 --- a/chapters/primsrast.txt +++ b/chapters/primsrast.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[] diff --git a/chapters/queries.txt b/chapters/queries.txt index b41dcb22..ae3a4de8 100644 --- a/chapters/queries.txt +++ b/chapters/queries.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[] diff --git a/chapters/renderpass.txt b/chapters/renderpass.txt index 68bd895a..e7c3e4a7 100644 --- a/chapters/renderpass.txt +++ b/chapters/renderpass.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 <> - 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 <> - 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: <>, 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 <>, 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 <> 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[] diff --git a/chapters/resources.txt b/chapters/resources.txt index 6f2e1610..eca15440 100644 --- a/chapters/resources.txt +++ b/chapters/resources.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 <> 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[] diff --git a/chapters/samplers.txt b/chapters/samplers.txt index 56bf233a..5baab622 100644 --- a/chapters/samplers.txt +++ b/chapters/samplers.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 diff --git a/chapters/shaders.txt b/chapters/shaders.txt index ab54ba9f..4afffd22 100644 --- a/chapters/shaders.txt +++ b/chapters/shaders.txt @@ -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[] diff --git a/chapters/sparsemem.txt b/chapters/sparsemem.txt index 4d04ddf1..c1d6c15d 100644 --- a/chapters/sparsemem.txt +++ b/chapters/sparsemem.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[] diff --git a/chapters/synchronization.txt b/chapters/synchronization.txt index ffecb0d3..a5ce80f6 100644 --- a/chapters/synchronization.txt +++ b/chapters/synchronization.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[] diff --git a/chapters/tessellation.txt b/chapters/tessellation.txt index 4504e11e..2d5aa98d 100644 --- a/chapters/tessellation.txt +++ b/chapters/tessellation.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[] diff --git a/chapters/vertexpostproc.txt b/chapters/vertexpostproc.txt index b0221a61..b6260034 100644 --- a/chapters/vertexpostproc.txt +++ b/chapters/vertexpostproc.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[] **** diff --git a/config/optimize-pdf b/config/optimize-pdf index efbc3439..bf305316 100755 --- a/config/optimize-pdf +++ b/config/optimize-pdf @@ -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 \ No newline at end of file +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 diff --git a/genRef.py b/genRef.py index b7136793..1beb3df2 100755 --- a/genRef.py +++ b/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) diff --git a/genRelease b/genRelease index 1d70a3f7..97c5a52e 100755 --- a/genRelease +++ b/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: diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h index 61f65c8b..35c06649 100644 --- a/include/vulkan/vulkan_core.h +++ b/include/vulkan/vulkan_core.h @@ -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 diff --git a/reflow_count.py b/reflow_count.py index b35cb7a4..447fc11a 100644 --- a/reflow_count.py +++ b/reflow_count.py @@ -1,2 +1,2 @@ # The value to start tagging VU statements at, unless overridden by -nextvu -startVUID = 2506 +startVUID = 2542 diff --git a/vkspec.txt b/vkspec.txt index 5f86fdb5..8a3f6575 100644 --- a/vkspec.txt +++ b/vkspec.txt @@ -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"] diff --git a/xml/pygenerator.py b/xml/pygenerator.py index 31b02968..c603503f 100644 --- a/xml/pygenerator.py +++ b/xml/pygenerator.py @@ -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') diff --git a/xml/vk.xml b/xml/vk.xml index 439cab48..6cfa256d 100644 --- a/xml/vk.xml +++ b/xml/vk.xml @@ -146,7 +146,7 @@ server. // Vulkan 1.1 version number #define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 92 +#define VK_HEADER_VERSION 93 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -1253,7 +1253,7 @@ server. VkFramebuffer framebuffer VkRect2D renderArea uint32_t clearValueCount - const VkClearValue* pClearValues + const VkClearValue* pClearValues float float32[4] @@ -1312,7 +1312,7 @@ server. VkStructureType sType const void* pNext - VkRenderPassCreateFlags flags + VkRenderPassCreateFlags flags uint32_t attachmentCount const VkAttachmentDescription* pAttachments uint32_t subpassCount @@ -3170,7 +3170,7 @@ server. VkStructureType sType const void* pNext - VkRenderPassCreateFlags flags + VkRenderPassCreateFlags flags uint32_t attachmentCount const VkAttachmentDescription2KHR* pAttachments uint32_t subpassCount @@ -3585,11 +3585,21 @@ server. void* pNext uint64_t drmFormatModifier + + VkStructureType sType + const void* pNext + VkImageUsageFlags stencilUsage + VkStructureType sType const void* pNext VkMemoryOverallocationBehaviorAMD overallocationBehavior + + VkStructureType sType + void* pNext + VkBool32 scalarBlockLayout + Vulkan enumerant (token) definitions @@ -7177,7 +7187,6 @@ server. - @@ -7781,14 +7790,36 @@ server. - - + + + + + + + + + + + + + - - + + + + + + + + + + + + + @@ -9978,10 +10009,12 @@ server. - + - - + + + + @@ -10128,10 +10161,12 @@ server. - + - - + + + +