diff options
author | Jon Leech <oddhack@sonic.net> | 2023-10-06 05:35:03 -0700 |
---|---|---|
committer | Jon Leech <oddhack@sonic.net> | 2023-10-06 05:35:03 -0700 |
commit | 66b95bd350a014c7a4dcdcd309206b571750deb3 (patch) | |
tree | 045324caa45dd8b48785df52496cfc214710149e | |
parent | e5dbdd580cf0696db8ed0aeb0736e0f512d9bbe1 (diff) | |
download | gfxstream-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
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 @@ -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 @@ -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=""VK_QCOM_extension_173"" 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=""VK_QCOM_extension_303"" 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=""VK_QCOM_extension_304"" 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=""VK_QCOM_extension_310"" 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=""VK_SEC_extension_451"" 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=""VK_NV_extension_452"" name="VK_NV_EXTENSION_452_EXTENSION_NAME"/> + <enum value="1" name="VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION"/> + <enum value=""VK_EXT_nested_command_buffer"" 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=""VK_NV_extension_492"" 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=""VK_NV_extension_493"" name="VK_NV_EXTENSION_493_EXTENSION_NAME"/> + <enum value="1" name="VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION"/> + <enum value=""VK_NV_extended_sparse_address_space"" 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"> |