summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Leech <oddhack@sonic.net>2023-10-06 05:35:03 -0700
committerJon Leech <oddhack@sonic.net>2023-10-06 05:35:03 -0700
commit66b95bd350a014c7a4dcdcd309206b571750deb3 (patch)
tree045324caa45dd8b48785df52496cfc214710149e
parente5dbdd580cf0696db8ed0aeb0736e0f512d9bbe1 (diff)
downloadgfxstream-protocols-66b95bd350a014c7a4dcdcd309206b571750deb3.tar.gz
Change log for October 6, 2023 Vulkan 1.3.267 spec update:
Internal Issues * Detect old wording of boilerplate pname:pNext description in CI (internal issue 2186). * Clarify ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT with regard to queue submission (internal issue 3627). * Update apiext:VK_NV_low_latency2 pname:pInfo pointers to be `const` (internal issue 3637). * Add slink:VkDescriptorSetLayoutBindingFlagsCreateInfo and slink:VkDescriptorSetAllocateInfo VUs for ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT (internal MR 6127). * Consolidate VUs in `access_mask_2_common.adoc` (internal MR 6166). * Fix slink:VkGraphicsPipelineCreateInfo::pname:pColorBlendState->attachmentCount VU to apply only when the blend state is not dynamic (internal MR 6171). * Add missing object types to the <<debugging-object-types, VkObjectType and Vulkan Handle Relationship>> table (internal MR 6175). * Fix typo ("`Non-private`" -> "`Private`") in the description of <<memory-model-non-private, private memory operations obeying program order>> (internal MR 6176). * Add reflow test for list continuation in VUs (internal MR 6177). * Correct type of flink:vkQueueNotifyOutOfBandNV::pname:pQueueTypeInfo (internal MR 6179). * Add XML `len` attribute for slink:VkFrameBoundaryEXT::pname:pTag order>> (internal MR 6180). * Consolidate VUs for apiext:VK_ANDROID_external_format_resolve (internal MR 6183). * Upstream Vulkan SC 1.0.13 changes to this repository (internal vulkansc issue 179). New Extensions * apiext:VK_EXT_nested_command_buffer * apiext:VK_NV_extended_sparse_address_space
-rw-r--r--ChangeLog.adoc41
-rw-r--r--ChangeLogSC.adoc41
-rw-r--r--Makefile7
-rw-r--r--appendices/VK_EXT_nested_command_buffer.adoc45
-rw-r--r--appendices/VK_NV_extended_sparse_address_space.adoc33
-rw-r--r--appendices/VK_QCOM_image_processing2.adoc2
-rw-r--r--appendices/glossary.adoc15
-rw-r--r--appendices/memorymodel.adoc2
-rw-r--r--chapters/VK_KHR_object_refresh/copies.adoc3
-rw-r--r--chapters/clears.adoc2
-rw-r--r--chapters/cmdbuffers.adoc94
-rw-r--r--chapters/commonvalidity/access_mask_2_common.adoc33
-rw-r--r--chapters/debugging.adoc31
-rw-r--r--chapters/descriptorsets.adoc14
-rw-r--r--chapters/features.adoc67
-rw-r--r--chapters/limits.adoc85
-rw-r--r--chapters/pipelines.adoc106
-rw-r--r--chapters/renderpass.adoc91
-rw-r--r--chapters/resources.adoc110
-rw-r--r--config/CI/writing1
-rw-r--r--scripts/reflow-tests/expect-nested-lists-in-vu-default.adoc22
-rw-r--r--scripts/reflow-tests/expect-nested-lists-in-vu-noreflow-novuid.adoc18
-rw-r--r--scripts/reflow-tests/expect-nested-lists-in-vu-noreflow.adoc19
-rw-r--r--scripts/reflow-tests/expect-nested-lists-in-vu-novuid.adoc21
-rw-r--r--scripts/reflow-tests/src-nested-lists-in-vu.adoc18
-rw-r--r--scripts/test_reflow.py9
-rw-r--r--style/extensions.adoc10
-rw-r--r--style/revisions.adoc3
-rw-r--r--xml/vk.xml75
29 files changed, 816 insertions, 202 deletions
diff --git a/ChangeLog.adoc b/ChangeLog.adoc
index 33a6f513..7f5ea1b7 100644
--- a/ChangeLog.adoc
+++ b/ChangeLog.adoc
@@ -14,6 +14,47 @@ appears frequently in the change log.
-----------------------------------------------------
+Change log for October 6, 2023 Vulkan 1.3.267 spec update:
+
+Internal Issues
+
+ * Detect old wording of boilerplate pname:pNext description in CI
+ (internal issue 2186).
+ * Clarify ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT with regard
+ to queue submission (internal issue 3627).
+ * Update apiext:VK_NV_low_latency2 pname:pInfo pointers to be `const`
+ (internal issue 3637).
+ * Add slink:VkDescriptorSetLayoutBindingFlagsCreateInfo and
+ slink:VkDescriptorSetAllocateInfo VUs for
+ ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT (internal MR
+ 6127).
+ * Consolidate VUs in `access_mask_2_common.adoc` (internal MR 6166).
+ * Fix
+ slink:VkGraphicsPipelineCreateInfo::pname:pColorBlendState->attachmentCount
+ VU to apply only when the blend state is not dynamic (internal MR 6171).
+ * Add missing object types to the <<debugging-object-types, VkObjectType
+ and Vulkan Handle Relationship>> table (internal MR 6175).
+ * Fix typo ("`Non-private`" -> "`Private`") in the description of
+ <<memory-model-non-private, private memory operations obeying program
+ order>> (internal MR 6176).
+ * Add reflow test for list continuation in VUs (internal MR 6177).
+ * Correct type of flink:vkQueueNotifyOutOfBandNV::pname:pQueueTypeInfo
+ (internal MR 6179).
+ * Add XML `len` attribute for slink:VkFrameBoundaryEXT::pname:pTag order>>
+ (internal MR 6180).
+ * Consolidate VUs for apiext:VK_ANDROID_external_format_resolve (internal
+ MR 6183).
+ * Upstream Vulkan SC 1.0.13 changes to this repository (internal vulkansc
+ issue 179).
+
+New Extensions
+
+ * apiext:VK_EXT_nested_command_buffer
+ * apiext:VK_NV_extended_sparse_address_space
+
+
+-----------------------------------------------------
+
Change log for September 29, 2023 Vulkan 1.3.266 spec update:
Github Issues
diff --git a/ChangeLogSC.adoc b/ChangeLogSC.adoc
index b3e41f18..860f62c8 100644
--- a/ChangeLogSC.adoc
+++ b/ChangeLogSC.adoc
@@ -12,6 +12,47 @@ with any public pull requests that have been accepted.
-----------------------------------------------------
+Change log for September 27, 2023 Vulkan SC 1.0.13 spec update:
+
+ * update release number to 13 for this update
+
+Public issues:
+
+ * None
+
+Internal issues:
+
+ * Merge fixes from sc_1_0 branch (!340,!344)
+ * Fix structextends for structures based on
+ VkDeviceObjectReservationCreateInfo (!330)
+ * Fix VUID 05152 typo (!333)
+ * Fix multiple JSON parser and schema issues (!331)
+ * Fix cast-qual warning in vulkan_json_parser.hpp (!335)
+ * Make VkFaultCallbackInfo pNext pointer-to-const (!342)
+ * Clarify vkEndCommandBuffer error behavior (#184/!346)
+
+ * Merge Vulkan main branch into sc_main (#168/!310)
+ * Merge the 1.3.235 - 1.3.240 Vulkan changes to sc_main (!332)
+ * Remove superfluous lines from the XML that are causing problems with
+ the Hpp build (!334)
+ * merge VK 1.3.243 to sc_main (!336)
+ * Merge 1.3.245 sources to sc_main (!341)
+ * Add combined registry tooling (!343)
+ * Pipeline cache data related VU changes (!345)
+ * Merge VK 1.3.252 to sc_main branch (!347)
+ * Fix handling of queue types with dependencies when generating
+ spec tables/VUs/etc. from them (!348)
+ * Merge VK 1.3.257 to sc_main (from 1.3.252) (!351)
+ * Address remaining layers/levels issues (#193/!350)
+ * Remove explicit VUs that are duplicate with implicit VUs (#192/!349)
+ * Disable `check-xrefs` by default for VKSC builds (!353)
+
+New Extensions:
+
+ * apiext:VK_QNX_external_memory_screen_buffer (Vulkan public issue #2138)
+
+-----------------------------------------------------
+
Change log for January 20, 2023 Vulkan SC 1.0.12 spec update:
* update release number to 12 for this update
diff --git a/Makefile b/Makefile
index 3ebe0ac4..a525da90 100644
--- a/Makefile
+++ b/Makefile
@@ -69,6 +69,9 @@ allman: manhtmlpages
# Invokes all the automated checks, but CHECK_XREFS can be set to empty
# on the command line to avoid building an HTML spec target.
CHECK_XREFS = check-xrefs
+ifeq ($(VULKAN_API),vulkansc)
+CHECK_XREFS =
+endif
allchecks: check-copyright-dates \
check-contractions \
check-spelling \
@@ -126,12 +129,12 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
-PATCHVERSION = 266
+PATCHVERSION = 267
BASEOPTS =
ifneq (,$(findstring VKSC_VERSION_1_0,$(VERSIONS)))
VKSPECREVISION := 1.2.$(PATCHVERSION)
-SCPATCHVERSION = 12
+SCPATCHVERSION = 13
SPECREVISION = 1.0.$(SCPATCHVERSION)
BASEOPTS = -a baserevnumber="$(VKSPECREVISION)"
else
diff --git a/appendices/VK_EXT_nested_command_buffer.adoc b/appendices/VK_EXT_nested_command_buffer.adoc
new file mode 100644
index 00000000..f8aebe83
--- /dev/null
+++ b/appendices/VK_EXT_nested_command_buffer.adoc
@@ -0,0 +1,45 @@
+// Copyright 2023 The Khronos Group, Inc
+//
+// SPDX-License-Identifier: CC-BY-4.0
+
+include::{generated}/meta/{refprefix}VK_EXT_nested_command_buffer.adoc[]
+
+=== Other Extension Metadata
+
+*Last Modified Date*::
+ 2023-09-18
+*Contributors*::
+ - Daniel Story, Nintendo
+ - Peter Kohaut, NVIDIA
+ - Shahbaz Youssefi, Google
+ - Slawomir Grajewski, Intel
+ - Stu Smith, AMD
+
+=== Description
+
+With core Vulkan it is not legal to call flink:vkCmdExecuteCommands when
+recording a secondary command buffer.
+This extension relaxes that restriction, allowing secondary command buffers
+to execute other secondary command buffers.
+
+include::{generated}/interfaces/VK_EXT_nested_command_buffer.adoc[]
+
+=== Issues
+
+1) The Command Buffer Levels property for the Vulkan commands comes from the
+`cmdbufferlevel` attribute in `vk.xml` for the command, and it is currently
+not possible to modify this attribute based on whether an extension is
+enabled.
+For this extension we want the `cmdbufferlevel` attribute for
+vkCmdExecuteCommands to be `primary,secondary` when this extension is
+enabled and `primary` otherwise.
+
+*RESOLVED*: The `cmdbufferlevel` attribute for flink:vkCmdExecuteCommands
+has been changed to `primary,secondary` and a new VUID added to prohibit
+recording this command in a secondary command buffer unless this extension
+is enabled.
+
+=== Version History
+
+ * Revision 1, 2023-09-18 (Piers Daniell)
+ ** Internal revisions
diff --git a/appendices/VK_NV_extended_sparse_address_space.adoc b/appendices/VK_NV_extended_sparse_address_space.adoc
new file mode 100644
index 00000000..e4844d69
--- /dev/null
+++ b/appendices/VK_NV_extended_sparse_address_space.adoc
@@ -0,0 +1,33 @@
+// Copyright (c) 2023 NVIDIA Corporation
+//
+// SPDX-License-Identifier: CC-BY-4.0
+
+include::{generated}/meta/{refprefix}VK_NV_extended_sparse_address_space.adoc[]
+
+=== Other Extension Metadata
+
+*Last Modified Date*::
+ 2023-10-03
+*Contributors*::
+ - Russell Chou, NVIDIA
+ - Christoph Kubisch, NVIDIA
+ - Eric Werness, NVIDIA
+ - Jeff Bolz, NVIDIA
+
+=== Description
+
+Implementations may be able to support an extended address space for sparse
+memory resources, but only for a certain set of usages.
+
+This extension adds a query for the extended limit, and the supported usages
+that are allowed for that limit.
+This limit is an increase to
+slink:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize when the
+slink:VkImage or slink:VkBuffer uses only usages that are supported.
+
+include::{generated}/interfaces/VK_NV_extended_sparse_address_space.adoc[]
+
+=== Version History
+
+ * Revision 1, 2023-10-03 (Russell Chou)
+ ** Initial draft
diff --git a/appendices/VK_QCOM_image_processing2.adoc b/appendices/VK_QCOM_image_processing2.adoc
index 94f89393..e23beaf4 100644
--- a/appendices/VK_QCOM_image_processing2.adoc
+++ b/appendices/VK_QCOM_image_processing2.adoc
@@ -10,7 +10,7 @@ include::{generated}/meta/{refprefix}VK_QCOM_image_processing2.adoc[]
2023-03-10
*Interactions and External Dependencies*::
- This extension requires
- {spirv}/QCOM/SPV_QCOM_image_processing.html[`SPV_QCOM_image_processing2`]
+ {spirv}/QCOM/SPV_QCOM_image_processing2.html[`SPV_QCOM_image_processing2`]
- This extension provides API support for
{GLSLregistry}/qcom/GLSL_QCOM_image_processing2.txt[`GL_QCOM_image_processing2`]
diff --git a/appendices/glossary.adoc b/appendices/glossary.adoc
index 5dade3fc..15c1bce7 100644
--- a/appendices/glossary.adoc
+++ b/appendices/glossary.adoc
@@ -233,6 +233,14 @@ Command Buffer::
An object that records commands to be submitted to a queue.
Represented by a slink:VkCommandBuffer object.
+ifdef::VK_EXT_nested_command_buffer[]
+Command Buffer Nesting Level::
+ The Command Buffer Nesting Level of a secondary command buffer is equal
+ to the maximum nesting level of all secondary command buffers executed
+ by that command buffer plus one, where a secondary command buffer that
+ executes no other secondary command buffers has a nesting level of zero.
+endif::VK_EXT_nested_command_buffer[]
+
Command Pool::
An object that command buffer memory is allocated from, and that owns
that memory.
@@ -1162,6 +1170,13 @@ Multi-planar::
multi-planar format.
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_EXT_nested_command_buffer[]
+Nested Command Buffers::
+ A nested command buffer is a secondary command buffer that is executed
+ by another secondary command buffer, which may itself execute other
+ secondary command buffers.
+endif::VK_EXT_nested_command_buffer[]
+
Non-Dispatchable Handle::
A handle of an integer handle type.
Handle values may: not be unique, even for two objects of the same type.
diff --git a/appendices/memorymodel.adoc b/appendices/memorymodel.adoc
index d537c92e..6666fa32 100644
--- a/appendices/memorymodel.adoc
+++ b/appendices/memorymodel.adoc
@@ -591,7 +591,7 @@ More precisely, for private memory operations to be
<<memory-model-location-ordered,Location-Ordered>> between distinct agents
requires using system-synchronizes-with rather than shader-based
synchronization.
-Non-private memory operations still obey program-order.
+Private memory operations still obey program-order.
Atomic operations are always considered non-private.
diff --git a/chapters/VK_KHR_object_refresh/copies.adoc b/chapters/VK_KHR_object_refresh/copies.adoc
index 26b19e30..d2d538a8 100644
--- a/chapters/VK_KHR_object_refresh/copies.adoc
+++ b/chapters/VK_KHR_object_refresh/copies.adoc
@@ -57,7 +57,8 @@ The sname:VkRefreshObjectListKHR structure is defined as:
include::{generated}/api/structs/VkRefreshObjectListKHR.adoc[]
* pname:sType is a elink:VkStructureType value identifying this structure.
- * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:pNext is `NULL` or a pointer to a structure extending this
+ structure.
* pname:objectCount is the number of objects to refresh.
* pname:pObjects is a pointer to an array of slink:VkRefreshObjectKHR
structures, defining the objects to refresh.
diff --git a/chapters/clears.adoc b/chapters/clears.adoc
index 80aa04ec..904b60a9 100644
--- a/chapters/clears.adoc
+++ b/chapters/clears.adoc
@@ -364,7 +364,7 @@ ifdef::VK_ANDROID_external_format_resolve[]
* [[VUID-vkCmdClearAttachments-aspectMask-09298]]
If the subpass this is recorded in performs an external format resolve,
the pname:aspectMask member of any element of pname:pAttachments must:
- not include `VK_IMAGE_ASPECT_PLANE__{ibit}__BIT_EXT` for any index _i_
+ not include `VK_IMAGE_ASPECT_PLANE__{ibit}__BIT` for any index _i_
endif::VK_ANDROID_external_format_resolve[]
****
diff --git a/chapters/cmdbuffers.adoc b/chapters/cmdbuffers.adoc
index 6b098761..56ac1256 100644
--- a/chapters/cmdbuffers.adoc
+++ b/chapters/cmdbuffers.adoc
@@ -529,11 +529,6 @@ into it, becomes <<commandbuffers-lifecycle, invalid>>.
* [[VUID-vkResetCommandPool-commandPool-00040]]
All sname:VkCommandBuffer objects allocated from pname:commandPool must:
not be in the <<commandbuffers-lifecycle, pending state>>
-ifdef::VKSC_VERSION_1_0[]
- * [[VUID-vkResetCommandPool-flags-05005]]
- pname:flags must: not contain
- ename:VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
-endif::VKSC_VERSION_1_0[]
****
include::{generated}/validity/protos/vkResetCommandPool.adoc[]
@@ -1056,8 +1051,9 @@ include::{generated}/api/enums/VkCommandBufferUsageFlagBits.adoc[]
pass.
If this is a primary command buffer, then this bit is ignored.
* ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT specifies that a
- command buffer can: be resubmitted to a queue while it is in the
- _pending state_, and recorded into multiple primary command buffers.
+ command buffer can: be resubmitted to any queue of the same queue family
+ while it is in the _pending state_, and recorded into multiple primary
+ command buffers.
--
[open,refpage='VkCommandBufferUsageFlags',desc='Bitmask of VkCommandBufferUsageFlagBits',type='flags']
@@ -2771,6 +2767,12 @@ into any other primary command buffer which is currently in the
<<commandbuffers-lifecycle, executable or recording state>>, that primary
command buffer becomes <<commandbuffers-lifecycle, invalid>>.
+ifdef::VK_EXT_nested_command_buffer[]
+If the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>> feature
+is enabled it is valid usage for fname:vkCmdExecuteCommands to also be
+recorded to a <<glossary, secondary command buffer>>.
+endif::VK_EXT_nested_command_buffer[]
+
.Valid Usage
****
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00088]]
@@ -2810,6 +2812,7 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
instance begun with flink:vkCmdBeginRenderPass, its pname:contents
parameter must: have been set to
ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
+ifdef::VK_EXT_nested_command_buffer[, or ename:VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT]
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-06019]]
If fname:vkCmdExecuteCommands is being called within a render pass
instance begun with flink:vkCmdBeginRenderPass, each element of
@@ -3154,11 +3157,88 @@ ifdef::VK_ANDROID_external_format_resolve[]
must: be ename:VK_SAMPLE_COUNT_1_BIT
endif::VK_ANDROID_external_format_resolve[]
endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
+ * pname:commandBuffer must: not be a <<glossary, secondary command
+ buffer>>
+ifdef::VK_EXT_nested_command_buffer[]
+ unless the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>>
+ feature is enabled
+ * If the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>>
+ feature is enabled, the <<glossary, command buffer nesting level>> of
+ each element of pname:pCommandBuffers must: be less than
+ <<limits-maxCommandBufferNestingLevel,
+ pname:maxCommandBufferNestingLevel>>
+ * If the <<features-nestedCommandBufferRendering,
+ pname:nestedCommandBufferRendering>> feature is not enabled, and
+ pname:commandBuffer is a <<glossary, secondary command buffer>>,
+ pname:commandBuffer must: not have been recorded with
+ ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
+ * If the <<features-nestedCommandBufferSimultaneousUse,
+ pname:nestedCommandBufferSimultaneousUse>> feature is not enabled, and
+ pname:commandBuffer is a <<glossary, secondary command buffer>>, each
+ element of pname:pCommandBuffers must: not have been recorded with
+ ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
+endif::VK_EXT_nested_command_buffer[]
****
include::{generated}/validity/protos/vkCmdExecuteCommands.adoc[]
--
+ifdef::VK_EXT_nested_command_buffer[]
+[[commandbuffers-nested]]
+== Nested Command Buffers
+
+In addition to secondary command buffer execution from primary command
+buffers, an implementation may: support <<glossary, nested command
+buffers>>, which enable secondary command buffers to be executed from other
+secondary command buffers.
+If the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>> feature
+is enabled, the implementation supports <<glossary, nested command
+buffers>>.
+
+Nested command buffer execution works the same as primary-to-secondary
+execution, except that it is subject to some additional
+implementation-defined limits.
+
+Each secondary command buffer has a <<glossary, command buffer nesting
+level>>, which is determined at flink:vkEndCommandBuffer time and evaluated
+at flink:vkCmdExecuteCommands time.
+A secondary command buffer that executes no other secondary command buffers
+has a <<glossary, command buffer nesting level>> of zero.
+Otherwise, the <<glossary, command buffer nesting level>> of a secondary
+command buffer is equal to the maximum nesting level of all secondary
+command buffers executed by that command buffer plus one.
+Some implementations may: have a limit on the maximum nesting level of
+secondary command buffers that can: be recorded.
+This limit is advertised in <<limits-maxCommandBufferNestingLevel,
+pname:maxCommandBufferNestingLevel>>.
+
+If the <<features-nestedCommandBufferRendering,
+pname:nestedCommandBufferRendering>> feature is enabled, the implementation
+supports calling flink:vkCmdExecuteCommands inside secondary command buffers
+recorded with ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT.
+If the <<features-nestedCommandBufferSimultaneousUse,
+pname:nestedCommandBufferSimultaneousUse>> feature is enabled, the
+implementation supports calling flink:vkCmdExecuteCommands with secondary
+command buffers recorded with
+ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT.
+
+Whenever flink:vkCmdExecuteCommands is recorded inside a secondary command
+buffer recorded with ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
+each member of pname:pCommandBuffers must: have been recorded with a
+slink:VkCommandBufferBeginInfo with slink:VkCommandBufferInheritanceInfo
+compatible with the slink:VkCommandBufferInheritanceInfo of the command
+buffer into which the flink:vkCmdExecuteCommands call is being recorded.
+The slink:VkCommandBufferInheritanceRenderingInfo structures are compatible
+when the sname:VkCommandBufferInheritanceRenderingInfo::pname:renderpass are
+<<renderpass-compatibility, compatible>>, or if they are
+dlink:VK_NULL_HANDLE then the slink:VkCommandBufferInheritanceRenderingInfo
+members match, and all other members of
+sname:VkCommandBufferInheritanceRenderingInfo match.
+This requirement applies recursively, down to the most nested command buffer
+and up to the command buffer where the render pass was originally begun.
+
+endif::VK_EXT_nested_command_buffer[]
+
ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
[[commandbuffers-devicemask]]
== Command Buffer Device Mask
diff --git a/chapters/commonvalidity/access_mask_2_common.adoc b/chapters/commonvalidity/access_mask_2_common.adoc
index c90b98aa..6c99a3cc 100644
--- a/chapters/commonvalidity/access_mask_2_common.adoc
+++ b/chapters/commonvalidity/access_mask_2_common.adoc
@@ -9,7 +9,9 @@
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT, pname:{stageMaskName} must:
include ename:VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT,
+ifdef::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
+endif::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
* [[VUID-{refpage}-{accessMaskName}-03901]]
@@ -57,25 +59,18 @@
include ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT,
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
-ifdef::VK_EXT_opacity_micromap[]
* [[VUID-{refpage}-{accessMaskName}-07454]]
If pname:{accessMaskName} includes ename:VK_ACCESS_2_SHADER_READ_BIT,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT,
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT,
+ifdef::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
- ename:VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT, or one of the
- etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
-endif::VK_EXT_opacity_micromap[]
-ifndef::VK_EXT_opacity_micromap[]
- * [[VUID-{refpage}-{accessMaskName}-03908]]
- If pname:{accessMaskName} includes ename:VK_ACCESS_2_SHADER_READ_BIT,
- pname:{stageMaskName} must: include
- ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT,
- ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT,
- ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or one
- of the etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
+endif::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
+ifdef::VK_EXT_opacity_micromap[]
+ ename:VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT,
endif::VK_EXT_opacity_micromap[]
+ or one of the etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
* [[VUID-{refpage}-{accessMaskName}-03909]]
If pname:{accessMaskName} includes ename:VK_ACCESS_2_SHADER_WRITE_BIT,
pname:{stageMaskName} must: include
@@ -116,9 +111,13 @@ endif::VK_EXT_opacity_micromap[]
ename:VK_PIPELINE_STAGE_2_BLIT_BIT,
ename:VK_PIPELINE_STAGE_2_RESOLVE_BIT,
ename:VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT,
+ifdef::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
- ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or
- ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+endif::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
+ifdef::VK_KHR_ray_tracing_maintenance1[]
+ ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,
+endif::VK_KHR_ray_tracing_maintenance1[]
+ or ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
* [[VUID-{refpage}-{accessMaskName}-03915]]
If pname:{accessMaskName} includes ename:VK_ACCESS_2_TRANSFER_WRITE_BIT,
pname:{stageMaskName} must: include ename:VK_PIPELINE_STAGE_2_COPY_BIT,
@@ -126,8 +125,12 @@ endif::VK_EXT_opacity_micromap[]
ename:VK_PIPELINE_STAGE_2_RESOLVE_BIT,
ename:VK_PIPELINE_STAGE_2_CLEAR_BIT,
ename:VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT,
+ifdef::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
- ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or
+endif::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
+ifdef::VK_KHR_ray_tracing_maintenance1[]
+ or ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,
+endif::VK_KHR_ray_tracing_maintenance1[]
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
* [[VUID-{refpage}-{accessMaskName}-03916]]
If pname:{accessMaskName} includes ename:VK_ACCESS_2_HOST_READ_BIT,
diff --git a/chapters/debugging.adoc b/chapters/debugging.adoc
index 5a0845d0..1e598565 100644
--- a/chapters/debugging.adoc
+++ b/chapters/debugging.adoc
@@ -59,6 +59,9 @@ ifndef::VKSC_VERSION_1_0[]
| ename:VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE | slink:VkDescriptorUpdateTemplate
endif::VKSC_VERSION_1_0[]
endif::VK_VERSION_1_1,VK_KHR_descriptor_update_template[]
+ifdef::VK_VERSION_1_3,VK_EXT_private_data[]
+| ename:VK_OBJECT_TYPE_PRIVATE_DATA_SLOT | slink:VkPrivateDataSlot
+endif::VK_VERSION_1_3,VK_EXT_private_data[]
ifdef::VK_KHR_surface[]
| ename:VK_OBJECT_TYPE_SURFACE_KHR | slink:VkSurfaceKHR
endif::VK_KHR_surface[]
@@ -72,33 +75,43 @@ endif::VK_KHR_display[]
ifdef::VK_EXT_debug_report[]
| ename:VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT | slink:VkDebugReportCallbackEXT
endif::VK_EXT_debug_report[]
-ifdef::VK_NV_device_generated_commands[]
-| ename:VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV | slink:VkIndirectCommandsLayoutNV
-endif::VK_NV_device_generated_commands[]
+ifdef::VK_KHR_video_queue[]
+| ename:VK_OBJECT_TYPE_VIDEO_SESSION_KHR | slink:VkVideoSessionKHR
+| ename:VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR | slink:VkVideoSessionParametersKHR
+endif::VK_KHR_video_queue[]
ifdef::VK_EXT_debug_utils[]
| ename:VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT | slink:VkDebugUtilsMessengerEXT
endif::VK_EXT_debug_utils[]
+ifdef::VK_KHR_acceleration_structure[]
+| ename:VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR | slink:VkAccelerationStructureKHR
+endif::VK_KHR_acceleration_structure[]
ifdef::VK_EXT_validation_cache[]
| ename:VK_OBJECT_TYPE_VALIDATION_CACHE_EXT | slink:VkValidationCacheEXT
endif::VK_EXT_validation_cache[]
ifdef::VK_NV_ray_tracing[]
| ename:VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV | slink:VkAccelerationStructureNV
endif::VK_NV_ray_tracing[]
-ifdef::VK_KHR_acceleration_structure[]
-| ename:VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR | slink:VkAccelerationStructureKHR
-endif::VK_KHR_acceleration_structure[]
ifdef::VK_INTEL_performance_query[]
| ename:VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL | slink:VkPerformanceConfigurationINTEL
endif::VK_INTEL_performance_query[]
ifdef::VK_KHR_deferred_host_operations[]
| ename:VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR | slink:VkDeferredOperationKHR
endif::VK_KHR_deferred_host_operations[]
-ifdef::VK_VERSION_1_3,VK_EXT_private_data[]
-| ename:VK_OBJECT_TYPE_PRIVATE_DATA_SLOT | slink:VkPrivateDataSlot
-endif::VK_VERSION_1_3,VK_EXT_private_data[]
+ifdef::VK_NV_device_generated_commands[]
+| ename:VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV | slink:VkIndirectCommandsLayoutNV
+endif::VK_NV_device_generated_commands[]
+ifdef::VK_FUCHSIA_buffer_collection[]
+| ename:VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA | slink:VkBufferCollectionFUCHSIA
+endif::VK_FUCHSIA_buffer_collection[]
+ifdef::VK_EXT_opacity_micromap[]
+| ename:VK_OBJECT_TYPE_MICROMAP_EXT | slink:VkMicromapEXT
+endif::VK_EXT_opacity_micromap[]
ifdef::VK_NV_optical_flow[]
| ename:VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV | slink:VkOpticalFlowSessionNV
endif::VK_NV_optical_flow[]
+ifdef::VK_EXT_shader_object[]
+| ename:VK_OBJECT_TYPE_SHADER_EXT | slink:VkShaderEXT
+endif::VK_EXT_shader_object[]
|====
--
diff --git a/chapters/descriptorsets.adoc b/chapters/descriptorsets.adoc
index 982e2b5f..3652e7db 100644
--- a/chapters/descriptorsets.adoc
+++ b/chapters/descriptorsets.adoc
@@ -1092,6 +1092,9 @@ endif::VK_KHR_push_descriptor[]
ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, then all
other elements of slink:VkDescriptorSetLayoutCreateInfo::pname:pBindings
must: have a smaller value of pname:binding
+ * If an element of pname:pBindingFlags includes
+ ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, then it must:
+ be the element with the the highest pname:binding number
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformBufferUpdateAfterBind-03005]]
If
slink:VkPhysicalDeviceDescriptorIndexingFeatures::pname:descriptorBindingUniformBufferUpdateAfterBind
@@ -3087,6 +3090,17 @@ ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit
set, pname:descriptorPool must: have been created with the
ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT flag set
+ * If pname:pSetLayouts[i] was created with an element of
+ pname:pBindingFlags that includes
+ ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, and
+ slink:VkDescriptorSetVariableDescriptorCountAllocateInfo is included in
+ the pname:pNext chain, and
+ sname:VkDescriptorSetVariableDescriptorCountAllocateInfo::pname:descriptorSetCount
+ is not zero, then
+ slink::VkDescriptorSetVariableDescriptorCountAllocateInfo::pDescriptorCounts[i]
+ must: be less than or equal to
+ slink::VkDescriptorSetLayoutBinding::descriptorCount for the
+ corresponding binding used to create pname:pSetLayouts[i]
endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
* [[VUID-VkDescriptorSetAllocateInfo-pSetLayouts-04610]]
diff --git a/chapters/features.adoc b/chapters/features.adoc
index aa8a7ed2..4f8f3e35 100644
--- a/chapters/features.adoc
+++ b/chapters/features.adoc
@@ -6198,6 +6198,37 @@ include::{generated}/validity/structs/VkPhysicalDeviceAttachmentFeedbackLoopLayo
endif::VK_EXT_attachment_feedback_loop_layout[]
+ifdef::VK_EXT_nested_command_buffer[]
+[open,refpage='VkPhysicalDeviceNestedCommandBufferFeaturesEXT',desc='Structure describing whether nested command buffers are supported by the implementation',type='structs']
+--
+The sname:VkPhysicalDeviceNestedCommandBufferFeaturesEXT structure is
+defined as:
+
+include::{generated}/api/structs/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.adoc[]
+
+This structure describes the following features:
+
+ * [[features-nestedCommandBuffer]] pname:nestedCommandBuffer indicates the
+ implementation supports nested command buffers, which allows <<glossary,
+ Secondary Command Buffers>> to execute other <<glossary, Secondary
+ Command Buffers>>.
+ * [[features-nestedCommandBufferRendering]]
+ pname:nestedCommandBufferRendering indicates that it is valid to call
+ flink:vkCmdExecuteCommands inside a <<glossary, Secondary Command
+ Buffer>> recorded with
+ ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT.
+ * [[features-nestedCommandBufferSimultaneousUse]]
+ pname:nestedCommandBufferSimultaneousUse indicates that the
+ implementation supports nested command buffers with command buffers that
+ are recorded with ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT.
+
+:refpage: VkPhysicalDeviceNestedCommandBufferFeaturesEXT
+include::{chapters}/features.adoc[tag=features]
+
+include::{generated}/validity/structs/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.adoc[]
+--
+endif::VK_EXT_nested_command_buffer[]
+
ifdef::VK_EXT_graphics_pipeline_library[]
[open,refpage='VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',desc='Structure describing support for graphics pipeline libraries',type='structs']
--
@@ -6894,6 +6925,33 @@ include::{generated}/validity/structs/VkPhysicalDeviceRayTracingInvocationReorde
--
endif::VK_NV_ray_tracing_invocation_reorder[]
+ifdef::VK_NV_extended_sparse_address_space[]
+[open,refpage='VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV',desc='Structure describing feature to use extended sparse address space',type='structs']
+--
+The sname:VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV structure is
+defined as:
+
+include::{generated}/api/structs/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.adoc[]
+
+This structure describes the following feature:
+
+ * pname:sType is a elink:VkStructureType value identifying this structure.
+ * pname:pNext is `NULL` or a pointer to a structure extending this
+ structure.
+ * [[features-extendedSparseAddressSpace]] pname:extendedSparseAddressSpace
+ indicates that the implementation supports allowing certain usages of
+ sparse memory resources to exceed
+ sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize.
+ See slink:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.
+
+:refpage: VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
+include::{chapters}/features.adoc[tag=features]
+
+include::{generated}/validity/structs/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.adoc[]
+
+--
+endif::VK_NV_extended_sparse_address_space[]
+
ifdef::VK_QCOM_multiview_per_view_viewports[]
[open,refpage='VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM',desc='Structure describing multiview per view viewports features that can be supported by an implementation',type='structs']
--
@@ -7642,6 +7700,10 @@ ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
the `apiext:VK_KHR_dynamic_rendering` extension is supported.
endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
+ifdef::VK_EXT_nested_command_buffer[]
+ * <<features-nestedCommandBuffer, pname:nestedCommandBuffer>>, if the
+ `apiext:VK_EXT_nested_command_buffer` extension is supported.
+endif::VK_EXT_nested_command_buffer[]
ifdef::VK_EXT_mesh_shader[]
* <<features-taskShader, pname:taskShader>> and <<features-meshShader,
pname:meshShader>>, if the `apiext:VK_EXT_mesh_shader` extension is
@@ -7919,6 +7981,11 @@ ifdef::VK_ANDROID_external_format_resolve[]
* <<features-externalFormatResolve, pname:externalFormatResolve>>, if the
`apiext:VK_ANDROID_external_format_resolve` extension is supported.
endif::VK_ANDROID_external_format_resolve[]
+ifdef::VK_NV_extended_sparse_address_space[]
+ * <<features-extendedSparseAddressSpace,
+ pname:extendedSparseAddressSpace>>, if the
+ `apiext:VK_NV_extended_sparse_address_space` extension is supported.
+endif::VK_NV_extended_sparse_address_space[]
All other features defined in the Specification are optional:.
diff --git a/chapters/limits.adoc b/chapters/limits.adoc
index dc79063f..0b5322e3 100644
--- a/chapters/limits.adoc
+++ b/chapters/limits.adoc
@@ -118,6 +118,19 @@ flink:vkGetPhysicalDeviceProperties.
resources.
This is an upper bound on the sum of the sizes of all sparse resources,
regardless of whether any memory is bound to them.
+ifdef::VK_NV_extended_sparse_address_space[]
+ If the <<features-extendedSparseAddressSpace,
+ pname:extendedSparseAddressSpace>> feature is enabled, then the
+ difference between <<limits-extendedSparseAddressSpaceSize,
+ pname:extendedSparseAddressSpaceSize>> and pname:sparseAddressSpaceSize
+ can also be used, by sname:VkImage created with the pname:usage member
+ of slink:VkImageCreateInfo only containing bits in
+ <<limits-extendedSparseImageUsageFlags,
+ pname:extendedSparseImageUsageFlags>> and sname:VkBuffer created with
+ the pname:usage member of slink:VkBufferCreateInfo only containing bits
+ in <<limits-extendedSparseBufferUsageFlags,
+ pname:extendedSparseBufferUsageFlags>>.
+endif::VK_NV_extended_sparse_address_space[]
* [[limits-maxBoundDescriptorSets]] pname:maxBoundDescriptorSets is the
maximum number of descriptor sets that can: be simultaneously used by a
pipeline.
@@ -3804,6 +3817,33 @@ include::{generated}/validity/structs/VkPhysicalDeviceMultiDrawPropertiesEXT.ado
endif::VK_EXT_multi_draw[]
+ifdef::VK_EXT_nested_command_buffer[]
+
+[open,refpage='VkPhysicalDeviceNestedCommandBufferPropertiesEXT',desc='Structure describing the nested command buffer limits of an implementation',type='structs']
+--
+The sname:VkPhysicalDeviceNestedCommandBufferPropertiesEXT structure is
+defined as:
+
+include::{generated}/api/structs/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.adoc[]
+
+The members of the sname:VkPhysicalDeviceNestedCommandBufferPropertiesEXT
+structure describe the following features:
+
+ * [[limits-maxCommandBufferNestingLevel]]
+ pname:maxCommandBufferNestingLevel indicates the maximum nesting level
+ of calls to flink:vkCmdExecuteCommands from <<glossary, Secondary
+ Command Buffers>>.
+ A pname:maxCommandBufferNestingLevel of code:UINT32_MAX means there is
+ no limit to the nesting level.
+
+:refpage: VkPhysicalDeviceNestedCommandBufferPropertiesEXT
+include::{chapters}/limits.adoc[tag=limits_desc]
+
+include::{generated}/validity/structs/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.adoc[]
+--
+
+endif::VK_EXT_nested_command_buffer[]
+
ifdef::VK_EXT_graphics_pipeline_library[]
[open,refpage='VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT',desc='Structure describing additional properties of graphics pipeline libraries',type='structs']
--
@@ -4282,6 +4322,42 @@ include::{generated}/validity/structs/VkPhysicalDeviceShaderEnqueuePropertiesAMD
--
endif::VK_AMDX_shader_enqueue[]
+ifdef::VK_NV_extended_sparse_address_space[]
+[open,refpage='VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV',desc='Structure describing sparse address space limits of an implementation',type='structs']
+--
+The sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV structure
+is defined as:
+
+include::{generated}/api/structs/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.adoc[]
+
+ * pname:sType is a elink:VkStructureType value identifying this structure.
+ * pname:pNext is `NULL` or a pointer to a structure extending this
+ structure.
+ * [[limits-extendedSparseAddressSpaceSize]]
+ pname:extendedSparseAddressSpaceSize is the total amount of address
+ space available, in bytes, for sparse memory resources of all usages if
+ the <<features-extendedSparseAddressSpace,
+ pname:extendedSparseAddressSpace>> feature is enabled.
+ This must: be greater than or equal to
+ sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize, and the
+ difference in space must: only be used with usages allowed below.
+ This is an upper bound on the sum of the sizes of all sparse resources,
+ regardless of whether any memory is bound to them.
+ * [[limits-extendedSparseImageUsageFlags]]
+ pname:extendedSparseImageUsageFlags is a bitmask of
+ elink:VkImageUsageFlagBits of usages which may: allow an implementation
+ to use the full pname:extendedSparseAddressSpaceSize space.
+ * [[limits-extendedSparseBufferUsageFlags]]
+ pname:extendedSparseBufferUsageFlags is a bitmask of
+ elink:VkBufferUsageFlagBits of usages which may: allow an implementation
+ to use the full pname:extendedSparseAddressSpaceSize space.
+
+:refpage: VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV
+include::{chapters}/limits.adoc[tag=limits_desc]
+
+include::{generated}/validity/structs/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.adoc[]
+--
+endif::VK_NV_extended_sparse_address_space[]
ifdef::VK_ANDROID_external_format_resolve[]
[open,refpage='VkPhysicalDeviceExternalFormatResolvePropertiesANDROID',desc='Structure describing external format resolve supported by an implementation',type='structs']
@@ -4751,6 +4827,9 @@ ifdef::VK_AMDX_shader_enqueue[]
| code:uint32_t | pname:maxExecutionGraphShaderPayloadCount | `<<features-shaderEnqueue,pname:shaderEnqueue>>`
| code:uint32_t | pname:executionGraphDispatchAddressAlignment | `<<features-shaderEnqueue,pname:shaderEnqueue>>`
endif::VK_AMDX_shader_enqueue[]
+ifdef::VK_NV_extended_sparse_address_space[]
+| basetype:VkDeviceSize | pname:extendedSparseAddressSpaceSize | pname:sparseBinding, `<<features-extendedSparseAddressSpace, pname:extendedSparseAddressSpace>>`
+endif::VK_NV_extended_sparse_address_space[]
|====
[[limits-required]]
@@ -5158,6 +5237,9 @@ endif::VK_HUAWEI_subpass_shading[]
ifdef::VK_EXT_multi_draw[]
| pname:maxMultiDrawCount | - | 1024 | min
endif::VK_EXT_multi_draw[]
+ifdef::VK_EXT_nested_command_buffer[]
+| pname:maxCommandBufferNestingLevel | - | 1 | min
+endif::VK_EXT_nested_command_buffer[]
ifdef::VKSC_VERSION_1_0[]
| pname:deviceNoDynamicHostAllocations | - | - | implementation-dependent
| pname:deviceDestroyFreesMemory | - | - | implementation-dependent
@@ -5214,6 +5296,9 @@ ifdef::VK_AMDX_shader_enqueue[]
| pname:maxExecutionGraphShaderPayloadCount | - | 256 | min
| pname:executionGraphDispatchAddressAlignment | - | 4 | max
endif::VK_AMDX_shader_enqueue[]
+ifdef::VK_NV_extended_sparse_address_space[]
+| pname:extendedSparseAddressSpaceSize | 0 | pname:sparseAddressSpaceSize | min
+endif::VK_NV_extended_sparse_address_space[]
|====
1::
diff --git a/chapters/pipelines.adoc b/chapters/pipelines.adoc
index 24a57733..5dfee39a 100644
--- a/chapters/pipelines.adoc
+++ b/chapters/pipelines.adoc
@@ -229,10 +229,6 @@ ifndef::VKSC_VERSION_1_0[]
must: have been created with the
ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set
endif::VKSC_VERSION_1_0[]
-ifdef::VKSC_VERSION_1_0[]
- * [[VUID-vkCreateComputePipelines-pipelineCache-05022]]
- pname:pipelineCache must: not be dlink:VK_NULL_HANDLE
-endif::VKSC_VERSION_1_0[]
ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
* [[VUID-vkCreateComputePipelines-pipelineCache-02873]]
If pname:pipelineCache was created with
@@ -1331,10 +1327,6 @@ ifndef::VKSC_VERSION_1_0[]
must: have been created with the
ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set
endif::VKSC_VERSION_1_0[]
-ifdef::VKSC_VERSION_1_0[]
- * [[VUID-vkCreateGraphicsPipelines-pipelineCache-05031]]
- pname:pipelineCache must: not be dlink:VK_NULL_HANDLE
-endif::VKSC_VERSION_1_0[]
ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
* [[VUID-vkCreateGraphicsPipelines-pipelineCache-02876]]
If pname:pipelineCache was created with
@@ -3298,10 +3290,10 @@ ifdef::VK_EXT_extended_dynamic_state3[]
valid slink:VkPipelineColorBlendStateCreateInfo structure
endif::VK_EXT_extended_dynamic_state3[]
* [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06055]]
- If pname:renderPass is dlink:VK_NULL_HANDLE and the pipeline is being
- created with <<pipelines-graphics-subsets-fragment-output, fragment
- output interface state>>, pname:pColorBlendState->attachmentCount must:
- be equal to
+ If pname:renderPass is dlink:VK_NULL_HANDLE, pname:pColorBlendState is
+ not dynamic, and the pipeline is being created with
+ <<pipelines-graphics-subsets-fragment-output, fragment output interface
+ state>>, pname:pColorBlendState->attachmentCount must: be equal to
slink:VkPipelineRenderingCreateInfo::pname:colorAttachmentCount
ifdef::VK_KHR_multiview,VK_VERSION_1_1[]
* [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06057]]
@@ -4516,33 +4508,13 @@ ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and
slink:VkExternalFormatANDROID::pname:externalFormat is not `0`,
slink:VkPipelineRenderingCreateInfo::pname:viewMask must: be `0`
-ifndef::VK_EXT_extended_dynamic_state3[]
- * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09302]]
- If the <<features-externalFormatResolve, pname:externalFormatResolve>>
- feature is enabled, the pipeline requires
- <<pipelines-graphics-subsets-fragment-output, fragment output interface
- state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and
- slink:VkExternalFormatANDROID::pname:externalFormat is not `0`,
- slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples
- must: be `1`
- * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09303]]
- If the <<features-externalFormatResolve, pname:externalFormatResolve>>
- feature is enabled, the pipeline requires
- <<pipelines-graphics-subsets-fragment-output, fragment output interface
- state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and
- slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, the
- pname:blendEnable member of each element of
- pname:pColorBlendState->pAttachments must: be ename:VK_FALSE
-endif::VK_EXT_extended_dynamic_state3[]
-ifdef::VK_EXT_extended_dynamic_state3[]
* [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09304]]
If the <<features-externalFormatResolve, pname:externalFormatResolve>>
feature is enabled, the pipeline requires
<<pipelines-graphics-subsets-fragment-output, fragment output interface
state>>, pname:renderPass is dlink:VK_NULL_HANDLE,
slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, and
- pname:pDynamicState->pDynamicStates does not include
- ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT,
+ pname:rasterizationSamples is not dynamic,
slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples
must: be `1`
* [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09305]]
@@ -4551,11 +4523,8 @@ ifdef::VK_EXT_extended_dynamic_state3[]
<<pipelines-graphics-subsets-fragment-output, fragment output interface
state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and
slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, and
- pname:pDynamicState->pDynamicStates does not include
- ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, the pname:blendEnable
- member of each element of pname:pColorBlendState->pAttachments must: be
- ename:VK_FALSE
-endif::VK_EXT_extended_dynamic_state3[]
+ pname:blendEnable is not dynamic, the pname:blendEnable member of each
+ element of pname:pColorBlendState->pAttachments must: be ename:VK_FALSE
ifdef::VK_KHR_fragment_shading_rate[]
* [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09306]]
If the <<features-externalFormatResolve, pname:externalFormatResolve>>
@@ -4606,33 +4575,13 @@ endif::VK_KHR_fragment_shading_rate[]
fragment shader must: not declare the code:DepthReplacing or
code:StencilRefReplacingEXT execution modes
endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
-ifndef::VK_EXT_extended_dynamic_state3[]
- * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09311]]
- If the <<features-externalFormatResolve, pname:externalFormatResolve>>
- feature is enabled, the pipeline requires
- <<pipelines-graphics-subsets-fragment-output, fragment output interface
- state>>, pname:renderPass is not dlink:VK_NULL_HANDLE, pname:subpass
- includes an external format resolve attachment,
- slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples
- must: be ename:VK_SAMPLE_COUNT_1_BIT
- * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09312]]
- If the <<features-externalFormatResolve, pname:externalFormatResolve>>
- feature is enabled, the pipeline requires
- <<pipelines-graphics-subsets-fragment-output, fragment output interface
- state>>, pname:renderPass is not dlink:VK_NULL_HANDLE, pname:subpass
- includes an external format resolve attachment, the pname:blendEnable
- member of each element of pname:pColorBlendState->pAttachments must: be
- ename:VK_FALSE
-endif::VK_EXT_extended_dynamic_state3[]
-ifdef::VK_EXT_extended_dynamic_state3[]
* [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09313]]
If the <<features-externalFormatResolve, pname:externalFormatResolve>>
feature is enabled, the pipeline requires
<<pipelines-graphics-subsets-fragment-output, fragment output interface
state>>, pname:renderPass is not dlink:VK_NULL_HANDLE, pname:subpass
includes an external format resolve attachment, and
- pname:pDynamicState->pDynamicStates does not include
- ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT,
+ pname:rasterizationSamples is not dynamic,,
slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples
must: be ename:VK_SAMPLE_COUNT_1_BIT
* [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09314]]
@@ -4640,12 +4589,9 @@ ifdef::VK_EXT_extended_dynamic_state3[]
feature is enabled, the pipeline requires
<<pipelines-graphics-subsets-fragment-output, fragment output interface
state>>, pname:renderPass is not dlink:VK_NULL_HANDLE, pname:subpass
- includes an external format resolve attachment, and
- pname:pDynamicState->pDynamicStates does not include
- ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, the pname:blendEnable
- member of each element of pname:pColorBlendState->pAttachments must: be
- ename:VK_FALSE
-endif::VK_EXT_extended_dynamic_state3[]
+ includes an external format resolve attachment, and pname:blendEnable is
+ not dynamic, the pname:blendEnable member of each element of
+ pname:pColorBlendState->pAttachments must: be ename:VK_FALSE
ifdef::VK_KHR_fragment_shading_rate[]
* [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09315]]
If the <<features-externalFormatResolve, pname:externalFormatResolve>>
@@ -6112,10 +6058,6 @@ endif::VKSC_VERSION_1_0[]
.Valid Usage
****
include::{chapters}/commonvalidity/create_ray_tracing_pipelines_common.adoc[]
-ifdef::VKSC_VERSION_1_0[]
- * [[VUID-vkCreateRayTracingPipelinesNV-pipelineCache-05035]]
- pname:pipelineCache must: not be dlink:VK_NULL_HANDLE
-endif::VKSC_VERSION_1_0[]
****
ifdef::VKSC_VERSION_1_0[]
ifdef::hidden[]
@@ -6201,10 +6143,6 @@ include::{chapters}/commonvalidity/deferred_operations_common.adoc[]
* [[VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586]]
The <<features-rayTracingPipeline, pname:rayTracingPipeline>> feature
must: be enabled
-ifdef::VKSC_VERSION_1_0[]
- * [[VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-05036]]
- pname:pipelineCache must: not be dlink:VK_NULL_HANDLE
-endif::VKSC_VERSION_1_0[]
ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
ifdef::VK_KHR_deferred_host_operations[]
* [[VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03587]]
@@ -6326,12 +6264,6 @@ ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT at the
same time
endif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
-ifdef::VKSC_VERSION_1_0[]
- * [[VUID-VkRayTracingPipelineCreateInfoNV-basePipelineHandle-05038]]
- pname:basePipelineHandle must: be dlink:VK_NULL_HANDLE
- * [[VUID-VkRayTracingPipelineCreateInfoNV-basePipelineIndex-05039]]
- pname:basePipelineIndex must: be zero
-endif::VKSC_VERSION_1_0[]
ifdef::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[]
* [[VUID-VkRayTracingPipelineCreateInfoNV-pipelineStageCreationFeedbackCount-06651]]
If
@@ -6577,12 +6509,6 @@ endif::VK_KHR_pipeline_library[]
<<features-rayTracingPipelineShaderGroupHandleCaptureReplay,
pname:rayTracingPipelineShaderGroupHandleCaptureReplay>> must: be
enabled
-ifdef::VKSC_VERSION_1_0[]
- * [[VUID-VkRayTracingPipelineCreateInfoKHR-basePipelineHandle-05041]]
- pname:basePipelineHandle must: be dlink:VK_NULL_HANDLE
- * [[VUID-VkRayTracingPipelineCreateInfoKHR-basePipelineIndex-05042]]
- pname:basePipelineIndex must: be zero
-endif::VKSC_VERSION_1_0[]
* [[VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599]]
If
slink:VkPhysicalDeviceRayTracingPipelineFeaturesKHR::pname:rayTracingPipelineShaderGroupHandleCaptureReplay
@@ -7711,7 +7637,7 @@ Version one of the pipeline cache header is defined as:
include::{generated}/api/structs/VkPipelineCacheHeaderVersionOne.adoc[]
* pname:headerSize is the length in bytes of the pipeline cache header.
- * pname:headerVersion is a elink:VkPipelineCacheHeaderVersion enum value
+ * pname:headerVersion is a elink:VkPipelineCacheHeaderVersion value
specifying the version of the header.
A consumer of the pipeline cache should: use the cache version to
interpret the remainder of the cache header.
@@ -8151,12 +8077,12 @@ The sname:VkPipelineOfflineCreateInfo structure is defined as:
include::{generated}/api/structs/VkPipelineOfflineCreateInfo.adoc[]
* pname:sType is a elink:VkStructureType value identifying this structure.
- * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:pNext is `NULL` or a pointer to a structure extending this
+ structure.
* pname:pipelineIdentifier is an array of ename:VK_UUID_SIZE code:uint8_t
values representing an identifier for the pipeline.
- * pname:matchControl is an enum of type elink:VkPipelineMatchControl that
- describes the type of identifier being used and how the match should be
- performed.
+ * pname:matchControl is a elink:VkPipelineMatchControl value specifying
+ the type of identifier being used and how the match should be performed.
* pname:poolEntrySize is the size of the entry in pipeline memory to use
for this pipeline.
It must: be a size that was requested via slink:VkPipelinePoolSize when
diff --git a/chapters/renderpass.adoc b/chapters/renderpass.adoc
index a6a70e81..d0fe20ae 100644
--- a/chapters/renderpass.adoc
+++ b/chapters/renderpass.adoc
@@ -44,6 +44,10 @@ suspended earlier in <<synchronization-submission-order, submission order>>.
be enabled
* [[VUID-vkCmdBeginRendering-commandBuffer-06068]]
If pname:commandBuffer is a secondary command buffer,
+ifdef::VK_EXT_nested_command_buffer[]
+ and the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>>
+ feature is not enabled,
+endif::VK_EXT_nested_command_buffer[]
pname:pRenderingInfo->flags must: not include
ename:VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT
****
@@ -612,6 +616,11 @@ endif::VK_QCOM_multiview_per_view_render_areas[]
Valid attachments specified by this structure must: not be bound to
memory locations that are bound to any other valid attachments specified
by this structure
+ifdef::VK_EXT_nested_command_buffer[]
+ * If pname:flags includes ename:VK_RENDERING_CONTENTS_INLINE_BIT_EXT then
+ the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>> feature
+ must: be enabled
+endif::VK_EXT_nested_command_buffer[]
ifdef::VK_ANDROID_external_format_resolve[]
* [[VUID-VkRenderingInfo-pDepthAttachment-09318]]
pname:pDepthAttachment->resolveMode must: not be
@@ -659,6 +668,11 @@ endif::VK_KHR_dynamic_rendering[]
* ename:VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT specifies that
draw calls for the render pass instance will be recorded in secondary
command buffers.
+ifdef::VK_EXT_nested_command_buffer[]
+ If the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>>
+ feature is enabled, the draw calls can: come from both inline and
+ flink:vkCmdExecuteCommands.
+endif::VK_EXT_nested_command_buffer[]
* ename:VK_RENDERING_RESUMING_BIT specifies that the render pass instance
is resuming an earlier suspended render pass instance.
* ename:VK_RENDERING_SUSPENDING_BIT specifies that the render pass
@@ -668,6 +682,15 @@ ifdef::VK_EXT_legacy_dithering[]
<<interfaces-legacy-dithering, Legacy Dithering>> is enabled for the
render pass instance.
endif::VK_EXT_legacy_dithering[]
+ifdef::VK_EXT_nested_command_buffer[]
+ * ename:VK_RENDERING_CONTENTS_INLINE_BIT_EXT specifies that draw calls for
+ the render pass instance can: be recorded inline within the current
+ command buffer.
+ When the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>>
+ feature is enabled this can: be combined with the
+ ename:VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT bit to allow
+ draw calls to be recorded both inline and in secondary command buffers.
+endif::VK_EXT_nested_command_buffer[]
[[renderpass-suspension]]
The contents of pname:pRenderingInfo must: match between suspended render
@@ -3443,14 +3466,13 @@ ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL or
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
-ifndef::VK_ANDROID_external_format_resolve[]
* [[VUID-VkAttachmentDescription2-format-09332]]
- pname:format must: not be VK_FORMAT_UNDEFINED
-endif::VK_ANDROID_external_format_resolve[]
ifdef::VK_ANDROID_external_format_resolve[]
- * [[VUID-VkAttachmentDescription2-externalFormatResolve-09333]]
If <<features-externalFormatResolve,pname:externalFormatResolve>> is not
- enabled, pname:format must: not be ename:VK_FORMAT_UNDEFINED
+ enabled,
+endif::VK_ANDROID_external_format_resolve[]
+ pname:format must: not be ename:VK_FORMAT_UNDEFINED
+ifdef::VK_ANDROID_external_format_resolve[]
* [[VUID-VkAttachmentDescription2-format-09334]]
If pname:format is ename:VK_FORMAT_UNDEFINED, there must: be a
slink:VkExternalFormatANDROID structure in the pname:pNext chain with a
@@ -3932,8 +3954,8 @@ endif::VK_KHR_fragment_shading_rate[]
pname:pResolveAttachments is not ename:VK_ATTACHMENT_UNUSED and has a
format of ename:VK_FORMAT_UNDEFINED, elements of pname:pInputAttachments
referencing either a color attachment or resolve attachment used in this
- subpass must: not include `VK_IMAGE_ASPECT_PLANE__{ibit}__BIT_EXT` for
- any index _i_ in its pname:aspectMask
+ subpass must: not include `VK_IMAGE_ASPECT_PLANE__{ibit}__BIT` for any
+ index _i_ in its pname:aspectMask
endif::VK_ANDROID_external_format_resolve[]
****
@@ -5047,10 +5069,13 @@ ifdef::VK_EXT_multisampled_render_to_single_sampled[]
slink:VkMultisampledRenderToSingleSampledInfoEXT::pname:rasterizationSamples
endif::VK_EXT_multisampled_render_to_single_sampled[]
ifdef::VK_ANDROID_external_format_resolve[]
-ifndef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
* [[VUID-VkFramebufferCreateInfo-nullColorAttachmentWithExternalFormatResolve-09349]]
If the <<limits-nullColorAttachmentWithExternalFormatResolve,
pname:nullColorAttachmentWithExternalFormatResolve>> is ename:VK_FALSE,
+ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
+ and pname:flags does not include
+ ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
+endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
the format of the color attachment for each subpass in pname:renderPass
that includes an external format image as a resolve attachment must:
have a format equal to the value of
@@ -5060,36 +5085,17 @@ ifndef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
hardware buffer that was used to create the image view use as its
resolve attachment
* [[VUID-VkFramebufferCreateInfo-pAttachments-09350]]
- Each element of pname:pAttachments with a format of
- ename:VK_FORMAT_UNDEFINED must: have been created with a
+ If
+ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
+ pname:flags does not include ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
+ then if
+endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
+ an element of pname:pAttachments has a format of
+ ename:VK_FORMAT_UNDEFINED, it must: have been created with a
slink:VkExternalFormatANDROID::pname:externalFormat value identical to
that provided in the slink:VkExternalFormatANDROID::pname:externalFormat
specified by the corresponding slink:VkAttachmentDescription2 in
pname:renderPass
-endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
-ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
- * [[VUID-VkFramebufferCreateInfo-flags-09351]]
- If pname:flags does not include
- ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT and the
- <<limits-nullColorAttachmentWithExternalFormatResolve,
- pname:nullColorAttachmentWithExternalFormatResolve>> is ename:VK_FALSE,
- the format of the color attachment for each subpass in pname:renderPass
- that includes an external format image as a resolve attachment must:
- have a format equal to the value of
- slink:VkAndroidHardwareBufferFormatResolvePropertiesANDROID::pname:colorAttachmentFormat
- as returned by a call to
- flink:vkGetAndroidHardwareBufferPropertiesANDROID for the Android
- hardware buffer that was used to create the image view used as its
- resolve attachment
- * [[VUID-VkFramebufferCreateInfo-flags-09352]]
- If pname:flags does not include
- ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of
- pname:pAttachments with a format of ename:VK_FORMAT_UNDEFINED must: have
- been created with a slink:VkExternalFormatANDROID::pname:externalFormat
- value identical to that provided in the
- slink:VkExternalFormatANDROID::pname:externalFormat specified by the
- corresponding slink:VkAttachmentDescription2 in pname:renderPass
-endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
endif::VK_ANDROID_external_format_resolve[]
****
@@ -6444,7 +6450,18 @@ endif::VK_KHR_create_renderpass2[]
* pname:contents is a elink:VkSubpassContents value specifying how the
commands in the next subpass will be provided.
+ifdef::VK_EXT_nested_command_buffer[]
+.Valid Usage
+****
+ * If pname:contents is
+ ename:VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT, then
+ <<features-nestedCommandBuffer, pname:nestedCommandBuffer>> must: be
+ enabled
+****
+endif::VK_EXT_nested_command_buffer[]
+
include::{generated}/validity/structs/VkSubpassBeginInfo.adoc[]
+
--
endif::VK_VERSION_1_2,VK_KHR_create_renderpass2[]
@@ -6463,6 +6480,12 @@ include::{generated}/api/enums/VkSubpassContents.adoc[]
from the primary command buffer, and flink:vkCmdExecuteCommands is the
only valid command in the command buffer until flink:vkCmdNextSubpass or
flink:vkCmdEndRenderPass.
+ifdef::VK_EXT_nested_command_buffer[]
+ * ename:VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT
+ specifies that the contents of the subpass can: be recorded both inline
+ and in secondary command buffers executed from this command buffer with
+ flink:vkCmdExecuteCommands.
+endif::VK_EXT_nested_command_buffer[]
--
ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
diff --git a/chapters/resources.adoc b/chapters/resources.adoc
index 990ecd59..c45868c7 100644
--- a/chapters/resources.adoc
+++ b/chapters/resources.adoc
@@ -61,10 +61,38 @@ include::{chapters}/commonvalidity/no_dynamic_allocations_common.adoc[]
ifndef::VKSC_VERSION_1_0[]
* [[VUID-vkCreateBuffer-flags-00911]]
If the pname:flags member of pname:pCreateInfo includes
- ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT, creating this sname:VkBuffer
- must: not cause the total required sparse memory for all currently valid
- sparse resources on the device to exceed
+ ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
+ifdef::VK_NV_extended_sparse_address_space[]
+ and the <<features-extendedSparseAddressSpace,
+ pname:extendedSparseAddressSpace>> feature is not enabled,
+endif::VK_NV_extended_sparse_address_space[]
+ creating this sname:VkBuffer must: not cause the total required sparse
+ memory for all currently valid sparse resources on the device to exceed
sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
+ifdef::VK_NV_extended_sparse_address_space[]
+ * If the pname:flags member of pname:pCreateInfo includes
+ ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT, the
+ <<features-extendedSparseAddressSpace,
+ pname:extendedSparseAddressSpace>> feature is enabled, and the
+ pname:usage member of pname:pCreateInfo contains bits not in
+ sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseBufferUsageFlags,
+ creating this sname:VkBuffer must: not cause the total required sparse
+ memory for all currently valid sparse resources on the device, excluding
+ sname:VkBuffer created with pname:usage member of pname:pCreateInfo
+ containing bits in
+ sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseBufferUsageFlags
+ and sname:VkImage created with pname:usage member of pname:pCreateInfo
+ containing bits in
+ sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseImageUsageFlags,
+ to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
+ * If the pname:flags member of pname:pCreateInfo includes
+ ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT and the
+ <<features-extendedSparseAddressSpace,
+ pname:extendedSparseAddressSpace>> feature is enabled, creating this
+ sname:VkBuffer must: not cause the total required sparse memory for all
+ currently valid sparse resources on the device to exceed
+ sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseAddressSpaceSize
+endif::VK_NV_extended_sparse_address_space[]
endif::VKSC_VERSION_1_0[]
include::{chapters}/commonvalidity/memory_reservation_request_count_common.adoc[]
ifdef::VK_FUCHSIA_buffer_collection[]
@@ -1196,10 +1224,38 @@ include::{chapters}/commonvalidity/no_dynamic_allocations_common.adoc[]
ifndef::VKSC_VERSION_1_0[]
* [[VUID-vkCreateImage-flags-00939]]
If the pname:flags member of pname:pCreateInfo includes
- ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, creating this sname:VkImage
- must: not cause the total required sparse memory for all currently valid
- sparse resources on the device to exceed
+ ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
+ifdef::VK_NV_extended_sparse_address_space[]
+ and the <<features-extendedSparseAddressSpace,
+ pname:extendedSparseAddressSpace>> feature is not enabled,
+endif::VK_NV_extended_sparse_address_space[]
+ creating this sname:VkImage must: not cause the total required sparse
+ memory for all currently valid sparse resources on the device to exceed
sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
+ifdef::VK_NV_extended_sparse_address_space[]
+ * If the pname:flags member of pname:pCreateInfo includes
+ ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, the
+ <<features-extendedSparseAddressSpace,
+ pname:extendedSparseAddressSpace>> feature is enabled, and the
+ pname:usage member of pname:pCreateInfo contains bits not in
+ sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseImageUsageFlags,
+ creating this sname:VkImage must: not cause the total required sparse
+ memory for all currently valid sparse resources on the device, excluding
+ sname:VkBuffer created with pname:usage member of pname:pCreateInfo
+ containing bits in
+ sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseBufferUsageFlags
+ and sname:VkImage created with pname:usage member of pname:pCreateInfo
+ containing bits in
+ sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseImageUsageFlags,
+ to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
+ * If the pname:flags member of pname:pCreateInfo includes
+ ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT and the
+ <<features-extendedSparseAddressSpace,
+ pname:extendedSparseAddressSpace>> feature is enabled, creating this
+ sname:VkImage must: not cause the total required sparse memory for all
+ currently valid sparse resources on the device to exceed
+ sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseAddressSpaceSize
+endif::VK_NV_extended_sparse_address_space[]
endif::VKSC_VERSION_1_0[]
include::{chapters}/commonvalidity/memory_reservation_request_count_common.adoc[]
ifdef::VK_FUCHSIA_buffer_collection[]
@@ -4394,10 +4450,14 @@ include::{chapters}/commonvalidity/no_dynamic_allocations_common.adoc[]
ifdef::VKSC_VERSION_1_0[]
include::{chapters}/commonvalidity/memory_reservation_request_count_common.adoc[]
* [[VUID-vkCreateImageView-subresourceRange-05063]]
- If slink:VkImageViewCreateInfo::pname:subresourceRange.layerCount is
- greater than `1`, the number of image views with more than one array
- layer currently allocated from pname:device plus `1` must: be less than
- or equal to the total number of image views requested via
+ If slink:VkImageViewCreateInfo::pname:subresourceRange.layerCount is not
+ ename:VK_REMAINING_ARRAY_LAYERS and is greater than `1`, or if
+ slink:VkImageViewCreateInfo::pname:subresourceRange.layerCount is
+ ename:VK_REMAINING_ARRAY_LAYERS and the remaining number of layers in
+ slink:VkImageViewCreateInfo::pname:image is greater than `1`, the number
+ of image views with more than one array layer currently allocated from
+ pname:device plus `1` must: be less than or equal to the total number of
+ image views requested via
slink:VkDeviceObjectReservationCreateInfo::pname:layeredImageViewRequestCount
specified when pname:device was created
endif::VKSC_VERSION_1_0[]
@@ -5183,15 +5243,39 @@ ifdef::VK_KHR_portability_subset[]
endif::VK_KHR_portability_subset[]
ifdef::VKSC_VERSION_1_0[]
* [[VUID-VkImageViewCreateInfo-subresourceRange-05064]]
- pname:subresourceRange.levelCount must: be less than or equal to
+ If pname:subresourceRange.levelCount is not
+ ename:VK_REMAINING_MIP_LEVELS, pname:subresourceRange.levelCount must:
+ be less than or equal to
+ slink:VkDeviceObjectReservationCreateInfo::pname:maxImageViewMipLevels
+ * [[VUID-VkImageViewCreateInfo-subresourceRange-05200]]
+ If pname:subresourceRange.levelCount is ename:VK_REMAINING_MIP_LEVELS,
+ the remaining number of mip levels must: be less than or equal to
slink:VkDeviceObjectReservationCreateInfo::pname:maxImageViewMipLevels
* [[VUID-VkImageViewCreateInfo-subresourceRange-05065]]
- pname:subresourceRange.layerCount must: be less than or equal to
+ If pname:subresourceRange.layerCount is not
+ ename:VK_REMAINING_ARRAY_LAYERS, pname:subresourceRange.layerCount must:
+ be less than or equal to
slink:VkDeviceObjectReservationCreateInfo::pname:maxImageViewArrayLayers
+ * [[VUID-VkImageViewCreateInfo-subresourceRange-05201]]
+ If pname:subresourceRange.layerCount is ename:VK_REMAINING_ARRAY_LAYERS,
+ the remaining number of layers must: be less than or equal to
+ slink:VkDeviceObjectReservationCreateInfo::pname:maxImageViewMipLevels
* [[VUID-VkImageViewCreateInfo-subresourceRange-05066]]
- If pname:subresourceRange.layerCount is greater than `1`,
+ If pname:subresourceRange.layerCount is not
+ ename:VK_REMAINING_ARRAY_LAYERS and is greater than `1`, or if
+ pname:subresourceRange.layerCount is ename:VK_REMAINING_ARRAY_LAYERS and
+ the remaining number of layers is greater than `1`, then if
+ pname:subresourceRange.levelCount is not ename:VK_REMAINING_MIP_LEVELS,
pname:subresourceRange.levelCount must: be less than or equal to
slink:VkDeviceObjectReservationCreateInfo::pname:maxLayeredImageViewMipLevels
+ * [[VUID-VkImageViewCreateInfo-subresourceRange-05202]]
+ If pname:subresourceRange.layerCount is not
+ ename:VK_REMAINING_ARRAY_LAYERS and is greater than `1`, or if
+ pname:subresourceRange.layerCount is ename:VK_REMAINING_ARRAY_LAYERS and
+ the remaining number of layers is greater than `1`, then if
+ pname:subresourceRange.levelCount is ename:VK_REMAINING_MIP_LEVELS, the
+ remaining number of mip levels must: be less than or equal to
+ slink:VkDeviceObjectReservationCreateInfo::pname:maxLayeredImageViewMipLevels
endif::VKSC_VERSION_1_0[]
ifdef::VK_KHR_video_decode_queue[]
* [[VUID-VkImageViewCreateInfo-image-04817]]
diff --git a/config/CI/writing b/config/CI/writing
index 11f1cdd0..181f5347 100644
--- a/config/CI/writing
+++ b/config/CI/writing
@@ -2,6 +2,7 @@
pname:sType is the type of this structure.
pname:pNext extension chain
pname:pNext-chain
+pname:pNext is `NULL` or a pointer to an extension-specific structure.
pname:p[A-Z][[:alnum:]]+ is an array of
present in.*the pname:pNext chain
(^|[^-_.&:<>\[[:alnum:]])(Github|[Aa]ny given element|[Bb]itplane|[Cc]olorspace|[Cc]olour|[Cc]ompile-time|[Cc]ubemap|[Dd]oublebuffer)[^-_.\[[:alnum:]]
diff --git a/scripts/reflow-tests/expect-nested-lists-in-vu-default.adoc b/scripts/reflow-tests/expect-nested-lists-in-vu-default.adoc
index 5cfe0696..bde53670 100644
--- a/scripts/reflow-tests/expect-nested-lists-in-vu-default.adoc
+++ b/scripts/reflow-tests/expect-nested-lists-in-vu-default.adoc
@@ -18,4 +18,26 @@ ifdef::VK_VERSION_1_3[]
the slink:VkInstance parent of pname:commandBuffer is greater than or
equal to Version 1.3
endif::VK_VERSION_1_3[]
+ * [[VUID-{refpage}-multisampledRenderToSingleSampled-07284]]
+ If rasterization is not disabled in the bound graphics pipeline,
+ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+ and none of the following is enabled:
+ifdef::VK_AMD_mixed_attachment_samples[]
+ ** the `apiext:VK_AMD_mixed_attachment_samples` extension
+endif::VK_AMD_mixed_attachment_samples[]
+ifdef::VK_NV_framebuffer_mixed_samples[]
+ ** the `apiext:VK_NV_framebuffer_mixed_samples` extension
+endif::VK_NV_framebuffer_mixed_samples[]
+ifdef::VK_EXT_multisampled_render_to_single_sampled[]
+ ** the <<features-multisampledRenderToSingleSampled,
+ pname:multisampledRenderToSingleSampled>> feature
+endif::VK_EXT_multisampled_render_to_single_sampled[]
+endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+
++
+then pname:rasterizationSamples for the currently bound graphics pipeline
+must: be the same as the current subpass color and/or depth/stencil
+attachments
+ * [[VUID-{refpage}-None-10000]]
+ Some VU that follows
// Common Valid Usage
diff --git a/scripts/reflow-tests/expect-nested-lists-in-vu-noreflow-novuid.adoc b/scripts/reflow-tests/expect-nested-lists-in-vu-noreflow-novuid.adoc
index 74d3dc69..52c7ab19 100644
--- a/scripts/reflow-tests/expect-nested-lists-in-vu-noreflow-novuid.adoc
+++ b/scripts/reflow-tests/expect-nested-lists-in-vu-noreflow-novuid.adoc
@@ -16,4 +16,22 @@ ifdef::VK_VERSION_1_3[]
** the value of slink:VkApplicationInfo::pname:apiVersion used to create
the slink:VkInstance parent of pname:commandBuffer is greater than or equal to Version 1.3
endif::VK_VERSION_1_3[]
+ * [[VUID-{refpage}-multisampledRenderToSingleSampled-07284]]
+ If rasterization is not disabled in the bound graphics pipeline,
+ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+ and none of the following is enabled:
+ifdef::VK_AMD_mixed_attachment_samples[]
+ ** the `apiext:VK_AMD_mixed_attachment_samples` extension
+endif::VK_AMD_mixed_attachment_samples[]
+ifdef::VK_NV_framebuffer_mixed_samples[]
+ ** the `apiext:VK_NV_framebuffer_mixed_samples` extension
+endif::VK_NV_framebuffer_mixed_samples[]
+ifdef::VK_EXT_multisampled_render_to_single_sampled[]
+ ** the <<features-multisampledRenderToSingleSampled, pname:multisampledRenderToSingleSampled>> feature
+endif::VK_EXT_multisampled_render_to_single_sampled[]
+endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+
++
+then pname:rasterizationSamples for the currently bound graphics pipeline must: be the same as the current subpass color and/or depth/stencil attachments
+ * Some VU that follows
// Common Valid Usage
diff --git a/scripts/reflow-tests/expect-nested-lists-in-vu-noreflow.adoc b/scripts/reflow-tests/expect-nested-lists-in-vu-noreflow.adoc
index 74d3dc69..bb3cc140 100644
--- a/scripts/reflow-tests/expect-nested-lists-in-vu-noreflow.adoc
+++ b/scripts/reflow-tests/expect-nested-lists-in-vu-noreflow.adoc
@@ -16,4 +16,23 @@ ifdef::VK_VERSION_1_3[]
** the value of slink:VkApplicationInfo::pname:apiVersion used to create
the slink:VkInstance parent of pname:commandBuffer is greater than or equal to Version 1.3
endif::VK_VERSION_1_3[]
+ * [[VUID-{refpage}-multisampledRenderToSingleSampled-07284]]
+ If rasterization is not disabled in the bound graphics pipeline,
+ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+ and none of the following is enabled:
+ifdef::VK_AMD_mixed_attachment_samples[]
+ ** the `apiext:VK_AMD_mixed_attachment_samples` extension
+endif::VK_AMD_mixed_attachment_samples[]
+ifdef::VK_NV_framebuffer_mixed_samples[]
+ ** the `apiext:VK_NV_framebuffer_mixed_samples` extension
+endif::VK_NV_framebuffer_mixed_samples[]
+ifdef::VK_EXT_multisampled_render_to_single_sampled[]
+ ** the <<features-multisampledRenderToSingleSampled, pname:multisampledRenderToSingleSampled>> feature
+endif::VK_EXT_multisampled_render_to_single_sampled[]
+endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+
++
+then pname:rasterizationSamples for the currently bound graphics pipeline must: be the same as the current subpass color and/or depth/stencil attachments
+ * [[VUID-{refpage}-None-10000]]
+ Some VU that follows
// Common Valid Usage
diff --git a/scripts/reflow-tests/expect-nested-lists-in-vu-novuid.adoc b/scripts/reflow-tests/expect-nested-lists-in-vu-novuid.adoc
index 5cfe0696..a59bf216 100644
--- a/scripts/reflow-tests/expect-nested-lists-in-vu-novuid.adoc
+++ b/scripts/reflow-tests/expect-nested-lists-in-vu-novuid.adoc
@@ -18,4 +18,25 @@ ifdef::VK_VERSION_1_3[]
the slink:VkInstance parent of pname:commandBuffer is greater than or
equal to Version 1.3
endif::VK_VERSION_1_3[]
+ * [[VUID-{refpage}-multisampledRenderToSingleSampled-07284]]
+ If rasterization is not disabled in the bound graphics pipeline,
+ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+ and none of the following is enabled:
+ifdef::VK_AMD_mixed_attachment_samples[]
+ ** the `apiext:VK_AMD_mixed_attachment_samples` extension
+endif::VK_AMD_mixed_attachment_samples[]
+ifdef::VK_NV_framebuffer_mixed_samples[]
+ ** the `apiext:VK_NV_framebuffer_mixed_samples` extension
+endif::VK_NV_framebuffer_mixed_samples[]
+ifdef::VK_EXT_multisampled_render_to_single_sampled[]
+ ** the <<features-multisampledRenderToSingleSampled,
+ pname:multisampledRenderToSingleSampled>> feature
+endif::VK_EXT_multisampled_render_to_single_sampled[]
+endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+
++
+then pname:rasterizationSamples for the currently bound graphics pipeline
+must: be the same as the current subpass color and/or depth/stencil
+attachments
+ * Some VU that follows
// Common Valid Usage
diff --git a/scripts/reflow-tests/src-nested-lists-in-vu.adoc b/scripts/reflow-tests/src-nested-lists-in-vu.adoc
index 74d3dc69..52c7ab19 100644
--- a/scripts/reflow-tests/src-nested-lists-in-vu.adoc
+++ b/scripts/reflow-tests/src-nested-lists-in-vu.adoc
@@ -16,4 +16,22 @@ ifdef::VK_VERSION_1_3[]
** the value of slink:VkApplicationInfo::pname:apiVersion used to create
the slink:VkInstance parent of pname:commandBuffer is greater than or equal to Version 1.3
endif::VK_VERSION_1_3[]
+ * [[VUID-{refpage}-multisampledRenderToSingleSampled-07284]]
+ If rasterization is not disabled in the bound graphics pipeline,
+ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+ and none of the following is enabled:
+ifdef::VK_AMD_mixed_attachment_samples[]
+ ** the `apiext:VK_AMD_mixed_attachment_samples` extension
+endif::VK_AMD_mixed_attachment_samples[]
+ifdef::VK_NV_framebuffer_mixed_samples[]
+ ** the `apiext:VK_NV_framebuffer_mixed_samples` extension
+endif::VK_NV_framebuffer_mixed_samples[]
+ifdef::VK_EXT_multisampled_render_to_single_sampled[]
+ ** the <<features-multisampledRenderToSingleSampled, pname:multisampledRenderToSingleSampled>> feature
+endif::VK_EXT_multisampled_render_to_single_sampled[]
+endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
+
++
+then pname:rasterizationSamples for the currently bound graphics pipeline must: be the same as the current subpass color and/or depth/stencil attachments
+ * Some VU that follows
// Common Valid Usage
diff --git a/scripts/test_reflow.py b/scripts/test_reflow.py
index 1d7ce6bb..739a32ee 100644
--- a/scripts/test_reflow.py
+++ b/scripts/test_reflow.py
@@ -361,10 +361,15 @@ def test_nested_lists_in_vu(args):
"""Test that nested lists in VU work correctly."""
run_reflow_test(args, 'nested-lists-in-vu')
match_warn_count(args, 0)
- match_vuid_dict(args, {'08971':
+ match_vuid_dict(args, {'07284':
+ [['scripts/reflow-tests/src-nested-lists-in-vu.adoc',
+ '[[VUID-{refpage}-multisampledRenderToSingleSampled-07284]]']],
+ '08971':
[['scripts/reflow-tests/src-nested-lists-in-vu.adoc',
'[[VUID-{refpage}-None-08971]]']]},
- {})
+ {'10000':
+ [['scripts/reflow-tests/src-nested-lists-in-vu.adoc',
+ '[[VUID-{refpage}-None-10000]]']]})
def test_math_block_in_vu(args):
diff --git a/style/extensions.adoc b/style/extensions.adoc
index 14513306..86cc437a 100644
--- a/style/extensions.adoc
+++ b/style/extensions.adoc
@@ -880,6 +880,10 @@ An example reservation for a disabled extension is:
<enum bitpos="6" extends="VkQueueFlagBits" name="VK_QUEUE_RESERVED_6_BIT_KHR"/>
----
+Bit position 31 may not be used, due to inconsistent behavior by C
+compilers.
+This is enforced by the generator scripts.
+
[NOTE]
.Note
====
@@ -898,7 +902,7 @@ When a 32-bit flags type is close to running out of bits, a corresponding
tlink:VkAccessFlags and tlink:VkAccessFlags2KHR types.
These flag types have corresponding 32- and 64-bit bitmask types
(elink:VkAccessFlagBits and elink:VkAccessFlagBits2KHR).
-When reserving remaining bits at bit positions 0 through 31, a similarly
+When reserving remaining bits at bit positions 0 through 30, a similarly
named bit should be reserved in both bitmask types
(ename:VK_ACCESS_MEMORY_READ_BIT and ename:VK_ACCESS_2_MEMORY_READ_BIT), to
avoid having the same bit used for different purposes in two otherwise very
@@ -1133,8 +1137,8 @@ discouraged.
====
Validation of structure types in pname:pNext chains is automatically
-generated from the registry, based on the description of attr:structextends
-in link:registry.html[the registry document].
+generated from the registry, based on the description of `structextends` in
+link:registry.html[the registry document].
[[extensions-interactions-parent]]
diff --git a/style/revisions.adoc b/style/revisions.adoc
index 84f3bd18..ec7a8392 100644
--- a/style/revisions.adoc
+++ b/style/revisions.adoc
@@ -5,6 +5,9 @@
[[revisions]]
= Revision History
+* 2023-10-05 - Mention that <<extensions-reserving-bitmask-values, bit
+ position 31>> may not be used for enumerated type bitmasks, due to
+ portability concerns.
* 2023-07-07 - Remove style guide requirement to
<<sample-writing-explicit-vu, not use nested bullet points or other
complex markup in a valid usage statement>>, which is now allowed due to
diff --git a/xml/vk.xml b/xml/vk.xml
index ad17319f..a696de6f 100644
--- a/xml/vk.xml
+++ b/xml/vk.xml
@@ -175,11 +175,11 @@ branch of the member gitlab server.
#define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type>
<type api="vulkan" category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 266</type>
+#define <name>VK_HEADER_VERSION</name> 267</type>
<type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file
#define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, VK_HEADER_VERSION)</type>
<type api="vulkansc" category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 12</type>
+#define <name>VK_HEADER_VERSION</name> 13</type>
<type api="vulkansc" category="define" requires="VKSC_API_VARIANT">// Complete version of this file
#define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, VK_HEADER_VERSION)</type>
@@ -7773,6 +7773,18 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>size_t</type> <name>descriptorOffset</name></member>
<member><type>uint32_t</type> <name>descriptorSize</name></member>
</type>
+ <type category="struct" name="VkPhysicalDeviceNestedCommandBufferFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
+ <member><type>VkBool32</type> <name>nestedCommandBuffer</name></member>
+ <member><type>VkBool32</type> <name>nestedCommandBufferRendering</name></member>
+ <member><type>VkBool32</type> <name>nestedCommandBufferSimultaneousUse</name></member>
+ </type>
+ <type category="struct" name="VkPhysicalDeviceNestedCommandBufferPropertiesEXT" structextends="VkPhysicalDeviceProperties2">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true"><type>void</type>* <name>pNext</name></member>
+ <member limittype="max"><type>uint32_t</type> <name>maxCommandBufferNestingLevel</name></member>
+ </type>
<type category="struct" name="VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
@@ -8319,7 +8331,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true" len="bufferCount">const <type>VkBuffer</type>* <name>pBuffers</name></member>
<member optional="true"><type>uint64_t</type> <name>tagName</name></member>
<member optional="true"><type>size_t</type> <name>tagSize</name></member>
- <member optional="true">const <type>void</type>* <name>pTag</name></member>
+ <member optional="true" len="tagSize">const <type>void</type>* <name>pTag</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceFrameBoundaryFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
@@ -8406,6 +8418,18 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member limittype="noauto"><type>VkRayTracingInvocationReorderModeNV</type> <name>rayTracingInvocationReorderReorderingHint</name></member>
</type>
+ <type category="struct" name="VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
+ <member><type>VkBool32</type> <name>extendedSparseAddressSpace</name></member>
+ </type>
+ <type category="struct" name="VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true"><type>void</type>* <name>pNext</name></member>
+ <member limittype="max"><type>VkDeviceSize</type> <name>extendedSparseAddressSpaceSize</name><comment>Total address space available for extended sparse allocations (bytes)</comment></member>
+ <member limittype="bitmask"><type>VkImageUsageFlags</type> <name>extendedSparseImageUsageFlags</name><comment>Bitfield of which image usages are supported for extended sparse allocations</comment></member>
+ <member limittype="bitmask"><type>VkBufferUsageFlags</type> <name>extendedSparseBufferUsageFlags</name><comment>Bitfield of which buffer usages are supported for extended sparse allocations</comment></member>
+ </type>
<type category="struct" name="VkDirectDriverLoadingInfoLUNARG">
<member values="VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
@@ -11957,7 +11981,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<proto><type>void</type> <name>vkCmdEndRenderPass</name></proto>
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
</command>
- <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary" tasks="indirection">
+ <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="indirection">
<proto><type>void</type> <name>vkCmdExecuteCommands</name></proto>
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
<param><type>uint32_t</type> <name>commandBufferCount</name></param>
@@ -14887,19 +14911,19 @@ typedef void* <name>MTLSharedEvent_id</name>;
<proto><type>VkResult</type> <name>vkSetLatencySleepModeNV</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param><type>VkLatencySleepModeInfoNV</type>* <name>pSleepModeInfo</name></param>
+ <param>const <type>VkLatencySleepModeInfoNV</type>* <name>pSleepModeInfo</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_UNKNOWN">
<proto><type>VkResult</type> <name>vkLatencySleepNV</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param><type>VkLatencySleepInfoNV</type>* <name>pSleepInfo</name></param>
+ <param>const <type>VkLatencySleepInfoNV</type>* <name>pSleepInfo</name></param>
</command>
<command>
<proto><type>void</type> <name>vkSetLatencyMarkerNV</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param><type>VkSetLatencyMarkerInfoNV</type>* <name>pLatencyMarkerInfo</name></param>
+ <param>const <type>VkSetLatencyMarkerInfoNV</type>* <name>pLatencyMarkerInfo</name></param>
</command>
<command>
<proto><type>void</type> <name>vkGetLatencyTimingsNV</name></proto>
@@ -14911,7 +14935,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<command>
<proto><type>void</type> <name>vkQueueNotifyOutOfBandNV</name></proto>
<param><type>VkQueue</type> <name>queue</name></param>
- <param><type>VkOutOfBandQueueTypeInfoNV</type> <name>pQueueTypeInfo</name></param>
+ <param>const <type>VkOutOfBandQueueTypeInfoNV</type>* <name>pQueueTypeInfo</name></param>
</command>
</commands>
@@ -19054,16 +19078,10 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum bitpos="3" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"/>
</require>
</extension>
- <extension name="VK_QCOM_extension_173" number="173" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
+ <extension name="VK_QCOM_extension_173" number="173" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_EXTENSION_173_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_173&quot;" name="VK_QCOM_EXTENSION_173_EXTENSION_NAME"/>
- <enum bitpos="18" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_RESERVED_18_BIT_QCOM"/>
- <enum bitpos="16" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_16_BIT_QCOM"/>
- <enum bitpos="17" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_17_BIT_QCOM"/>
- </require>
- <require depends="VK_KHR_maintenance5">
- <enum bitpos="18" extends="VkBufferUsageFlagBits2KHR" name="VK_BUFFER_USAGE_2_RESERVED_18_BIT_QCOM"/>
</require>
</extension>
<extension name="VK_QCOM_extension_174" number="174" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
@@ -20650,13 +20668,13 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum extends="VkAttachmentStoreOp" name="VK_ATTACHMENT_STORE_OP_NONE_QCOM" alias="VK_ATTACHMENT_STORE_OP_NONE"/>
</require>
</extension>
- <extension name="VK_QCOM_extension_303" number="303" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
+ <extension name="VK_QCOM_extension_303" number="303" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_EXTENSION_303_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_303&quot;" name="VK_QCOM_EXTENSION_303_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_QCOM_extension_304" number="304" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
+ <extension name="VK_QCOM_extension_304" number="304" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_EXTENSION_304_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_304&quot;" name="VK_QCOM_EXTENSION_304_EXTENSION_NAME"/>
@@ -20704,6 +20722,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum value="0" name="VK_QCOM_EXTENSION_310_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_310&quot;" name="VK_QCOM_EXTENSION_310_EXTENSION_NAME"/>
<enum bitpos="27" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_RESERVED_27_BIT_QCOM"/>
+ <enum bitpos="27" extends="VkBufferUsageFlagBits2KHR" name="VK_BUFFER_USAGE_2_RESERVED_27_BIT_QCOM"/>
<enum bitpos="51" extends="VkAccessFlagBits2" name="VK_ACCESS_2_RESERVED_51_BIT_QCOM"/>
<enum bitpos="52" extends="VkAccessFlagBits2" name="VK_ACCESS_2_RESERVED_52_BIT_QCOM"/>
<enum bitpos="53" extends="VkAccessFlagBits2" name="VK_ACCESS_2_RESERVED_53_BIT_QCOM"/>
@@ -22338,10 +22357,16 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum value="&quot;VK_SEC_extension_451&quot;" name="VK_SEC_EXTENSION_451_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_NV_extension_452" number="452" author="NV" contact="Piers Daniell @pdaniell-nv" supported="disabled">
+ <extension name="VK_EXT_nested_command_buffer" number="452" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
<require>
- <enum value="0" name="VK_NV_EXTENSION_452_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_452&quot;" name="VK_NV_EXTENSION_452_EXTENSION_NAME"/>
+ <enum value="1" name="VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION"/>
+ <enum value="&quot;VK_EXT_nested_command_buffer&quot;" name="VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME"/>
+ <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT"/>
+ <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT"/>
+ <enum offset="0" extends="VkSubpassContents" name="VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT"/>
+ <enum bitpos="4" extends="VkRenderingFlagBits" name="VK_RENDERING_CONTENTS_INLINE_BIT_EXT"/>
+ <type name="VkPhysicalDeviceNestedCommandBufferFeaturesEXT"/>
+ <type name="VkPhysicalDeviceNestedCommandBufferPropertiesEXT"/>
</require>
</extension>
<extension name="VK_ARM_extension_453" number="453" author="Arm" contact="Kevin Petit @kpet" supported="disabled">
@@ -23060,10 +23085,14 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum value="&quot;VK_NV_extension_492&quot;" name="VK_NV_EXTENSION_492_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_NV_extension_493" number="493" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
+ <extension name="VK_NV_extended_sparse_address_space" number="493" type="device" author="NV" contact="Russell Chou @russellcnv" supported="vulkan">
<require>
- <enum value="0" name="VK_NV_EXTENSION_493_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_493&quot;" name="VK_NV_EXTENSION_493_EXTENSION_NAME"/>
+ <enum value="1" name="VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION"/>
+ <enum value="&quot;VK_NV_extended_sparse_address_space&quot;" name="VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME"/>
+ <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV"/>
+ <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV"/>
+ <type name="VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV"/>
+ <type name="VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV"/>
</require>
</extension>
<extension name="VK_NV_extension_494" number="494" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">