Change log for July 7, 2018 Vulkan 1.1.80 spec update:

* Update release number to 80.

Public Issues:

  * Remove unused "`API Order`" term from glossary (public issue 657).
  * Dynamically generate the extension appendix includes based on
    information in `vk.xml`, including new metadata tags describing
    deprecated, obsoleted, and promoted extensions (public pull request
    690).

Internal Issues:

  * Add valid usage statements to flink:vkCmdBindDescriptorSets to keep
    offsets + range less than or equal to the buffer size (internal issue
    1174).

New Extensions:

  * `VK_EXT_conditional_render`
  * `VK_KHR_create_renderpass2` (public issue 736)
  * `VK_KHR_8bit_storage` (public issue 737)
This commit is contained in:
Jon Leech 2018-07-07 02:21:56 -07:00
parent 5ffcd3fa3e
commit 831e2d4525
17 changed files with 1560 additions and 20 deletions

View File

@ -107,7 +107,7 @@ VERBOSE =
# EXTRAATTRIBS sets additional attributes, if passed to make
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 79
PATCHVERSION = 80
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION)
else

View File

@ -0,0 +1,80 @@
include::meta/VK_EXT_conditional_rendering.txt[]
*Last Modified Date*::
2018-05-21
*IP Status*::
No known IP claims.
*Contributors*::
- Vikram Kushwaha, NVIDIA
- Daniel Rakos, AMD
- Jesse Hall, Google
- Jeff Bolz, NVIDIA
- Piers Daniell, NVIDIA
- Stuart Smith, Imagination Technologies
This extension allows the execution of one or more rendering commands to be
conditional on a value in buffer memory.
This may help an application reduce the latency by conditionally discarding
rendering commands without application intervention.
The conditional rendering commands are limited to draws, compute dispatches
and clearing attachments within a conditional rendering block.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkAccessFlagBits:
** ename:VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT
* Extending elink:VkBufferUsageFlagBits:
** ename:VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
* Extending elink:VkPipelineStageFlagBits:
** ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
=== New Enums
* elink:VkConditionalRenderingFlagBitsEXT
=== New Structures
* slink:VkConditionalRenderingBeginInfoEXT
* Extending slink:VkCommandBufferInheritanceInfo:
** slink:VkCommandBufferInheritanceConditionalRenderingInfoEXT
* Extending slink:VkPhysicalDeviceFeatures2:
** slink:VkPhysicalDeviceConditionalRenderingFeaturesEXT
None.
=== New Functions
* flink:vkCmdBeginConditionalRenderingEXT
* flink:vkCmdEndConditionalRenderingEXT
=== Issues
1) Should conditional rendering affect copy and blit commands?
RESOLVED: Conditional rendering should not affect copies and blits.
2) Should secondary command buffers be allowed to execute while conditional
rendering is active in the primary command buffer?
RESOLVED: The rendering commands in secondary command buffer will be
affected by an active conditional rendering in primary command buffer if the
pname:conditionalRenderingEnable is set to ename:VK_TRUE.
Conditional rendering must: not be active in the primary command buffer if
pname:conditionalRenderingEnable is ename:VK_FALSE.
=== Examples
None.
=== Version History
* Revision 1, 2018-04-19 (Vikram Kushwaha)
- First Version
* Revision 2, 2018-05-21 (Vikram Kushwaha)
- Add new pipeline stage, access flags and limit conditional rendering
to a subpass or entire renderpass.

View File

View File

@ -0,0 +1,48 @@
// Copyright (c) 2017-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
include::meta/VK_KHR_8bit_storage.txt[]
*Last Modified Date*::
2018-02-05
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- This extension requires
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_8bit_storage.html[+SPV_KHR_8bit_storage+]
*Contributors*::
- Alexander Galazin, Arm
The +VK_KHR_8bit_storage+ extension allows use of 8-bit types in uniform and
storage buffers, and push constant blocks.
This extension introduces several new optional features which map to SPIR-V
capabilities and allow access to 8-bit data in code:Block-decorated objects
in the code:Uniform and the code:StorageBuffer storage classes, and objects
in the code:PushConstant storage class.
The code:StorageBuffer8BitAccess capability must: be supported by all
implementations of this extension.
The other capabilities are optional.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR
=== New Structures
* slink:VkPhysicalDevice8BitStorageFeaturesKHR
=== New SPIR-V Capabilities
* <<spirvenv-capabilities-table-8bitstorage,code:StorageBuffer8BitAccess>>
* <<spirvenv-capabilities-table-8bitstorage,code:UniformAndStorageBuffer8BitAccess>>
* <<spirvenv-capabilities-table-8bitstorage,code:StoragePushConstant8>>
=== Issues
=== Version History
* Revision 1, 2018-02-05 (Alexander Galazin)
- Initial draft

View File

@ -0,0 +1,56 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
include::meta/VK_KHR_create_renderpass2.txt[]
Last Modified Date::
2018-02-07
Contributors::
- Tobias Hector
- Jeff Bolz
This extension provides a new entry point to create render passes in a way
that can be easily extended by other extensions through the substructures of
render pass creation.
The Vulkan 1.0 render pass creation sub-structures do not include
ptext:sType/ptext:pNext members.
Additionally, the renderpass begin/next/end commands have been augmented
with new extensible structures for passing additional subpass information.
Parameters from the <<VK_KHR_multiview>> and <<VK_KHR_maintenance2>>
extensions which previously extended slink:VkRenderPassCreateInfo are folded
into the new structures in more appropriate locations.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR
** ename:VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR
** ename:VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR
** ename:VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR
** ename:VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR
** ename:VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR
** ename:VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR
=== New Structures
* slink:VkAttachmentDescription2KHR
* slink:VkAttachmentReference2KHR
* slink:VkSubpassDescription2KHR
* slink:VkSubpassDependency2KHR
* slink:VkRenderPassCreateInfo2KHR
* slink:VkSubpassBeginInfoKHR
* slink:VkSubpassEndInfoKHR
=== New Functions
* flink:vkCreateRenderPass2KHR
* flink:vkCmdBeginRenderPass2KHR
* flink:vkCmdNextSubpass2KHR
* flink:vkCmdEndRenderPass2KHR
=== Version History
* Revision 1, 2018-02-07 (Tobias Hector)
- Internal revisions

View File

@ -44,10 +44,6 @@ Allocation Scope::
as the parent object is freed or destroyed, or during the parent
command.
API Order::
A set of ordering rules that govern how primitives in draw commands
affect the framebuffer.
Aspect (Image)::
An image may: contain multiple kinds, or aspects, of data for each
pixel, where each aspect is used in a particular way by the pipeline and

View File

@ -53,6 +53,9 @@ endif::VK_VERSION_1_1,VK_KHR_device_group[]
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
* [[spirvenv-capabilities-multiview]] code:MultiView
endif::VK_VERSION_1_1,VK_KHR_multiview[]
ifdef::VK_KHR_8bit_storage[]
* code:StorageBuffer8BitAccess
endif::VK_KHR_8bit_storage[]
If the implementation supports any of the optional: features described in
the <<features-features,Features>> chapter, then the capability operand(s)
@ -198,6 +201,12 @@ endif::VK_EXT_descriptor_indexing[]
ifdef::VK_AMD_gpu_shader_half_float[]
| code:Float16 | `<<VK_AMD_gpu_shader_half_float>>`
endif::VK_AMD_gpu_shader_half_float[]
ifdef::VK_KHR_8bit_storage[]
[[spirvenv-capabilities-table-8bitstorage]]
| code:StorageBuffer8BitAccess | <<features-features-storageBuffer8BitAccess,StorageBuffer8BitAccess>>
| code:UniformAndStorageBuffer8BitAccess | <<features-features-uniformAndStorageBuffer8BitAccess,UniformAndStorageBuffer8BitAccess>>
| code:StoragePushConstant8 | <<features-features-storagePushConstant8,StoragePushConstant8>>
endif::VK_KHR_8bit_storage[]
|====
ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
@ -255,6 +264,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the `SPV_KHR_shader_draw_parameters` SPIR-V extension.
endif::VK_VERSION_1_1,VK_KHR_shader_draw_parameters[]
ifdef::VK_KHR_8bit_storage[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the +SPV_KHR_8bit_storage+ SPIR-V extension.
endif::VK_KHR_8bit_storage[]
ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the

View File

@ -784,6 +784,48 @@ ename:VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT not set.
After the implicit reset, pname:commandBuffer is moved to the
<<commandbuffers-lifecycle, recording state>>.
ifdef::VK_EXT_conditional_rendering[]
[open,refpage='VkCommandBufferInheritanceConditionalRenderingInfoEXT',desc='Structure specifying command buffer inheritance info',type='structs']
--
If the pname:pNext chain of slink:VkCommandBufferInheritanceInfo includes a
sname:VkCommandBufferInheritanceConditionalRenderingInfoEXT structure, then
that structure controls whether a command buffer can: be executed while
conditional rendering is <<active-conditional-rendering,active>> in the
primary command buffer.
The sname:VkCommandBufferInheritanceConditionalRenderingInfoEXT structure is
defined as:
include::../api/structs/VkCommandBufferInheritanceConditionalRenderingInfoEXT.txt[]
* pname:sType is the type of this structure
* pname:pNext is `NULL` or a pointer to an extension-specific structure
* pname:conditionalRenderingEnable specifies whether the command buffer
can: be executed while conditional rendering is active in the primary
command buffer.
If this is ename:VK_TRUE, then this command buffer can: be executed
whether the primary command buffer has active conditional rendering or
not.
If this is ename:VK_FALSE, then the primary command buffer must: not
have conditional rendering active.
If this structure is not present, the behavior is as if
pname:conditionalRenderingEnable is ename:VK_FALSE.
.Valid Usage
****
* [[VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977]]
If the <<features-features-inheritedConditionalRendering, inherited
conditional rendering>> feature is not enabled,
pname:conditionalRenderingEnable must: be ename:VK_FALSE
****
include::../validity/structs/VkCommandBufferInheritanceConditionalRenderingInfoEXT.txt[]
--
endif::VK_EXT_conditional_rendering[]
Once recording starts, an application records a sequence of commands
(ftext:vkCmd*) to set state in the command buffer, draw, dispatch, and other
commands.
@ -821,6 +863,11 @@ executable state>>.
* [[VUID-vkEndCommandBuffer-commandBuffer-00061]]
All queries made <<queries-operation-active,active>> during the
recording of pname:commandBuffer must: have been made inactive
ifdef::VK_EXT_conditional_rendering[]
* [[VUID-vkEndCommandBuffer-None-01978]]
Conditional rendering must not be
<<active-conditional-rendering,active>>
endif::VK_EXT_conditional_rendering[]
ifdef::VK_EXT_debug_utils[]
* [[VUID-vkEndCommandBuffer-commandBuffer-01815]]
If pname:commandBuffer is a secondary command buffer, there must: not be

View File

@ -3213,7 +3213,7 @@ in the sets being bound.
The effective offset used for dynamic uniform and storage buffer bindings is
the sum of the relative offset taken from pname:pDynamicOffsets, and the
base address of the buffer plus base offset in the descriptor set.
The length of the dynamic uniform and storage buffer bindings is the buffer
The range of the dynamic uniform and storage buffer bindings is the buffer
range as specified in the descriptor set.
Each of the pname:pDescriptorSets must: be compatible with the pipeline
@ -3274,6 +3274,11 @@ descriptor set.
binding with type ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must:
be a multiple of
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
* [[VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979]]
For each dynamic uniform or storage buffer binding in
pname:pDescriptorSets, the sum of the effective offset, as defined
above, and the range of the binding must: be less than or equal to the
size of the buffer
****
include::../validity/protos/vkCmdBindDescriptorSets.txt[]

View File

@ -2339,3 +2339,154 @@ include::../validity/protos/vkCmdDrawIndexedIndirectCountAMD.txt[]
--
endif::VK_AMD_draw_indirect_count[]
ifdef::VK_EXT_conditional_rendering[]
[[drawing-conditional-rendering]]
== Conditional Rendering
Certain rendering commands can: be executed conditionally based on a value
in buffer memory.
These rendering commands are limited to <<drawing,drawing commands>>,
<<dispatch,dispatching commands>>, and clearing attachments with
flink:vkCmdClearAttachments within a conditional rendering block which is
defined by commands flink:vkCmdBeginConditionalRenderingEXT and
flink:vkCmdEndConditionalRenderingEXT.
Other rendering commands remain unaffected by conditional rendering.
[[active-conditional-rendering]]
After beginning conditional rendering, it is considered _active_ within the
command buffer it was called until it is ended with
flink:vkCmdEndConditionalRenderingEXT.
Conditional rendering must: begin and end in the same command buffer.
When conditional rendering is active, a primary command buffer can: execute
secondary command buffers if the
<<features-features-inheritedConditionalRendering, inherited conditional
rendering>> feature is enabled.
For a secondary command buffer to be executed while conditional rendering is
active in the primary command buffer, it must: set the
pname:conditionalRenderingEnable flag of
slink:VkCommandBufferInheritanceConditionalRenderingInfoEXT, as described in
the <<commandbuffers-recording, Command Buffer Recording>> section.
Conditional rendering must: also either begin and end inside the same
subpass of a render pass instance, or must: both begin and end outside of a
render pass instance (i.e. contain entire render pass instances).
[open,refpage='vkCmdBeginConditionalRenderingEXT',desc='Define the beginning of a conditional rendering block',type='protos']
--
To begin conditional rendering, call:
include::../api/protos/vkCmdBeginConditionalRenderingEXT.txt[]
* pname:commandBuffer is the command buffer into which this command will
be recorded.
* pname:pConditionalRenderingBegin is a pointer to an instance of the
slink:VkConditionalRenderingBeginInfoEXT structure specifying the
parameters of conditional rendering.
.Valid Usage
****
* [[VUID-vkCmdBeginConditionalRenderingEXT-None-01980]]
Conditional rendering must: not already be
<<active-conditional-rendering,active>>
****
include::../validity/protos/vkCmdBeginConditionalRenderingEXT.txt[]
--
[open,refpage='VkConditionalRenderingBeginInfoEXT',desc='Structure specifying conditional rendering begin info',type='structs']
--
The sname:VkConditionalRenderingBeginInfoEXT structure is defined as:
include::../api/structs/VkConditionalRenderingBeginInfoEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:buffer is a buffer containing the predicate for conditional
rendering.
* pname:offset is the byte offset into pname:buffer where the predicate is
located.
* pname:flags is a bitmask of elink:VkConditionalRenderingFlagsEXT
specifying the behavior of conditional rendering.
If the 32-bit value at pname:offset in pname:buffer memory is zero, then the
rendering commands are discarded, otherwise they are executed as normal.
If the value of the predicate in buffer memory changes while conditional
rendering is active, the rendering commands may: be discarded in an
implementation-dependent way.
Some implementations may latch the value of the predicate upon beginning
conditional rendering while others may read it before every rendering
command.
.Valid Usage
****
* [[VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981]]
If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* [[VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982]]
pname:buffer must: have been created with the
ename:VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT bit set
* [[VUID-VkConditionalRenderingBeginInfoEXT-offset-01983]]
pname:offset must: be less than the size of pname:buffer by at least 32
bits.
* [[VUID-VkConditionalRenderingBeginInfoEXT-offset-01984]]
pname:offset must: be a multiple of 4
****
[open,refpage='VkConditionalRenderingFlagBitsEXT',desc='Specify the behavior of conditional rendering',type='enums']
--
Bits which can: be set in
flink:vkCmdBeginConditionalRenderingEXT::pname:flags specifying the behavior
of conditional rendering are:
include::../api/enums/VkConditionalRenderingFlagBitsEXT.txt[]
* ename:VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT specifies the condition
used to determine whether to discard rendering commands or not.
That is, if the 32-bit predicate read from pname:buffer memory at
pname:offset is zero, the rendering commands are not discarded, and if
non zero, then they are discarded.
--
[open,refpage='VkConditionalRenderingFlagsEXT',desc='Bitmask of VkConditionalRenderingFlagBitsEXT',type='enums']
--
include::../api/flags/VkConditionalRenderingFlagsEXT.txt[]
sname:VkConditionalRenderingFlagsEXT is a bitmask type for setting a mask of
zero or more slink:VkConditionalRenderingFlagBitsEXT.
[open,refpage='vkCmdEndConditionalRenderingEXT',desc='Define the end of a conditional rendering block',type='protos']
--
To end conditional rendering, call:
include::../api/protos/vkCmdEndConditionalRenderingEXT.txt[]
* pname:commandBuffer is the command buffer into which this command will
be recorded.
Once ended, conditional rendering becomes inactive.
.Valid Usage
****
* [[VUID-vkCmdEndConditionalRenderingEXT-None-01985]]
Conditional rendering must: be <<active-conditional-rendering,active>>
* [[VUID-vkCmdEndConditionalRenderingEXT-None-01986]]
If conditional rendering was made
<<active-conditional-rendering,active>> outside of a render pass
instance, it must not be ended inside a render pass instance
* [[VUID-vkCmdEndConditionalRenderingEXT-None-01987]]
If conditional rendering was made
<<active-conditional-rendering,active>> within a subpass it must be
ended in the same subpass
****
include::../validity/protos/vkCmdEndConditionalRenderingEXT.txt[]
--
endif::VK_EXT_conditional_rendering[]

View File

@ -871,6 +871,54 @@ include::../validity/structs/VkPhysicalDeviceMultiviewFeatures.txt[]
endif::VK_VERSION_1_1,VK_KHR_multiview[]
ifdef::VK_KHR_8bit_storage[]
[open,refpage='VkPhysicalDevice8BitStorageFeaturesKHR',desc='Structure describing features supported by VK_KHR_8bit_storage',type='structs']
--
To query 8-bit storage features additionally supported call
flink:vkGetPhysicalDeviceFeatures2 with a
sname:VkPhysicalDevice8BitStorageFeaturesKHR structure included in the
pname:pNext chain of its pname:pFeatures parameter.
The sname:VkPhysicalDevice8BitStorageFeaturesKHR structure can: also be in
the pname:pNext chain of a slink:VkDeviceCreateInfo structure, in which case
it controls which additional features are enabled in the device.
The slink:VkPhysicalDevice8BitStorageFeaturesKHR structure is defined as:
include::../api/structs/VkPhysicalDevice8BitStorageFeaturesKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-storageBuffer8BitAccess]]
pname:storageBuffer8BitAccess indicates whether objects in the
code:StorageBuffer storage class with the code:Block decoration can:
have 8-bit integer members.
If this feature is not enabled, 8-bit integer members must: not be used
in such objects.
This also indicates whether shader modules can: declare the
code:StorageBuffer8BitAccess capability.
* [[features-features-uniformAndStorageBuffer8BitAccess]]
pname:uniformAndStorageBuffer8BitAccess indicates whether objects in
the code:Uniform storage class with the code:Block decoration and in
the code:StorageBuffer storage class with the same decoration can: have
8-bit integer members.
If this feature is not enabled, 8-bit integer members must: not be used
in such objects.
This also indicates whether shader modules can: declare the
code:UniformAndStorageBuffer8BitAccess capability.
* [[features-features-storagePushConstant8]] pname:storagePushConstant8
indicates whether objects in the code:PushConstant storage class can:
have 8-bit integer members.
If this feature is not enabled, 8-bit integer members must: not be used
in such objects.
This also indicates whether shader modules can: declare the
code:StoragePushConstant8 capability.
include::../validity/structs/VkPhysicalDevice8BitStorageFeaturesKHR.txt[]
--
endif::VK_KHR_8bit_storage[]
ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
[open,refpage='VkPhysicalDevice16BitStorageFeatures',desc='Structure describing features supported by VK_KHR_16bit_storage',type='structs']
--
@ -1021,6 +1069,36 @@ include::../validity/structs/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.t
endif::VK_EXT_blend_operation_advanced[]
ifdef::VK_EXT_conditional_rendering[]
[open,refpage='VkPhysicalDeviceConditionalRenderingFeaturesEXT',desc='Structure describing if a secondary command buffer can be executed if conditional rendering is active in the primary command buffer',type='structs']
--
The sname:VkPhysicalDeviceConditionalRenderingFeaturesEXT structure is
defined as:
include::../api/structs/VkPhysicalDeviceConditionalRenderingFeaturesEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[features-features-conditionalRendering]] pname:conditionalRendering
specifies whether conditional rendering is supported.
* [[features-features-inheritedConditionalRendering]]
pname:inheritedConditionalRendering specifies whether a secondary
command buffer can: be executed while conditional rendering is active in
the primary command buffer.
If the sname:VkPhysicalDeviceConditionalRenderingFeaturesEXT structure is
included in the pname:pNext chain of flink:VkPhysicalDeviceFeatures2, it is
filled with values indicating the implementation-dependent behavior.
sname:VkPhysicalDeviceConditionalRenderingFeaturesEXT can: also be used in
pname:pNext chain of slink:VkDeviceCreateInfo to enable the features.
include::../validity/structs/VkPhysicalDeviceConditionalRenderingFeaturesEXT.txt[]
--
endif::VK_EXT_conditional_rendering[]
ifdef::VK_VERSION_1_1[]
[open,refpage='VkPhysicalDeviceShaderDrawParameterFeatures',desc='Structure describing shader draw parameter features that can be supported by an implementation',type='structs']
--
@ -1253,6 +1331,11 @@ ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
pname:variablePointersStorageBuffer>>, if the
`<<VK_KHR_variable_pointers>>` extension is supported.
endif::VK_VERSION_1_1,VK_KHR_variable_pointers[]
ifdef::VK_KHR_8bit_storage[]
* <<features-features-StorageBuffer8BitAccess,
pname:storageBuffer8BitAccess>>, if the `<<VK_KHR_8bit_storage>>`
extension is supported.
endif::VK_KHR_8bit_storage[]
ifdef::VK_EXT_descriptor_indexing[]
* If the `<<VK_EXT_descriptor_indexing>>` extension is supported:
** <<features-features-shaderSampledImageArrayDynamicIndexing,
@ -2610,7 +2693,6 @@ include::../validity/structs/VkPhysicalDeviceProtectedMemoryProperties.txt[]
endif::VK_VERSION_1_1[]
ifdef::VK_VERSION_1_1,VK_KHR_maintenance3[]
[open,refpage='VkPhysicalDeviceMaintenance3Properties',desc='Structure describing descriptor set properties',type='structs']

View File

@ -1101,6 +1101,9 @@ layouts as follows:
If pname:srcSubpass is equal to pname:dstSubpass, pname:srcStageMask and
pname:dstStageMask must: only contain one of
ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
ifdef::VK_EXT_conditional_rendering[]
ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT,
endif::VK_EXT_conditional_rendering[]
ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
@ -1403,6 +1406,472 @@ ename:VK_IMAGE_LAYOUT_GENERAL layout.
An attachment must: not be used as both a depth/stencil attachment and a
color attachment.
ifdef::VK_KHR_create_renderpass2[]
A more extensible version of render pass creation is also defined below.
[open,refpage='vkCreateRenderPass2KHR',desc='Create a new render pass object',type='protos']
--
To create a render pass, call:
include::../api/protos/vkCreateRenderPass2KHR.txt[]
* pname:device is the logical device that creates the render pass.
* pname:pCreateInfo is a pointer to an instance of the
slink:VkRenderPassCreateInfo2KHR structure that describes the parameters
of the render pass.
* pname:pAllocator controls host memory allocation as described in the
<<memory-allocation, Memory Allocation>> chapter.
* pname:pRenderPass points to a sname:VkRenderPass handle in which the
resulting render pass object is returned.
This command is functionally identical to flink:vkCreateRenderPass, but
includes extensible sub-structures that include pname:sType and pname:pNext
parameters, allowing them to be more easily extended.
include::../validity/protos/vkCreateRenderPass2KHR.txt[]
--
[open,refpage='VkRenderPassCreateInfo2KHR',desc='Structure specifying parameters of a newly created render pass',type='structs']
--
The sname:VkRenderPassCreateInfo2KHR structure is defined as:
include::../api/structs/VkRenderPassCreateInfo2KHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is reserved for future use.
* pname:attachmentCount is the number of attachments used by this render
pass.
* pname:pAttachments points to an array of pname:attachmentCount
slink:VkAttachmentDescription2KHR structures describing the attachments
used by the render pass.
* pname:subpassCount is the number of subpasses to create.
* pname:pSubpasses points to an array of pname:subpassCount
slink:VkSubpassDescription2KHR structures describing each subpass.
* pname:dependencyCount is the number of dependencies between pairs of
subpasses.
* pname:pDependencies points to an array of pname:dependencyCount
slink:VkSubpassDependency2KHR structures describing dependencies between
pairs of subpasses.
* pname:correlatedViewMaskCount is the number of correlation masks.
* pname:pCorrelatedViewMasks is an array of view masks indicating sets of
views that may: be more efficient to render concurrently.
Parameters defined by this structure with the same name as those in
slink:VkRenderPassCreateInfo have the identical effect to those parameters;
the child structures are variants of those used in
slink:VkRenderPassCreateInfo which include pname:sType and pname:pNext
parameters, allowing them to be extended.
If the slink:VkSubpassDescription2KHR::pname:viewMask member of any element
of pname:pSubpasses is not zero, _multiview_ functionality is considered to
be enabled for this render pass.
pname:correlatedViewMaskCount and pname:pCorrelatedViewMasks have the same
effect as slink:VkRenderPassMultiviewCreateInfo::pname:correlationMaskCount
and slink:VkRenderPassMultiviewCreateInfo::pname:pCorrelationMasks,
respectively.
.Valid Usage
****
* [[VUID-VkRenderPassCreateInfo2KHR-None-03049]]
If any two subpasses operate on attachments with overlapping ranges of
the same sname:VkDeviceMemory object, and at least one subpass writes to
that area of sname:VkDeviceMemory, a subpass dependency must: be
included (either directly or via some intermediate subpasses) between
them
* [[VUID-VkRenderPassCreateInfo2KHR-attachment-03050]]
If the pname:attachment member of any element of
pname:pInputAttachments, pname:pColorAttachments,
pname:pResolveAttachments or pname:pDepthStencilAttachment, or the
attachment indexed by any element of pname:pPreserveAttachments in any
given element of pname:pSubpasses is bound to a range of a
sname:VkDeviceMemory object that overlaps with any other attachment in
any subpass (including the same subpass), the
sname:VkAttachmentDescription2KHR structures describing them must:
include ename:VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT in pname:flags
* [[VUID-VkRenderPassCreateInfo2KHR-attachment-03051]]
If the pname:attachment member of any element of
pname:pInputAttachments, pname:pColorAttachments,
pname:pResolveAttachments or pname:pDepthStencilAttachment, or any
element of pname:pPreserveAttachments in any given element of
pname:pSubpasses is not ename:VK_ATTACHMENT_UNUSED, it must: be less
than pname:attachmentCount
* [[VUID-VkRenderPassCreateInfo2KHR-pPreserveAttachments-03052]]
The value of any element of the pname:pPreserveAttachments member in any
given element of pname:pSubpasses must: not be
ename:VK_ATTACHMENT_UNUSED
* [[VUID-VkRenderPassCreateInfo2KHR-pAttachments-03053]]
For any member of pname:pAttachments with a pname:loadOp equal to
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must: not specify a pname:layout equal to
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
* [[VUID-VkRenderPassCreateInfo2KHR-pDependencies-03054]]
For any element of pname:pDependencies, if the pname:srcSubpass is not
ename:VK_SUBPASS_EXTERNAL, all stage flags included in the
pname:srcStageMask member of that dependency must: be a pipeline stage
supported by the <<synchronization-pipeline-stages-types, pipeline>>
identified by the pname:pipelineBindPoint member of the source subpass.
* [[VUID-VkRenderPassCreateInfo2KHR-pDependencies-03055]]
For any element of pname:pDependencies, if the pname:dstSubpass is not
ename:VK_SUBPASS_EXTERNAL, all stage flags included in the
pname:dstStageMask member of that dependency must: be a pipeline stage
supported by the <<synchronization-pipeline-stages-types, pipeline>>
identified by the pname:pipelineBindPoint member of the source subpass.
* [[VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-03056]]
The set of bits included in any element of pname:pCorrelatedViewMasks
must: not overlap with the set of bits included in any other element of
pname:pCorrelatedViewMasks
* [[VUID-VkRenderPassCreateInfo2KHR-viewMask-03057]]
If the slink:VkSubpassDescription2KHR::pname:viewMask member of all
elements of pname:pSubpasses is `0`, pname:correlatedViewMaskCount must:
be `0`
* [[VUID-VkRenderPassCreateInfo2KHR-viewMask-03058]]
The slink:VkSubpassDescription2KHR::pname:viewMask member of all
elements of pname:pSubpasses must: either all be `0`, or all not be `0`
* [[VUID-VkRenderPassCreateInfo2KHR-viewMask-03059]]
If the slink:VkSubpassDescription2KHR::pname:viewMask member of all
elements of pname:pSubpasses is `0`, the pname:dependencyFlags member of
any element of pname:pDependencies must: not include
ename:VK_DEPENDENCY_VIEW_LOCAL_BIT
* [[VUID-VkRenderPassCreateInfo2KHR-pDependencies-03060]]
For any element of pname:pDependencies where its pname:srcSubpass member
equals its pname:dstSubpass member, if the pname:viewMask member of the
corresponding element of pname:pSubpasses includes more than one bit,
its pname:dependencyFlags member must: include
ename:VK_DEPENDENCY_VIEW_LOCAL_BIT
****
include::../validity/structs/VkRenderPassCreateInfo2KHR.txt[]
--
[open,refpage='VkAttachmentDescription2KHR',desc='Structure specifying an attachment description',type='structs']
--
The sname:VkAttachmentDescription2KHR structure is defined as:
include::../api/structs/VkAttachmentDescription2KHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is a bitmask of elink:VkAttachmentDescription2KHRFlagBits
specifying additional properties of the attachment.
* pname:format is a elink:VkFormat value specifying the format of the
image that will be used for the attachment.
* pname:samples is the number of samples of the image as defined in
elink:VkSampleCountFlagBits.
* pname:loadOp is a elink:VkAttachmentLoadOp value specifying how the
contents of color and depth components of the attachment are treated at
the beginning of the subpass where it is first used.
* pname:storeOp is a elink:VkAttachmentStoreOp value specifying how the
contents of color and depth components of the attachment are treated at
the end of the subpass where it is last used.
* pname:stencilLoadOp is a elink:VkAttachmentLoadOp value specifying how
the contents of stencil components of the attachment are treated at the
beginning of the subpass where it is first used.
* pname:stencilStoreOp is a elink:VkAttachmentStoreOp value specifying how
the contents of stencil components of the attachment are treated at the
end of the last subpass where it is used.
* pname:initialLayout is the layout the attachment image subresource will
be in when a render pass instance begins.
* pname:finalLayout is the layout the attachment image subresource will be
transitioned to when a render pass instance ends.
Parameters defined by this structure with the same name as those in
slink:VkAttachmentDescription have the identical effect to those parameters.
.Valid Usage
****
* [[VUID-VkAttachmentDescription2KHR-finalLayout-03061]]
pname:finalLayout must: not be ename:VK_IMAGE_LAYOUT_UNDEFINED or
ename:VK_IMAGE_LAYOUT_PREINITIALIZED
****
include::../validity/structs/VkAttachmentDescription2KHR.txt[]
--
[open,refpage='VkSubpassDescription2KHR',desc='Structure specifying a subpass description',type='structs']
--
The sname:VkSubpassDescription2KHR structure is defined as:
include::../api/structs/VkSubpassDescription2KHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is a bitmask of elink:VkSubpassDescriptionFlagBits
specifying usage of the subpass.
* pname:pipelineBindPoint is a elink:VkPipelineBindPoint value specifying
the pipeline type supported for this subpass.
* pname:viewMask is a bitfield of view indices describing which views
rendering is broadcast to in this subpass, when multiview is enabled.
* pname:inputAttachmentCount is the number of input attachments.
* pname:pInputAttachments is an array of slink:VkAttachmentReference
structures defining the input attachments for this subpass and their
layouts.
* pname:colorAttachmentCount is the number of color attachments.
* pname:pColorAttachments is an array of slink:VkAttachmentReference
structures defining the color attachments for this subpass and their
layouts.
* pname:pResolveAttachments is an optional array of
pname:colorAttachmentCount slink:VkAttachmentReference structures
defining the resolve attachments for this subpass and their layouts.
* pname:pDepthStencilAttachment is a pointer to a
slink:VkAttachmentReference specifying the depth/stencil attachment for
this subpass and its layout.
* pname:preserveAttachmentCount is the number of preserved attachments.
* pname:pPreserveAttachments is an array of pname:preserveAttachmentCount
render pass attachment indices identifying attachments that are not used
by this subpass, but whose contents must: be preserved throughout the
subpass.
Parameters defined by this structure with the same name as those in
slink:VkSubpassDescription have the identical effect to those parameters.
pname:viewMask has the same effect for the described subpass as
slink:VkRenderPassMultiviewCreateInfo::pname:pViewMasks has on each
corresponding subpass.
.Valid Usage
****
* [[VUID-VkSubpassDescription2KHR-pipelineBindPoint-03062]]
pname:pipelineBindPoint must: be ename:VK_PIPELINE_BIND_POINT_GRAPHICS
* [[VUID-VkSubpassDescription2KHR-colorAttachmentCount-03063]]
pname:colorAttachmentCount must: be less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxColorAttachments
* [[VUID-VkSubpassDescription2KHR-loadOp-03064]]
If the first use of an attachment in this render pass is as an input
attachment, and the attachment is not also used as a color or
depth/stencil attachment in the same subpass, then pname:loadOp must:
not be ename:VK_ATTACHMENT_LOAD_OP_CLEAR
* [[VUID-VkSubpassDescription2KHR-pResolveAttachments-03065]]
If pname:pResolveAttachments is not `NULL`, for each resolve attachment
that does not have the value ename:VK_ATTACHMENT_UNUSED, the
corresponding color attachment must: not have the value
ename:VK_ATTACHMENT_UNUSED
* [[VUID-VkSubpassDescription2KHR-pResolveAttachments-03066]]
If pname:pResolveAttachments is not `NULL`, the sample count of each
element of pname:pColorAttachments must: be anything other than
ename:VK_SAMPLE_COUNT_1_BIT
* [[VUID-VkSubpassDescription2KHR-pResolveAttachments-03067]]
Any given element of pname:pResolveAttachments must: have a sample count
of ename:VK_SAMPLE_COUNT_1_BIT
* [[VUID-VkSubpassDescription2KHR-pResolveAttachments-03068]]
Any given element of pname:pResolveAttachments must: have the same
elink:VkFormat as its corresponding color attachment
* [[VUID-VkSubpassDescription2KHR-pColorAttachments-03069]]
All attachments in pname:pColorAttachments that are not
ename:VK_ATTACHMENT_UNUSED must: have the same sample count
ifdef::VK_AMD_mixed_attachment_samples[]
* [[VUID-VkSubpassDescription2KHR-pColorAttachments-03070]]
All attachments in pname:pColorAttachments that are not
ename:VK_ATTACHMENT_UNUSED must: have a sample count that is smaller
than or equal to the sample count of pname:pDepthStencilAttachment if it
is not ename:VK_ATTACHMENT_UNUSED
endif::VK_AMD_mixed_attachment_samples[]
ifndef::VK_AMD_mixed_attachment_samples[]
ifndef::VK_NV_framebuffer_mixed_samples[]
* [[VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-03071]]
If pname:pDepthStencilAttachment is not ename:VK_ATTACHMENT_UNUSED and
any attachments in pname:pColorAttachments are not
ename:VK_ATTACHMENT_UNUSED, they must: have the same sample count
endif::VK_NV_framebuffer_mixed_samples[]
endif::VK_AMD_mixed_attachment_samples[]
* [[VUID-VkSubpassDescription2KHR-None-03072]]
If any input attachments are ename:VK_ATTACHMENT_UNUSED, then any
pipelines bound during the subpass must: not access those input
attachments from the fragment shader
* [[VUID-VkSubpassDescription2KHR-attachment-03073]]
The pname:attachment member of any element of pname:pPreserveAttachments
must: not be ename:VK_ATTACHMENT_UNUSED
* [[VUID-VkSubpassDescription2KHR-pPreserveAttachments-03074]]
Any given element of pname:pPreserveAttachments must: not also be an
element of any other member of the subpass description
* [[VUID-VkSubpassDescription2KHR-layout-03075]]
If any attachment is used as both an input attachment and a color or
depth/stencil attachment, then each use must: use the same pname:layout
ifdef::VK_NVX_multiview_per_view_attributes[]
* [[VUID-VkSubpassDescription2KHR-flags-03076]]
If pname:flags includes
ename:VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX, it must:
also include ename:VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX.
endif::VK_NVX_multiview_per_view_attributes[]
* [[VUID-VkSubpassDescription2KHR-aspectMask-03175]]
The pname:aspectMask member of any element of pname:pInputAttachments
must: be a valid combination of elink:VkImageAspectFlagBits
* [[VUID-VkSubpassDescription2KHR-aspectMask-03176]]
The pname:aspectMask member of any element of pname:pInputAttachments
must: not be `0`
****
include::../validity/structs/VkSubpassDescription2KHR.txt[]
--
[open,refpage='VkAttachmentReference2KHR',desc='Structure specifying an attachment reference',type='structs']
--
The sname:VkAttachmentReference2KHR structure is defined as:
include::../api/structs/VkAttachmentReference2KHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:attachment is either an integer value identifying an attachment at
the corresponding index in
slink:VkRenderPassCreateInfo::pname:pAttachments, or
ename:VK_ATTACHMENT_UNUSED to signify that this attachment is not used.
* pname:layout is a elink:VkImageLayout value specifying the layout the
attachment uses during the subpass.
* pname:aspectMask is a mask of which aspect(s) can: be accessed within
the specified subpass as an input attachment.
Parameters defined by this structure with the same name as those in
slink:VkAttachmentReference have the identical effect to those parameters.
pname:aspectMask has the same effect for the described attachment as
slink:VkInputAttachmentAspectReference::pname:aspectMask has on each
corresponding attachment.
It is ignored when this structure is used to describe anything other than an
input attachment reference.
.Valid Usage
****
* [[VUID-VkAttachmentReference2KHR-layout-03077]]
pname:layout must: not be ename:VK_IMAGE_LAYOUT_UNDEFINED or
ename:VK_IMAGE_LAYOUT_PREINITIALIZED
****
include::../validity/structs/VkAttachmentReference2KHR.txt[]
--
[open,refpage='VkSubpassDependency2KHR',desc='Structure specifying a subpass dependency',type='structs']
--
The sname:VkSubpassDependency2KHR structure is defined as:
include::../api/structs/VkSubpassDependency2KHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:srcSubpass is the subpass index of the first subpass in the
dependency, or ename:VK_SUBPASS_EXTERNAL.
* pname:dstSubpass is the subpass index of the second subpass in the
dependency, or ename:VK_SUBPASS_EXTERNAL.
* pname:srcStageMask is a bitmask of elink:VkPipelineStageFlagBits
specifying the <<synchronization-pipeline-stages-masks, source stage
mask>>.
* pname:dstStageMask is a bitmask of elink:VkPipelineStageFlagBits
specifying the <<synchronization-pipeline-stages-masks, destination
stage mask>>
* pname:srcAccessMask is a bitmask of elink:VkAccessFlagBits specifying a
<<synchronization-access-masks, source access mask>>.
* pname:dstAccessMask is a bitmask of elink:VkAccessFlagBits specifying a
<<synchronization-access-masks, destination access mask>>.
* pname:dependencyFlags is a bitmask of elink:VkDependencyFlagBits.
* pname:viewOffset controls which views in the source subpass the views in
the destination subpass depend on.
Parameters defined by this structure with the same name as those in
slink:VkSubpassDependency have the identical effect to those parameters.
pname:viewOffset has the same effect for the described subpass dependency as
slink:VkRenderPassMultiviewCreateInfo::pname:pViewOffsets has on each
corresponding subpass dependency.
.Valid Usage
****
* [[VUID-VkSubpassDependency2KHR-srcSubpass-03078]]
If pname:srcSubpass is not ename:VK_SUBPASS_EXTERNAL, pname:srcStageMask
must: not include ename:VK_PIPELINE_STAGE_HOST_BIT
* [[VUID-VkSubpassDependency2KHR-dstSubpass-03079]]
If pname:dstSubpass is not ename:VK_SUBPASS_EXTERNAL, pname:dstStageMask
must: not include ename:VK_PIPELINE_STAGE_HOST_BIT
* [[VUID-VkSubpassDependency2KHR-srcStageMask-03080]]
If the <<features-features-geometryShader,geometry shaders>> feature is
not enabled, pname:srcStageMask must: not contain
ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* [[VUID-VkSubpassDependency2KHR-dstStageMask-03081]]
If the <<features-features-geometryShader,geometry shaders>> feature is
not enabled, pname:dstStageMask must: not contain
ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* [[VUID-VkSubpassDependency2KHR-srcStageMask-03082]]
If the <<features-features-tessellationShader,tessellation shaders>>
feature is not enabled, pname:srcStageMask must: not contain
ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* [[VUID-VkSubpassDependency2KHR-dstStageMask-03083]]
If the <<features-features-tessellationShader,tessellation shaders>>
feature is not enabled, pname:dstStageMask must: not contain
ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* [[VUID-VkSubpassDependency2KHR-srcSubpass-03084]]
pname:srcSubpass must: be less than or equal to pname:dstSubpass, unless
one of them is ename:VK_SUBPASS_EXTERNAL, to avoid cyclic dependencies
and ensure a valid execution order
* [[VUID-VkSubpassDependency2KHR-srcSubpass-03085]]
pname:srcSubpass and pname:dstSubpass must: not both be equal to
ename:VK_SUBPASS_EXTERNAL
* [[VUID-VkSubpassDependency2KHR-srcSubpass-03086]]
If pname:srcSubpass is equal to pname:dstSubpass, pname:srcStageMask and
pname:dstStageMask must: only contain one of
ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
ename:VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
ename:VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
ename:VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
ename:VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, or
ename:VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT
* [[VUID-VkSubpassDependency2KHR-srcSubpass-03087]]
If pname:srcSubpass is equal to pname:dstSubpass and not all of the
stages in pname:srcStageMask and pname:dstStageMask are
<<synchronization-framebuffer-regions,framebuffer-space stages>>, the
<<synchronization-pipeline-stages-order, logically latest>> pipeline
stage in pname:srcStageMask must: be
<<synchronization-pipeline-stages-order, logically earlier>> than or
equal to the <<synchronization-pipeline-stages-order, logically
earliest>> pipeline stage in pname:dstStageMask
* [[VUID-VkSubpassDependency2KHR-srcAccessMask-03088]]
Any access flag included in pname:srcAccessMask must: be supported by
one of the pipeline stages in pname:srcStageMask, as specified in the
<<synchronization-access-types-supported, table of supported access
types>>
* [[VUID-VkSubpassDependency2KHR-dstAccessMask-03089]]
Any access flag included in pname:dstAccessMask must: be supported by
one of the pipeline stages in pname:dstStageMask, as specified in the
<<synchronization-access-types-supported, table of supported access
types>>
* [[VUID-VkSubpassDependency2KHR-dependencyFlags-03090]]
If pname:dependencyFlags includes ename:VK_DEPENDENCY_VIEW_LOCAL_BIT,
pname:srcSubpass must: not be equal to ename:VK_SUBPASS_EXTERNAL
* [[VUID-VkSubpassDependency2KHR-dependencyFlags-03091]]
If pname:dependencyFlags includes ename:VK_DEPENDENCY_VIEW_LOCAL_BIT,
pname:dstSubpass must: not be equal to ename:VK_SUBPASS_EXTERNAL
* [[VUID-VkSubpassDependency2KHR-dependencyFlags-03092]]
If pname:dependencyFlags does not include
ename:VK_DEPENDENCY_VIEW_LOCAL_BIT, pname:viewOffset must: be `0`
* [[VUID-VkSubpassDependency2KHR-viewOffset-03093]]
If pname:viewOffset is not `0`, pname:srcSubpass must: not be equal to
pname:dstSubpass.
****
include::../validity/structs/VkSubpassDependency2KHR.txt[]
--
endif::VK_KHR_create_renderpass2[]
[open,refpage='vkDestroyRenderPass',desc='Destroy a render pass object',type='protos']
--
@ -1788,6 +2257,122 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
include::../validity/protos/vkCmdBeginRenderPass.txt[]
--
ifdef::VK_KHR_create_renderpass2[]
[open,refpage='vkCmdBeginRenderPass2KHR',desc='Begin a new render pass',type='protos']
--
Alternatively to begin a render pass, call:
include::../api/protos/vkCmdBeginRenderPass2KHR.txt[]
* pname:commandBuffer is the command buffer in which to record the
command.
* pname:pRenderPassBegin is a pointer to a slink:VkRenderPassBeginInfo
structure (defined below) which indicates the render pass to begin an
instance of, and the framebuffer the instance uses.
* pname:pSubpassBeginInfo is a pointer to a slink:VkSubpassBeginInfoKHR
structure which contains information about the subpass which is about to
begin rendering.
After beginning a render pass instance, the command buffer is ready to
record the commands for the first subpass of that render pass.
.Valid Usage
****
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03094]]
If any of the pname:initialLayout or pname:finalLayout member of the
sname:VkAttachmentDescription structures or the pname:layout member of
the sname:VkAttachmentReference structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
then the corresponding attachment image subresource of the framebuffer
specified in the pname:framebuffer member of pname:pRenderPassBegin
must: have been created with ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
set
// The VU below comes in an alternate version when the extension is
// enabled.
ifndef::VK_KHR_maintenance2[]
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03095]]
If any of the pname:initialLayout or pname:finalLayout member of the
sname:VkAttachmentDescription structures or the pname:layout member of
the sname:VkAttachmentReference structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
corresponding attachment image subresource of the framebuffer specified
in the pname:framebuffer member of pname:pRenderPassBegin must: have
been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
endif::VK_KHR_maintenance2[]
// The nested ifdefs are there in anticipation of the hoped-for day when the
// VU extractor and validation layers can handle VU with imbedded
// conditionals.
ifdef::VK_KHR_maintenance2[]
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03096]]
If any of the pname:initialLayout or pname:finalLayout member of the
sname:VkAttachmentDescription structures or the pname:layout member of
the sname:VkAttachmentReference structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is
// ifdef::VK_KHR_maintenance2[]
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
// endif::VK_KHR_maintenance2[]
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
corresponding attachment image subresource of the framebuffer specified
in the pname:framebuffer member of pname:pRenderPassBegin must: have
been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
endif::VK_KHR_maintenance2[]
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03097]]
If any of the pname:initialLayout or pname:finalLayout member of the
sname:VkAttachmentDescription structures or the pname:layout member of
the sname:VkAttachmentReference structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
then the corresponding attachment image subresource of the framebuffer
specified in the pname:framebuffer member of pname:pRenderPassBegin
must: have been created with ename:VK_IMAGE_USAGE_SAMPLED_BIT or
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03098]]
If any of the pname:initialLayout or pname:finalLayout member of the
sname:VkAttachmentDescription structures or the pname:layout member of
the sname:VkAttachmentReference structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
then the corresponding attachment image subresource of the framebuffer
specified in the pname:framebuffer member of pname:pRenderPassBegin
must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT set
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03099]]
If any of the pname:initialLayout or pname:finalLayout member of the
sname:VkAttachmentDescription structures or the pname:layout member of
the sname:VkAttachmentReference structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
then the corresponding attachment image subresource of the framebuffer
specified in the pname:framebuffer member of pname:pRenderPassBegin
must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT set
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03100]]
If any of the pname:initialLayout members of the
sname:VkAttachmentDescription structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is not ename:VK_IMAGE_LAYOUT_UNDEFINED, then each
such pname:initialLayout must: be equal to the current layout of the
corresponding attachment image subresource of the framebuffer specified
in the pname:framebuffer member of pname:pRenderPassBegin
* [[VUID-vkCmdBeginRenderPass2KHR-srcStageMask-03101]]
The pname:srcStageMask and pname:dstStageMask members of any element of
the pname:pDependencies member of slink:VkRenderPassCreateInfo used to
create pname:renderPass must: be supported by the capabilities of the
queue family identified by the pname:queueFamilyIndex member of the
slink:VkCommandPoolCreateInfo used to create the command pool which
pname:commandBuffer was allocated from.
****
include::../validity/protos/vkCmdBeginRenderPass2KHR.txt[]
--
endif::VK_KHR_create_renderpass2[]
[open,refpage='VkRenderPassBeginInfo',desc='Structure specifying render pass begin info',type='structs']
--
@ -1982,6 +2567,23 @@ include::../validity/structs/VkSubpassSampleLocationsEXT.txt[]
endif::VK_EXT_sample_locations[]
ifdef::VK_KHR_create_renderpass2[]
[open,refpage='VkSubpassBeginInfoKHR',desc='Structure specifying subpass begin info',type='structs']
--
The sname:VkSubpassBeginInfoKHR structure is defined as:
include::../api/structs/VkSubpassBeginInfoKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:contents is a elink:VkSubpassContents value specifying how the
commands in the next subpass will be provided.
include::../validity/structs/VkSubpassBeginInfoKHR.txt[]
--
endif::VK_KHR_create_renderpass2[]
[open,refpage='VkSubpassContents',desc='Specify how commands in the first subpass of a render pass are provided',type='enums']
--
@ -2153,6 +2755,42 @@ commands for that subpass.
include::../validity/protos/vkCmdNextSubpass.txt[]
--
ifdef::VK_KHR_create_renderpass2[]
[open,refpage='vkCmdNextSubpass2KHR',desc='Transition to the next subpass of a render pass',type='protos']
--
To transition to the next subpass in the render pass instance after
recording the commands for a subpass, call:
include::../api/protos/vkCmdNextSubpass2KHR.txt[]
* pname:commandBuffer is the command buffer in which to record the
command.
* pname:pSubpassBeginInfo is a pointer to a slink:VkSubpassBeginInfoKHR
structure which contains information about the subpass which is about to
begin rendering.
* pname:pSubpassEndInfo is a pointer to a slink:VkSubpassEndInfoKHR
structure which contains information about how the previous subpass will
be ended.
fname:vkCmdNextSubpass2KHR is semantically identical to
flink:vkCmdNextSubpass, except that it is extensible, and that
pname:contents is provided as part of an extensible structure instead of as
a flat parameter.
.Valid Usage
****
* [[VUID-vkCmdNextSubpass2KHR-None-03102]]
The current subpass index must: be less than the number of subpasses in
the render pass minus one
****
include::../validity/protos/vkCmdNextSubpass2KHR.txt[]
--
endif::VK_KHR_create_renderpass2[]
[open,refpage='vkCmdEndRenderPass',desc='End the current render pass',type='protos']
--
@ -2177,3 +2815,47 @@ the final subpass.
include::../validity/protos/vkCmdEndRenderPass.txt[]
--
ifdef::VK_KHR_create_renderpass2[]
[open,refpage='vkCmdEndRenderPass2KHR',desc='End the current render pass',type='protos']
--
To record a command to end a render pass instance after recording the
commands for the last subpass, call:
include::../api/protos/vkCmdEndRenderPass2KHR.txt[]
* pname:commandBuffer is the command buffer in which to end the current
render pass instance.
* pname:pSubpassEndInfo is a pointer to a slink:VkSubpassEndInfoKHR
structure which contains information about how the previous subpass will
be ended.
fname:vkCmdEndRenderPass2KHR is semantically identical to
flink:vkCmdEndRenderPass, except that it is extensible.
.Valid Usage
****
* [[VUID-vkCmdEndRenderPass2KHR-None-03103]]
The current subpass index must: be equal to the number of subpasses in
the render pass minus one
****
include::../validity/protos/vkCmdEndRenderPass2KHR.txt[]
--
[open,refpage='VkSubpassEndInfoKHR',desc='Structure specifying subpass end info',type='structs']
--
The sname:VkSubpassEndInfoKHR structure is defined as:
include::../api/structs/VkSubpassEndInfoKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
include::../validity/structs/VkSubpassEndInfoKHR.txt[]
--
endif::VK_KHR_create_renderpass2[]

View File

@ -298,6 +298,11 @@ ifdef::VK_NVX_device_generated_commands[]
the pipeline where device-side generation of commands via
flink:vkCmdProcessCommandsNVX is handled.
endif::VK_NVX_device_generated_commands[]
ifdef::VK_EXT_conditional_rendering[]
* ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT specifies the
stage of the pipeline where the predicate of conditional rendering is
consumed.
endif::VK_EXT_conditional_rendering[]
* ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT specifies the stage of the
pipeline where Draw/DispatchIndirect data structures are consumed.
ifdef::VK_NVX_device_generated_commands[]
@ -349,6 +354,9 @@ endif::VK_NVX_device_generated_commands[]
* ename:VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT specifies the execution of all
graphics pipeline stages, and is equivalent to the logical OR of:
** ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
ifdef::VK_EXT_conditional_rendering[]
** ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
endif::VK_EXT_conditional_rendering[]
** ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
** ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
** ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
@ -443,6 +451,9 @@ and <<devsandqueues-queues,Queues>>.
|====
|Pipeline stage flag | Required queue capability flag
|ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT | None required
ifdef::VK_EXT_conditional_rendering[]
|ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT
endif::VK_EXT_conditional_rendering[]
|ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT
|ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT | ename:VK_QUEUE_GRAPHICS_BIT
|ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | ename:VK_QUEUE_GRAPHICS_BIT
@ -537,6 +548,13 @@ guaranteed:
* ename:VK_PIPELINE_STAGE_HOST_BIT
ifdef::VK_EXT_conditional_rendering[]
For conditional rendering operations, the pipeline stage where predicate
read happens has no particular order relative to other stages.
* ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
endif::VK_EXT_conditional_rendering[]
ifdef::VK_NVX_device_generated_commands[]
For the command processing pipeline, the following stages occur in this
order:
@ -574,6 +592,10 @@ Access types that can: be set in an access mask include:
include::../api/enums/VkAccessFlagBits.txt[]
ifdef::VK_EXT_conditional_rendering[]
* ename:VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT specifies read access
to a predicate as part of conditional rendering.
endif::VK_EXT_conditional_rendering[]
* ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT specifies read access to an
indirect command structure read as part of an indirect drawing or
dispatch command.
@ -673,6 +695,9 @@ perform that type of access.
[cols="50,50",options="header"]
|====
|Access flag | Supported pipeline stages
ifdef::VK_EXT_conditional_rendering[]
|ename:VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT | ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
endif::VK_EXT_conditional_rendering[]
|ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT | ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
|ename:VK_ACCESS_INDEX_READ_BIT | ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
|ename:VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT | ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT

View File

@ -191,7 +191,10 @@ class ValidUsageToJsonTreeprocessor < Extensions::Treeprocessor
# Print out a list of VUIDs that were not extracted
if detected_vuid_list.length != 0
puts 'The following VUIDs were not successfully extracted from the spec:'
puts 'Some VUIDs were not successfully extracted from the specification.'
puts 'This is usually down to them appearing outside of a refpage (open)'
puts 'block; try checking where they are included.'
puts 'The following VUIDs were not extracted:'
detected_vuid_list.each do |vuid|
puts "\t * " + vuid
end

View File

@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
#define VK_HEADER_VERSION 79
#define VK_HEADER_VERSION 80
#define VK_NULL_HANDLE 0
@ -320,6 +320,9 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
@ -341,6 +344,13 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000,
VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001,
VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002,
VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003,
VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004,
VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005,
VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006,
VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
@ -389,6 +399,7 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004,
VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000,
VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
@ -1367,6 +1378,7 @@ typedef enum VkPipelineStageFlagBits {
VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000,
VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkPipelineStageFlagBits;
@ -1455,6 +1467,7 @@ typedef enum VkBufferUsageFlagBits {
VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkBufferUsageFlagBits;
typedef VkFlags VkBufferUsageFlags;
@ -1566,6 +1579,7 @@ typedef enum VkAccessFlagBits {
VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000,
VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
@ -5435,6 +5449,114 @@ VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
const void* pData);
#endif
#define VK_KHR_create_renderpass2 1
#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
typedef struct VkAttachmentDescription2KHR {
VkStructureType sType;
const void* pNext;
VkAttachmentDescriptionFlags flags;
VkFormat format;
VkSampleCountFlagBits samples;
VkAttachmentLoadOp loadOp;
VkAttachmentStoreOp storeOp;
VkAttachmentLoadOp stencilLoadOp;
VkAttachmentStoreOp stencilStoreOp;
VkImageLayout initialLayout;
VkImageLayout finalLayout;
} VkAttachmentDescription2KHR;
typedef struct VkAttachmentReference2KHR {
VkStructureType sType;
const void* pNext;
uint32_t attachment;
VkImageLayout layout;
VkImageAspectFlags aspectMask;
} VkAttachmentReference2KHR;
typedef struct VkSubpassDescription2KHR {
VkStructureType sType;
const void* pNext;
VkSubpassDescriptionFlags flags;
VkPipelineBindPoint pipelineBindPoint;
uint32_t viewMask;
uint32_t inputAttachmentCount;
const VkAttachmentReference2KHR* pInputAttachments;
uint32_t colorAttachmentCount;
const VkAttachmentReference2KHR* pColorAttachments;
const VkAttachmentReference2KHR* pResolveAttachments;
const VkAttachmentReference2KHR* pDepthStencilAttachment;
uint32_t preserveAttachmentCount;
const uint32_t* pPreserveAttachments;
} VkSubpassDescription2KHR;
typedef struct VkSubpassDependency2KHR {
VkStructureType sType;
const void* pNext;
uint32_t srcSubpass;
uint32_t dstSubpass;
VkPipelineStageFlags srcStageMask;
VkPipelineStageFlags dstStageMask;
VkAccessFlags srcAccessMask;
VkAccessFlags dstAccessMask;
VkDependencyFlags dependencyFlags;
int32_t viewOffset;
} VkSubpassDependency2KHR;
typedef struct VkRenderPassCreateInfo2KHR {
VkStructureType sType;
const void* pNext;
VkRenderPassCreateFlags flags;
uint32_t attachmentCount;
const VkAttachmentDescription2KHR* pAttachments;
uint32_t subpassCount;
const VkSubpassDescription2KHR* pSubpasses;
uint32_t dependencyCount;
const VkSubpassDependency2KHR* pDependencies;
uint32_t correlatedViewMaskCount;
const uint32_t* pCorrelatedViewMasks;
} VkRenderPassCreateInfo2KHR;
typedef struct VkSubpassBeginInfoKHR {
VkStructureType sType;
const void* pNext;
VkSubpassContents contents;
} VkSubpassBeginInfoKHR;
typedef struct VkSubpassEndInfoKHR {
VkStructureType sType;
const void* pNext;
} VkSubpassEndInfoKHR;
typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo);
typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
VkDevice device,
const VkRenderPassCreateInfo2KHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkRenderPass* pRenderPass);
VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
VkCommandBuffer commandBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
VkCommandBuffer commandBuffer,
const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
const VkSubpassEndInfoKHR* pSubpassEndInfo);
VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
VkCommandBuffer commandBuffer,
const VkSubpassEndInfoKHR* pSubpassEndInfo);
#endif
#define VK_KHR_shared_presentable_image 1
#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
@ -5843,6 +5965,20 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
uint32_t stride);
#endif
#define VK_KHR_8bit_storage 1
#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1
#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
typedef struct VkPhysicalDevice8BitStorageFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 storageBuffer8BitAccess;
VkBool32 uniformAndStorageBuffer8BitAccess;
VkBool32 storagePushConstant8;
} VkPhysicalDevice8BitStorageFeaturesKHR;
#define VK_EXT_debug_report 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
@ -6293,6 +6429,51 @@ typedef struct VkValidationFlagsEXT {
#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
#define VK_EXT_conditional_rendering 1
#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 1
#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering"
typedef enum VkConditionalRenderingFlagBitsEXT {
VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001,
VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
} VkConditionalRenderingFlagBitsEXT;
typedef VkFlags VkConditionalRenderingFlagsEXT;
typedef struct VkConditionalRenderingBeginInfoEXT {
VkStructureType sType;
const void* pNext;
VkBuffer buffer;
VkDeviceSize offset;
VkConditionalRenderingFlagsEXT flags;
} VkConditionalRenderingBeginInfoEXT;
typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 conditionalRendering;
VkBool32 inheritedConditionalRendering;
} VkPhysicalDeviceConditionalRenderingFeaturesEXT;
typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT {
VkStructureType sType;
const void* pNext;
VkBool32 conditionalRenderingEnable;
} VkCommandBufferInheritanceConditionalRenderingInfoEXT;
typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT(
VkCommandBuffer commandBuffer,
const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT(
VkCommandBuffer commandBuffer);
#endif
#define VK_NVX_device_generated_commands 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX)

View File

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

View File

@ -146,7 +146,7 @@ server.
<type category="define">// Vulkan 1.1 version number
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 79</type>
#define <name>VK_HEADER_VERSION</name> 80</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -305,6 +305,7 @@ server.
<type category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessengerCallbackDataFlagsEXT</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationConservativeStateCreateFlagsEXT</name>;</type>
<type requires="VkDescriptorBindingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorBindingFlagsEXT</name>;</type>
<type requires="VkConditionalRenderingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkConditionalRenderingFlagsEXT</name>;</type>
<comment>Types which can be void pointers or class pointers, selected at compile time</comment>
<type category="handle"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
@ -437,6 +438,7 @@ server.
<type name="VkDependencyFlagBits" category="enum"/>
<type name="VkObjectType" category="enum"/>
<type name="VkDescriptorBindingFlagBitsEXT" category="enum"/>
<type name="VkConditionalRenderingFlagBitsEXT" category="enum"/>
<comment>Extensions</comment>
<type name="VkIndirectCommandsLayoutUsageFlagBitsNVX" category="enum"/>
@ -2698,6 +2700,13 @@ server.
<member><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>supportsTextureGatherLODBiasAMD</name></member>
</type>
<type category="struct" name="VkConditionalRenderingBeginInfoEXT">
<member values="VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member><type>VkBuffer</type> <name>buffer</name></member>
<member><type>VkDeviceSize</type> <name>offset</name></member>
<member optional="true"><type>VkConditionalRenderingFlagsEXT</type> <name>flags</name></member>
</type>
<type category="struct" name="VkProtectedSubmitInfo" structextends="VkSubmitInfo">
<member values="VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
@ -3049,6 +3058,75 @@ server.
<member><type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>maxVariableDescriptorCount</name></member>
</type>
<type category="struct" name="VkAttachmentDescription2KHR">
<member values="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkAttachmentDescriptionFlags</type> <name>flags</name></member>
<member><type>VkFormat</type> <name>format</name></member>
<member><type>VkSampleCountFlagBits</type> <name>samples</name></member>
<member><type>VkAttachmentLoadOp</type> <name>loadOp</name><comment>Load operation for color or depth data</comment></member>
<member><type>VkAttachmentStoreOp</type> <name>storeOp</name><comment>Store operation for color or depth data</comment></member>
<member><type>VkAttachmentLoadOp</type> <name>stencilLoadOp</name><comment>Load operation for stencil data</comment></member>
<member><type>VkAttachmentStoreOp</type> <name>stencilStoreOp</name><comment>Store operation for stencil data</comment></member>
<member><type>VkImageLayout</type> <name>initialLayout</name></member>
<member><type>VkImageLayout</type> <name>finalLayout</name></member>
</type>
<type category="struct" name="VkAttachmentReference2KHR">
<member values="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>attachment</name></member>
<member><type>VkImageLayout</type> <name>layout</name></member>
<member noautovalidity="true"><type>VkImageAspectFlags</type> <name>aspectMask</name></member>
</type>
<type category="struct" name="VkSubpassDescription2KHR">
<member values="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkSubpassDescriptionFlags</type> <name>flags</name></member>
<member><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member>
<member><type>uint32_t</type> <name>viewMask</name></member>
<member optional="true"><type>uint32_t</type> <name>inputAttachmentCount</name></member>
<member len="inputAttachmentCount">const <type>VkAttachmentReference2KHR</type>* <name>pInputAttachments</name></member>
<member optional="true"><type>uint32_t</type> <name>colorAttachmentCount</name></member>
<member len="colorAttachmentCount">const <type>VkAttachmentReference2KHR</type>* <name>pColorAttachments</name></member>
<member optional="true" len="colorAttachmentCount">const <type>VkAttachmentReference2KHR</type>* <name>pResolveAttachments</name></member>
<member optional="true">const <type>VkAttachmentReference2KHR</type>* <name>pDepthStencilAttachment</name></member>
<member optional="true"><type>uint32_t</type> <name>preserveAttachmentCount</name></member>
<member len="preserveAttachmentCount">const <type>uint32_t</type>* <name>pPreserveAttachments</name></member>
</type>
<type category="struct" name="VkSubpassDependency2KHR">
<member values="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>srcSubpass</name></member>
<member><type>uint32_t</type> <name>dstSubpass</name></member>
<member><type>VkPipelineStageFlags</type> <name>srcStageMask</name></member>
<member><type>VkPipelineStageFlags</type> <name>dstStageMask</name></member>
<member optional="true"><type>VkAccessFlags</type> <name>srcAccessMask</name></member>
<member optional="true"><type>VkAccessFlags</type> <name>dstAccessMask</name></member>
<member optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></member>
<member optional="true"><type>int32_t</type> <name>viewOffset</name></member>
</type>
<type category="struct" name="VkRenderPassCreateInfo2KHR">
<member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkRenderPassCreateFlags</type> <name>flags</name></member>
<member optional="true"><type>uint32_t</type> <name>attachmentCount</name></member>
<member len="attachmentCount">const <type>VkAttachmentDescription2KHR</type>* <name>pAttachments</name></member>
<member><type>uint32_t</type> <name>subpassCount</name></member>
<member len="subpassCount">const <type>VkSubpassDescription2KHR</type>* <name>pSubpasses</name></member>
<member optional="true"><type>uint32_t</type> <name>dependencyCount</name></member>
<member len="dependencyCount">const <type>VkSubpassDependency2KHR</type>* <name>pDependencies</name></member>
<member optional="true"><type>uint32_t</type> <name>correlatedViewMaskCount</name></member>
<member len="correlatedViewMaskCount">const <type>uint32_t</type>* <name>pCorrelatedViewMasks</name></member>
</type>
<type category="struct" name="VkSubpassBeginInfoKHR">
<member values="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member><type>VkSubpassContents</type> <name>contents</name></member>
</type>
<type category="struct" name="VkSubpassEndInfoKHR">
<member values="VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
</type>
<type category="struct" name="VkVertexInputBindingDivisorDescriptionEXT">
<member><type>uint32_t</type> <name>binding</name></member>
<member><type>uint32_t</type> <name>divisor</name></member>
@ -3097,11 +3175,29 @@ server.
<member><type>VkChromaLocation</type> <name>suggestedXChromaOffset</name></member>
<member><type>VkChromaLocation</type> <name>suggestedYChromaOffset</name></member>
</type>
<type category="struct" name="VkCommandBufferInheritanceConditionalRenderingInfoEXT" structextends="VkCommandBufferInheritanceInfo">
<member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>conditionalRenderingEnable</name><comment>Whether this secondary command buffer may be executed during an active conditional rendering</comment></member>
</type>
<type category="struct" name="VkExternalFormatANDROID" structextends="VkImageCreateInfo,VkSamplerYcbcrConversionCreateInfo">
<member values="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
<member><type>void</type>* <name>pNext</name></member>
<member><type>uint64_t</type> <name>externalFormat</name></member>
</type>
<type category="struct" name="VkPhysicalDevice8BitStorageFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>storageBuffer8BitAccess</name><comment>8-bit integer variables supported in StorageBuffer</comment></member>
<member><type>VkBool32</type> <name>uniformAndStorageBuffer8BitAccess</name><comment>8-bit integer variables supported in StorageBuffer and Uniform</comment></member>
<member><type>VkBool32</type> <name>storagePushConstant8</name><comment>8-bit integer variables supported in PushConstant</comment></member>
</type>
<type category="struct" name="VkPhysicalDeviceConditionalRenderingFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>conditionalRendering</name></member>
<member><type>VkBool32</type> <name>inheritedConditionalRendering</name></member>
</type>
</types>
<comment>Vulkan enumerant (token) definitions</comment>
@ -4184,6 +4280,9 @@ server.
<enum value="0x10003" name="VK_VENDOR_ID_KAZAN" comment="Kazan Software Renderer"/>
<unused start="0x10004" comment="This is the next unused available Khronos vendor ID"/>
</enums>
<enums name="VkConditionalRenderingFlagBitsEXT" type="bitmask">
<enum bitpos="0" name="VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"/>
</enums>
<commands comment="Vulkan command definitions">
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_LAYER_NOT_PRESENT,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INCOMPATIBLE_DRIVER">
@ -5081,6 +5180,15 @@ server.
<param><type>VkQueryPool</type> <name>queryPool</name></param>
<param><type>uint32_t</type> <name>query</name></param>
</command>
<command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
<proto><type>void</type> <name>vkCmdBeginConditionalRenderingEXT</name></proto>
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
<param>const <type>VkConditionalRenderingBeginInfoEXT</type>* <name>pConditionalRenderingBegin</name></param>
</command>
<command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
<proto><type>void</type> <name>vkCmdEndConditionalRenderingEXT</name></proto>
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
</command>
<command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
<proto><type>void</type> <name>vkCmdResetQueryPool</name></proto>
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
@ -6075,6 +6183,30 @@ server.
<param><type>VkDeviceSize</type> <name>dstOffset</name></param>
<param><type>uint32_t</type> <name>marker</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
<proto><type>VkResult</type> <name>vkCreateRenderPass2KHR</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param>const <type>VkRenderPassCreateInfo2KHR</type>* <name>pCreateInfo</name></param>
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkRenderPass</type>* <name>pRenderPass</name></param>
</command>
<command queues="graphics" renderpass="outside" cmdbufferlevel="primary" pipeline="graphics">
<proto><type>void</type> <name>vkCmdBeginRenderPass2KHR</name></proto>
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
<param>const <type>VkRenderPassBeginInfo</type>* <name>pRenderPassBegin</name></param>
<param>const <type>VkSubpassBeginInfoKHR</type>* <name>pSubpassBeginInfo</name></param>
</command>
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary" pipeline="graphics">
<proto><type>void</type> <name>vkCmdNextSubpass2KHR</name></proto>
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
<param>const <type>VkSubpassBeginInfoKHR</type>* <name>pSubpassBeginInfo</name></param>
<param>const <type>VkSubpassEndInfoKHR</type>* <name>pSubpassEndInfo</name></param>
</command>
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary" pipeline="graphics">
<proto><type>void</type> <name>vkCmdEndRenderPass2KHR</name></proto>
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
<param>const <type>VkSubpassEndInfoKHR</type>* <name>pSubpassEndInfo</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR">
<proto><type>VkResult</type> <name>vkGetAndroidHardwareBufferPropertiesANDROID</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
@ -7535,10 +7667,23 @@ server.
<enum value="1" extends="VkDescriptorUpdateTemplateType" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR" comment="Create descriptor update template for pushed descriptor updates"/>
</require>
</extension>
<extension name="VK_EXT_extension_82" number="82" type="device" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="disabled">
<extension name="VK_EXT_conditional_rendering" number="82" type="device" author="NV" contact="Vikram Kushwaha @vkushwaha" supported="vulkan">
<require>
<enum value="0" name="VK_EXT_EXTENSION_82_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_82&quot;" name="VK_EXT_EXTENSION_82_EXTENSION_NAME"/>
<enum value="1" name="VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_conditional_rendering&quot;" name="VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"/>
<type name="VkConditionalRenderingFlagsEXT"/>
<type name="VkConditionalRenderingFlagBitsEXT"/>
<enum bitpos="20" extends="VkAccessFlagBits" name="VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT" comment="read access flag for reading conditional rendering predicate"/>
<enum bitpos="9" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT" comment="Specifies the buffer can be used as predicate in conditional rendering"/>
<enum bitpos="18" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT" comment="A pipeline stage for conditional rendering predicate fetch"/>
<command name="vkCmdBeginConditionalRenderingEXT"/>
<command name="vkCmdEndConditionalRenderingEXT"/>
<type name="VkConditionalRenderingBeginInfoEXT"/>
<type name="VkPhysicalDeviceConditionalRenderingFeaturesEXT"/>
<type name="VkCommandBufferInheritanceConditionalRenderingInfoEXT"/>
</require>
</extension>
<extension name="VK_KHR_extension_83" number="83" author="KHR" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
@ -7847,10 +7992,21 @@ server.
<enum value="&quot;VK_IMG_extension_109&quot;" name="VK_IMG_EXTENSION_109_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_IMG_extension_110" number="110" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
<extension name="VK_KHR_create_renderpass2" requires="VK_KHR_multiview,VK_KHR_maintenance2" number="110" contact="Tobias Hector @tobias" type="device" supported="vulkan">
<require>
<enum value="0" name="VK_IMG_EXTENSION_110_SPEC_VERSION"/>
<enum value="&quot;VK_IMG_extension_110&quot;" name="VK_IMG_EXTENSION_110_EXTENSION_NAME"/>
<enum value="1" name="VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_create_renderpass2&quot;" name="VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR"/>
<command name="vkCreateRenderPass2KHR"/>
<command name="vkCmdBeginRenderPass2KHR"/>
<command name="vkCmdNextSubpass2KHR"/>
<command name="vkCmdEndRenderPass2KHR"/>
</require>
</extension>
<extension name="VK_IMG_extension_111" number="111" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
@ -8608,10 +8764,12 @@ server.
<enum value="&quot;VK_KHR_extension_177&quot;" name="VK_KHR_EXTENSION_177_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_178" number="178" author="EXT" contact="Alexander Galazin @alegal-arm" supported="disabled">
<extension name="VK_KHR_8bit_storage" number="178" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_storage_buffer_storage_class" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan">
<require>
<enum value="0" name="VK_KHR_EXTENSION_178_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_178&quot;" name="VK_KHR_EXTENSION_178_EXTENSION_NAME"/>
<enum value="1" name="VK_KHR_8BIT_STORAGE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_8bit_storage&quot;" name="VK_KHR_8BIT_STORAGE_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR"/>
<type name="VkPhysicalDevice8BitStorageFeaturesKHR"/>
</require>
</extension>
<extension name="VK_EXT_external_memory_host" number="179" type="device" author="EXT" requires="VK_KHR_external_memory" contact="Daniel Rakos @drakos-amd" supported="vulkan">
@ -8838,5 +8996,17 @@ server.
<enum value="&quot;VK_KHR_extension_212&quot;" name="VK_KHR_EXTENSION_212_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_AMD_extension_213" number="213" author="AMD" contact="Neil Henning @sheredom" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_213_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_213&quot;" name="VK_KHR_EXTENSION_213_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_AMD_extension_214" number="214" author="AMD" contact="Neil Henning @sheredom" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_214_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_214&quot;" name="VK_KHR_EXTENSION_214_EXTENSION_NAME"/>
</require>
</extension>
</extensions>
</registry>