header: Move vk.xml to version 1.0.28
authorMark Lobodzinski <mark@lunarg.com>
Tue, 27 Sep 2016 14:25:27 +0000 (08:25 -0600)
committerMark Lobodzinski <mark@lunarg.com>
Thu, 29 Sep 2016 22:00:34 +0000 (16:00 -0600)
Change-Id: If860d6d0df348fc758f3b59429523cd5ee2db95f

vk.xml

diff --git a/vk.xml b/vk.xml
index ddf94b0..0d1cdda 100644 (file)
--- a/vk.xml
+++ b/vk.xml
@@ -104,7 +104,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
         <type category="define">// Vulkan 1.0 version number
 #define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type>    <!-- The patch version here should never be set to anything other than 0 -->
         <type category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 26</type>
+#define <name>VK_HEADER_VERSION</name> 28</type>
 
         <type category="define">
 #define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@@ -346,6 +346,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
         <type name="VkRasterizationOrderAMD" category="enum"/>
         <type name="VkExternalMemoryHandleTypeFlagBitsNV" category="enum"/>
         <type name="VkExternalMemoryFeatureFlagBitsNV" category="enum"/>
+        <type name="VkValidationCheckEXT" category="enum"/>
 
         <!-- The PFN_vk*Function types are used by VkAllocationCallbacks below -->
         <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkInternalAllocationNotification</name>)(
@@ -483,9 +484,9 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <member optional="true"><type>PFN_vkInternalAllocationNotification</type> <name>pfnInternalAllocation</name></member>
             <member optional="true"><type>PFN_vkInternalFreeNotification</type> <name>pfnInternalFree</name></member>
             <validity>
-                <usage>pname:pfnAllocation must: be a pointer to a valid user-defined PFN_vkAllocationFunction</usage>
-                <usage>pname:pfnReallocation must: be a pointer to a valid user-defined PFN_vkReallocationFunction</usage>
-                <usage>pname:pfnFree must: be a pointer to a valid user-defined PFN_vkFreeFunction</usage>
+                <usage>pname:pfnAllocation must: be a pointer to a valid user-defined tlink:PFN_vkAllocationFunction</usage>
+                <usage>pname:pfnReallocation must: be a pointer to a valid user-defined tlink:PFN_vkReallocationFunction</usage>
+                <usage>pname:pfnFree must: be a pointer to a valid user-defined tlink:PFN_vkFreeFunction</usage>
                 <usage>If either of pname:pfnInternalAllocation or pname:pfnInternalFree is not `NULL`, both must: be valid callbacks</usage>
             </validity>
         </type>
@@ -825,7 +826,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <usage>If any of pname:extent.width, pname:extent.height, or pname:extent.depth are greater than the equivalently named members of sname:VkPhysicalDeviceLimits::pname:maxImageDimension3D, pname:mipLevels must: be less than or equal to sname:VkImageFormatProperties::pname:maxMipLevels (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage, and pname:flags equal to those in this structure)</usage>
                 <usage>pname:arrayLayers must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageArrayLayers, or sname:VkImageFormatProperties::pname:maxArrayLayers (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage, and pname:flags equal to those in this structure) - whichever is higher</usage>
                 <usage>If pname:samples is not ename:VK_SAMPLE_COUNT_1_BIT, pname:imageType must: be ename:VK_IMAGE_TYPE_2D, pname:flags must: not contain ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:tiling must: be ename:VK_IMAGE_TILING_OPTIMAL, and pname:mipLevels must: be equal to `1`</usage>
-                <usage>If pname:usage includes ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, then bits other than ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT mustnot: be set</usage>
+                <usage>If pname:usage includes ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, then bits other than ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT must: not be set</usage>
                 <usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth</usage>
                 <usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight</usage>
                 <usage>pname:samples must: be a bit value that is set in sname:VkImageFormatProperties::pname:sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage, and pname:flags equal to those in this structure</usage>
@@ -923,14 +924,14 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <usage>If the &lt;&lt;features-features-sparseResidencyAliased,sparse aliased residency&gt;&gt; feature is not enabled, and if any other resources are bound to ranges of pname:memory, the range of pname:memory being bound must: not overlap with those bound ranges</usage>
                 <usage>pname:memory and pname:memoryOffset must: match the memory requirements of the calling command's pname:image, as described in section &lt;&lt;resources-association&gt;&gt;</usage>
                 <usage>pname:subresource must: be a valid image subresource for pname:image (see &lt;&lt;resources-image-views&gt;&gt;)</usage>
-                <usage>pname:offset.x must: be a multiple of the sparse image block width (sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of the image</usage>
-                <usage>pname:extent.width must: either be a multiple of the sparse image block width of the image, or else pname:extent.width + pname:offset.x must: equal the width of the image subresource</usage>
-                <usage>pname:offset.y must: be a multiple of the sparse image block height (sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of the image</usage>
-                <usage>pname:extent.height must: either be a multiple of the sparse image block height of the image, or else pname:extent.height + pname:offset.y must: equal the height of the image subresource</usage>
-                <usage>pname:offset.z must: be a multiple of the sparse image block depth (sname:VkSparseImageFormatProperties::pname:imageGranularity.depth) of the image</usage>
-                <usage>pname:extent.depth must: either be a multiple of the sparse image block depth of the image, or else pname:extent.depth + pname:offset.z must: equal the depth of the image subresource</usage>
-            </validity>
-    </type>
+                <usage>pname:offset.pname:x must: be a multiple of the sparse image block width (sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of the image</usage>
+                <usage>pname:extent.width must: either be a multiple of the sparse image block width of the image, or else pname:extent.width + pname:offset.pname:x must: equal the width of the image subresource</usage>
+                <usage>pname:offset.pname:y must: be a multiple of the sparse image block height (sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of the image</usage>
+                <usage>pname:extent.height must: either be a multiple of the sparse image block height of the image, or else pname:extent.height + pname:offset.pname:y must: equal the height of the image subresource</usage>
+                <usage>pname:offset.pname:z must: be a multiple of the sparse image block depth (sname:VkSparseImageFormatProperties::pname:imageGranularity.depth) of the image</usage>
+                <usage>pname:extent.depth must: either be a multiple of the sparse image block depth of the image, or else pname:extent.depth + pname:offset.pname:z must: equal the depth of the image subresource</usage>
+            </validity>
+        </type>
         <type category="struct" name="VkSparseBufferMemoryBindInfo">
             <member><type>VkBuffer</type> <name>buffer</name></member>
             <member><type>uint32_t</type>               <name>bindCount</name></member>
@@ -975,22 +976,22 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <usage>If either of the calling command's pname:srcImage or pname:dstImage parameters are of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of both pname:srcSubresource and pname:dstSubresource must: be `0` and `1`, respectively</usage>
                 <usage>The pname:aspectMask member of pname:srcSubresource must: specify aspects present in the calling command's pname:srcImage</usage>
                 <usage>The pname:aspectMask member of pname:dstSubresource must: specify aspects present in the calling command's pname:dstImage</usage>
-                <usage>pname:srcOffset.x and (pname:extent.width + pname:srcOffset.x) must: both be greater than or equal to `0` and less than or equal to the source image subresource width</usage>
-                <usage>pname:srcOffset.y and (pname:extent.height + pname:srcOffset.y) must: both be greater than or equal to `0` and less than or equal to the source image subresource height</usage>
-                <usage>pname:srcOffset.z and (pname:extent.depth + pname:srcOffset.z) must: both be greater than or equal to `0` and less than or equal to the source image subresource depth</usage>
-                <usage>pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must: both be greater than or equal to `0` and less than or equal to the destination image subresource width</usage>
-                <usage>pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must: both be greater than or equal to `0` and less than or equal to the destination image subresource height</usage>
-                <usage>pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth</usage>
+                <usage>pname:srcOffset.pname:x and (pname:extent.width + pname:srcOffset.pname:x) must: both be greater than or equal to `0` and less than or equal to the source image subresource width</usage>
+                <usage>pname:srcOffset.pname:y and (pname:extent.height + pname:srcOffset.pname:y) must: both be greater than or equal to `0` and less than or equal to the source image subresource height</usage>
+                <usage>pname:srcOffset.pname:z and (pname:extent.depth + pname:srcOffset.pname:z) must: both be greater than or equal to `0` and less than or equal to the source image subresource depth</usage>
+                <usage>pname:dstOffset.pname:x and (pname:extent.width + pname:dstOffset.pname:x) must: both be greater than or equal to `0` and less than or equal to the destination image subresource width</usage>
+                <usage>pname:dstOffset.pname:y and (pname:extent.height + pname:dstOffset.pname:y) must: both be greater than or equal to `0` and less than or equal to the destination image subresource height</usage>
+                <usage>pname:dstOffset.pname:z and (pname:extent.depth + pname:dstOffset.pname:z) must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth</usage>
                 <usage>If the calling command's pname:srcImage is a compressed format image:
                         ** all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block
-                        ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width
-                        ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height
-                        ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth</usage>
+                        ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.pname:x) must: equal the source image subresource width
+                        ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.pname:y) must: equal the source image subresource height
+                        ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.pname:z) must: equal the source image subresource depth</usage>
                 <usage>If the calling command's pname:dstImage is a compressed format image:
                         ** all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block
-                        ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width
-                        ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height
-                        ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth</usage>
+                        ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.pname:x) must: equal the destination image subresource width
+                        ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.pname:y) must: equal the destination image subresource height
+                        ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.pname:z) must: equal the destination image subresource depth</usage>
                 <usage>pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in &lt;&lt;devsandqueues-physical-device-enumeration,Physical Device Enumeration&gt;&gt;</usage>
             </validity>
         </type>
@@ -1006,12 +1007,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <usage>The pname:aspectMask member of pname:srcSubresource must: specify aspects present in the calling command's pname:srcImage</usage>
                 <usage>The pname:aspectMask member of pname:dstSubresource must: specify aspects present in the calling command's pname:dstImage</usage>
                 <usage>The pname:layerCount member of pname:dstSubresource must: be equal to the pname:layerCount member of pname:srcSubresource</usage>
-                <usage>pname:srcOffset[0].x and pname:srcOffset[1].x must: both be greater than or equal to `0` and less than or equal to the source image subresource width</usage>
-                <usage>pname:srcOffset[0].y and pname:srcOffset[1].y must: both be greater than or equal to `0` and less than or equal to the source image subresource height</usage>
-                <usage>pname:srcOffset[0].z and pname:srcOffset[1].z must: both be greater than or equal to `0` and less than or equal to the source image subresource depth</usage>
-                <usage>pname:dstOffset[0].x and pname:dstOffset[1].x must: both be greater than or equal to `0` and less than or equal to the destination image subresource width</usage>
-                <usage>pname:dstOffset[0].y and pname:dstOffset[1].y must: both be greater than or equal to `0` and less than or equal to the destination image subresource height</usage>
-                <usage>pname:dstOffset[0].z and pname:dstOffset[1].z must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth</usage>
+                <usage>pname:srcOffset[0].pname:x and pname:srcOffset[1].pname:x must: both be greater than or equal to `0` and less than or equal to the source image subresource width</usage>
+                <usage>pname:srcOffset[0].pname:y and pname:srcOffset[1].pname:y must: both be greater than or equal to `0` and less than or equal to the source image subresource height</usage>
+                <usage>pname:srcOffset[0].pname:z and pname:srcOffset[1].pname:z must: both be greater than or equal to `0` and less than or equal to the source image subresource depth</usage>
+                <usage>pname:dstOffset[0].pname:x and pname:dstOffset[1].pname:x must: both be greater than or equal to `0` and less than or equal to the destination image subresource width</usage>
+                <usage>pname:dstOffset[0].pname:y and pname:dstOffset[1].pname:y must: both be greater than or equal to `0` and less than or equal to the destination image subresource height</usage>
+                <usage>pname:dstOffset[0].pname:z and pname:dstOffset[1].pname:z must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth</usage>
             </validity>
         </type>
         <type category="struct" name="VkBufferImageCopy">
@@ -1026,21 +1027,22 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <usage>pname:bufferOffset must: be a multiple of `4`</usage>
                 <usage>pname:bufferRowLength must: be `0`, or greater than or equal to the pname:width member of pname:imageExtent</usage>
                 <usage>pname:bufferImageHeight must: be `0`, or greater than or equal to the pname:height member of pname:imageExtent</usage>
-                <usage>pname:imageOffset.x and (pname:imageExtent.width + pname:imageOffset.x) must: both be greater than or equal to `0` and less than or equal to the image subresource width</usage>
-                <usage>pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must: both be greater than or equal to `0` and less than or equal to the image subresource height</usage>
-                <usage>pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must: both be greater than or equal to `0` and less than or equal to the image subresource depth</usage>
+                <usage>pname:imageOffset.pname:x and (pname:imageExtent.width + pname:imageOffset.pname:x) must: both be greater than or equal to `0` and less than or equal to the image subresource width</usage>
+                <usage>pname:imageOffset.pname:y and (imageExtent.height + pname:imageOffset.pname:y) must: both be greater than or equal to `0` and less than or equal to the image subresource height</usage>
+                <usage>pname:imageOffset.pname:z and (imageExtent.depth + pname:imageOffset.pname:z) must: both be greater than or equal to `0` and less than or equal to the image subresource depth</usage>
                 <usage>If the calling command's sname:VkImage parameter is a compressed format image:
                         ** pname:bufferRowLength must: be a multiple of the compressed texel block width
                         ** pname:bufferImageHeight must: be a multiple of the compressed texel block height
                         ** all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block
                         ** pname:bufferOffset must: be a multiple of the compressed texel block size in bytes
-                        ** pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width
-                        ** pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height
-                        ** pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth</usage>
+                        ** pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.pname:x) must: equal the image subresource width
+                        ** pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.pname:y) must: equal the image subresource height
+                        ** pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.pname:z) must: equal the image subresource depth</usage>
                 <usage>pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in &lt;&lt;devsandqueues-physical-device-enumeration,Physical Device Enumeration&gt;&gt;</usage>
                 <usage>The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter</usage>
                 <usage>The pname:aspectMask member of pname:imageSubresource must: only have a single bit set</usage>
                 <usage>If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of pname:imageSubresource must: be `0` and `1`, respectively</usage>
+                <usage>When copying to the depth aspect of an image subresource, the data in the source buffer must: be in the range latexmath:[$[0,1\]$]</usage>
             </validity>
         </type>
         <type category="struct" name="VkImageResolve">
@@ -1064,7 +1066,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <validity>
                 <usage>pname:codeSize must: be greater than 0</usage>
                 <usage>pname:codeSize must: be a multiple of 4. If the +VK_NV_glsl_shader extension+ is enabled and pname:pCode references GLSL code pname:codeSize can be a multiple of 1</usage>
-                <usage>pname:pCode must: point to valid SPIR-V code, formatted and packed as described by the &lt;&lt;Khronos SPIR-V Specification&gt;&gt;. If the +VK_NV_glsl_shader+ extension is enabled pname:pCode can instead reference valid GLSL code and must: be written to the +GL_KHR_vulkan_glsl+ extension specification</usage>
+                <usage>pname:pCode must: point to valid SPIR-V code, formatted and packed as described by the &lt;&lt;spirv-spec,Khronos SPIR-V Specification&gt;&gt;. If the +VK_NV_glsl_shader+ extension is enabled pname:pCode can instead reference valid GLSL code and must: be written to the +GL_KHR_vulkan_glsl+ extension specification</usage>
                 <usage>pname:pCode must: adhere to the validation rules described by the &lt;&lt;spirvenv-module-validation, Validation Rules within a Module&gt;&gt; section of the &lt;&lt;spirvenv-capabilities,SPIR-V Environment&gt;&gt; appendix. If the +VK_NV_glsl_shader+ extension is enabled pname:pCode can be valid GLSL code with respect to the +GL_KHR_vulkan_glsl+ GLSL extension specification</usage>
                 <usage>pname:pCode must: declare the code:Shader capability for SPIR-V code</usage>
                 <usage>pname:pCode must: not declare any capability that is not supported by the API, as described by the &lt;&lt;spirvenv-module-validation, Capabilities&gt;&gt; section of the &lt;&lt;spirvenv-capabilities,SPIR-V Environment&gt;&gt; appendix</usage>
@@ -1123,7 +1125,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <member><type>uint32_t</type>               <name>offset</name></member>                         <!-- Offset of the value in the data block -->
             <member><type>size_t</type>                 <name>size</name></member>                           <!-- Size in bytes of the SpecConstant -->
             <validity>
-                <usage>For a pname:constantID specialization constant declared in a shader, pname:size must: match the byte size of the pname:constantID. If the specialization constant is of type code:boolean, pname:size must: be the byte size of VkBool32</usage>
+                <usage>For a pname:constantID specialization constant declared in a shader, pname:size must: match the byte size of the pname:constantID. If the specialization constant is of type code:boolean, pname:size must: be the byte size of basetype:VkBool32</usage>
             </validity>
         </type>
         <type category="struct" name="VkSpecializationInfo">
@@ -1403,8 +1405,8 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <usage>If pname:subpass uses a depth/stencil attachment in pname:renderpass that has a layout of ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the sname:VkAttachmentReference defined by pname:subpass, and pname:pDepthStencilState is not `NULL`, the pname:failOp, pname:passOp and pname:depthFailOp members of each of the pname:front and pname:back members of pname:pDepthStencilState must: be ename:VK_STENCIL_OP_KEEP</usage>
                 <usage>If pname:pColorBlendState is not `NULL`, the pname:blendEnable member of each element of the pname:pAttachment member of pname:pColorBlendState must: be ename:VK_FALSE if the pname:format of the attachment referred to in pname:subpass of pname:renderPass does not support color blend operations, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures or sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
                 <usage>If pname:pColorBlendState is not `NULL`, The pname:attachmentCount member of pname:pColorBlendState must: be equal to the pname:colorAttachmentCount used to create pname:subpass</usage>
-                <usage>If no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_VIEWPORT, the pname:pViewports member of pname:pViewportState must: be a pointer to an array of pname:pViewportState->viewportCount sname:VkViewport structures</usage>
-                <usage>If no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_SCISSOR, the pname:pScissors member of pname:pViewportState must: be a pointer to an array of pname:pViewportState->scissorCount sname:VkRect2D structures</usage>
+                <usage>If no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_VIEWPORT, the pname:pViewports member of pname:pViewportState must: be a pointer to an array of pname:pViewportState::pname:viewportCount sname:VkViewport structures</usage>
+                <usage>If no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_SCISSOR, the pname:pScissors member of pname:pViewportState must: be a pointer to an array of pname:pViewportState::pname:scissorCount sname:VkRect2D structures</usage>
                 <usage>If the wide lines feature is not enabled, and no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_LINE_WIDTH, the pname:lineWidth member of pname:pRasterizationState must: be `1.0`</usage>
                 <usage>If the pname:rasterizerDiscardEnable member of pname:pRasterizationState is ename:VK_FALSE, pname:pViewportState must: be a pointer to a valid sname:VkPipelineViewportStateCreateInfo structure</usage>
                 <usage>If the pname:rasterizerDiscardEnable member of pname:pRasterizationState is ename:VK_FALSE, pname:pMultisampleState must: be a pointer to a valid sname:VkPipelineMultisampleStateCreateInfo structure</usage>
@@ -1455,6 +1457,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <usage>The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER and ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorStorageBuffers</usage>
                 <usage>The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, and ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorSampledImages</usage>
                 <usage>The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, and ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorStorageImages</usage>
+                <usage>Any two elements of pname:pPushConstantRanges must: not include the same stage in pname:stageFlags</usage>
             </validity>
         </type>
         <type category="struct" name="VkSamplerCreateInfo">
@@ -1499,8 +1502,8 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <validity>
                 <usage>pname:queueFamilyIndex must: be the index of a queue family available in the calling command's pname:device parameter</usage>
             </validity>
-         </type>
-         <type category="struct" name="VkCommandBufferAllocateInfo">
+        </type>
+        <type category="struct" name="VkCommandBufferAllocateInfo">
             <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
             <member>const <type>void</type>*            <name>pNext</name></member>                          <!-- Pointer to next structure -->
             <member><type>VkCommandPool</type>          <name>commandPool</name></member>
@@ -1556,6 +1559,9 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
         <type category="struct" name="VkClearDepthStencilValue">
             <member><type>float</type>                  <name>depth</name></member>
             <member><type>uint32_t</type>               <name>stencil</name></member>
+            <validity>
+                <usage>pname:depth must: be between `0.0` and `1.0`, inclusive</usage>
+            </validity>
         </type>
         <type category="union" name="VkClearValue" comment="// Union allowing specification of color or depth and stencil values. Actual value selected is based on attachment being cleared.">
             <member><type>VkClearColorValue</type>      <name>color</name></member>
@@ -1604,7 +1610,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <member len="preserveAttachmentCount">const <type>uint32_t</type>* <name>pPreserveAttachments</name></member>
             <validity>
                 <usage>pname:pipelineBindPoint must: be ename:VK_PIPELINE_BIND_POINT_GRAPHICS</usage>
-                <usage>pname:colorCount must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxColorAttachments</usage>
+                <usage>pname:colorAttachmentCount must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxColorAttachments</usage>
                 <usage>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</usage>
                 <usage>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</usage>
                 <usage>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</usage>
@@ -2117,7 +2123,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <usage>The native window referred to by pname:surface must: not already be associated with a swapchain other than pname:oldSwapchain, or with a non-Vulkan graphics API surface</usage>
                 <usage>pname:minImageCount must: be greater than or equal to the value returned in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface</usage>
                 <usage>pname:minImageCount must: be less than or equal to the value returned in the pname:maxImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface if the returned pname:maxImageCount is not zero</usage>
-                <usage>pname:imageFormat and pname:imageColorspace must: match the pname:format and pname:colorSpace members, respectively, of one of the sname:VkSurfaceFormatKHR structures returned by fname:vkGetPhysicalDeviceSurfaceFormatsKHR for the surface</usage>
+                <usage>pname:imageFormat and pname:imageColorSpace must: match the pname:format and pname:colorSpace members, respectively, of one of the sname:VkSurfaceFormatKHR structures returned by fname:vkGetPhysicalDeviceSurfaceFormatsKHR for the surface</usage>
                 <usage>pname:imageExtent must: be between pname:minImageExtent and pname:maxImageExtent, inclusive, where pname:minImageExtent and pname:maxImageExtent are members of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface</usage>
                 <usage>pname:imageArrayLayers must: be greater than `0` and less than or equal to the pname:maxImageArrayLayers member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface</usage>
                 <usage>pname:imageUsage must: be a subset of the supported usage flags present in the pname:supportedUsageFlags member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface</usage>
@@ -2149,6 +2155,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <member><type>PFN_vkDebugReportCallbackEXT</type>     <name>pfnCallback</name></member>              <!-- Function pointer of a callback function-->
             <member optional="true"><type>void</type>*            <name>pUserData</name></member>                <!-- User data provided to callback function -->
         </type>
+        <type category="struct" name="VkValidationFlagsEXT">
+            <member><type>VkStructureType</type>                  <name>sType</name></member>                    <!-- Must be VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT -->
+            <member>const <type>void</type>*                      <name>pNext</name></member>                    <!-- Pointer to next structure -->
+            <member><type>uint32_t</type>                         <name>disabledValidationCheckCount</name></member>   <!-- Number of validation checks to disable -->
+            <member len="disabledValidationCheckCount"><type>VkValidationCheckEXT</type>* <name>pDisabledValidationChecks</name></member>   <!-- Validation checks to disable -->
+        </type>
         <type category="struct" name="VkPipelineRasterizationStateRasterizationOrderAMD">
             <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"><type>VkStructureType</type> <name>sType</name></member>
             <member>const <type>void</type>*                      <name>pNext</name></member>                    <!-- Pointer to next structure -->
@@ -2236,13 +2248,13 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
         <type category="struct" name="VkWin32KeyedMutexAcquireReleaseInfoNV">
             <member values="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
             <member>const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>acquireCount</name></member>
-            <member>const <type>VkDeviceMemory</type>*            <name>pAcquireSyncs</name></member>
-            <member>const <type>uint64_t</type>*                  <name>pAcquireKeys</name></member>
-            <member>const <type>uint32_t</type>*                  <name>pAcquireTimeoutMilliseconds</name></member>
-            <member><type>uint32_t</type>                         <name>releaseCount</name></member>
-            <member>const <type>VkDeviceMemory</type>*            <name>pReleaseSyncs</name></member>
-            <member>const <type>uint64_t</type>*                  <name>pReleaseKeys</name></member>
+            <member optional="true"><type>uint32_t</type>                         <name>acquireCount</name></member>
+            <member len="acquireCount">const <type>VkDeviceMemory</type>*            <name>pAcquireSyncs</name></member>
+            <member len="acquireCount">const <type>uint64_t</type>*                  <name>pAcquireKeys</name></member>
+            <member len="acquireCount">const <type>uint32_t</type>*                  <name>pAcquireTimeoutMilliseconds</name></member>
+            <member optional="true"><type>uint32_t</type>                         <name>releaseCount</name></member>
+            <member len="releaseCount">const <type>VkDeviceMemory</type>*            <name>pReleaseSyncs</name></member>
+            <member len="releaseCount">const <type>uint64_t</type>*                  <name>pReleaseKeys</name></member>
         </type>
     </types>
 
@@ -2356,7 +2368,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
         <enum value="1"     name="VK_PIPELINE_BIND_POINT_COMPUTE"/>
     </enums>
     <enums name="VkPipelineCacheHeaderVersion" type="enum">
-       <enum value="1"     name="VK_PIPELINE_CACHE_HEADER_VERSION_ONE"/>
+        <enum value="1"     name="VK_PIPELINE_CACHE_HEADER_VERSION_ONE"/>
     </enums>
     <enums name="VkPrimitiveTopology" type="enum">
         <enum value="0"     name="VK_PRIMITIVE_TOPOLOGY_POINT_LIST"/>
@@ -3064,6 +3076,10 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
         <enum bitpos="1" name="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"/>
         <enum bitpos="2" name="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"/>
     </enums>
+    <enums name="VkValidationCheckEXT" type="enum">
+        <enum value="0" name="VK_VALIDATION_CHECK_ALL_EXT"/>
+        <!-- Placeholder for validation enums to be defined for VK_EXT_Validation_flags extension -->
+    </enums>
 
     <!-- SECTION: Vulkan command definitions -->
     <commands>
@@ -3748,8 +3764,8 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
         <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FRAGMENTED_POOL">
             <proto><type>VkResult</type> <name>vkAllocateDescriptorSets</name></proto>
             <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="pAllocateInfo->descriptorPool">const <type>VkDescriptorSetAllocateInfo</type>* <name>pAllocateInfo</name></param>
-            <param len="pAllocateInfo->descriptorSetCount"><type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param>
+            <param externsync="pAllocateInfo::descriptorPool">const <type>VkDescriptorSetAllocateInfo</type>* <name>pAllocateInfo</name></param>
+            <param len="pAllocateInfo::descriptorSetCount"><type>VkDescriptorSet</type>* <name>pDescriptorSets</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>vkFreeDescriptorSets</name></proto>
@@ -3844,8 +3860,8 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
         <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
             <proto><type>VkResult</type> <name>vkAllocateCommandBuffers</name></proto>
             <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="pAllocateInfo->commandPool">const <type>VkCommandBufferAllocateInfo</type>* <name>pAllocateInfo</name></param>
-            <param len="pAllocateInfo->commandBufferCount"><type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param>
+            <param externsync="pAllocateInfo::commandPool">const <type>VkCommandBufferAllocateInfo</type>* <name>pAllocateInfo</name></param>
+            <param len="pAllocateInfo::commandBufferCount"><type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param>
         </command>
         <command>
             <proto><type>void</type> <name>vkFreeCommandBuffers</name></proto>
@@ -3855,7 +3871,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <param noautovalidity="true" externsync="true" len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param>
             <validity>
                 <usage>All elements of pname:pCommandBuffers must: not be pending execution</usage>
-                <usage>pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount sname:VkCommandBuffer handles, each element of which must: either be a valid handle or dlink:VK_NULL_HANDLE</usage>
+                <usage>pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount sname:VkCommandBuffer handles, each element of which must: either be a valid handle or code:NULL</usage>
             </validity>
         </command>
         <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
@@ -3925,8 +3941,8 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <usage>pname:firstScissor must: be less than sname:VkPhysicalDeviceLimits::pname:maxViewports</usage>
                 <usage>The sum of pname:firstScissor and pname:scissorCount must: be between `1` and sname:VkPhysicalDeviceLimits::pname:maxViewports, inclusive</usage>
                 <usage>The pname:x and pname:y members of pname:offset must: be greater than or equal to `0`</usage>
-                <usage>Evaluation of (pname:offset.x + pname:extent.width) must: not cause a signed integer addition overflow</usage>
-                <usage>Evaluation of (pname:offset.y + pname:extent.height) must: not cause a signed integer addition overflow</usage>
+                <usage>Evaluation of (pname:offset.pname:x + pname:extent.width) must: not cause a signed integer addition overflow</usage>
+                <usage>Evaluation of (pname:offset.pname:y + pname:extent.height) must: not cause a signed integer addition overflow</usage>
             </validity>
         </command>
         <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
@@ -4864,8 +4880,8 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <param externsync="true"><type>VkDebugReportCallbackEXT</type> <name>callback</name></param>
             <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
             <validity>
-               <usage>If sname:VkAllocationCallbacks were provided when pname:instance was created, a compatible set of callbacks must: be provided here</usage>
-               <usage>If no sname:VkAllocationCallbacks were provided when pname:instance was created, pname:pAllocator must: be `NULL`</usage>
+                <usage>If sname:VkAllocationCallbacks were provided when pname:instance was created, a compatible set of callbacks must: be provided here</usage>
+                <usage>If no sname:VkAllocationCallbacks were provided when pname:instance was created, pname:pAllocator must: be `NULL`</usage>
             </validity>
         </command>
         <command>
@@ -4879,12 +4895,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <param>const <type>char</type>* <name>pLayerPrefix</name></param>
             <param>const <type>char</type>* <name>pMessage</name></param>
             <validity>
-               <usage>pname:instance must: be a valid sname:VkInstance handle</usage>
-               <usage>pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage>
-               <usage>pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage>
-               <usage>pname:object may: be a Vulkan object</usage>
-               <usage>pname:pLayerPrefix must: be a `NULL` terminated string</usage>
-               <usage>pname:pMsg must: be a `NULL` terminated string</usage>
+                <usage>pname:instance must: be a valid sname:VkInstance handle</usage>
+                <usage>pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage>
+                <usage>pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage>
+                <usage>pname:object may: be a Vulkan object</usage>
+                <usage>pname:pLayerPrefix must: be a `NULL` terminated string</usage>
+                <usage>pname:pMsg must: be a `NULL` terminated string</usage>
             </validity>
         </command>
         <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
@@ -4892,7 +4908,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <param><type>VkDevice</type> <name>device</name></param>
             <param externsync="pNameInfo.object"><type>VkDebugMarkerObjectNameInfoEXT</type>* <name>pNameInfo</name></param>
             <validity>
-               <usage>pname:pNameInfo.object must: be a Vulkan object</usage>
+                <usage>pname:pNameInfo.object must: be a Vulkan object</usage>
             </validity>
         </command>
         <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
@@ -4900,8 +4916,8 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
             <param><type>VkDevice</type> <name>device</name></param>
             <param externsync="pTagInfo.object"><type>VkDebugMarkerObjectTagInfoEXT</type>* <name>pTagInfo</name></param>
             <validity>
-               <usage>pname:pTagInfo.object must: be a Vulkan object</usage>
-               <usage>pname:pTagInfo.tagName must: not be `0`</usage>
+                <usage>pname:pTagInfo.object must: be a Vulkan object</usage>
+                <usage>pname:pTagInfo.tagName must: not be `0`</usage>
             </validity>
         </command>
         <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
@@ -5306,7 +5322,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <enum offset="1" dir="-" extends="VkResult"             name="VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"/>
                 <type name="VkDisplayPresentInfoKHR"/>
                 <command name="vkCreateSharedSwapchainsKHR"/>
-                <usage command="vkQueuePresentKHR">If more than one member of 'pSwapchains' was created from a display surface, all display surfaces referenced that refer to the same display must: use the same display mode</usage>
+                <usage command="vkQueuePresentKHR">If more than one member of pname:pSwapchains was created from a display surface, all display surfaces referenced that refer to the same display must: use the same display mode</usage>
             </require>
         </extension>
         <extension name="VK_KHR_xlib_surface" number="5" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_XLIB_KHR" supported="vulkan">
@@ -5381,7 +5397,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <enum value="&quot;VK_ANDROID_native_buffer&quot;"      name="VK_ANDROID_NATIVE_BUFFER_NAME"/>
             </require>
         </extension>
-        <extension name="VK_EXT_debug_report" number="12" author="Google, Inc." contact="Courtney Goeltzenleuchter @courtney" supported="vulkan">
+        <extension name="VK_EXT_debug_report" number="12" type="instance" author="Google, Inc." contact="Courtney Goeltzenleuchter @courtney" supported="vulkan">
             <require>
                 <enum value="3"                                         name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/>
                 <enum value="&quot;VK_EXT_debug_report&quot;"           name="VK_EXT_DEBUG_REPORT_EXTENSION_NAME"/>
@@ -5567,8 +5583,8 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
         </extension>
         <extension name="VK_AMD_draw_indirect_count" number="34" type="device" author="AMD" contact="Daniel Rakos @aqnuep" supported="vulkan">
             <require>
-                <enum value="1"                                         name="VK_AMD_EXTENSION_DRAW_INDIRECT_COUNT_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_draw_indirect_count&quot;"    name="VK_AMD_EXTENSION_DRAW_INDIRECT_COUNT_EXTENSION_NAME"/>
+                <enum value="1"                                         name="VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION"/>
+                <enum value="&quot;VK_AMD_draw_indirect_count&quot;"    name="VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME"/>
                 <command name="vkCmdDrawIndirectCountAMD"/>
                 <command name="vkCmdDrawIndexedIndirectCountAMD"/>
             </require>
@@ -5579,22 +5595,23 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <enum value="&quot;VK_AMD_extension_35&quot;"           name="VK_AMD_EXTENSION_35_EXTENSION_NAME"/>
             </require>
         </extension>
-        <extension name="VK_AMD_extension_36" number="36" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+        <extension name="VK_AMD_negative_viewport_height" number="36" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
             <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_36_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_36&quot;"           name="VK_AMD_EXTENSION_36_EXTENSION_NAME"/>
+                <enum value="0"                                         name="VK_AMD_EXTENSION_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION"/>
+                <enum value="&quot;VK_AMD_negative_viewport_height&quot;"           name="VK_AMD_EXTENSION_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME"/>
+                <usage struct="VkViewport">If the +VK_AMD_negative_viewport_height+ extension is enabled, pname:height can: also be negative</usage>
             </require>
         </extension>
-        <extension name="VK_AMD_extension_37" number="37" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+        <extension name="VK_AMD_gpu_shader_half_float" number="37" author="AMD" contact="Dominik Witczak @dominikwitczak_amd" supported="vulkan">
             <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_37_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_37&quot;"           name="VK_AMD_EXTENSION_37_EXTENSION_NAME"/>
+                <enum value="1"                                         name="VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION"/>
+                <enum value="&quot;VK_AMD_gpu_shader_half_float&quot;"  name="VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME"/>
             </require>
         </extension>
-        <extension name="VK_AMD_extension_38" number="38" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+        <extension name="VK_AMD_shader_ballot" number="38" author="AMD" contact="Dominik Witczak @dominikwitczak_amd" supported="vulkan">
             <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_38_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_38&quot;"           name="VK_AMD_EXTENSION_38_EXTENSION_NAME"/>
+                <enum value="0"                                         name="VK_AMD_EXTENSION_SHADER_BALLOT_SPEC_VERSION"/>
+                <enum value="&quot;VK_AMD_shader_ballot&quot;"          name="VK_AMD_EXTENSION_SHADER_BALLOT_EXTENSION_NAME"/>
             </require>
         </extension>
         <extension name="VK_AMD_extension_39" number="39" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
@@ -5693,7 +5710,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <enum value="&quot;VK_NV_extension_54&quot;"            name="VK_NV_EXTENSION_54_EXTENSION_NAME"/>
             </require>
         </extension>
-        <extension name="VK_IMG_format_pvrtc" number="55" author="IMG" contact="Tobias Hector @tobias" supported="vulkan">
+        <extension name="VK_IMG_format_pvrtc" number="55" type="device" author="IMG" contact="Tobias Hector @tobias" supported="vulkan">
             <require>
                 <enum value="1"                                         name="VK_IMG_FORMAT_PVRTC_SPEC_VERSION"/>
                 <enum value="&quot;VK_IMG_format_pvrtc&quot;"           name="VK_IMG_FORMAT_PVRTC_EXTENSION_NAME"/>
@@ -5760,5 +5777,49 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
                 <enum value="&quot;VK_KHR_extension_61&quot;"           name="VK_KHR_EXTENSION_61_EXTENSION_NAME"/>
             </require>
         </extension>
+        <extension name="VK_EXT_validation_flags" number="62" type="instance" author="Google, Inc." contact="Tobin Ehlis @tobine" supported="vulkan">
+            <require>
+                <enum value="1"                                         name="VK_EXT_VALIDATION_FLAGS_SPEC_VERSION"/>
+                <enum value="&quot;VK_EXT_validation_flags&quot;"           name="VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME"/>
+                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"/>
+                <type name="VkValidationFlagsEXT"/>
+            </require>
+        </extension>
+        <extension name="VK_NV_extension_63" number="63" author="NVIDIA" contact="Mathias Heyer @mheyer" supported="disabled">
+            <require>
+                <enum value="0"                                         name="VK_NV_EXTENSION_63_SPEC_VERSION"/>
+                <enum value="&quot;VK_NV_extension_63&quot;"            name="VK_NV_EXTENSION_63_EXTENSION_NAME"/>
+            </require>
+        </extension>
+        <extension name="VK_KHR_extension_64" number="64" author="KHR" contact="Daniel Koch @dgkoch" supported="disabled">
+            <require>
+                <enum value="0"                                         name="VK_KHR_EXTENSION_64_SPEC_VERSION"/>
+                <enum value="&quot;VK_KHR_extension_64&quot;"           name="VK_KHR_EXTENSION_64_EXTENSION_NAME"/>
+            </require>
+        </extension>
+        <extension name="VK_NV_extension_65" number="65" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
+            <require>
+                <enum value="0"                                         name="VK_NV_EXTENSION_65_SPEC_VERSION"/>
+                <enum value="&quot;VK_NV_extension_65&quot;"            name="VK_NV_EXTENSION_65_EXTENSION_NAME"/>
+            </require>
+        </extension>
+        <extension name="VK_NV_extension_66" number="66" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
+            <require>
+                <enum value="0"                                         name="VK_NV_EXTENSION_66_SPEC_VERSION"/>
+                <enum value="&quot;VK_NV_extension_66&quot;"            name="VK_NV_EXTENSION_66_EXTENSION_NAME"/>
+            </require>
+        </extension>
+        <extension name="VK_ARM_extension_01" number="67" type="device" author="ARM" contact="Jan-Harald Fredriksen @janharald" supported="disabled">
+            <require>
+                <enum value="0"                                         name="VK_ARM_EXTENSION_01_SPEC_VERSION"/>
+                <enum value="&quot;VK_ARM_extension_01&quot;"           name="VK_ARM_EXTENSION_01_EXTENSION_NAME"/>
+            </require>
+        </extension>
+        <extension name="VK_ARM_extension_02" number="68" type="device" author="ARM" contact="Jan-Harald Fredriksen @janharald" supported="disabled">
+            <require>
+                <enum value="0"                                         name="VK_ARM_EXTENSION_02_SPEC_VERSION"/>
+                <enum value="&quot;VK_ARM_extension_02&quot;"           name="VK_ARM_EXTENSION_02_EXTENSION_NAME"/>
+            </require>
+        </extension>
     </extensions>
 </registry>