Snap for 12406339 from ced277e4f70c91dca2f96ad78c7d7f99b91fca78 to 24Q4-release

Change-Id: Id3034aba4943e55beb83d9ad7260d96bc402b96a
diff --git a/Android.bp b/Android.bp
index fcb5d6d..a993c19 100644
--- a/Android.bp
+++ b/Android.bp
@@ -145,24 +145,6 @@
     }),
 }
 
-python_binary_host {
-    name: "genvk_gfxstream",
-    main: "codegen/vulkan/vulkan-docs-next/scripts/genvk.py",
-    srcs: [
-        "codegen/**/*.py",
-    ],
-}
-
-filegroup {
-    name: "mesa_vulkan_gfxstream_xml",
-    srcs: ["codegen/vulkan/vulkan-docs-next/xml/vk_gfxstream.xml"],
-}
-
-filegroup {
-    name: "gfxstream_vulkan_xml",
-    srcs: ["codegen/vulkan/vulkan-docs-next/xml/vk.xml"],
-}
-
 cc_defaults {
     name: "gfxstream_defaults",
     cflags: [
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/__init__.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/__init__.py
deleted file mode 100644
index 1966572..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from .common import *
-from .decoder import *
-from .encoder import *
-from .extensionstructs import *
-from .frontend import *
-from .functable import *
-from .marshaling import *
-from .reservedmarshaling import *
-from .counting import *
-from .testing import *
-from .transform import *
-from .deepcopy import *
-from .handlemap import *
-from .dispatch import *
-from .unbox import *
-from .decodersnapshot import *
-from .subdecode import *
-from .api_log_decoder import *
-from .vkextensionstructuretype import VulkanGfxstreamStructureType, \
-    VulkanAndroidNativeBufferStructureType
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/api_log_decoder.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/api_log_decoder.py
deleted file mode 100644
index 859bb83..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/api_log_decoder.py
+++ /dev/null
@@ -1,343 +0,0 @@
-# Copyright 2023 Google LLC
-# SPDX-License-Identifier: MIT
-
-import os
-from typing import List, Set, Dict, Optional
-
-from . import VulkanType, VulkanCompoundType
-from .wrapperdefs import VulkanWrapperGenerator
-
-
-class ApiLogDecoder(VulkanWrapperGenerator):
-    """
-    This class generates decoding logic for the graphics API logs captured by
-    [GfxApiLogger](http://source/play-internal/battlestar/aosp/device/generic/vulkan-cereal/base/GfxApiLogger.h)
-
-    This allows developers to see a pretty-printed version of the API log data when using
-    print_gfx_logs.py
-    """
-
-    # List of Vulkan APIs that we will generate decoding logic for
-    generated_apis = [
-        "vkAcquireImageANDROID",
-        "vkAllocateMemory",
-        "vkBeginCommandBufferAsyncGOOGLE",
-        "vkBindBufferMemory",
-        "vkBindImageMemory",
-        "vkCmdBeginRenderPass",
-        "vkCmdBindDescriptorSets",
-        "vkCmdBindIndexBuffer",
-        "vkCmdBindPipeline",
-        "vkCmdBindVertexBuffers",
-        "vkCmdClearAttachments",
-        "vkCmdClearColorImage",
-        "vkCmdCopyBufferToImage",
-        "vkCmdCopyImageToBuffer",
-        "vkCmdDraw",
-        "vkCmdDrawIndexed",
-        "vkCmdEndRenderPass",
-        "vkCmdPipelineBarrier",
-        "vkCmdPipelineBarrier2",
-        "vkCmdSetScissor",
-        "vkCmdSetViewport",
-        "vkCollectDescriptorPoolIdsGOOGLE",
-        "vkCreateBufferWithRequirementsGOOGLE",
-        "vkCreateDescriptorPool",
-        "vkCreateDescriptorSetLayout",
-        "vkCreateFence",
-        "vkCreateFramebuffer",
-        "vkCreateGraphicsPipelines",
-        "vkCreateImageView",
-        "vkCreateImageWithRequirementsGOOGLE",
-        "vkCreatePipelineCache",
-        "vkCreateRenderPass",
-        "vkCreateSampler",
-        "vkCreateSemaphore",
-        "vkCreateShaderModule",
-        "vkDestroyBuffer",
-        "vkDestroyCommandPool",
-        "vkDestroyDescriptorPool",
-        "vkDestroyDescriptorSetLayout",
-        "vkDestroyDevice",
-        "vkDestroyFence",
-        "vkDestroyFramebuffer",
-        "vkDestroyImage",
-        "vkDestroyImageView",
-        "vkDestroyInstance",
-        "vkDestroyPipeline",
-        "vkDestroyPipelineCache",
-        "vkDestroyPipelineLayout",
-        "vkDestroyRenderPass",
-        "vkDestroySemaphore",
-        "vkDestroyShaderModule",
-        "vkEndCommandBufferAsyncGOOGLE",
-        "vkFreeCommandBuffers",
-        "vkFreeMemory",
-        "vkFreeMemorySyncGOOGLE",
-        "vkGetFenceStatus",
-        "vkGetMemoryHostAddressInfoGOOGLE",
-        "vkGetBlobGOOGLE",
-        "vkGetPhysicalDeviceFormatProperties",
-        "vkGetPhysicalDeviceProperties2KHR",
-        "vkGetPipelineCacheData",
-        "vkGetSemaphoreGOOGLE",
-        "vkGetSwapchainGrallocUsageANDROID",
-        "vkQueueCommitDescriptorSetUpdatesGOOGLE",
-        "vkQueueFlushCommandsGOOGLE",
-        "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE",
-        "vkQueueSubmitAsyncGOOGLE",
-        "vkQueueWaitIdle",
-        "vkResetFences",
-        "vkWaitForFences",
-    ]
-
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-        self.typeInfo = typeInfo
-
-        # Set of Vulkan structs that we need to write decoding logic for
-        self.structs: Set[str] = set()
-
-        # Maps enum group names to the list of enums in the group, for all enum groups in the spec
-        # E.g.:  "VkResult": ["VK_SUCCESS", "VK_NOT_READY", "VK_TIMEOUT", etc...]
-        self.all_enums: Dict[str, List[str]] = {}
-
-        # Set of Vulkan enums that we need to write decoding logic for
-        self.needed_enums: Set[str] = {"VkStructureType"}
-
-    def onBegin(self):
-        self.module.append("""
-#####################################################################################################
-# Pretty-printer functions for Vulkan data structures
-# THIS FILE IS AUTO-GENERATED - DO NOT EDIT
-#
-# To re-generate this file, run generate-vulkan-sources.sh
-#####################################################################################################
-
-""".lstrip())
-
-    def onGenGroup(self, groupinfo, groupName, alias=None):
-        """Called for each enum group in the spec"""
-        for enum in groupinfo.elem.findall("enum"):
-            self.all_enums[groupName] = self.all_enums.get(groupName, []) + [enum.get('name')]
-
-    def onEnd(self):
-        for api_name in sorted(self.generated_apis):
-            self.process_api(api_name)
-        self.process_structs()
-        self.process_enums()
-
-    def process_api(self, api_name):
-        """Main entry point to generate decoding logic for each Vulkan API"""
-        api = self.typeInfo.apis[api_name]
-        self.module.append('def OP_{}(printer, indent: int):\n'.format(api_name))
-
-        # Decode the sequence number. All commands have sequence numbers, except those handled
-        # by VkSubdecoder.cpp. The logic here is a bit of a hack since it's based on the command
-        # name. Ideally, we would detect whether a particular command is part of a subdecode block
-        # in the decoding script.
-        if not api_name.startswith("vkCmd") and api_name != "vkBeginCommandBufferAsyncGOOGLE":
-            self.module.append('    printer.write_int("seqno: ", 4, indent)\n')
-
-        for param in api.parameters:
-            # Add any structs that this API uses to the list of structs to write decoding logic for
-            if self.typeInfo.isCompoundType(param.typeName):
-                self.structs.add(param.typeName)
-
-            # Don't try to print the pData field of vkQueueFlushCommandsGOOGLE, those are the
-            # commands processed as part of the subdecode pass
-            if api.name == "vkQueueFlushCommandsGOOGLE" and param.paramName == "pData":
-                continue
-
-            # Write out decoding logic for that parameter
-            self.process_type(param)
-
-        # Finally, add a return statement. This is needed in case the API has no parameters.
-        self.module.append('    return\n\n')
-
-    def process_structs(self):
-        """Writes decoding logic for all the structs that we use"""
-
-        # self.structs now contains all the structs used directly by the Vulkan APIs we use.
-        # Recursively expand this set to add all the structs used by these structs.
-        copy = self.structs.copy()
-        self.structs.clear()
-        for struct_name in copy:
-            self.expand_needed_structs(struct_name)
-
-        # Now we have the full list of structs that we need to write decoding logic for.
-        # Write a decoder for each of them
-        for struct_name in sorted(self.structs):
-            struct = self.typeInfo.structs[struct_name]
-            self.module.append('def struct_{}(printer, indent: int):\n'.format(struct_name))
-            for member in self.get_members(struct):
-                self.process_type(member)
-            self.module.append('\n')
-
-    def expand_needed_structs(self, struct_name: str):
-        """
-        Recursively adds all the structs used by a given struct to the list of structs to process
-        """
-        if struct_name in self.structs:
-            return
-        self.structs.add(struct_name)
-        struct = self.typeInfo.structs[struct_name]
-        for member in self.get_members(struct):
-            if self.typeInfo.isCompoundType(member.typeName):
-                self.expand_needed_structs(member.typeName)
-
-    def get_members(self, struct: VulkanCompoundType):
-        """
-        Returns the members of a struct/union that we need to process.
-        For structs, returns the list of all members
-        For unions, returns a list with just the first member.
-        """
-        return struct.members[0:1] if struct.isUnion else struct.members
-
-    def process_type(self, type: VulkanType):
-        """
-        Writes decoding logic for a single Vulkan type. This could be the parameter in a Vulkan API,
-        or a struct member.
-        """
-        if type.typeName == "VkStructureType":
-            self.module.append(
-                '    printer.write_stype_and_pnext("{}", indent)\n'.format(
-                    type.parent.structEnumExpr))
-            return
-
-        if type.isNextPointer():
-            return
-
-        if type.paramName == "commandBuffer":
-            if type.parent.name != "vkQueueFlushCommandsGOOGLE":
-                return
-
-        # Enums
-        if type.isEnum(self.typeInfo):
-            self.needed_enums.add(type.typeName)
-            self.module.append(
-                '    printer.write_enum("{}", {}, indent)\n'.format(
-                    type.paramName, type.typeName))
-            return
-
-        # Bitmasks
-        if type.isBitmask(self.typeInfo):
-            enum_type = self.typeInfo.bitmasks.get(type.typeName)
-            if enum_type:
-                self.needed_enums.add(enum_type)
-                self.module.append(
-                    '    printer.write_flags("{}", {}, indent)\n'.format(
-                        type.paramName, enum_type))
-                return
-            # else, fall through and let the primitive type logic handle it
-
-        # Structs or unions
-        if self.typeInfo.isCompoundType(type.typeName):
-            self.module.append(
-                '    printer.write_struct("{name}", struct_{type}, {optional}, {count}, indent)\n'
-                    .format(name=type.paramName,
-                            type=type.typeName,
-                            optional=type.isOptionalPointer(),
-                            count=self.get_length_expression(type)))
-            return
-
-        # Null-terminated strings
-        if type.isString():
-            self.module.append('    printer.write_string("{}", None, indent)\n'.format(
-                type.paramName))
-            return
-
-        # Arrays of primitive types
-        if type.staticArrExpr and type.primitiveEncodingSize and type.primitiveEncodingSize <= 8:
-            # Array sizes are specified either as a number, or as an enum value
-            array_size = int(type.staticArrExpr) if type.staticArrExpr.isdigit() \
-                else self.typeInfo.enumValues.get(type.staticArrExpr)
-            assert array_size is not None, type.staticArrExpr
-
-            if type.typeName == "char":
-                self.module.append(
-                    '    printer.write_string("{}", {}, indent)\n'.format(
-                        type.paramName, array_size))
-            elif type.typeName == "float":
-                self.module.append(
-                    '    printer.write_float("{}", indent, count={})\n'
-                        .format(type.paramName, array_size))
-            else:
-                self.module.append(
-                    '    printer.write_int("{name}", {int_size}, indent, signed={signed}, count={array_size})\n'
-                        .format(name=type.paramName,
-                                array_size=array_size,
-                                int_size=type.primitiveEncodingSize,
-                                signed=type.isSigned()))
-            return
-
-        # Pointers
-        if type.pointerIndirectionLevels > 0:
-            # Assume that all uint32* are always serialized directly rather than passed by pointers.
-            # This is probably not always true (e.g. out params) - fix this as needed.
-            size = 4 if type.primitiveEncodingSize == 4 else 8
-            self.module.append(
-                '    {name} = printer.write_int("{name}", {size}, indent, optional={opt}, count={count}, big_endian={big_endian})\n'
-                    .format(name=type.paramName,
-                            size=size,
-                            opt=type.isOptionalPointer(),
-                            count=self.get_length_expression(type),
-                            big_endian=self.using_big_endian(type)))
-            return
-
-        # Primitive types (ints, floats)
-        if type.isSimpleValueType(self.typeInfo) and type.primitiveEncodingSize:
-            if type.typeName == "float":
-                self.module.append(
-                    '    printer.write_float("{name}", indent)\n'.format(name=type.paramName))
-            else:
-                self.module.append(
-                    '    {name} = printer.write_int("{name}", {size}, indent, signed={signed}, big_endian={big_endian})\n'.format(
-                        name=type.paramName,
-                        size=type.primitiveEncodingSize,
-                        signed=type.isSigned(),
-                        big_endian=self.using_big_endian(type))
-                )
-            return
-
-        raise NotImplementedError(
-            "No decoding logic for {} {}".format(type.typeName, type.paramName))
-
-    def using_big_endian(self, type: VulkanType):
-        """For some reason gfxstream serializes some types as big endian"""
-        return type.typeName == "size_t"
-
-    def get_length_expression(self, type: VulkanType) -> Optional[str]:
-        """Returns the length expression for a given type"""
-        if type.lenExpr is None:
-            return None
-
-        if type.lenExpr.isalpha():
-            return type.lenExpr
-
-        # There are a couple of instances in the spec where we use a math expression to express the
-        # length (e.g. VkPipelineMultisampleStateCreateInfo). CodeGen().generalLengthAccess() has
-        # logic o parse these expressions correctly, but for now,we just use a simple lookup table.
-        known_expressions = {
-            r"latexmath:[\lceil{\mathit{rasterizationSamples} \over 32}\rceil]":
-                "int(rasterizationSamples / 32)",
-            r"latexmath:[\textrm{codeSize} \over 4]": "int(codeSize / 4)",
-            r"null-terminated": None
-        }
-        if type.lenExpr in known_expressions:
-            return known_expressions[type.lenExpr]
-
-        raise NotImplementedError("Unknown length expression: " + type.lenExpr)
-
-    def process_enums(self):
-        """
-        For each Vulkan enum that we use, write out a python dictionary mapping the enum values back
-        to the enum name as a string
-        """
-        for enum_name in sorted(self.needed_enums):
-            self.module.append('{} = {{\n'.format(enum_name))
-            for identifier in self.all_enums[enum_name]:
-                value = self.typeInfo.enumValues.get(identifier)
-                if value is not None and isinstance(value, int):
-                    self.module.append('    {}: "{}",\n'.format(value, identifier))
-            self.module.append('}\n\n')
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/common/__init__.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/common/__init__.py
deleted file mode 100644
index 519ef23..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/common/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Copyright 2023 Google LLC
-# SPDX-License-Identifier: MIT
-from .vulkantypes import *
-from .codegen import *
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/common/codegen.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/common/codegen.py
deleted file mode 100644
index bac483a..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/common/codegen.py
+++ /dev/null
@@ -1,1087 +0,0 @@
-# Copyright 2023 Google LLC
-# SPDX-License-Identifier: MIT
-from .vulkantypes import VulkanType, VulkanTypeInfo, VulkanCompoundType, VulkanAPI
-from collections import OrderedDict
-from copy import copy
-from pathlib import Path, PurePosixPath
-
-import os
-import sys
-import shutil
-import subprocess
-import re
-
-# Class capturing a single file
-
-
-class SingleFileModule(object):
-    def __init__(self, suffix, directory, basename, customAbsDir=None, suppress=False):
-        self.directory = directory
-        self.basename = basename
-        self.customAbsDir = customAbsDir
-        self.suffix = suffix
-        self.file = None
-
-        self.preamble = ""
-        self.postamble = ""
-
-        self.suppress = suppress
-
-    def begin(self, globalDir):
-        if self.suppress:
-            return
-
-        # Create subdirectory, if needed
-        if self.customAbsDir:
-            absDir = self.customAbsDir
-        else:
-            absDir = os.path.join(globalDir, self.directory)
-
-        filename = os.path.join(absDir, self.basename)
-
-        self.file = open(filename + self.suffix, "w", encoding="utf-8")
-        self.file.write(self.preamble)
-
-    def append(self, toAppend):
-        if self.suppress:
-            return
-
-        self.file.write(toAppend)
-
-    def end(self):
-        if self.suppress:
-            return
-
-        self.file.write(self.postamble)
-        self.file.close()
-
-    def getMakefileSrcEntry(self):
-        return ""
-
-    def getCMakeSrcEntry(self):
-        return ""
-
-# Class capturing a .cpp file and a .h file (a "C++ module")
-
-
-class Module(object):
-
-    def __init__(
-            self, directory, basename, customAbsDir=None, suppress=False, implOnly=False,
-            headerOnly=False, suppressFeatureGuards=False):
-        self._headerFileModule = SingleFileModule(
-            ".h", directory, basename, customAbsDir, suppress or implOnly)
-        self._implFileModule = SingleFileModule(
-            ".cpp", directory, basename, customAbsDir, suppress or headerOnly)
-
-        self._headerOnly = headerOnly
-        self._implOnly = implOnly
-
-        self.directory = directory
-        self.basename = basename
-        self._customAbsDir = customAbsDir
-
-        self.suppressFeatureGuards = suppressFeatureGuards
-
-    @property
-    def suppress(self):
-        raise AttributeError("suppress is write only")
-
-    @suppress.setter
-    def suppress(self, value: bool):
-        self._headerFileModule.suppress = self._implOnly or value
-        self._implFileModule.suppress = self._headerOnly or value
-
-    @property
-    def headerPreamble(self) -> str:
-        return self._headerFileModule.preamble
-
-    @headerPreamble.setter
-    def headerPreamble(self, value: str):
-        self._headerFileModule.preamble = value
-
-    @property
-    def headerPostamble(self) -> str:
-        return self._headerFileModule.postamble
-
-    @headerPostamble.setter
-    def headerPostamble(self, value: str):
-        self._headerFileModule.postamble = value
-
-    @property
-    def implPreamble(self) -> str:
-        return self._implFileModule.preamble
-
-    @implPreamble.setter
-    def implPreamble(self, value: str):
-        self._implFileModule.preamble = value
-
-    @property
-    def implPostamble(self) -> str:
-        return self._implFileModule.postamble
-
-    @implPostamble.setter
-    def implPostamble(self, value: str):
-        self._implFileModule.postamble = value
-
-    def getMakefileSrcEntry(self):
-        if self._customAbsDir:
-            return self.basename + ".cpp \\\n"
-        dirName = self.directory
-        baseName = self.basename
-        joined = os.path.join(dirName, baseName)
-        return "    " + joined + ".cpp \\\n"
-
-    def getCMakeSrcEntry(self):
-        if self._customAbsDir:
-            return "\n" + self.basename + ".cpp "
-        dirName = Path(self.directory)
-        baseName = Path(self.basename)
-        joined = PurePosixPath(dirName / baseName)
-        return "\n    " + str(joined) + ".cpp "
-
-    def begin(self, globalDir):
-        self._headerFileModule.begin(globalDir)
-        self._implFileModule.begin(globalDir)
-
-    def appendHeader(self, toAppend):
-        self._headerFileModule.append(toAppend)
-
-    def appendImpl(self, toAppend):
-        self._implFileModule.append(toAppend)
-
-    def end(self):
-        self._headerFileModule.end()
-        self._implFileModule.end()
-
-        # Removes empty ifdef blocks with a regex query over the file
-        # which are mainly introduced by extensions with no functions or variables
-        def remove_empty_ifdefs(filename: Path):
-            """Removes empty #ifdef blocks from a C++ file."""
-
-            # Load file contents
-            with open(filename, 'r') as file:
-                content = file.read()
-
-            # Regular Expression Pattern
-            pattern = r"#ifdef\s+(\w+)\s*(?://.*)?\s*\n\s*#endif\s*(?://.*)?\s*"
-
-            # Replace Empty Blocks
-            modified_content = re.sub(pattern, "", content)
-
-            # Save file back
-            with open(filename, 'w') as file:
-                file.write(modified_content)
-
-        clang_format_command = shutil.which('clang-format')
-
-        def formatFile(filename: Path):
-            if "GFXSTREAM_NO_CLANG_FMT" in os.environ:
-                return
-            assert (clang_format_command is not None)
-            assert (subprocess.call([clang_format_command, "-i",
-                    "--style=file", str(filename.resolve())]) == 0)
-
-        if not self._headerFileModule.suppress:
-            filename = Path(self._headerFileModule.file.name)
-            remove_empty_ifdefs(filename)
-            formatFile(filename)
-
-        if not self._implFileModule.suppress:
-            filename = Path(self._implFileModule.file.name)
-            remove_empty_ifdefs(filename)
-            formatFile(filename)
-
-
-class PyScript(SingleFileModule):
-    def __init__(self, directory, basename, customAbsDir=None, suppress=False):
-        super().__init__(".py", directory, basename, customAbsDir, suppress)
-
-
-# Class capturing a .proto protobuf definition file
-class Proto(SingleFileModule):
-
-    def __init__(self, directory, basename, customAbsDir=None, suppress=False):
-        super().__init__(".proto", directory, basename, customAbsDir, suppress)
-
-    def getMakefileSrcEntry(self):
-        super().getMakefileSrcEntry()
-        if self.customAbsDir:
-            return self.basename + ".proto \\\n"
-        dirName = self.directory
-        baseName = self.basename
-        joined = os.path.join(dirName, baseName)
-        return "    " + joined + ".proto \\\n"
-
-    def getCMakeSrcEntry(self):
-        super().getCMakeSrcEntry()
-        if self.customAbsDir:
-            return "\n" + self.basename + ".proto "
-
-        dirName = self.directory
-        baseName = self.basename
-        joined = os.path.join(dirName, baseName)
-        return "\n    " + joined + ".proto "
-
-class CodeGen(object):
-
-    def __init__(self,):
-        self.code = ""
-        self.indentLevel = 0
-        self.gensymCounter = [-1]
-
-    def var(self, prefix="cgen_var"):
-        self.gensymCounter[-1] += 1
-        res = "%s_%s" % (prefix, '_'.join(str(i) for i in self.gensymCounter if i >= 0))
-        return res
-
-    def swapCode(self,):
-        res = "%s" % self.code
-        self.code = ""
-        return res
-
-    def indent(self,extra=0):
-        return "".join("    " * (self.indentLevel + extra))
-
-    def incrIndent(self,):
-        self.indentLevel += 1
-
-    def decrIndent(self,):
-        if self.indentLevel > 0:
-            self.indentLevel -= 1
-
-    def beginBlock(self, bracketPrint=True):
-        if bracketPrint:
-            self.code += self.indent() + "{\n"
-        self.indentLevel += 1
-        self.gensymCounter.append(-1)
-
-    def endBlock(self,bracketPrint=True):
-        self.indentLevel -= 1
-        if bracketPrint:
-            self.code += self.indent() + "}\n"
-        del self.gensymCounter[-1]
-
-    def beginIf(self, cond):
-        self.code += self.indent() + "if (" + cond + ")\n"
-        self.beginBlock()
-
-    def beginElse(self, cond = None):
-        if cond is not None:
-            self.code += \
-                self.indent() + \
-                "else if (" + cond + ")\n"
-        else:
-            self.code += self.indent() + "else\n"
-        self.beginBlock()
-
-    def endElse(self):
-        self.endBlock()
-
-    def endIf(self):
-        self.endBlock()
-
-    def beginSwitch(self, switchvar):
-        self.code += self.indent() + "switch (" + switchvar + ")\n"
-        self.beginBlock()
-
-    def switchCase(self, switchval, blocked = False):
-        self.code += self.indent() + "case %s:" % switchval
-        self.beginBlock(bracketPrint = blocked)
-
-    def switchCaseBreak(self, switchval, blocked = False):
-        self.code += self.indent() + "case %s:" % switchval
-        self.endBlock(bracketPrint = blocked)
-
-    def switchCaseDefault(self, blocked = False):
-        self.code += self.indent() + "default:" % switchval
-        self.beginBlock(bracketPrint = blocked)
-
-    def endSwitch(self):
-        self.endBlock()
-
-    def beginWhile(self, cond):
-        self.code += self.indent() + "while (" + cond + ")\n"
-        self.beginBlock()
-
-    def endWhile(self):
-        self.endBlock()
-
-    def beginFor(self, initial, condition, increment):
-        self.code += \
-            self.indent() + "for (" + \
-            "; ".join([initial, condition, increment]) + \
-            ")\n"
-        self.beginBlock()
-
-    def endFor(self):
-        self.endBlock()
-
-    def beginLoop(self, loopVarType, loopVar, loopInit, loopBound):
-        self.beginFor(
-            "%s %s = %s" % (loopVarType, loopVar, loopInit),
-            "%s < %s" % (loopVar, loopBound),
-            "++%s" % (loopVar))
-
-    def endLoop(self):
-        self.endBlock()
-
-    def stmt(self, code):
-        self.code += self.indent() + code + ";\n"
-
-    def line(self, code):
-        self.code += self.indent() + code + "\n"
-
-    def leftline(self, code):
-        self.code += code + "\n"
-
-    def makeCallExpr(self, funcName, parameters):
-        return funcName + "(%s)" % (", ".join(parameters))
-
-    def funcCall(self, lhs, funcName, parameters):
-        res = self.indent()
-
-        if lhs is not None:
-            res += lhs + " = "
-
-        res += self.makeCallExpr(funcName, parameters) + ";\n"
-        self.code += res
-
-    def funcCallRet(self, _lhs, funcName, parameters):
-        res = self.indent()
-        res += "return " + self.makeCallExpr(funcName, parameters) + ";\n"
-        self.code += res
-
-    # Given a VulkanType object, generate a C type declaration
-    # with optional parameter name:
-    # [const] [typename][*][const*] [paramName]
-    def makeCTypeDecl(self, vulkanType, useParamName=True):
-        constness = "const " if vulkanType.isConst else ""
-        typeName = vulkanType.typeName
-
-        if vulkanType.pointerIndirectionLevels == 0:
-            ptrSpec = ""
-        elif vulkanType.isPointerToConstPointer:
-            ptrSpec = "* const*" if vulkanType.isConst else "**"
-            if vulkanType.pointerIndirectionLevels > 2:
-                ptrSpec += "*" * (vulkanType.pointerIndirectionLevels - 2)
-        else:
-            ptrSpec = "*" * vulkanType.pointerIndirectionLevels
-
-        if useParamName and (vulkanType.paramName is not None):
-            paramStr = (" " + vulkanType.paramName)
-        else:
-            paramStr = ""
-
-        return "%s%s%s%s" % (constness, typeName, ptrSpec, paramStr)
-
-    def makeRichCTypeDecl(self, vulkanType, useParamName=True):
-        constness = "const " if vulkanType.isConst else ""
-        typeName = vulkanType.typeName
-
-        if vulkanType.pointerIndirectionLevels == 0:
-            ptrSpec = ""
-        elif vulkanType.isPointerToConstPointer:
-            ptrSpec = "* const*" if vulkanType.isConst else "**"
-            if vulkanType.pointerIndirectionLevels > 2:
-                ptrSpec += "*" * (vulkanType.pointerIndirectionLevels - 2)
-        else:
-            ptrSpec = "*" * vulkanType.pointerIndirectionLevels
-
-        if useParamName and (vulkanType.paramName is not None):
-            paramStr = (" " + vulkanType.paramName)
-        else:
-            paramStr = ""
-
-        if vulkanType.staticArrExpr:
-            staticArrInfo = "[%s]" % vulkanType.staticArrExpr
-        else:
-            staticArrInfo = ""
-
-        return "%s%s%s%s%s" % (constness, typeName, ptrSpec, paramStr, staticArrInfo)
-
-    # Given a VulkanAPI object, generate the C function protype:
-    # <returntype> <funcname>(<parameters>)
-    def makeFuncProto(self, vulkanApi, useParamName=True):
-
-        protoBegin = "%s %s" % (self.makeCTypeDecl(
-            vulkanApi.retType, useParamName=False), vulkanApi.name)
-
-        def getFuncArgDecl(param):
-            if param.staticArrExpr:
-                return self.makeCTypeDecl(param, useParamName=useParamName) + ("[%s]" % param.staticArrExpr)
-            else:
-                return self.makeCTypeDecl(param, useParamName=useParamName)
-
-        protoParams = "(\n    %s)" % ((",\n%s" % self.indent(1)).join(
-            list(map(
-                getFuncArgDecl,
-                vulkanApi.parameters))))
-
-        return protoBegin + protoParams
-
-    def makeFuncAlias(self, nameDst, nameSrc):
-        return "DEFINE_ALIAS_FUNCTION({}, {})\n\n".format(nameSrc, nameDst)
-
-    def makeFuncDecl(self, vulkanApi):
-        return self.makeFuncProto(vulkanApi) + ";\n\n"
-
-    def makeFuncImpl(self, vulkanApi, codegenFunc):
-        self.swapCode()
-
-        self.line(self.makeFuncProto(vulkanApi))
-        self.beginBlock()
-        codegenFunc(self)
-        self.endBlock()
-
-        return self.swapCode() + "\n"
-
-    def emitFuncImpl(self, vulkanApi, codegenFunc):
-        self.line(self.makeFuncProto(vulkanApi))
-        self.beginBlock()
-        codegenFunc(self)
-        self.endBlock()
-
-    def makeStructAccess(self,
-                         vulkanType,
-                         structVarName,
-                         asPtr=True,
-                         structAsPtr=True,
-                         accessIndex=None):
-
-        deref = "->" if structAsPtr else "."
-
-        indexExpr = (" + %s" % accessIndex) if accessIndex else ""
-
-        addrOfExpr = "" if vulkanType.accessibleAsPointer() or (
-            not asPtr) else "&"
-
-        return "%s%s%s%s%s" % (addrOfExpr, structVarName, deref,
-                               vulkanType.paramName, indexExpr)
-
-    def makeRawLengthAccess(self, vulkanType):
-        lenExpr = vulkanType.getLengthExpression()
-
-        if not lenExpr:
-            return None, None
-
-        if lenExpr == "null-terminated":
-            return "strlen(%s)" % vulkanType.paramName, None
-
-        return lenExpr, None
-
-    def makeLengthAccessFromStruct(self,
-                                   structInfo,
-                                   vulkanType,
-                                   structVarName,
-                                   asPtr=True):
-        # Handle special cases first
-        # Mostly when latexmath is involved
-        def handleSpecialCases(structInfo, vulkanType, structVarName, asPtr):
-            cases = [
-                {
-                    "structName": "VkShaderModuleCreateInfo",
-                    "field": "pCode",
-                    "lenExprMember": "codeSize",
-                    "postprocess": lambda expr: "(%s / 4)" % expr
-                },
-                {
-                    "structName": "VkPipelineMultisampleStateCreateInfo",
-                    "field": "pSampleMask",
-                    "lenExprMember": "rasterizationSamples",
-                    "postprocess": lambda expr: "(((%s) + 31) / 32)" % expr
-                },
-                {
-                    "structName": "VkAccelerationStructureVersionInfoKHR",
-                    "field": "pVersionData",
-                    "lenExprMember": "",
-                    "postprocess": lambda _: "2*VK_UUID_SIZE"
-                },
-            ]
-
-            for c in cases:
-                if (structInfo.name, vulkanType.paramName) == (c["structName"],
-                                                               c["field"]):
-                    deref = "->" if asPtr else "."
-                    expr = "%s%s%s" % (structVarName, deref,
-                                       c["lenExprMember"])
-                    lenAccessGuardExpr = "%s" % structVarName
-                    return c["postprocess"](expr), lenAccessGuardExpr
-
-            return None, None
-
-        specialCaseAccess = \
-            handleSpecialCases(
-                structInfo, vulkanType, structVarName, asPtr)
-
-        if specialCaseAccess != (None, None):
-            return specialCaseAccess
-
-        lenExpr = vulkanType.getLengthExpression()
-
-        if not lenExpr:
-            return None, None
-
-        deref = "->" if asPtr else "."
-        lenAccessGuardExpr = "%s" % (
-
-            structVarName) if deref else None
-        if lenExpr == "null-terminated":
-            return "strlen(%s%s%s)" % (structVarName, deref,
-                                       vulkanType.paramName), lenAccessGuardExpr
-
-        if not structInfo.getMember(lenExpr):
-            return self.makeRawLengthAccess(vulkanType)
-
-        return "%s%s%s" % (structVarName, deref, lenExpr), lenAccessGuardExpr
-
-    def makeLengthAccessFromApi(self, api, vulkanType):
-        # Handle special cases first
-        # Mostly when :: is involved
-        def handleSpecialCases(vulkanType):
-            lenExpr = vulkanType.getLengthExpression()
-
-            if lenExpr is None:
-                return None, None
-
-            if "::" in lenExpr:
-                structVarName, memberVarName = lenExpr.split("::")
-                lenAccessGuardExpr = "%s" % (structVarName)
-                return "%s->%s" % (structVarName, memberVarName), lenAccessGuardExpr
-            return None, None
-
-        specialCaseAccess = handleSpecialCases(vulkanType)
-
-        if specialCaseAccess != (None, None):
-            return specialCaseAccess
-
-        lenExpr = vulkanType.getLengthExpression()
-
-        if not lenExpr:
-            return None, None
-
-        lenExprInfo = api.getParameter(lenExpr)
-
-        if not lenExprInfo:
-            return self.makeRawLengthAccess(vulkanType)
-
-        if lenExpr == "null-terminated":
-            return "strlen(%s)" % vulkanType.paramName(), None
-        else:
-            deref = "*" if lenExprInfo.pointerIndirectionLevels > 0 else ""
-            lenAccessGuardExpr = "%s" % lenExpr if deref else None
-            return "(%s(%s))" % (deref, lenExpr), lenAccessGuardExpr
-
-    def accessParameter(self, param, asPtr=True):
-        if asPtr:
-            if param.pointerIndirectionLevels > 0:
-                return param.paramName
-            else:
-                return "&%s" % param.paramName
-        else:
-            return param.paramName
-
-    def sizeofExpr(self, vulkanType):
-        return "sizeof(%s)" % (
-            self.makeCTypeDecl(vulkanType, useParamName=False))
-
-    def generalAccess(self,
-                      vulkanType,
-                      parentVarName=None,
-                      asPtr=True,
-                      structAsPtr=True):
-        if vulkanType.parent is None:
-            if parentVarName is None:
-                return self.accessParameter(vulkanType, asPtr=asPtr)
-            else:
-                return self.accessParameter(vulkanType.withModifiedName(parentVarName), asPtr=asPtr)
-
-        if isinstance(vulkanType.parent, VulkanCompoundType):
-            return self.makeStructAccess(
-                vulkanType, parentVarName, asPtr=asPtr, structAsPtr=structAsPtr)
-
-        if isinstance(vulkanType.parent, VulkanAPI):
-            if parentVarName is None:
-                return self.accessParameter(vulkanType, asPtr=asPtr)
-            else:
-                return self.accessParameter(vulkanType.withModifiedName(parentVarName), asPtr=asPtr)
-
-        os.abort("Could not find a way to access Vulkan type %s" %
-                 vulkanType.name)
-
-    def makeLengthAccess(self, vulkanType, parentVarName="parent"):
-        if vulkanType.parent is None:
-            return self.makeRawLengthAccess(vulkanType)
-
-        if isinstance(vulkanType.parent, VulkanCompoundType):
-            return self.makeLengthAccessFromStruct(
-                vulkanType.parent, vulkanType, parentVarName, asPtr=True)
-
-        if isinstance(vulkanType.parent, VulkanAPI):
-            return self.makeLengthAccessFromApi(vulkanType.parent, vulkanType)
-
-        os.abort("Could not find a way to access length of Vulkan type %s" %
-                 vulkanType.name)
-
-    def generalLengthAccess(self, vulkanType, parentVarName="parent"):
-        return self.makeLengthAccess(vulkanType, parentVarName)[0]
-
-    def generalLengthAccessGuard(self, vulkanType, parentVarName="parent"):
-        return self.makeLengthAccess(vulkanType, parentVarName)[1]
-
-    def vkApiCall(self, api, customPrefix="", globalStatePrefix="", customParameters=None, checkForDeviceLost=False, checkForOutOfMemory=False):
-        callLhs = None
-
-        retTypeName = api.getRetTypeExpr()
-        retVar = None
-
-        if retTypeName != "void":
-            retVar = api.getRetVarExpr()
-            self.stmt("%s %s = (%s)0" % (retTypeName, retVar, retTypeName))
-            callLhs = retVar
-
-        if customParameters is None:
-            self.funcCall(
-            callLhs, customPrefix + api.name, [p.paramName for p in api.parameters])
-        else:
-            self.funcCall(
-                callLhs, customPrefix + api.name, customParameters)
-
-        if retTypeName == "VkResult" and checkForDeviceLost:
-            self.stmt("if ((%s) == VK_ERROR_DEVICE_LOST) %sDeviceLost()" % (callLhs, globalStatePrefix))
-
-        if retTypeName == "VkResult" and checkForOutOfMemory:
-            if api.name == "vkAllocateMemory":
-                self.stmt(
-                    "%sCheckOutOfMemory(%s, opcode, context, std::make_optional<uint64_t>(pAllocateInfo->allocationSize))"
-                    % (globalStatePrefix, callLhs))
-            else:
-                self.stmt(
-                    "%sCheckOutOfMemory(%s, opcode, context)"
-                    % (globalStatePrefix, callLhs))
-
-        return (retTypeName, retVar)
-
-    def makeCheckVkSuccess(self, expr):
-        return "((%s) == VK_SUCCESS)" % expr
-
-    def makeReinterpretCast(self, varName, typeName, const=True):
-        return "reinterpret_cast<%s%s*>(%s)" % \
-               ("const " if const else "", typeName, varName)
-
-    def validPrimitive(self, typeInfo, typeName):
-        size = typeInfo.getPrimitiveEncodingSize(typeName)
-        return size != None
-
-    def makePrimitiveStreamMethod(self, typeInfo, typeName, direction="write"):
-        if not self.validPrimitive(typeInfo, typeName):
-            return None
-
-        size = typeInfo.getPrimitiveEncodingSize(typeName)
-        prefix = "put" if direction == "write" else "get"
-        suffix = None
-        if size == 1:
-            suffix = "Byte"
-        elif size == 2:
-            suffix = "Be16"
-        elif size == 4:
-            suffix = "Be32"
-        elif size == 8:
-            suffix = "Be64"
-
-        if suffix:
-            return prefix + suffix
-
-        return None
-
-    def makePrimitiveStreamMethodInPlace(self, typeInfo, typeName, direction="write"):
-        if not self.validPrimitive(typeInfo, typeName):
-            return None
-
-        size = typeInfo.getPrimitiveEncodingSize(typeName)
-        prefix = "to" if direction == "write" else "from"
-        suffix = None
-        if size == 1:
-            suffix = "Byte"
-        elif size == 2:
-            suffix = "Be16"
-        elif size == 4:
-            suffix = "Be32"
-        elif size == 8:
-            suffix = "Be64"
-
-        if suffix:
-            return prefix + suffix
-
-        return None
-
-    def streamPrimitive(self, typeInfo, streamVar, accessExpr, accessType, direction="write"):
-        accessTypeName = accessType.typeName
-
-        if accessType.pointerIndirectionLevels == 0 and not self.validPrimitive(typeInfo, accessTypeName):
-            print("Tried to stream a non-primitive type: %s" % accessTypeName)
-            os.abort()
-
-        needPtrCast = False
-
-        if accessType.pointerIndirectionLevels > 0:
-            streamSize = 8
-            streamStorageVarType = "uint64_t"
-            needPtrCast = True
-            streamMethod = "putBe64" if direction == "write" else "getBe64"
-        else:
-            streamSize = typeInfo.getPrimitiveEncodingSize(accessTypeName)
-            if streamSize == 1:
-                streamStorageVarType = "uint8_t"
-            elif streamSize == 2:
-                streamStorageVarType = "uint16_t"
-            elif streamSize == 4:
-                streamStorageVarType = "uint32_t"
-            elif streamSize == 8:
-                streamStorageVarType = "uint64_t"
-            streamMethod = self.makePrimitiveStreamMethod(
-                typeInfo, accessTypeName, direction=direction)
-
-        streamStorageVar = self.var()
-
-        accessCast = self.makeRichCTypeDecl(accessType, useParamName=False)
-
-        ptrCast = "(uintptr_t)" if needPtrCast else ""
-
-        if direction == "read":
-            self.stmt("%s = (%s)%s%s->%s()" %
-                      (accessExpr,
-                       accessCast,
-                       ptrCast,
-                       streamVar,
-                       streamMethod))
-        else:
-            self.stmt("%s %s = (%s)%s%s" %
-                      (streamStorageVarType, streamStorageVar,
-                       streamStorageVarType, ptrCast, accessExpr))
-            self.stmt("%s->%s(%s)" %
-                      (streamVar, streamMethod, streamStorageVar))
-
-    def memcpyPrimitive(self, typeInfo, streamVar, accessExpr, accessType, variant, direction="write"):
-        accessTypeName = accessType.typeName
-
-        if accessType.pointerIndirectionLevels == 0 and not self.validPrimitive(typeInfo, accessTypeName):
-            print("Tried to stream a non-primitive type: %s" % accessTypeName)
-            os.abort()
-
-        needPtrCast = False
-
-        streamSize = 8
-
-        if accessType.pointerIndirectionLevels > 0:
-            streamSize = 8
-            streamStorageVarType = "uint64_t"
-            needPtrCast = True
-            streamMethod = "toBe64" if direction == "write" else "fromBe64"
-        else:
-            streamSize = typeInfo.getPrimitiveEncodingSize(accessTypeName)
-            if streamSize == 1:
-                streamStorageVarType = "uint8_t"
-            elif streamSize == 2:
-                streamStorageVarType = "uint16_t"
-            elif streamSize == 4:
-                streamStorageVarType = "uint32_t"
-            elif streamSize == 8:
-                streamStorageVarType = "uint64_t"
-            streamMethod = self.makePrimitiveStreamMethodInPlace(
-                typeInfo, accessTypeName, direction=direction)
-
-        streamStorageVar = self.var()
-
-        accessCast = self.makeRichCTypeDecl(accessType, useParamName=False)
-
-        if direction == "read":
-            accessCast = self.makeRichCTypeDecl(
-                accessType.getForNonConstAccess(), useParamName=False)
-
-        ptrCast = "(uintptr_t)" if needPtrCast else ""
-
-        streamNamespace = "android::base"
-
-        if direction == "read":
-            self.stmt("memcpy((%s*)&%s, %s, %s)" %
-                      (accessCast,
-                       accessExpr,
-                       streamVar,
-                       str(streamSize)))
-            self.stmt("%s::Stream::%s((uint8_t*)&%s)" % (
-                streamNamespace,
-                streamMethod,
-                accessExpr))
-        else:
-            self.stmt("%s %s = (%s)%s%s" %
-                      (streamStorageVarType, streamStorageVar,
-                       streamStorageVarType, ptrCast, accessExpr))
-            self.stmt("memcpy(%s, &%s, %s)" %
-                      (streamVar, streamStorageVar, str(streamSize)))
-            self.stmt("%s::Stream::%s((uint8_t*)%s)" % (
-                streamNamespace,
-                streamMethod,
-                streamVar))
-
-    def countPrimitive(self, typeInfo, accessType):
-        accessTypeName = accessType.typeName
-
-        if accessType.pointerIndirectionLevels == 0 and not self.validPrimitive(typeInfo, accessTypeName):
-            print("Tried to count a non-primitive type: %s" % accessTypeName)
-            os.abort()
-
-        needPtrCast = False
-
-        if accessType.pointerIndirectionLevels > 0:
-            streamSize = 8
-        else:
-            streamSize = typeInfo.getPrimitiveEncodingSize(accessTypeName)
-
-        return streamSize
-
-# Class to wrap a Vulkan API call.
-#
-# The user gives a generic callback, |codegenDef|,
-# that takes a CodeGen object and a VulkanAPI object as arguments.
-# codegenDef uses CodeGen along with the VulkanAPI object
-# to generate the function body.
-class VulkanAPIWrapper(object):
-
-    def __init__(self,
-                 customApiPrefix,
-                 extraParameters=None,
-                 returnTypeOverride=None,
-                 codegenDef=None):
-        self.customApiPrefix = customApiPrefix
-        self.extraParameters = extraParameters
-        self.returnTypeOverride = returnTypeOverride
-
-        self.codegen = CodeGen()
-
-        self.definitionFunc = codegenDef
-
-        # Private function
-
-        def makeApiFunc(self, typeInfo, apiName):
-            customApi = copy(typeInfo.apis[apiName])
-            customApi.name = self.customApiPrefix + customApi.name
-            if self.extraParameters is not None:
-                if isinstance(self.extraParameters, list):
-                    customApi.parameters = \
-                        self.extraParameters + customApi.parameters
-                else:
-                    os.abort(
-                        "Type of extra parameters to custom API not valid. Expected list, got %s" % type(
-                            self.extraParameters))
-
-            if self.returnTypeOverride is not None:
-                customApi.retType = self.returnTypeOverride
-            return customApi
-
-        self.makeApi = makeApiFunc
-
-    def setCodegenDef(self, codegenDefFunc):
-        self.definitionFunc = codegenDefFunc
-
-    def makeDecl(self, typeInfo, apiName):
-        return self.codegen.makeFuncProto(
-            self.makeApi(self, typeInfo, apiName)) + ";\n\n"
-
-    def makeDefinition(self, typeInfo, apiName, isStatic=False):
-        vulkanApi = self.makeApi(self, typeInfo, apiName)
-
-        self.codegen.swapCode()
-        self.codegen.beginBlock()
-
-        if self.definitionFunc is None:
-            print("ERROR: No definition found for (%s, %s)" %
-                  (vulkanApi.name, self.customApiPrefix))
-            sys.exit(1)
-
-        self.definitionFunc(self.codegen, vulkanApi)
-
-        self.codegen.endBlock()
-
-        return ("static " if isStatic else "") + self.codegen.makeFuncProto(
-            vulkanApi) + "\n" + self.codegen.swapCode() + "\n"
-
-# Base class for wrapping all Vulkan API objects.  These work with Vulkan
-# Registry generators and have gen* triggers.  They tend to contain
-# VulkanAPIWrapper objects to make it easier to generate the code.
-class VulkanWrapperGenerator(object):
-
-    def __init__(self, module: Module, typeInfo: VulkanTypeInfo):
-        self.module: Module = module
-        self.typeInfo: VulkanTypeInfo = typeInfo
-        self.extensionStructTypes = OrderedDict()
-
-    def onBegin(self):
-        pass
-
-    def onEnd(self):
-        pass
-
-    def onBeginFeature(self, featureName, featureType):
-        pass
-
-    def onFeatureNewCmd(self, cmdName):
-        pass
-
-    def onEndFeature(self):
-        pass
-
-    def onGenType(self, typeInfo, name, alias):
-        category = self.typeInfo.categoryOf(name)
-        if category in ["struct", "union"] and not alias:
-            structInfo = self.typeInfo.structs[name]
-            if structInfo.structExtendsExpr:
-                self.extensionStructTypes[name] = structInfo
-        pass
-
-    def onGenStruct(self, typeInfo, name, alias):
-        pass
-
-    def onGenGroup(self, groupinfo, groupName, alias=None):
-        pass
-
-    def onGenEnum(self, enuminfo, name, alias):
-        pass
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        pass
-
-    # Below Vulkan structure types may correspond to multiple Vulkan structs
-    # due to a conflict between different Vulkan registries. In order to get
-    # the correct Vulkan struct type, we need to check the type of its "root"
-    # struct as well.
-    ROOT_TYPE_MAPPING = {
-        "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT": {
-            "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2": "VkPhysicalDeviceFragmentDensityMapFeaturesEXT",
-            "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO": "VkPhysicalDeviceFragmentDensityMapFeaturesEXT",
-            "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO": "VkImportColorBufferGOOGLE",
-            "default": "VkPhysicalDeviceFragmentDensityMapFeaturesEXT",
-        },
-        "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT": {
-            "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2": "VkPhysicalDeviceFragmentDensityMapPropertiesEXT",
-            "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO": "VkCreateBlobGOOGLE",
-            "default": "VkPhysicalDeviceFragmentDensityMapPropertiesEXT",
-        },
-        "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT": {
-            "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO": "VkRenderPassFragmentDensityMapCreateInfoEXT",
-            "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2": "VkRenderPassFragmentDensityMapCreateInfoEXT",
-            "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO": "VkImportBufferGOOGLE",
-            "default": "VkRenderPassFragmentDensityMapCreateInfoEXT",
-        },
-    }
-
-    def emitForEachStructExtension(self, cgen, retType, triggerVar, forEachFunc, autoBreak=True, defaultEmit=None, nullEmit=None, rootTypeVar=None):
-        def readStructType(structTypeName, structVarName, cgen):
-            cgen.stmt("uint32_t %s = (uint32_t)%s(%s)" % \
-                (structTypeName, "goldfish_vk_struct_type", structVarName))
-
-        def castAsStruct(varName, typeName, const=True):
-            return "reinterpret_cast<%s%s*>(%s)" % \
-                   ("const " if const else "", typeName, varName)
-
-        def doDefaultReturn(cgen):
-            if retType.typeName == "void":
-                cgen.stmt("return")
-            else:
-                cgen.stmt("return (%s)0" % retType.typeName)
-
-        cgen.beginIf("!%s" % triggerVar.paramName)
-        if nullEmit is None:
-            doDefaultReturn(cgen)
-        else:
-            nullEmit(cgen)
-        cgen.endIf()
-
-        readStructType("structType", triggerVar.paramName, cgen)
-
-        cgen.line("switch(structType)")
-        cgen.beginBlock()
-
-        currFeature = None
-
-        for ext in self.extensionStructTypes.values():
-            if not currFeature:
-                cgen.leftline("#ifdef %s" % ext.feature)
-                currFeature = ext.feature
-
-            if currFeature and ext.feature != currFeature:
-                cgen.leftline("#endif")
-                cgen.leftline("#ifdef %s" % ext.feature)
-                currFeature = ext.feature
-
-            enum = ext.structEnumExpr
-            protect = None
-            if enum in self.typeInfo.enumElem:
-                protect = self.typeInfo.enumElem[enum].get("protect", default=None)
-                if protect is not None:
-                    cgen.leftline("#ifdef %s" % protect)
-
-            cgen.line("case %s:" % enum)
-            cgen.beginBlock()
-
-            if rootTypeVar is not None and enum in VulkanWrapperGenerator.ROOT_TYPE_MAPPING:
-                cgen.line("switch(%s)" % rootTypeVar.paramName)
-                cgen.beginBlock()
-                kv = VulkanWrapperGenerator.ROOT_TYPE_MAPPING[enum]
-                for k in kv:
-                    v = self.extensionStructTypes[kv[k]]
-                    if k == "default":
-                        cgen.line("%s:" % k)
-                    else:
-                        cgen.line("case %s:" % k)
-                    cgen.beginBlock()
-                    castedAccess = castAsStruct(
-                        triggerVar.paramName, v.name, const=triggerVar.isConst)
-                    forEachFunc(v, castedAccess, cgen)
-                    cgen.line("break;")
-                    cgen.endBlock()
-                cgen.endBlock()
-            else:
-                castedAccess = castAsStruct(
-                    triggerVar.paramName, ext.name, const=triggerVar.isConst)
-                forEachFunc(ext, castedAccess, cgen)
-
-            if autoBreak:
-                cgen.stmt("break")
-            cgen.endBlock()
-
-            if protect is not None:
-                cgen.leftline("#endif // %s" % protect)
-
-        if currFeature:
-            cgen.leftline("#endif")
-
-        cgen.line("default:")
-        cgen.beginBlock()
-        if defaultEmit is None:
-            doDefaultReturn(cgen)
-        else:
-            defaultEmit(cgen)
-        cgen.endBlock()
-
-        cgen.endBlock()
-
-    def emitForEachStructExtensionGeneral(self, cgen, forEachFunc, doFeatureIfdefs=False):
-        currFeature = None
-
-        for (i, ext) in enumerate(self.extensionStructTypes.values()):
-            if doFeatureIfdefs:
-                if not currFeature:
-                    cgen.leftline("#ifdef %s" % ext.feature)
-                    currFeature = ext.feature
-
-                if currFeature and ext.feature != currFeature:
-                    cgen.leftline("#endif")
-                    cgen.leftline("#ifdef %s" % ext.feature)
-                    currFeature = ext.feature
-
-            forEachFunc(i, ext, cgen)
-
-        if doFeatureIfdefs:
-            if currFeature:
-                cgen.leftline("#endif")
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/common/vulkantypes.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/common/vulkantypes.py
deleted file mode 100644
index 70eacf9..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/common/vulkantypes.py
+++ /dev/null
@@ -1,1310 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-from typing import Dict, Optional, List, Set, Union
-from xml.etree.ElementTree import Element
-
-from generator import noneStr
-
-from copy import copy
-from dataclasses import dataclass
-from string import whitespace
-
-# Holds information about core Vulkan objects
-# and the API calls that are used to create/destroy each one.
-class HandleInfo(object):
-    def __init__(self, name, createApis, destroyApis):
-        self.name = name
-        self.createApis = createApis
-        self.destroyApis = destroyApis
-
-    def isCreateApi(self, apiName):
-        return apiName == self.createApis or (apiName in self.createApis)
-
-    def isDestroyApi(self, apiName):
-        if self.destroyApis is None:
-            return False
-        return apiName == self.destroyApis or (apiName in self.destroyApis)
-
-DISPATCHABLE_HANDLE_TYPES = [
-    "VkInstance",
-    "VkPhysicalDevice",
-    "VkDevice",
-    "VkQueue",
-    "VkCommandBuffer",
-]
-
-NON_DISPATCHABLE_HANDLE_TYPES = [
-    "VkDeviceMemory",
-    "VkBuffer",
-    "VkBufferView",
-    "VkImage",
-    "VkImageView",
-    "VkShaderModule",
-    "VkDescriptorPool",
-    "VkDescriptorSetLayout",
-    "VkDescriptorSet",
-    "VkSampler",
-    "VkPipeline",
-    "VkPipelineLayout",
-    "VkRenderPass",
-    "VkFramebuffer",
-    "VkPipelineCache",
-    "VkCommandPool",
-    "VkFence",
-    "VkSemaphore",
-    "VkEvent",
-    "VkQueryPool",
-    "VkSamplerYcbcrConversion",
-    "VkSamplerYcbcrConversionKHR",
-    "VkDescriptorUpdateTemplate",
-    "VkSurfaceKHR",
-    "VkSwapchainKHR",
-    "VkDisplayKHR",
-    "VkDisplayModeKHR",
-    "VkObjectTableNVX",
-    "VkIndirectCommandsLayoutNVX",
-    "VkValidationCacheEXT",
-    "VkDebugReportCallbackEXT",
-    "VkDebugUtilsMessengerEXT",
-    "VkAccelerationStructureNV",
-    "VkIndirectCommandsLayoutNV",
-    "VkAccelerationStructureKHR",
-    "VkPrivateDataSlot",
-]
-
-CUSTOM_HANDLE_CREATE_TYPES = [
-    "VkPhysicalDevice",
-    "VkQueue",
-    "VkPipeline",
-    "VkDeviceMemory",
-    "VkDescriptorSet",
-    "VkCommandBuffer",
-    "VkRenderPass",
-]
-
-HANDLE_TYPES = list(sorted(list(set(DISPATCHABLE_HANDLE_TYPES +
-                                    NON_DISPATCHABLE_HANDLE_TYPES + CUSTOM_HANDLE_CREATE_TYPES))))
-
-HANDLE_INFO = {}
-
-for h in HANDLE_TYPES:
-    if h in CUSTOM_HANDLE_CREATE_TYPES:
-        if h == "VkPhysicalDevice":
-            HANDLE_INFO[h] = \
-                HandleInfo(
-                    "VkPhysicalDevice",
-                    "vkEnumeratePhysicalDevices", None)
-        if h == "VkQueue":
-            HANDLE_INFO[h] = \
-                HandleInfo(
-                    "VkQueue",
-                    ["vkGetDeviceQueue", "vkGetDeviceQueue2"],
-                    None)
-        if h == "VkPipeline":
-            HANDLE_INFO[h] = \
-                HandleInfo(
-                    "VkPipeline",
-                    ["vkCreateGraphicsPipelines", "vkCreateComputePipelines"],
-                    "vkDestroyPipeline")
-        if h == "VkDeviceMemory":
-            HANDLE_INFO[h] = \
-                HandleInfo("VkDeviceMemory",
-                           "vkAllocateMemory", ["vkFreeMemory", "vkFreeMemorySyncGOOGLE"])
-        if h == "VkDescriptorSet":
-            HANDLE_INFO[h] = \
-                HandleInfo("VkDescriptorSet", "vkAllocateDescriptorSets",
-                           "vkFreeDescriptorSets")
-        if h == "VkCommandBuffer":
-            HANDLE_INFO[h] = \
-                HandleInfo("VkCommandBuffer", "vkAllocateCommandBuffers",
-                           "vkFreeCommandBuffers")
-        if h == "VkRenderPass":
-            HANDLE_INFO[h] = \
-                HandleInfo(
-                    "VkRenderPass",
-                    ["vkCreateRenderPass", "vkCreateRenderPass2", "vkCreateRenderPass2KHR"],
-                    "vkDestroyRenderPass")
-    else:
-        HANDLE_INFO[h] = \
-            HandleInfo(h, "vkCreate" + h[2:], "vkDestroy" + h[2:])
-
-EXCLUDED_APIS = [
-    "vkEnumeratePhysicalDeviceGroups",
-]
-
-EXPLICITLY_ABI_PORTABLE_TYPES = [
-    "VkResult",
-    "VkBool32",
-    "VkSampleMask",
-    "VkFlags",
-    "VkDeviceSize",
-]
-
-EXPLICITLY_ABI_NON_PORTABLE_TYPES = [
-    "size_t"
-]
-
-NON_ABI_PORTABLE_TYPE_CATEGORIES = [
-    "handle",
-    "funcpointer",
-]
-
-# A class for holding the parameter indices corresponding to various
-# attributes about a VkDeviceMemory, such as the handle, size, offset, etc.
-@dataclass
-class DeviceMemoryInfoParameterIndices:
-    handle: int = -1
-    offset: int = -1
-    size: int = -1
-    typeIndex: int = -1
-    typeBits: int = -1
-
-DEVICE_MEMORY_STRUCTS = {
-    "VkMemoryAllocateInfo": {"1": DeviceMemoryInfoParameterIndices(typeIndex = 3)},
-    "VkMemoryRequirements": {"1": DeviceMemoryInfoParameterIndices(typeBits = 2)},
-    "VkMappedMemoryRange": {"1": DeviceMemoryInfoParameterIndices(handle = 2, offset = 3, size = 4)},
-    "VkSparseMemoryBind": {"1": DeviceMemoryInfoParameterIndices(handle = 2, offset = 3)},
-    "VkSparseImageMemoryBind": {"1": DeviceMemoryInfoParameterIndices(handle = 3, offset = 4)},
-    "VkWin32KeyedMutexAcquireReleaseInfoNV": {"1": DeviceMemoryInfoParameterIndices(handle = 3), "2": DeviceMemoryInfoParameterIndices(handle = 7)},
-    "VkMemoryWin32HandlePropertiesKHR": {"1": DeviceMemoryInfoParameterIndices(typeBits = 2)},
-    "VkMemoryGetWin32HandleInfoKHR": {"1": DeviceMemoryInfoParameterIndices(handle = 2)},
-    "VkMemoryFdPropertiesKHR": {"1": DeviceMemoryInfoParameterIndices(typeBits = 2)},
-    "VkMemoryGetFdInfoKHR": {"1": DeviceMemoryInfoParameterIndices(handle = 2)},
-    "VkWin32KeyedMutexAcquireReleaseInfoKHR": {"1": DeviceMemoryInfoParameterIndices(handle = 3), "2": DeviceMemoryInfoParameterIndices(handle = 7)},
-    "VkBindBufferMemoryInfo": {"1": DeviceMemoryInfoParameterIndices(handle = 3, offset = 4)},
-    "VkBindImageMemoryInfo": {"1": DeviceMemoryInfoParameterIndices(handle = 3, offset = 4)},
-    "VkMemoryHostPointerPropertiesEXT": {"1": DeviceMemoryInfoParameterIndices(typeBits = 2)},
-    "VkAndroidHardwareBufferPropertiesANDROID": {"1": DeviceMemoryInfoParameterIndices(typeBits = 3)},
-    "VkMemoryGetAndroidHardwareBufferInfoANDROID": {"1": DeviceMemoryInfoParameterIndices(handle = 2)},
-    "VkBindAccelerationStructureMemoryInfoNV": {"1": DeviceMemoryInfoParameterIndices(handle = 3, offset = 4)},
-    "VkDeviceMemoryOpaqueCaptureAddressInfo": {"1": DeviceMemoryInfoParameterIndices(handle = 2)},
-}
-
-DEVICE_MEMORY_COMMANDS = {
-    "vkFreeMemory": {"1": DeviceMemoryInfoParameterIndices(handle = 1)},
-    "vkMapMemory": {"1": DeviceMemoryInfoParameterIndices(handle = 1)},
-    "vkUnmapMemory": {"1": DeviceMemoryInfoParameterIndices(handle = 1)},
-    "vkGetDeviceMemoryCommitment": {"1": DeviceMemoryInfoParameterIndices(handle = 1, offset = 2)},
-    "vkBindBufferMemory": {"1": DeviceMemoryInfoParameterIndices(handle = 2, offset = 3)},
-    "vkBindImageMemory": {"1": DeviceMemoryInfoParameterIndices(handle = 2, offset = 3)},
-    "vkGetBlobGOOGLE": {"1": DeviceMemoryInfoParameterIndices(handle = 1)},
-    "vkGetMemoryWin32HandleNV": {"1": DeviceMemoryInfoParameterIndices(handle = 1)},
-    "vkMapMemoryIntoAddressSpaceGOOGLE": {"1": DeviceMemoryInfoParameterIndices(handle = 1)},
-    "vkGetMemoryHostAddressInfoGOOGLE": {"1": DeviceMemoryInfoParameterIndices(handle = 1)},
-    "vkFreeMemorySyncGOOGLE": {"1": DeviceMemoryInfoParameterIndices(handle = 1)},
-}
-
-TRIVIAL_TRANSFORMED_TYPES = [
-    "VkPhysicalDeviceExternalImageFormatInfo",
-    "VkPhysicalDeviceExternalBufferInfo",
-    "VkExternalMemoryImageCreateInfo",
-    "VkExternalMemoryBufferCreateInfo",
-    "VkExportMemoryAllocateInfo",
-    "VkExternalImageFormatProperties",
-    "VkExternalBufferProperties",
-]
-
-NON_TRIVIAL_TRANSFORMED_TYPES = [
-    "VkExternalMemoryProperties",
-    "VkImageCreateInfo",
-]
-
-TRANSFORMED_TYPES = TRIVIAL_TRANSFORMED_TYPES + NON_TRIVIAL_TRANSFORMED_TYPES
-
-STRUCT_STREAM_FEATURE = {
-    "VkPhysicalDeviceShaderFloat16Int8Features": "VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT",
-    "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR": "VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT",
-    "VkPhysicalDeviceFloat16Int8FeaturesKHR": "VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT",
-}
-
-STRUCT_MEMBER_STREAM_FEATURE = {
-    "VkGraphicsPipelineCreateInfo.pVertexInputState": "VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT",
-    "VkGraphicsPipelineCreateInfo.pInputAssemblyState": "VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT",
-    "VkGraphicsPipelineCreateInfo.pRasterizationState": "VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT",
-}
-
-STRUCT_ENV_STR = {
-    "VkGraphicsPipelineCreateInfo": {
-        "hasTessellation": "(arrayany pStages 0 stageCount (lambda ((s VkPipelineShaderStageCreateInfo)) (or (eq (getfield s stage) VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) (eq (getfield s stage) VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT))))",
-        "hasRasterization" : "(or (if (eq 0 pRasterizationState) 0 (not (getfield pRasterizationState rasterizerDiscardEnable))) (if (eq 0 pDynamicState) 0 (arrayany (getfield pDynamicState pDynamicStates) 0 (getfield pDynamicState dynamicStateCount) (lambda ((s VkDynamicState)) (eq s VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE)))))"
-    },
-}
-
-STRUCT_MEMBER_FILTER_VAR = {
-    "VkGraphicsPipelineCreateInfo.pTessellationState": "hasTessellation",
-    "VkGraphicsPipelineCreateInfo.pViewportState": "hasRasterization",
-    "VkGraphicsPipelineCreateInfo.pMultisampleState": "hasRasterization",
-    "VkGraphicsPipelineCreateInfo.pDepthStencilState": "hasRasterization",
-    "VkGraphicsPipelineCreateInfo.pColorBlendState": "hasRasterization",
-    "VkWriteDescriptorSet.pImageInfo": "descriptorType",
-    "VkWriteDescriptorSet.pBufferInfo": "descriptorType",
-    "VkWriteDescriptorSet.pTexelBufferView": "descriptorType",
-    "VkFramebufferCreateInfo.pAttachments": "flags",
-}
-
-STRUCT_MEMBER_FILTER_VALS = {
-    "VkWriteDescriptorSet.pImageInfo": [
-        "VK_DESCRIPTOR_TYPE_SAMPLER",
-        "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER",
-        "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE",
-        "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE",
-        "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"
-    ],
-    "VkWriteDescriptorSet.pBufferInfo": [
-        "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER",
-        "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC",
-        "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER",
-        "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC",
-    ],
-    "VkWriteDescriptorSet.pTexelBufferView": [
-        "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER",
-        "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER",
-    ],
-}
-
-STRUCT_MEMBER_FILTER_FUNC = {
-    "VkFramebufferCreateInfo.pAttachments": "(eq (bitwise_and flags VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT) 0)",
-}
-
-# vk.xml added optional to some of the existing fields. For backward compatibility
-# we need to ignore those optionals.
-# We might want to add more complex safety checks in future.
-STRUCT_MEMBER_IGNORE_OPTIONAL = {
-    "VkSubmitInfo.pWaitDstStageMask",
-    "VkPipelineLayoutCreateInfo.pSetLayouts",
-    "VkGraphicsPipelineCreateInfo.pStages",
-    "VkPipelineColorBlendStateCreateInfo.pAttachments",
-    "VkFramebufferCreateInfo.attachmentCount",
-    "VkFramebufferCreateInfo.pAttachments",
-    "VkVideoProfileInfoKHR.chromaBitDepth",
-    "VkVideoDecodeInfoKHR.pSetupReferenceSlot",
-    "vkCmdBindDescriptorSets.pDescriptorSets",
-    "vkCmdBindDescriptorSets.local_pDescriptorSets",
-    "vkCmdBindVertexBuffers.pBuffers",
-    "vkCmdBindVertexBuffers.local_pBuffers",
-    "vkCmdClearColorImage.pColor",
-    "vkCmdClearColorImage.local_pColor",
-}
-
-# Holds information about a Vulkan type instance (i.e., not a type definition).
-# Type instances are used as struct field definitions or function parameters,
-# to be later fed to code generation.
-# VulkanType instances can be constructed in two ways:
-# 1. From an XML tag with <type> / <param> tags in vk.xml,
-#    using makeVulkanTypeFromXMLTag
-# 2. User-defined instances with makeVulkanTypeSimple.
-class VulkanType(object):
-
-    def __init__(self):
-        self.parent: Optional[VulkanType] = None
-        self.typeName: str = ""
-
-        self.isTransformed = False
-
-        self.paramName: Optional[str] = None
-
-        self.lenExpr: Optional[str] = None  # Value of the `len` attribute in the spec
-        self.isOptional: bool = False
-        self.optionalStr: Optional[str] = None  # Value of the `optional` attribute in the spec
-
-        self.isConst = False
-
-        # "" means it's not a static array, otherwise this is the total size of
-        # all elements. e.g. staticArrExpr of "x[3][2][8]" will be "((3)*(2)*(8))".
-        self.staticArrExpr = ""
-        # "" means it's not a static array, otherwise it's the raw expression
-        # of static array size, which can be one-dimensional or multi-dimensional.
-        self.rawStaticArrExpr = ""
-
-        self.pointerIndirectionLevels = 0  # 0 means not pointer
-        self.isPointerToConstPointer = False
-
-        self.primitiveEncodingSize = None
-
-        self.deviceMemoryInfoParameterIndices = None
-
-        # Annotations
-        # Environment annotation for binding current
-        # variables to sub-structures
-        self.binds = {}
-
-        # Device memory annotations
-
-        # self.deviceMemoryAttrib/Val stores
-        # device memory info attributes
-        self.deviceMemoryAttrib = None
-        self.deviceMemoryVal = None
-
-        # Filter annotations
-        self.filterVar = None
-        self.filterVals = None
-        self.filterFunc = None
-        self.filterOtherwise = None
-
-        # Stream feature
-        self.streamFeature = None
-
-        # All other annotations
-        self.attribs = {}
-
-        self.nonDispatchableHandleCreate = False
-        self.nonDispatchableHandleDestroy = False
-        self.dispatchHandle = False
-        self.dispatchableHandleCreate = False
-        self.dispatchableHandleDestroy = False
-
-
-    def __str__(self,):
-        return ("(vulkantype %s %s paramName %s len %s optional? %s "
-                "staticArrExpr %s)") % (
-            self.typeName + ("*" * self.pointerIndirectionLevels) +
-            ("ptr2constptr" if self.isPointerToConstPointer else ""), "const"
-            if self.isConst else "nonconst", self.paramName, self.lenExpr,
-            self.isOptional, self.staticArrExpr)
-
-    def isString(self):
-        return self.pointerIndirectionLevels == 1 and (self.typeName == "char")
-
-    def isArrayOfStrings(self):
-        return self.isPointerToConstPointer and (self.typeName == "char")
-
-    def primEncodingSize(self):
-        return self.primitiveEncodingSize
-
-    # Utility functions to make codegen life easier.
-    # This method derives the correct "count" expression if possible.
-    # Otherwise, returns None or "null-terminated" if a string.
-    def getLengthExpression(self):
-        if self.staticArrExpr != "":
-            return self.staticArrExpr
-        if self.lenExpr:
-            # Use a simple lookup table for latexmath.
-            known_expressions = {
-                r"latexmath:[\lceil{\mathit{samples} \over 32}\rceil]":
-                    "int(samples / 32)",
-                r"latexmath:[2 \times \mathtt{VK\_UUID\_SIZE}]": "2 * VK_UUID_SIZE",
-            }
-            if self.lenExpr in known_expressions:
-                return known_expressions[self.lenExpr]
-            return self.lenExpr
-        return None
-
-    # Can we just pass this to functions expecting T*
-    def accessibleAsPointer(self):
-        if self.staticArrExpr != "":
-            return True
-        if self.pointerIndirectionLevels > 0:
-            return True
-        return False
-
-    # Rough attempt to infer where a type could be an output.
-    # Good for inferring which things need to be marshaled in
-    # versus marshaled out for Vulkan API calls
-    def possiblyOutput(self,):
-        return self.pointerIndirectionLevels > 0 and (not self.isConst)
-
-    def isVoidWithNoSize(self,):
-        return self.typeName == "void" and self.pointerIndirectionLevels == 0
-
-    def getCopy(self,):
-        return copy(self)
-
-    def getTransformed(self, isConstChoice=None, ptrIndirectionChoice=None):
-        res = self.getCopy()
-
-        if isConstChoice is not None:
-            res.isConst = isConstChoice
-        if ptrIndirectionChoice is not None:
-            res.pointerIndirectionLevels = ptrIndirectionChoice
-
-        return res
-
-    def getWithCustomName(self):
-        return self.getTransformed(
-            ptrIndirectionChoice=self.pointerIndirectionLevels + 1)
-
-    def getForAddressAccess(self):
-        return self.getTransformed(
-            ptrIndirectionChoice=self.pointerIndirectionLevels + 1)
-
-    def getForValueAccess(self):
-        if self.typeName == "void" and self.pointerIndirectionLevels == 1:
-            asUint8Type = self.getCopy()
-            asUint8Type.typeName = "uint8_t"
-            return asUint8Type.getForValueAccess()
-        return self.getTransformed(
-            ptrIndirectionChoice=self.pointerIndirectionLevels - 1)
-
-    def getForNonConstAccess(self):
-        return self.getTransformed(isConstChoice=False)
-
-    def withModifiedName(self, newName):
-        res = self.getCopy()
-        res.paramName = newName
-        return res
-
-    def isNextPointer(self):
-        return self.paramName == "pNext"
-
-    def isSigned(self):
-        return self.typeName in ["int", "int8_t", "int16_t", "int32_t", "int64_t"]
-
-    def isEnum(self, typeInfo):
-        return typeInfo.categoryOf(self.typeName) == "enum"
-
-    def isBitmask(self, typeInfo):
-        return typeInfo.categoryOf(self.typeName) == "enum"
-
-    # Only deals with 'core' handle types here.
-    def isDispatchableHandleType(self):
-        return self.typeName in DISPATCHABLE_HANDLE_TYPES
-
-    def isNonDispatchableHandleType(self):
-        return self.typeName in NON_DISPATCHABLE_HANDLE_TYPES
-
-    def isHandleType(self):
-        return self.isDispatchableHandleType() or \
-               self.isNonDispatchableHandleType()
-
-    def isCreatedBy(self, api):
-        if self.shouldSkip():
-            return False
-        if self.typeName in HANDLE_INFO.keys():
-            nonKhrRes = HANDLE_INFO[self.typeName].isCreateApi(api.name)
-            if nonKhrRes:
-                return True
-            if len(api.name) > 3 and "KHR" == api.name[-3:]:
-                return HANDLE_INFO[self.typeName].isCreateApi(api.name[:-3])
-
-        if self.typeName == "VkImage" and api.name == "vkCreateImageWithRequirementsGOOGLE":
-            return True
-
-        if self.typeName == "VkBuffer" and api.name == "vkCreateBufferWithRequirementsGOOGLE":
-            return True
-
-        return False
-
-    def isDestroyedBy(self, api):
-        if self.shouldSkip():
-            return False
-        if self.typeName in HANDLE_INFO.keys():
-            nonKhrRes = HANDLE_INFO[self.typeName].isDestroyApi(api.name)
-            if nonKhrRes:
-                return True
-            if len(api.name) > 3 and "KHR" == api.name[-3:]:
-                return HANDLE_INFO[self.typeName].isDestroyApi(api.name[:-3])
-
-        return False
-
-    def isSimpleValueType(self, typeInfo):
-        if typeInfo.isCompoundType(self.typeName):
-            return False
-        if self.isString() or self.isArrayOfStrings():
-            return False
-        if self.staticArrExpr or self.pointerIndirectionLevels > 0:
-            return False
-        return True
-
-    def getStructEnumExpr(self,):
-        return None
-
-    def getPrintFormatSpecifier(self):
-        kKnownTypePrintFormatSpecifiers = {
-            'float': '%f',
-            'int': '%d',
-            'int32_t': '%d',
-            'size_t': '%ld',
-            'uint16_t': '%d',
-            'uint32_t': '%d',
-            'uint64_t': '%ld',
-            'VkBool32': '%d',
-            'VkDeviceSize': '%ld',
-            'VkFormat': '%d',
-            'VkImageLayout': '%d',
-        }
-
-        if self.pointerIndirectionLevels > 0 or self.isHandleType():
-            return '%p'
-
-        if self.typeName in kKnownTypePrintFormatSpecifiers:
-            return kKnownTypePrintFormatSpecifiers[self.typeName]
-
-        if self.typeName.endswith('Flags'):
-            # Based on `typedef uint32_t VkFlags;`
-            return '%d'
-
-        return None
-    def isOptionalPointer(self) -> bool:
-        return self.isOptional and \
-               (not self.isForceOptional()) and\
-               self.pointerIndirectionLevels > 0 and \
-               (not self.isNextPointer())
-
-    def isForceOptional(self) -> bool:
-        """
-        Returns true if we should generate a placeholder for null.
-
-        Vulkan updates change certain pointers from non-optional to
-        optional. We want to keep our encoder/decoder backward compatible.
-        Thus we should generate a placeholder for such APIs.
-        """
-        return self.getFullName() in STRUCT_MEMBER_IGNORE_OPTIONAL
-
-    def getFullName(self) -> str:
-        if self.parent is None:
-            return self.paramName
-        return f"{self.parent.name}.{self.paramName}" 
-
-    def getProtectStreamFeature(self) -> Optional[str]:
-        key = self.getFullName()
-        if key in STRUCT_MEMBER_STREAM_FEATURE.keys():
-            return STRUCT_MEMBER_STREAM_FEATURE[key]
-        return None
-
-    def shouldSkip(self) -> bool:
-        return ("api" in self.attribs.keys()
-                and not "vulkan" == self.attribs["api"])
-
-# Is an S-expression w/ the following spec:
-# From https://gist.github.com/pib/240957
-class Atom(object):
-    def __init__(self, name):
-        self.name = name
-    def __repr__(self,):
-        return self.name
-
-def parse_sexp(sexp):
-    atom_end = set('()"\'') | set(whitespace)
-    stack, i, length = [[]], 0, len(sexp)
-    while i < length:
-        c = sexp[i]
-
-        reading = type(stack[-1])
-        if reading == list:
-            if   c == '(': stack.append([])
-            elif c == ')':
-                stack[-2].append(stack.pop())
-                if stack[-1][0] == ('quote',): stack[-2].append(stack.pop())
-            elif c == '"': stack.append('')
-            elif c == "'": stack.append([('quote',)])
-            elif c in whitespace: pass
-            else: stack.append(Atom(c))
-        elif reading == str:
-            if   c == '"':
-                stack[-2].append(stack.pop())
-                if stack[-1][0] == ('quote',): stack[-2].append(stack.pop())
-            elif c == '\\':
-                i += 1
-                stack[-1] += sexp[i]
-            else: stack[-1] += c
-        elif reading == Atom:
-            if c in atom_end:
-                atom = stack.pop()
-                if atom.name[0].isdigit(): stack[-1].append(eval(atom.name))
-                else: stack[-1].append(atom)
-                if stack[-1][0] == ('quote',): stack[-2].append(stack.pop())
-                continue
-            else: stack[-1] = Atom(stack[-1].name + c)
-        i += 1
-
-    return stack.pop()
-
-class FuncExprVal(object):
-    def __init__(self, val):
-        self.val = val
-    def __repr__(self,):
-        return self.val.__repr__()
-
-class FuncExpr(object):
-    def __init__(self, name, args):
-        self.name = name
-        self.args = args
-    def __repr__(self,):
-        if len(self.args) == 0:
-            return "(%s)" % (self.name.__repr__())
-        else:
-            return "(%s %s)" % (self.name.__repr__(), " ".join(map(lambda x: x.__repr__(), self.args)))
-
-class FuncLambda(object):
-    def __init__(self, vs, body):
-        self.vs = vs
-        self.body = body
-    def __repr__(self,):
-        return "(L (%s) %s)" % (" ".join(map(lambda x: x.__repr__(), self.vs)), self.body.__repr__())
-
-class FuncLambdaParam(object):
-    def __init__(self, name, typ):
-        self.name = name
-        self.typ = typ
-    def __repr__(self,):
-        return "%s : %s" % (self.name, self.typ)
-
-def parse_func_expr(parsed_sexp):
-    if len(parsed_sexp) != 1:
-        print("Error: parsed # expressions != 1: %d" % (len(parsed_sexp)))
-        raise
-
-    e = parsed_sexp[0]
-
-    def parse_lambda_param(e):
-        return FuncLambdaParam(e[0].name, e[1].name)
-
-    def parse_one(exp):
-        if list == type(exp):
-            if "lambda" == exp[0].__repr__():
-                return FuncLambda(list(map(parse_lambda_param, exp[1])), parse_one(exp[2]))
-            else:
-                return FuncExpr(exp[0], list(map(parse_one, exp[1:])))
-        else:
-            return FuncExprVal(exp)
-
-    return parse_one(e)
-
-def parseFilterFuncExpr(expr):
-    res = parse_func_expr(parse_sexp(expr))
-    return res
-
-def parseLetBodyExpr(expr):
-    res = parse_func_expr(parse_sexp(expr))
-    return res
-
-def makeVulkanTypeFromXMLTag(typeInfo, parentName: str, tag: Element) -> VulkanType:
-    res = VulkanType()
-
-    # Process the length expression
-
-    if tag.attrib.get("len") is not None:
-        lengths = tag.attrib.get("len").split(",")
-        res.lenExpr = lengths[0]
-
-    # Calculate static array expression
-
-    nametag = tag.find("name")
-    enumtag = tag.find("enum")
-
-    if enumtag is not None:
-        res.staticArrExpr = enumtag.text
-    elif nametag is not None:
-        res.rawStaticArrExpr = noneStr(nametag.tail)
-
-        dimensions = res.rawStaticArrExpr.count('[')
-        if dimensions == 1:
-            res.staticArrExpr = res.rawStaticArrExpr[1:-1]
-        elif dimensions > 1:
-            arraySizes = res.rawStaticArrExpr[1:-1].split('][')
-            res.staticArrExpr = '(' + \
-                '*'.join(f'({size})' for size in arraySizes) + ')'
-
-    # Determine const
-
-    beforeTypePart = noneStr(tag.text)
-
-    if "const" in beforeTypePart:
-        res.isConst = True
-
-    # Calculate type and pointer info
-    for elem in tag:
-        if elem.tag == "name":
-            res.paramName = elem.text
-        if elem.tag == "type":
-            duringTypePart = noneStr(elem.text)
-            afterTypePart = noneStr(elem.tail)
-            # Now we know enough to fill some stuff in
-            res.typeName = duringTypePart
-
-            if res.typeName in TRANSFORMED_TYPES:
-                res.isTransformed = True
-
-            # This only handles pointerIndirectionLevels == 2
-            # along with optional constant pointer for the inner part.
-            for c in afterTypePart:
-                if c == "*":
-                    res.pointerIndirectionLevels += 1
-            if "const" in afterTypePart and res.pointerIndirectionLevels == 2:
-                res.isPointerToConstPointer = True
-
-            # If void*, treat like it's not a pointer
-            # if duringTypePart == "void":
-            # res.pointerIndirectionLevels -= 1
-
-    # Calculate optionality (based on validitygenerator.py)
-    if tag.attrib.get("optional") is not None:
-        res.isOptional = True
-        res.optionalStr = tag.attrib.get("optional")
-
-    # If no validity is being generated, it usually means that
-    # validity is complex and not absolute, so let's say yes.
-    if tag.attrib.get("noautovalidity") is not None:
-        res.isOptional = True
-
-    # If this is a structure extension, it is optional.
-    if tag.attrib.get("structextends") is not None:
-        res.isOptional = True
-
-    # If this is a pNext pointer, it is optional.
-    if res.paramName == "pNext":
-        res.isOptional = True
-
-    res.primitiveEncodingSize = typeInfo.getPrimitiveEncodingSize(res.typeName)
-
-    # Annotations: Environment binds
-    if tag.attrib.get("binds") is not None:
-        bindPairs = map(lambda x: x.strip(), tag.attrib.get("binds").split(","))
-        bindPairsSplit = map(lambda p: p.split(":"), bindPairs)
-        res.binds = dict(map(lambda sp: (sp[0].strip(), sp[1].strip()), bindPairsSplit))
-
-    # Annotations: Filters
-    structMemberName = f"{parentName}.{res.paramName}"
-    if structMemberName in STRUCT_MEMBER_FILTER_VAR.keys():
-        res.filterVar = STRUCT_MEMBER_FILTER_VAR[structMemberName]
-
-    if structMemberName in STRUCT_MEMBER_FILTER_VALS.keys():
-        res.filterVals = STRUCT_MEMBER_FILTER_VALS[structMemberName]
-
-    if structMemberName in STRUCT_MEMBER_FILTER_FUNC.keys():
-        res.filterFunc = parseFilterFuncExpr(STRUCT_MEMBER_FILTER_FUNC[structMemberName])
-
-    if tag.attrib.get("filterOtherwise") is not None:
-        res.Otherwise = tag.attrib.get("filterOtherwise")
-
-    # store all other attribs here
-    res.attribs = dict(tag.attrib)
-
-    return res
-
-
-def makeVulkanTypeSimple(isConst,
-                         typeName,
-                         ptrIndirectionLevels,
-                         paramName=None):
-    res = VulkanType()
-
-    res.typeName = typeName
-    res.isConst = isConst
-    res.pointerIndirectionLevels = ptrIndirectionLevels
-    res.isPointerToConstPointer = False
-    res.paramName = paramName
-    res.primitiveEncodingSize = None
-
-    return res
-
-
-# Classes for describing aggregate types (unions, structs) and API calls.
-class VulkanCompoundType(object):
-
-    def __init__(self, name: str, members: List[VulkanType], isUnion=False, structEnumExpr=None, structExtendsExpr=None, feature=None, initialEnv={}, optional=None):
-        self.name: str = name
-        self.typeName: str = name
-        self.members: List[VulkanType] = members
-        self.environment = initialEnv
-        self.isUnion = isUnion
-        self.structEnumExpr = structEnumExpr
-        self.structExtendsExpr = structExtendsExpr
-        self.feature = feature
-        if name in DEVICE_MEMORY_STRUCTS:
-            self.deviceMemoryInfoParameterIndices = DEVICE_MEMORY_STRUCTS[name]
-        else:
-            self.deviceMemoryInfoParameterIndices = None
-        self.isTransformed = name in TRANSFORMED_TYPES
-        self.copy = None
-        self.optionalStr = optional
-
-    def initCopies(self):
-        self.copy = self
-
-        for m in self.members:
-            m.parent = self.copy
-
-    def getMember(self, memberName) -> Optional[VulkanType]:
-        for m in self.members:
-            if m.paramName == memberName:
-                return m
-        return None
-
-    def getStructEnumExpr(self,):
-        return self.structEnumExpr
-
-    def getProtectStreamFeature(self) -> Optional[str]:
-        if not self.name in STRUCT_STREAM_FEATURE.keys():
-            return None
-        return STRUCT_STREAM_FEATURE[self.name]
-
-
-class VulkanAPI(object):
-
-    def __init__(self, name: str, retType: VulkanType, parameters, origName=None):
-        self.name: str = name
-        self.origName = name
-        self.retType: VulkanType = retType
-        self.parameters: List[VulkanType] = list(filter(lambda param: not param.shouldSkip(), parameters))
-
-        if name in DEVICE_MEMORY_COMMANDS.keys():
-            self.deviceMemoryInfoParameterIndices = DEVICE_MEMORY_COMMANDS[name]
-        else:
-            self.deviceMemoryInfoParameterIndices = None
-
-        self.copy = None
-
-        self.isTransformed = name in TRANSFORMED_TYPES
-
-        if origName:
-            self.origName = origName
-
-    def initCopies(self):
-        self.copy = self
-
-        for m in self.parameters:
-            m.parent = self.copy
-
-    def getCopy(self,):
-        return copy(self)
-
-    def getParameter(self, parameterName):
-        for p in self.parameters:
-            if p.paramName == parameterName:
-                return p
-        return None
-
-    def withModifiedName(self, newName):
-        res = VulkanAPI(newName, self.retType, self.parameters)
-        return res
-
-    def getRetVarExpr(self):
-        if self.retType.typeName == "void":
-            return None
-        return "%s_%s_return" % (self.name, self.retType.typeName)
-
-    def getRetTypeExpr(self):
-        return self.retType.typeName
-
-    def withCustomParameters(self, customParams):
-        res = self.getCopy()
-        res.parameters = customParams
-        return res
-
-    def withCustomReturnType(self, retType):
-        res = self.getCopy()
-        res.retType = retType
-        return res
-
-# Whether or not special handling of virtual elements
-# such as VkDeviceMemory is needed.
-def vulkanTypeNeedsTransform(structOrApi):
-    return structOrApi.deviceMemoryInfoParameterIndices != None
-
-def vulkanTypeGetNeededTransformTypes(structOrApi):
-    res = []
-    if structOrApi.deviceMemoryInfoParameterIndices != None:
-        res.append("devicememory")
-    return res
-
-def vulkanTypeforEachSubType(structOrApi, f):
-    toLoop = None
-    if type(structOrApi) == VulkanCompoundType:
-        toLoop = structOrApi.members
-    if type(structOrApi) == VulkanAPI:
-        toLoop = structOrApi.parameters
-
-    for (i, x) in enumerate(toLoop):
-        f(i, x)
-
-# Parses everything about Vulkan types into a Python readable format.
-class VulkanTypeInfo(object):
-
-    def __init__(self, generator):
-        self.generator = generator
-        self.categories: Set[str] = set([])
-
-        # Tracks what Vulkan type is part of what category.
-        self.typeCategories: Dict[str, str] = {}
-
-        # Tracks the primitive encoding size for each type, if applicable.
-        self.encodingSizes: Dict[str, Optional[int]] = {}
-
-        self.structs: Dict[str, VulkanCompoundType] = {}
-        self.apis: Dict[str, VulkanAPI] = {}
-
-        # Maps bitmask types to the enum type used for the flags
-        # E.g. "VkImageAspectFlags" -> "VkImageAspectFlagBits"
-        self.bitmasks: Dict[str, str] = {}
-
-        # Maps all enum names to their values.
-        # For aliases, the value is the name of the canonical enum
-        self.enumValues: Dict[str, Union[int, str]] = {}
-
-        # Maps enum to their xml element
-        self.enumElem = {}
-
-        self.feature = None
-
-    def initType(self, name: str, category: str):
-        self.categories.add(category)
-        self.typeCategories[name] = category
-        self.encodingSizes[name] = self.setPrimitiveEncodingSize(name)
-
-    def categoryOf(self, name):
-        return self.typeCategories[name]
-
-    def getPrimitiveEncodingSize(self, name):
-        return self.encodingSizes[name]
-
-    # Queries relating to categories of Vulkan types.
-    def isHandleType(self, name):
-        return self.typeCategories.get(name) == "handle"
-
-    def isCompoundType(self, name: str):
-        return self.typeCategories.get(name) in ["struct", "union"]
-
-    # Gets the best size in bytes
-    # for encoding/decoding a particular Vulkan type.
-    # If not applicable, returns None.
-    def setPrimitiveEncodingSize(self, name: str) -> Optional[int]:
-        baseEncodingSizes = {
-            "void": 8,
-            "char": 1,
-            "float": 4,
-            "uint8_t": 1,
-            "uint16_t": 2,
-            "uint32_t": 4,
-            "uint64_t": 8,
-            "int": 4,
-            "int8_t": 1,
-            "int16_t": 2,
-            "int32_t": 4,
-            "int64_t": 8,
-            "size_t": 8,
-            "ssize_t": 8,
-            "VkBool32": 4,
-            "zx_handle_t": 4,
-        }
-
-        if name in baseEncodingSizes:
-            return baseEncodingSizes[name]
-
-        category = self.typeCategories[name]
-
-        if category in [None, "api", "include", "define", "struct", "union"]:
-            return None
-
-        # Handles are pointers so they must be 8 bytes. Basetype includes VkDeviceSize which is 8 bytes.
-        if category in ["handle", "basetype", "funcpointer"]:
-            return 8
-
-        if category in ["enum", "bitmask"]:
-            return 4
-
-    def isNonAbiPortableType(self, typeName):
-        if typeName in EXPLICITLY_ABI_PORTABLE_TYPES:
-            return False
-
-        if typeName in EXPLICITLY_ABI_NON_PORTABLE_TYPES:
-            return True
-
-        category = self.typeCategories[typeName]
-        return category in NON_ABI_PORTABLE_TYPE_CATEGORIES
-
-    def onBeginFeature(self, featureName, featureType):
-        self.feature = featureName
-
-    def onEndFeature(self):
-        self.feature = None
-
-    def onGenType(self, typeinfo, name, alias):
-        category = typeinfo.elem.get("category")
-        self.initType(name, category)
-
-        if category in ["struct", "union"]:
-            self.onGenStruct(typeinfo, name, alias)
-
-        if category == "bitmask":
-            self.bitmasks[name] = typeinfo.elem.get("requires")
-
-    def onGenStruct(self, typeinfo, typeName, alias):
-        if not alias:
-            members: List[VulkanType] = []
-
-            structExtendsExpr = typeinfo.elem.get("structextends")
-
-            structEnumExpr = None
-
-            initialEnv = {}
-            envStr = typeinfo.elem.get("exists")
-            if envStr != None:
-                comma_separated = envStr.split(",")
-                name_type_pairs = map(lambda cs: tuple(map(lambda t: t.strip(), cs.split(":"))), comma_separated)
-                for (name, typ) in name_type_pairs:
-                    initialEnv[name] = {
-                        "type" : typ,
-                        "binding" : None,
-                        "structmember" : False,
-                        "body" : None,
-                    }
-
-            if typeName in STRUCT_ENV_STR.keys():
-                name_body_pairs = STRUCT_ENV_STR[typeName]
-                for (name, body) in name_body_pairs.items():
-                    initialEnv[name] = {
-                        "type" : "uint32_t",
-                        "binding" : name,
-                        "structmember" : False,
-                        "body" : parseLetBodyExpr(body)
-                    }
-
-            for member in typeinfo.elem.findall(".//member"):
-                if "api" in member.attrib.keys() and not "vulkan" == member.attrib["api"]:
-                    continue
-                vulkanType = makeVulkanTypeFromXMLTag(self, typeName, member)
-                initialEnv[vulkanType.paramName] = {
-                    "type": vulkanType.typeName,
-                    "binding": vulkanType.paramName,
-                    "structmember": True,
-                    "body": None,
-                }
-                members.append(vulkanType)
-                if vulkanType.typeName == "VkStructureType" and \
-                   member.get("values"):
-                   structEnumExpr = member.get("values")
-
-            self.structs[typeName] = \
-                VulkanCompoundType(
-                    typeName,
-                    members,
-                    isUnion = self.categoryOf(typeName) == "union",
-                    structEnumExpr = structEnumExpr,
-                    structExtendsExpr = structExtendsExpr,
-                    feature = self.feature,
-                    initialEnv = initialEnv,
-                    optional = typeinfo.elem.get("optional", None))
-            self.structs[typeName].initCopies()
-
-    def onGenGroup(self, groupinfo, groupName, _alias=None):
-        self.initType(groupName, "enum")
-        enums = groupinfo.elem.findall("enum")
-        for enum in enums:
-            intVal, strVal = self.generator.enumToValue(enum, True)
-            self.enumValues[enum.get('name')] = intVal if intVal is not None else strVal
-            self.enumElem[enum.get('name')] = enum
-
-
-    def onGenEnum(self, enuminfo, name: str, alias):
-        self.initType(name, "enum")
-        value: str = enuminfo.elem.get("value")
-        self.enumElem[name] = enuminfo.elem
-        if value and value.isdigit():
-            self.enumValues[name] = int(value)
-        elif value and value[0] == '"' and value[-1] == '"':
-            self.enumValues[name] = value[1:-1]
-        elif alias is not None:
-            self.enumValues[name] = alias
-        else:
-            # There's about a dozen cases of using the bitwise NOT operator (e.g.: `(~0U)`, `(~0ULL)`)
-            # to concisely represent large values. Just ignore them for now.
-            # In the future, we can add a lookup table to convert these to int
-            return
-
-    def onGenCmd(self, cmdinfo, name, _alias):
-        self.initType(name, "api")
-
-        proto = cmdinfo.elem.find("proto")
-        params = cmdinfo.elem.findall("param")
-
-        self.apis[name] = \
-            VulkanAPI(
-                name,
-                makeVulkanTypeFromXMLTag(self, name, proto),
-                list(map(lambda p: makeVulkanTypeFromXMLTag(self, name, p),
-                         params)))
-        self.apis[name].initCopies()
-
-    def onEnd(self):
-        pass
-
-def hasNullOptionalStringFeature(forEachType):
-    return (hasattr(forEachType, "onCheckWithNullOptionalStringFeature")) and \
-           (hasattr(forEachType, "endCheckWithNullOptionalStringFeature")) and \
-           (hasattr(forEachType, "finalCheckWithNullOptionalStringFeature"))
-
-
-# General function to iterate over a vulkan type and call code that processes
-# each of its sub-components, if any.
-def iterateVulkanType(typeInfo: VulkanTypeInfo, vulkanType: VulkanType, forEachType):
-    if not vulkanType.isArrayOfStrings():
-        if vulkanType.isPointerToConstPointer:
-            return False
-
-    if vulkanType.shouldSkip():
-        return False
-
-    forEachType.registerTypeInfo(typeInfo)
-
-    needCheck = vulkanType.isOptionalPointer()
-
-    if typeInfo.isCompoundType(vulkanType.typeName) and not vulkanType.isNextPointer():
-
-        if needCheck:
-            forEachType.onCheck(vulkanType)
-
-        forEachType.onCompoundType(vulkanType)
-
-        if needCheck:
-            forEachType.endCheck(vulkanType)
-
-    else:
-        if vulkanType.isString():
-            if needCheck and hasNullOptionalStringFeature(forEachType):
-                forEachType.onCheckWithNullOptionalStringFeature(vulkanType)
-                forEachType.onString(vulkanType)
-                forEachType.endCheckWithNullOptionalStringFeature(vulkanType)
-                forEachType.onString(vulkanType)
-                forEachType.finalCheckWithNullOptionalStringFeature(vulkanType)
-            elif needCheck:
-                forEachType.onCheck(vulkanType)
-                forEachType.onString(vulkanType)
-                forEachType.endCheck(vulkanType)
-            else:
-                forEachType.onString(vulkanType)
-
-        elif vulkanType.isArrayOfStrings():
-            forEachType.onStringArray(vulkanType)
-
-        elif vulkanType.staticArrExpr:
-            forEachType.onStaticArr(vulkanType)
-
-        elif vulkanType.isNextPointer():
-            if needCheck:
-                forEachType.onCheck(vulkanType)
-            forEachType.onStructExtension(vulkanType)
-            if needCheck:
-                forEachType.endCheck(vulkanType)
-
-        elif vulkanType.pointerIndirectionLevels > 0:
-            if needCheck:
-                forEachType.onCheck(vulkanType)
-            forEachType.onPointer(vulkanType)
-            if needCheck:
-                forEachType.endCheck(vulkanType)
-
-        else:
-            forEachType.onValue(vulkanType)
-
-    return True
-
-class VulkanTypeIterator(object):
-    def __init__(self,):
-        self.typeInfo = None
-
-    def registerTypeInfo(self, typeInfo):
-        self.typeInfo = typeInfo
-
-def vulkanTypeGetStructFieldLengthInfo(structInfo, vulkanType):
-    def getSpecialCaseVulkanStructFieldLength(structInfo, vulkanType):
-        cases = [
-            {
-                "structName": "VkShaderModuleCreateInfo",
-                "field": "pCode",
-                "lenExpr": "codeSize",
-                "postprocess": lambda expr: "(%s / 4)" % expr
-            },
-            {
-                "structName": "VkPipelineMultisampleStateCreateInfo",
-                "field": "pSampleMask",
-                "lenExpr": "rasterizationSamples",
-                "postprocess": lambda expr: "(((%s) + 31) / 32)" % expr
-            },
-        ]
-
-        for c in cases:
-            if (structInfo.name, vulkanType.paramName) == (c["structName"], c["field"]):
-                return c
-
-        return None
-
-    specialCaseAccess = getSpecialCaseVulkanStructFieldLength(structInfo, vulkanType)
-
-    if specialCaseAccess is not None:
-        return specialCaseAccess
-
-    lenExpr = vulkanType.getLengthExpression()
-
-    if lenExpr is None:
-        return None
-
-    return {
-        "structName": structInfo.name,
-        "field": vulkanType.typeName,
-        "lenExpr": lenExpr,
-        "postprocess": lambda expr: expr}
-
-
-class VulkanTypeProtobufInfo(object):
-    def __init__(self, typeInfo, structInfo, vulkanType):
-        self.needsMessage = typeInfo.isCompoundType(vulkanType.typeName)
-        self.isRepeatedString = vulkanType.isArrayOfStrings()
-        self.isString = vulkanType.isString() or (
-            vulkanType.typeName == "char" and (vulkanType.staticArrExpr != ""))
-
-        if structInfo is not None:
-            self.lengthInfo = vulkanTypeGetStructFieldLengthInfo(
-                structInfo, vulkanType)
-        else:
-            self.lengthInfo = vulkanType.getLengthExpression()
-
-        self.protobufType = None
-        self.origTypeCategory = typeInfo.categoryOf(vulkanType.typeName)
-
-        self.isExtensionStruct = \
-            vulkanType.typeName == "void" and \
-            vulkanType.pointerIndirectionLevels > 0 and \
-            vulkanType.paramName == "pNext"
-
-        if self.needsMessage:
-            return
-
-        if typeInfo.categoryOf(vulkanType.typeName) in ["enum", "bitmask"]:
-            self.protobufType = "uint32"
-
-        if typeInfo.categoryOf(vulkanType.typeName) in ["funcpointer", "handle", "define"]:
-            self.protobufType = "uint64"
-
-        if typeInfo.categoryOf(vulkanType.typeName) in ["basetype"]:
-            baseTypeMapping = {
-                "VkFlags" : "uint32",
-                "VkBool32" : "uint32",
-                "VkDeviceSize" : "uint64",
-                "VkSampleMask" : "uint32",
-            }
-            self.protobufType = baseTypeMapping[vulkanType.typeName]
-
-        if typeInfo.categoryOf(vulkanType.typeName) == None:
-
-            otherTypeMapping = {
-                "void" : "uint64",
-                "char" : "uint8",
-                "size_t" : "uint64",
-                "float" : "float",
-                "uint8_t" : "uint32",
-                "uint16_t" : "uint32",
-                "int32_t" : "int32",
-                "uint32_t" : "uint32",
-                "uint64_t" : "uint64",
-                "VkDeviceSize" : "uint64",
-                "VkSampleMask" : "uint32",
-            }
-
-            if vulkanType.typeName in otherTypeMapping:
-                self.protobufType = otherTypeMapping[vulkanType.typeName]
-            else:
-                self.protobufType = "uint64"
-
-
-        protobufCTypeMapping = {
-            "uint8" : "uint8_t",
-            "uint32" : "uint32_t",
-            "int32" : "int32_t",
-            "uint64" : "uint64_t",
-            "float" : "float",
-            "string" : "const char*",
-        }
-
-        self.protobufCType = protobufCTypeMapping[self.protobufType]
-
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/counting.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/counting.py
deleted file mode 100644
index 8df2570..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/counting.py
+++ /dev/null
@@ -1,679 +0,0 @@
-# Copyright 2023 Google LLC
-# SPDX-License-Identifier: MIT
-
-from copy import copy
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator, Atom, FuncExpr, FuncExprVal, FuncLambda
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import ROOT_TYPE_VAR_NAME, ROOT_TYPE_PARAM
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME
-
-class VulkanCountingCodegen(VulkanTypeIterator):
-    def __init__(self, cgen, featureBitsVar, toCountVar, countVar, rootTypeVar, prefix, forApiOutput=False, mapHandles=True, handleMapOverwrites=False, doFiltering=True):
-        self.cgen = cgen
-        self.featureBitsVar = featureBitsVar
-        self.toCountVar = toCountVar
-        self.rootTypeVar = rootTypeVar
-        self.countVar = countVar
-        self.prefix = prefix
-        self.forApiOutput = forApiOutput
-
-        self.exprAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.toCountVar, asPtr = True)
-        self.exprValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.toCountVar, asPtr = False)
-        self.exprPrimitiveValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.toCountVar, asPtr = False)
-
-        self.lenAccessor = lambda t: self.cgen.generalLengthAccess(t, parentVarName = self.toCountVar)
-        self.lenAccessorGuard = lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName = self.toCountVar)
-        self.filterVarAccessor = lambda t: self.cgen.filterVarAccess(t, parentVarName = self.toCountVar)
-
-        self.checked = False
-
-        self.mapHandles = mapHandles
-        self.handleMapOverwrites = handleMapOverwrites
-        self.doFiltering = doFiltering
-
-    def getTypeForStreaming(self, vulkanType):
-        res = copy(vulkanType)
-
-        if not vulkanType.accessibleAsPointer():
-            res = res.getForAddressAccess()
-
-        if vulkanType.staticArrExpr:
-            res = res.getForAddressAccess()
-
-        return res
-
-    def makeCastExpr(self, vulkanType):
-        return "(%s)" % (
-            self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
-    def genCount(self, sizeExpr):
-        self.cgen.stmt("*%s += %s" % (self.countVar, sizeExpr))
-
-    def genPrimitiveStreamCall(self, vulkanType):
-        self.genCount(str(self.cgen.countPrimitive(
-            self.typeInfo,
-            vulkanType)))
-
-    def genHandleMappingCall(self, vulkanType, access, lenAccess):
-
-        if lenAccess is None:
-            lenAccess = "1"
-            handle64Bytes = "8"
-        else:
-            handle64Bytes = "%s * 8" % lenAccess
-
-        handle64Var = self.cgen.var()
-        if lenAccess != "1":
-            self.cgen.beginIf(lenAccess)
-            # self.cgen.stmt("uint64_t* %s" % handle64Var)
-            # self.cgen.stmt(
-                # "%s->alloc((void**)&%s, %s * 8)" % \
-                # (self.streamVarName, handle64Var, lenAccess))
-            handle64VarAccess = handle64Var
-            handle64VarType = \
-                makeVulkanTypeSimple(False, "uint64_t", 1, paramName=handle64Var)
-        else:
-            self.cgen.stmt("uint64_t %s" % handle64Var)
-            handle64VarAccess = "&%s" % handle64Var
-            handle64VarType = \
-                makeVulkanTypeSimple(False, "uint64_t", 0, paramName=handle64Var)
-
-        if self.handleMapOverwrites:
-            # self.cgen.stmt(
-                # "static_assert(8 == sizeof(%s), \"handle map overwrite requres %s to be 8 bytes long\")" % \
-                        # (vulkanType.typeName, vulkanType.typeName))
-            # self.cgen.stmt(
-                # "%s->handleMapping()->mapHandles_%s((%s*)%s, %s)" %
-                # (self.streamVarName, vulkanType.typeName, vulkanType.typeName,
-                # access, lenAccess))
-            self.genCount("8 * %s" % lenAccess)
-        else:
-            # self.cgen.stmt(
-                # "%s->handleMapping()->mapHandles_%s_u64(%s, %s, %s)" %
-                # (self.streamVarName, vulkanType.typeName,
-                # access,
-                # handle64VarAccess, lenAccess))
-            self.genCount(handle64Bytes)
-
-        if lenAccess != "1":
-            self.cgen.endIf()
-
-    def doAllocSpace(self, vulkanType):
-        pass
-
-    def getOptionalStringFeatureExpr(self, vulkanType):
-        feature = vulkanType.getProtectStreamFeature()
-        if feature is None:
-            return None
-        return "%s & %s" % (self.featureBitsVar, feature)
-
-    def onCheck(self, vulkanType):
-
-        if self.forApiOutput:
-            return
-
-        featureExpr = self.getOptionalStringFeatureExpr(vulkanType);
-
-        self.checked = True
-
-        access = self.exprAccessor(vulkanType)
-
-        needConsistencyCheck = False
-
-        self.cgen.line("// WARNING PTR CHECK")
-        checkAccess = self.exprAccessor(vulkanType)
-        addrExpr = "&" + checkAccess
-        sizeExpr = self.cgen.sizeofExpr(vulkanType)
-
-        if featureExpr is not None:
-            self.cgen.beginIf(featureExpr)
-
-        self.genPrimitiveStreamCall(
-            vulkanType)
-
-        if featureExpr is not None:
-            self.cgen.endIf()
-
-        if featureExpr is not None:
-            self.cgen.beginIf("(!(%s) || %s)" % (featureExpr, access))
-        else:
-            self.cgen.beginIf(access)
-
-        if needConsistencyCheck and featureExpr is None:
-            self.cgen.beginIf("!(%s)" % checkName)
-            self.cgen.stmt(
-                "fprintf(stderr, \"fatal: %s inconsistent between guest and host\\n\")" % (access))
-            self.cgen.endIf()
-
-
-    def onCheckWithNullOptionalStringFeature(self, vulkanType):
-        self.cgen.beginIf("%s & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT" % self.featureBitsVar)
-        self.onCheck(vulkanType)
-
-    def endCheckWithNullOptionalStringFeature(self, vulkanType):
-        self.endCheck(vulkanType)
-        self.cgen.endIf()
-        self.cgen.beginElse()
-
-    def finalCheckWithNullOptionalStringFeature(self, vulkanType):
-        self.cgen.endElse()
-
-    def endCheck(self, vulkanType):
-
-        if self.checked:
-            self.cgen.endIf()
-            self.checked = False
-
-    def genFilterFunc(self, filterfunc, env):
-
-        def loop(expr, lambdaEnv={}):
-            def do_func(expr):
-                fnamestr = expr.name.name
-                if "not" == fnamestr:
-                    return "!(%s)" % (loop(expr.args[0], lambdaEnv))
-                if "eq" == fnamestr:
-                    return "(%s == %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "and" == fnamestr:
-                    return "(%s && %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "or" == fnamestr:
-                    return "(%s || %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "bitwise_and" == fnamestr:
-                    return "(%s & %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "getfield" == fnamestr:
-                    ptrlevels = get_ptrlevels(expr.args[0].val.name)
-                    if ptrlevels == 0:
-                        return "%s.%s" % (loop(expr.args[0], lambdaEnv), expr.args[1].val)
-                    else:
-                        return "(%s(%s)).%s" % ("*" * ptrlevels, loop(expr.args[0], lambdaEnv), expr.args[1].val)
-
-                if "if" == fnamestr:
-                    return "((%s) ? (%s) : (%s))" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv), loop(expr.args[2], lambdaEnv))
-
-                return "%s(%s)" % (fnamestr, ", ".join(map(lambda e: loop(e, lambdaEnv), expr.args)))
-
-            def do_expratom(atomname, lambdaEnv= {}):
-                if lambdaEnv.get(atomname, None) is not None:
-                    return atomname
-
-                enventry = env.get(atomname, None)
-                if None != enventry:
-                    return self.getEnvAccessExpr(atomname)
-                return atomname
-
-            def get_ptrlevels(atomname, lambdaEnv= {}):
-                if lambdaEnv.get(atomname, None) is not None:
-                    return 0
-
-                enventry = env.get(atomname, None)
-                if None != enventry:
-                    return self.getPointerIndirectionLevels(atomname)
-
-                return 0
-
-            def do_exprval(expr, lambdaEnv= {}):
-                expratom = expr.val
-
-                if Atom == type(expratom):
-                    return do_expratom(expratom.name, lambdaEnv)
-
-                return "%s" % expratom
-
-            def do_lambda(expr, lambdaEnv= {}):
-                params = expr.vs
-                body = expr.body
-                newEnv = {}
-
-                for (k, v) in lambdaEnv.items():
-                    newEnv[k] = v
-
-                for p in params:
-                    newEnv[p.name] = p.typ
-
-                return "[](%s) { return %s; }" % (", ".join(list(map(lambda p: "%s %s" % (p.typ, p.name), params))), loop(body, lambdaEnv=newEnv))
-
-            if FuncExpr == type(expr):
-                return do_func(expr)
-            if FuncLambda == type(expr):
-                return do_lambda(expr)
-            elif FuncExprVal == type(expr):
-                return do_exprval(expr)
-
-        return loop(filterfunc)
-
-    def beginFilterGuard(self, vulkanType):
-        if vulkanType.filterVar == None:
-            return
-
-        if self.doFiltering == False:
-            return
-
-        filterVarAccess = self.getEnvAccessExpr(vulkanType.filterVar)
-
-        filterValsExpr = None
-        filterFuncExpr = None
-        filterExpr = None
-
-        filterFeature = "%s & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.featureBitsVar
-
-        if None != vulkanType.filterVals:
-            filterValsExpr = " || ".join(map(lambda filterval: "(%s == %s)" % (filterval, filterVarAccess), vulkanType.filterVals))
-
-        if None != vulkanType.filterFunc:
-            filterFuncExpr = self.genFilterFunc(vulkanType.filterFunc, self.currentStructInfo.environment)
-
-        if None != filterValsExpr and None != filterFuncExpr:
-            filterExpr = "%s || %s" % (filterValsExpr, filterFuncExpr)
-        elif None == filterValsExpr and None == filterFuncExpr:
-            # Assume is bool
-            self.cgen.beginIf(filterVarAccess)
-        elif None != filterValsExpr:
-            self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterValsExpr))
-        elif None != filterFuncExpr:
-            self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterFuncExpr))
-
-    def endFilterGuard(self, vulkanType, cleanupExpr=None):
-        if vulkanType.filterVar == None:
-            return
-
-        if self.doFiltering == False:
-            return
-
-        if cleanupExpr == None:
-            self.cgen.endIf()
-        else:
-            self.cgen.endIf()
-            self.cgen.beginElse()
-            self.cgen.stmt(cleanupExpr)
-            self.cgen.endElse()
-
-    def getEnvAccessExpr(self, varName):
-        parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
-        if parentEnvEntry != None:
-            isParentMember = parentEnvEntry["structmember"]
-
-            if isParentMember:
-                envAccess = self.exprValueAccessor(list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0])
-            else:
-                envAccess = varName
-            return envAccess
-
-        return None
-
-    def getPointerIndirectionLevels(self, varName):
-        parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
-        if parentEnvEntry != None:
-            isParentMember = parentEnvEntry["structmember"]
-
-            if isParentMember:
-                return list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0].pointerIndirectionLevels
-            else:
-                return 0
-            return 0
-
-        return 0
-
-
-    def onCompoundType(self, vulkanType):
-
-        access = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        self.beginFilterGuard(vulkanType)
-
-        if vulkanType.pointerIndirectionLevels > 0:
-            self.doAllocSpace(vulkanType)
-
-        if lenAccess is not None:
-            if lenAccessGuard is not None:
-                self.cgen.beginIf(lenAccessGuard)
-            loopVar = "i"
-            access = "%s + %s" % (access, loopVar)
-            forInit = "uint32_t %s = 0" % loopVar
-            forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
-            forIncr = "++%s" % loopVar
-            self.cgen.beginFor(forInit, forCond, forIncr)
-
-        accessWithCast = "%s(%s)" % (self.makeCastExpr(
-            self.getTypeForStreaming(vulkanType)), access)
-
-        callParams = [self.featureBitsVar,
-                      self.rootTypeVar, accessWithCast, self.countVar]
-
-        for (bindName, localName) in vulkanType.binds.items():
-            callParams.append(self.getEnvAccessExpr(localName))
-
-        self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
-                           callParams)
-
-        if lenAccess is not None:
-            self.cgen.endFor()
-            if lenAccessGuard is not None:
-                self.cgen.endIf()
-
-        self.endFilterGuard(vulkanType)
-
-    def onString(self, vulkanType):
-        access = self.exprAccessor(vulkanType)
-        self.genCount("sizeof(uint32_t) + (%s ? strlen(%s) : 0)" % (access, access))
-
-    def onStringArray(self, vulkanType):
-        access = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        self.genCount("sizeof(uint32_t)")
-        if lenAccessGuard is not None:
-            self.cgen.beginIf(lenAccessGuard)
-        self.cgen.beginFor("uint32_t i = 0", "i < %s" % lenAccess, "++i")
-        self.cgen.stmt("size_t l = %s[i] ? strlen(%s[i]) : 0" % (access, access))
-        self.genCount("sizeof(uint32_t) + (%s[i] ? strlen(%s[i]) : 0)" % (access, access))
-        self.cgen.endFor()
-        if lenAccessGuard is not None:
-            self.cgen.endIf()
-
-    def onStaticArr(self, vulkanType):
-        access = self.exprValueAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        if lenAccessGuard is not None:
-            self.cgen.beginIf(lenAccessGuard)
-        finalLenExpr = "%s * %s" % (lenAccess, self.cgen.sizeofExpr(vulkanType))
-        if lenAccessGuard is not None:
-            self.cgen.endIf()
-        self.genCount(finalLenExpr)
-
-    def onStructExtension(self, vulkanType):
-        sTypeParam = copy(vulkanType)
-        sTypeParam.paramName = "sType"
-
-        access = self.exprAccessor(vulkanType)
-        sizeVar = "%s_size" % vulkanType.paramName
-
-        castedAccessExpr = access
-
-        sTypeAccess = self.exprAccessor(sTypeParam)
-        self.cgen.beginIf("%s == VK_STRUCTURE_TYPE_MAX_ENUM" %
-                          self.rootTypeVar)
-        self.cgen.stmt("%s = %s" % (self.rootTypeVar, sTypeAccess))
-        self.cgen.endIf()
-
-        self.cgen.funcCall(None, self.prefix + "extension_struct",
-                           [self.featureBitsVar, self.rootTypeVar, castedAccessExpr, self.countVar])
-
-
-    def onPointer(self, vulkanType):
-        access = self.exprAccessor(vulkanType)
-
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        self.beginFilterGuard(vulkanType)
-        self.doAllocSpace(vulkanType)
-
-        if vulkanType.isHandleType() and self.mapHandles:
-            self.genHandleMappingCall(vulkanType, access, lenAccess)
-        else:
-            if self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
-                if lenAccess is not None:
-                    if lenAccessGuard is not None:
-                        self.cgen.beginIf(lenAccessGuard)
-                    self.cgen.beginFor("uint32_t i = 0", "i < (uint32_t)%s" % lenAccess, "++i")
-                    self.genPrimitiveStreamCall(vulkanType.getForValueAccess())
-                    self.cgen.endFor()
-                    if lenAccessGuard is not None:
-                        self.cgen.endIf()
-                else:
-                    self.genPrimitiveStreamCall(vulkanType.getForValueAccess())
-            else:
-                if lenAccess is not None:
-                    needLenAccessGuard = True
-                    finalLenExpr = "%s * %s" % (
-                        lenAccess, self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
-                else:
-                    needLenAccessGuard = False
-                    finalLenExpr = "%s" % (
-                        self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
-                if needLenAccessGuard and lenAccessGuard is not None:
-                    self.cgen.beginIf(lenAccessGuard)
-                self.genCount(finalLenExpr)
-                if needLenAccessGuard and lenAccessGuard is not None:
-                    self.cgen.endIf()
-
-        self.endFilterGuard(vulkanType)
-
-    def onValue(self, vulkanType):
-        self.beginFilterGuard(vulkanType)
-
-        if vulkanType.isHandleType() and self.mapHandles:
-            access = self.exprAccessor(vulkanType)
-            self.genHandleMappingCall(
-                vulkanType.getForAddressAccess(), access, "1")
-        elif self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
-            access = self.exprPrimitiveValueAccessor(vulkanType)
-            self.genPrimitiveStreamCall(vulkanType)
-        else:
-            access = self.exprAccessor(vulkanType)
-            self.genCount(self.cgen.sizeofExpr(vulkanType))
-
-        self.endFilterGuard(vulkanType)
-
-    def streamLetParameter(self, structInfo, letParamInfo):
-        filterFeature = "%s & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % (self.featureBitsVar)
-        self.cgen.stmt("%s %s = 1" % (letParamInfo.typeName, letParamInfo.paramName))
-
-        self.cgen.beginIf(filterFeature)
-
-        bodyExpr = self.currentStructInfo.environment[letParamInfo.paramName]["body"]
-        self.cgen.stmt("%s = %s" % (letParamInfo.paramName, self.genFilterFunc(bodyExpr, self.currentStructInfo.environment)))
-
-        self.genPrimitiveStreamCall(letParamInfo)
-
-        self.cgen.endIf()
-
-class VulkanCounting(VulkanWrapperGenerator):
-
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.codegen = CodeGen()
-
-        self.featureBitsVar = "featureBits"
-        self.featureBitsVarType = makeVulkanTypeSimple(False, "uint32_t", 0, self.featureBitsVar)
-        self.countingPrefix = "count_"
-        self.countVars = ["toCount", "count"]
-        self.countVarType = makeVulkanTypeSimple(False, "size_t", 1, self.countVars[1])
-        self.voidType = makeVulkanTypeSimple(False, "void", 0)
-        self.rootTypeVar = ROOT_TYPE_VAR_NAME
-
-        self.countingCodegen = \
-            VulkanCountingCodegen(
-                self.codegen,
-                self.featureBitsVar,
-                self.countVars[0],
-                self.countVars[1],
-                self.rootTypeVar,
-                self.countingPrefix)
-
-        self.knownDefs = {}
-
-        self.extensionCountingPrototype = \
-            VulkanAPI(self.countingPrefix + "extension_struct",
-                      self.voidType,
-                      [self.featureBitsVarType,
-                       ROOT_TYPE_PARAM,
-                       STRUCT_EXTENSION_PARAM,
-                       self.countVarType])
-
-    def onBegin(self,):
-        VulkanWrapperGenerator.onBegin(self)
-        self.module.appendImpl(self.codegen.makeFuncDecl(
-            self.extensionCountingPrototype))
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-        if name in self.knownDefs:
-            return
-
-        category = self.typeInfo.categoryOf(name)
-
-        if category in ["struct", "union"] and alias:
-            # TODO(liyl): might not work if freeParams != []
-            self.module.appendHeader(
-                self.codegen.makeFuncAlias(self.countingPrefix + name,
-                                           self.countingPrefix + alias))
-
-        if category in ["struct", "union"] and not alias:
-
-            structInfo = self.typeInfo.structs[name]
-
-            freeParams = []
-            letParams = []
-
-            for (envname, bindingInfo) in list(sorted(structInfo.environment.items(), key = lambda kv: kv[0])):
-                if None == bindingInfo["binding"]:
-                    freeParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
-                else:
-                    if not bindingInfo["structmember"]:
-                        letParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
-
-            typeFromName = \
-                lambda varname: \
-                    makeVulkanTypeSimple(True, name, 1, varname)
-
-            countingParams = \
-                [makeVulkanTypeSimple(False, "uint32_t", 0, self.featureBitsVar),
-                 ROOT_TYPE_PARAM,
-                 typeFromName(self.countVars[0]),
-                 makeVulkanTypeSimple(False, "size_t", 1, self.countVars[1])]
-
-            countingPrototype = \
-                VulkanAPI(self.countingPrefix + name,
-                          self.voidType,
-                          countingParams + freeParams)
-
-            countingPrototypeNoFilter = \
-                VulkanAPI(self.countingPrefix + name,
-                          self.voidType,
-                          countingParams)
-
-            def structCountingDef(cgen):
-                self.countingCodegen.cgen = cgen
-                self.countingCodegen.currentStructInfo = structInfo
-                cgen.stmt("(void)%s" % self.featureBitsVar);
-                cgen.stmt("(void)%s" % self.rootTypeVar);
-                cgen.stmt("(void)%s" % self.countVars[0]);
-                cgen.stmt("(void)%s" % self.countVars[1]);
-
-                if category == "struct":
-                    # marshal 'let' parameters first
-                    for letp in letParams:
-                        self.countingCodegen.streamLetParameter(self.typeInfo, letp)
-
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.countingCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.countingCodegen)
-
-            def structCountingDefNoFilter(cgen):
-                self.countingCodegen.cgen = cgen
-                self.countingCodegen.currentStructInfo = structInfo
-                self.countingCodegen.doFiltering = False
-                cgen.stmt("(void)%s" % self.featureBitsVar);
-                cgen.stmt("(void)%s" % self.rootTypeVar);
-                cgen.stmt("(void)%s" % self.countVars[0]);
-                cgen.stmt("(void)%s" % self.countVars[1]);
-
-                if category == "struct":
-                    # marshal 'let' parameters first
-                    for letp in letParams:
-                        self.countingCodegen.streamLetParameter(self.typeInfo, letp)
-
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.countingCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.countingCodegen)
-
-                self.countingCodegen.doFiltering = True
-
-            self.module.appendHeader(
-                self.codegen.makeFuncDecl(countingPrototype))
-            self.module.appendImpl(
-                self.codegen.makeFuncImpl(countingPrototype, structCountingDef))
-
-            if freeParams != []:
-                self.module.appendHeader(
-                    self.cgenHeader.makeFuncDecl(countingPrototypeNoFilter))
-                self.module.appendImpl(
-                    self.cgenImpl.makeFuncImpl(
-                        countingPrototypeNoFilter, structCountingDefNoFilter))
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-    def doExtensionStructCountCodegen(self, cgen, extParam, forEach, funcproto):
-        accessVar = "structAccess"
-        sizeVar = "currExtSize"
-        cgen.stmt("VkInstanceCreateInfo* %s = (VkInstanceCreateInfo*)(%s)" % (accessVar, extParam.paramName))
-        cgen.stmt("size_t %s = %s(%s, %s, %s)" % (sizeVar, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME,
-                                                  self.featureBitsVar, ROOT_TYPE_VAR_NAME, extParam.paramName))
-
-        cgen.beginIf("!%s && %s" % (sizeVar, extParam.paramName))
-
-        cgen.line("// unknown struct extension; skip and call on its pNext field");
-        cgen.funcCall(None, funcproto.name, [
-                      self.featureBitsVar, ROOT_TYPE_VAR_NAME, "(void*)%s->pNext" % accessVar, self.countVars[1]])
-        cgen.stmt("return")
-
-        cgen.endIf()
-        cgen.beginElse()
-
-        cgen.line("// known or null extension struct")
-
-        cgen.stmt("*%s += sizeof(uint32_t)" % self.countVars[1])
-
-        cgen.beginIf("!%s" % (sizeVar))
-        cgen.line("// exit if this was a null extension struct (size == 0 in this branch)")
-        cgen.stmt("return")
-        cgen.endIf()
-
-        cgen.endIf()
-
-        cgen.stmt("*%s += sizeof(VkStructureType)" % self.countVars[1])
-
-        def fatalDefault(cgen):
-            cgen.line("// fatal; the switch is only taken if the extension struct is known");
-            cgen.stmt("abort()")
-            pass
-
-        self.emitForEachStructExtension(
-            cgen,
-            makeVulkanTypeSimple(False, "void", 0, "void"),
-            extParam,
-            forEach,
-            defaultEmit=fatalDefault,
-            rootTypeVar=ROOT_TYPE_PARAM)
-
-    def onEnd(self,):
-        VulkanWrapperGenerator.onEnd(self)
-
-        def forEachExtensionCounting(ext, castedAccess, cgen):
-            cgen.funcCall(None, self.countingPrefix + ext.name,
-                          [self.featureBitsVar, self.rootTypeVar, castedAccess, self.countVars[1]])
-
-        self.module.appendImpl(
-            self.codegen.makeFuncImpl(
-                self.extensionCountingPrototype,
-                lambda cgen: self.doExtensionStructCountCodegen(
-                    cgen,
-                    STRUCT_EXTENSION_PARAM,
-                    forEachExtensionCounting,
-                    self.extensionCountingPrototype)))
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/decoder.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/decoder.py
deleted file mode 100644
index 6a6b377..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/decoder.py
+++ /dev/null
@@ -1,969 +0,0 @@
-# Copyright 2023 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import CodeGen, VulkanWrapperGenerator
-from .common.vulkantypes import VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeInfo,\
-    VulkanType
-
-from .marshaling import VulkanMarshalingCodegen
-from .reservedmarshaling import VulkanReservedMarshalingCodegen
-from .transform import TransformCodegen
-
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_RESERVEDUNMARSHAL
-from .wrapperdefs import MAX_PACKET_LENGTH
-from .wrapperdefs import VULKAN_STREAM_TYPE
-from .wrapperdefs import ROOT_TYPE_DEFAULT_VALUE
-from .wrapperdefs import RELAXED_APIS
-
-
-SKIPPED_DECODER_DELETES = [
-    "vkFreeDescriptorSets",
-]
-
-DELAYED_DECODER_DELETES = [
-    "vkDestroyPipelineLayout",
-]
-
-DELAYED_DECODER_DELETE_DICT_ENTRIES = [
-    "vkDestroyShaderModule",
-]
-
-global_state_prefix = "m_state->on_"
-
-decoder_decl_preamble = """
-
-namespace gfxstream {
-class IOStream;
-}  // namespace gfxstream
-
-namespace gfxstream {
-namespace vk {
-
-class VkDecoder {
-public:
-    VkDecoder();
-    ~VkDecoder();
-    void setForSnapshotLoad(bool forSnapshotLoad);
-    size_t decode(void* buf, size_t bufsize, IOStream* stream,
-                  const ProcessResources* processResources, const VkDecoderContext&);
-private:
-    class Impl;
-    std::unique_ptr<Impl> mImpl;
-};
-
-}  // namespace vk
-}  // namespace gfxstream
-
-"""
-
-decoder_impl_preamble ="""
-namespace gfxstream {
-namespace vk {
-
-using android::base::MetricEventBadPacketLength;
-using android::base::MetricEventDuplicateSequenceNum;
-
-class VkDecoder::Impl {
-public:
-    Impl() : m_logCalls(android::base::getEnvironmentVariable("ANDROID_EMU_VK_LOG_CALLS") == "1"),
-             m_vk(vkDispatch()),
-             m_state(VkDecoderGlobalState::get()),
-             m_vkStream(nullptr, m_state->getFeatures()),
-             m_vkMemReadingStream(nullptr, m_state->getFeatures()),
-             m_boxedHandleUnwrapMapping(m_state),
-             m_boxedHandleCreateMapping(m_state),
-             m_boxedHandleDestroyMapping(m_state),
-             m_boxedHandleUnwrapAndDeleteMapping(m_state),
-             m_boxedHandleUnwrapAndDeletePreserveBoxedMapping(m_state),
-             m_prevSeqno(std::nullopt),
-             m_queueSubmitWithCommandsEnabled(m_state->getFeatures().VulkanQueueSubmitWithCommands.enabled) {}
-    %s* stream() { return &m_vkStream; }
-    VulkanMemReadingStream* readStream() { return &m_vkMemReadingStream; }
-
-    void setForSnapshotLoad(bool forSnapshotLoad) {
-        m_forSnapshotLoad = forSnapshotLoad;
-    }
-
-    size_t decode(void* buf, size_t bufsize, IOStream* stream,
-                  const ProcessResources* processResources, const VkDecoderContext&);
-
-private:
-    bool m_logCalls;
-    bool m_forSnapshotLoad = false;
-    VulkanDispatch* m_vk;
-    VkDecoderGlobalState* m_state;
-    %s m_vkStream;
-    VulkanMemReadingStream m_vkMemReadingStream;
-    BoxedHandleUnwrapMapping m_boxedHandleUnwrapMapping;
-    BoxedHandleCreateMapping m_boxedHandleCreateMapping;
-    BoxedHandleDestroyMapping m_boxedHandleDestroyMapping;
-    BoxedHandleUnwrapAndDeleteMapping m_boxedHandleUnwrapAndDeleteMapping;
-    android::base::BumpPool m_pool;
-    BoxedHandleUnwrapAndDeletePreserveBoxedMapping m_boxedHandleUnwrapAndDeletePreserveBoxedMapping;
-    std::optional<uint32_t> m_prevSeqno;
-    bool m_queueSubmitWithCommandsEnabled = false;
-};
-
-VkDecoder::VkDecoder() :
-    mImpl(new VkDecoder::Impl()) { }
-
-VkDecoder::~VkDecoder() = default;
-
-void VkDecoder::setForSnapshotLoad(bool forSnapshotLoad) {
-    mImpl->setForSnapshotLoad(forSnapshotLoad);
-}
-
-size_t VkDecoder::decode(void* buf, size_t bufsize, IOStream* stream,
-                         const ProcessResources* processResources,
-                         const VkDecoderContext& context) {
-    return mImpl->decode(buf, bufsize, stream, processResources, context);
-}
-
-// VkDecoder::Impl::decode to follow
-""" % (VULKAN_STREAM_TYPE, VULKAN_STREAM_TYPE)
-
-decoder_impl_postamble = """
-
-}  // namespace vk
-}  // namespace gfxstream
-
-"""
-
-READ_STREAM = "vkReadStream"
-WRITE_STREAM = "vkStream"
-
-# Driver workarounds for APIs that don't work well multithreaded
-driver_workarounds_global_lock_apis = [ \
-    "vkCreatePipelineLayout",
-    "vkDestroyPipelineLayout",
-]
-
-def emit_param_decl_for_reading(param, cgen):
-    if param.staticArrExpr:
-        cgen.stmt(
-            cgen.makeRichCTypeDecl(param.getForNonConstAccess()))
-    else:
-        cgen.stmt(
-            cgen.makeRichCTypeDecl(param))
-
-def emit_unmarshal(typeInfo, param, cgen, output = False, destroy = False, noUnbox = False):
-    if destroy:
-        iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
-            cgen,
-            "host",
-            READ_STREAM,
-            ROOT_TYPE_DEFAULT_VALUE,
-            param.paramName,
-            "readStreamPtrPtr",
-            API_PREFIX_RESERVEDUNMARSHAL,
-            "",
-            direction="read",
-            dynAlloc=True))
-        lenAccess = cgen.generalLengthAccess(param)
-        lenAccessGuard = cgen.generalLengthAccessGuard(param)
-        if None == lenAccess or "1" == lenAccess:
-            cgen.stmt("boxed_%s_preserve = %s" % (param.paramName, param.paramName))
-            cgen.stmt("%s = unbox_%s(%s)" % (param.paramName, param.typeName, param.paramName))
-        else:
-            if lenAccessGuard is not None:
-                cgen.beginIf(lenAccessGuard)
-            cgen.beginFor("uint32_t i = 0", "i < %s" % lenAccess, "++i")
-            cgen.stmt("boxed_%s_preserve[i] = %s[i]" % (param.paramName, param.paramName))
-            cgen.stmt("((%s*)(%s))[i] = unbox_%s(%s[i])" % (param.typeName, param.paramName, param.typeName, param.paramName))
-            cgen.endFor()
-            if lenAccessGuard is not None:
-                cgen.endIf()
-    else:
-        if noUnbox:
-            cgen.line("// No unbox for %s" % (param.paramName))
-        iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
-            cgen,
-            "host",
-            READ_STREAM,
-            ROOT_TYPE_DEFAULT_VALUE,
-            param.paramName,
-            "readStreamPtrPtr",
-            API_PREFIX_RESERVEDUNMARSHAL,
-            "" if (output or noUnbox) else "unbox_",
-            direction="read",
-            dynAlloc=True))
-
-
-def emit_dispatch_unmarshal(typeInfo: VulkanTypeInfo, param: VulkanType, cgen, globalWrapped):
-    cgen.stmt("// Begin {} wrapped dispatchable handle unboxing for {}".format(
-        "global" if globalWrapped else "non",
-        param.paramName))
-
-    iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
-        cgen,
-        "host",
-        READ_STREAM,
-        ROOT_TYPE_DEFAULT_VALUE,
-        param.paramName,
-        "readStreamPtrPtr",
-        API_PREFIX_RESERVEDUNMARSHAL,
-        "",
-        direction="read",
-        dynAlloc=True))
-
-    if not globalWrapped:
-        cgen.stmt("auto unboxed_%s = unbox_%s(%s)" %
-                  (param.paramName, param.typeName, param.paramName))
-        cgen.stmt("auto vk = dispatch_%s(%s)" %
-                  (param.typeName, param.paramName))
-        cgen.stmt("// End manual dispatchable handle unboxing for %s" % param.paramName)
-
-
-def emit_transform(typeInfo, param, cgen, variant="tohost"):
-    res = iterateVulkanType(typeInfo, param, TransformCodegen(
-        cgen, param.paramName, "m_state", "transform_%s_" % variant, variant))
-    if not res:
-        cgen.stmt("(void)%s" % param.paramName)
-
-
-def emit_marshal(typeInfo, param, cgen, handleMapOverwrites=False):
-    iterateVulkanType(typeInfo, param, VulkanMarshalingCodegen(
-        cgen,
-        WRITE_STREAM,
-        ROOT_TYPE_DEFAULT_VALUE,
-        param.paramName,
-        API_PREFIX_MARSHAL,
-        direction="write",
-        handleMapOverwrites=handleMapOverwrites))
-
-
-class DecodingParameters(object):
-    def __init__(self, api: VulkanAPI):
-        self.params: list[VulkanType] = []
-        self.toRead: list[VulkanType] = []
-        self.toWrite: list[VulkanType] = []
-
-        for i, param in enumerate(api.parameters):
-            if i == 0 and param.isDispatchableHandleType():
-                param.dispatchHandle = True
-
-            if param.isNonDispatchableHandleType() and param.isCreatedBy(api):
-                param.nonDispatchableHandleCreate = True
-
-            if param.isNonDispatchableHandleType() and param.isDestroyedBy(api):
-                param.nonDispatchableHandleDestroy = True
-
-            if param.isDispatchableHandleType() and param.isCreatedBy(api):
-                param.dispatchableHandleCreate = True
-
-            if param.isDispatchableHandleType() and param.isDestroyedBy(api):
-                param.dispatchableHandleDestroy = True
-
-            self.toRead.append(param)
-
-            if param.possiblyOutput():
-                self.toWrite.append(param)
-
-            self.params.append(param)
-
-
-def emit_call_log(api, cgen):
-    decodingParams = DecodingParameters(api)
-    paramsToRead = decodingParams.toRead
-
-    cgen.beginIf("m_logCalls")
-    paramLogFormat = ""
-    paramLogArgs = []
-    for p in paramsToRead:
-        paramLogFormat += "0x%llx "
-    for p in paramsToRead:
-        paramLogArgs.append("(unsigned long long)%s" % (p.paramName))
-    cgen.stmt("fprintf(stderr, \"stream %%p: call %s %s\\n\", ioStream, %s)" % (api.name, paramLogFormat, ", ".join(paramLogArgs)))
-    cgen.endIf()
-
-def emit_decode_parameters(typeInfo: VulkanTypeInfo, api: VulkanAPI, cgen, globalWrapped=False):
-    decodingParams = DecodingParameters(api)
-
-    paramsToRead = decodingParams.toRead
-
-    for p in paramsToRead:
-        emit_param_decl_for_reading(p, cgen)
-
-    for i, p in enumerate(paramsToRead):
-        lenAccess = cgen.generalLengthAccess(p)
-
-        if p.dispatchHandle:
-            if api.name in DELAYED_DECODER_DELETE_DICT_ENTRIES:
-                emit_dispatch_unmarshal(typeInfo, p, cgen, False)
-            else:
-                emit_dispatch_unmarshal(typeInfo, p, cgen, globalWrapped)
-        else:
-            destroy = p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy
-            noUnbox = api.name in ["vkQueueFlushCommandsGOOGLE", "vkQueueFlushCommandsFromAuxMemoryGOOGLE"] and p.paramName == "commandBuffer"
-
-            if p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy:
-                destroy = True
-                cgen.stmt("// Begin manual non dispatchable handle destroy unboxing for %s" % p.paramName)
-                if None == lenAccess or "1" == lenAccess:
-                    cgen.stmt("%s boxed_%s_preserve" % (p.typeName, p.paramName))
-                else:
-                    cgen.stmt("%s* boxed_%s_preserve; %s->alloc((void**)&boxed_%s_preserve, %s * sizeof(%s))" % (p.typeName, p.paramName, READ_STREAM, p.paramName, lenAccess, p.typeName))
-
-            if p.possiblyOutput():
-                cgen.stmt("// Begin manual dispatchable handle unboxing for %s" % p.paramName)
-                cgen.stmt("%s->unsetHandleMapping()" % READ_STREAM)
-
-            emit_unmarshal(typeInfo, p, cgen, output = p.possiblyOutput(), destroy = destroy, noUnbox = noUnbox)
-
-    for p in paramsToRead:
-        emit_transform(typeInfo, p, cgen, variant="tohost")
-
-    emit_call_log(api, cgen)
-
-def emit_dispatch_call(api, cgen):
-
-    decodingParams = DecodingParameters(api)
-
-    customParams = []
-
-    delay = api.name in DELAYED_DECODER_DELETES
-
-    for i, p in enumerate(api.parameters):
-        customParam = p.paramName
-        if decodingParams.params[i].dispatchHandle:
-            customParam = "unboxed_%s" % p.paramName
-        customParams.append(customParam)
-
-    if delay:
-        cgen.line("std::function<void()> delayed_remove_callback = [vk, %s]() {" % ", ".join(customParams))
-
-    if api.name in driver_workarounds_global_lock_apis:
-        if delay:
-            cgen.stmt("auto state = VkDecoderGlobalState::get()")
-            cgen.stmt("// state already locked")
-        else:
-            cgen.stmt("m_state->lock()")
-
-    cgen.vkApiCall(api, customPrefix="vk->", customParameters=customParams, \
-        globalStatePrefix=global_state_prefix, checkForDeviceLost=True,
-        checkForOutOfMemory=True)
-
-    if api.name in driver_workarounds_global_lock_apis:
-        if not delay:
-            cgen.stmt("m_state->unlock()")
-        # for delayed remove, state is already locked, so we do not need to
-        # unlock
-
-    if delay:
-        cgen.line("};")
-
-def emit_global_state_wrapped_call(api, cgen, context):
-    if api.name in DELAYED_DECODER_DELETES:
-        print("Error: Cannot generate a global state wrapped call that is also a delayed delete (yet)");
-        raise
-
-    customParams = ["&m_pool"] + list(map(lambda p: p.paramName, api.parameters))
-    if context:
-        customParams += ["context"]
-    cgen.vkApiCall(api, customPrefix=global_state_prefix, \
-        customParameters=customParams, globalStatePrefix=global_state_prefix, \
-        checkForDeviceLost=True, checkForOutOfMemory=True)
-
-def emit_decode_parameters_writeback(typeInfo, api, cgen, autobox=True):
-    decodingParams = DecodingParameters(api)
-
-    paramsToWrite = decodingParams.toWrite
-
-    cgen.stmt("%s->unsetHandleMapping()" % WRITE_STREAM)
-
-    handleMapOverwrites = False
-
-    for p in paramsToWrite:
-        emit_transform(typeInfo, p, cgen, variant="fromhost")
-
-        handleMapOverwrites = False
-
-        if p.nonDispatchableHandleCreate or p.dispatchableHandleCreate:
-            handleMapOverwrites = True
-
-        if autobox and p.nonDispatchableHandleCreate:
-            cgen.stmt("// Begin auto non dispatchable handle create for %s" % p.paramName)
-            cgen.stmt("if (%s == VK_SUCCESS) %s->setHandleMapping(&m_boxedHandleCreateMapping)" % \
-                      (api.getRetVarExpr(), WRITE_STREAM))
-
-        if (not autobox) and p.nonDispatchableHandleCreate:
-            cgen.stmt("// Begin manual non dispatchable handle create for %s" % p.paramName)
-            cgen.stmt("%s->unsetHandleMapping()" % WRITE_STREAM)
-
-        emit_marshal(typeInfo, p, cgen, handleMapOverwrites=handleMapOverwrites)
-
-        if autobox and p.nonDispatchableHandleCreate:
-            cgen.stmt("// Begin auto non dispatchable handle create for %s" % p.paramName)
-            cgen.stmt("%s->setHandleMapping(&m_boxedHandleUnwrapMapping)" % WRITE_STREAM)
-
-        if (not autobox) and p.nonDispatchableHandleCreate:
-            cgen.stmt("// Begin manual non dispatchable handle create for %s" % p.paramName)
-            cgen.stmt("%s->setHandleMapping(&m_boxedHandleUnwrapMapping)" % WRITE_STREAM)
-
-def emit_decode_return_writeback(api, cgen):
-    retTypeName = api.getRetTypeExpr()
-    if retTypeName != "void":
-        retVar = api.getRetVarExpr()
-        cgen.stmt("%s->write(&%s, %s)" %
-            (WRITE_STREAM, retVar, cgen.sizeofExpr(api.retType)))
-
-def emit_decode_finish(api, cgen):
-    decodingParams = DecodingParameters(api)
-    retTypeName = api.getRetTypeExpr()
-    paramsToWrite = decodingParams.toWrite
-
-    if retTypeName != "void" or len(paramsToWrite) != 0:
-        cgen.stmt("%s->commitWrite()" % WRITE_STREAM)
-
-def emit_destroyed_handle_cleanup(api, cgen):
-    decodingParams = DecodingParameters(api)
-    paramsToRead = decodingParams.toRead
-
-    skipDelete = api.name in SKIPPED_DECODER_DELETES
-
-    if skipDelete:
-        cgen.line("// Skipping handle cleanup for %s" % api.name)
-        return
-
-    for p in paramsToRead:
-        if p.dispatchHandle:
-            pass
-        else:
-            lenAccess = cgen.generalLengthAccess(p)
-            lenAccessGuard = cgen.generalLengthAccess(p)
-            destroy = p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy
-            if destroy:
-                if None == lenAccess or "1" == lenAccess:
-                    if api.name in DELAYED_DECODER_DELETES:
-                        cgen.stmt("delayed_delete_%s(boxed_%s_preserve, unboxed_device, delayed_remove_callback)" % (p.typeName, p.paramName))
-                    elif api.name in DELAYED_DECODER_DELETE_DICT_ENTRIES:
-                        cgen.stmt("delayed_delete_%s(boxed_%s_preserve, unboxed_device, nullptr)" % (p.typeName, p.paramName))
-                    else:
-                        cgen.stmt("delete_%s(boxed_%s_preserve)" % (p.typeName, p.paramName))
-                else:
-                    if lenAccessGuard is not None:
-                        cgen.beginIf(lenAccessGuard)
-                    cgen.beginFor("uint32_t i = 0", "i < %s" % lenAccess, "++i")
-                    if api.name in DELAYED_DECODER_DELETES:
-                        cgen.stmt("delayed_delete_%s(boxed_%s_preserve[i], unboxed_device, delayed_remove_callback)" % (p.typeName, p.paramName))
-                    else:
-                        cgen.stmt("delete_%s(boxed_%s_preserve[i])" % (p.typeName, p.paramName))
-                    cgen.endFor()
-                    if lenAccessGuard is not None:
-                        cgen.endIf()
-
-def emit_pool_free(cgen):
-    cgen.stmt("%s->clearPool()" % READ_STREAM)
-
-def emit_seqno_incr(api, cgen):
-    cgen.stmt("if (m_queueSubmitWithCommandsEnabled) seqnoPtr->fetch_add(1, std::memory_order_seq_cst)")
-
-def emit_snapshot(typeInfo, api, cgen):
-
-    cgen.stmt("%s->setReadPos((uintptr_t)(*readStreamPtrPtr) - (uintptr_t)snapshotTraceBegin)" % READ_STREAM)
-    cgen.stmt("size_t snapshotTraceBytes = %s->endTrace()" % READ_STREAM)
-
-    additionalParams = [ \
-        makeVulkanTypeSimple(True, "uint8_t", 1, "snapshotTraceBegin"),
-        makeVulkanTypeSimple(False, "size_t", 0, "snapshotTraceBytes"),
-        makeVulkanTypeSimple(False, "android::base::BumpPool", 1, "&m_pool"),
-    ]
-
-    retTypeName = api.getRetTypeExpr()
-    if retTypeName != "void":
-        retVar = api.getRetVarExpr()
-        additionalParams.append(makeVulkanTypeSimple(False, retTypeName, 0, retVar))
-
-    paramsForSnapshot = []
-
-    decodingParams = DecodingParameters(api)
-
-    for p in decodingParams.toRead:
-        if p.nonDispatchableHandleDestroy or (not p.dispatchHandle and p.dispatchableHandleDestroy):
-            paramsForSnapshot.append(p.withModifiedName("boxed_%s_preserve" % p.paramName))
-        else:
-            paramsForSnapshot.append(p)
-
-    customParams = additionalParams + paramsForSnapshot
-
-    apiForSnapshot = \
-        api.withCustomReturnType(makeVulkanTypeSimple(False, "void", 0, "void")). \
-            withCustomParameters(customParams)
-
-    cgen.beginIf("m_state->snapshotsEnabled()")
-    cgen.vkApiCall(apiForSnapshot, customPrefix="m_state->snapshot()->")
-    cgen.endIf()
-
-def emit_decoding(typeInfo, api, cgen, globalWrapped=False, context=False):
-    isAcquire = api.name in RELAXED_APIS
-    emit_decode_parameters(typeInfo, api, cgen, globalWrapped)
-
-    if isAcquire:
-        emit_seqno_incr(api, cgen)
-
-    if globalWrapped:
-        emit_global_state_wrapped_call(api, cgen, context)
-    else:
-        emit_dispatch_call(api, cgen)
-
-    emit_decode_parameters_writeback(typeInfo, api, cgen, autobox=not globalWrapped)
-    emit_decode_return_writeback(api, cgen)
-    emit_decode_finish(api, cgen)
-    emit_snapshot(typeInfo, api, cgen)
-    emit_destroyed_handle_cleanup(api, cgen)
-    emit_pool_free(cgen)
-
-    if not isAcquire:
-        emit_seqno_incr(api, cgen)
-
-def emit_default_decoding(typeInfo, api, cgen):
-    emit_decoding(typeInfo, api, cgen)
-
-def emit_global_state_wrapped_decoding(typeInfo, api, cgen):
-    emit_decoding(typeInfo, api, cgen, globalWrapped=True)
-
-def emit_global_state_wrapped_decoding_with_context(typeInfo, api, cgen):
-    emit_decoding(typeInfo, api, cgen, globalWrapped=True, context=True)
-
-## Custom decoding definitions##################################################
-def decode_vkFlushMappedMemoryRanges(typeInfo: VulkanTypeInfo, api, cgen):
-    emit_decode_parameters(typeInfo, api, cgen)
-
-    cgen.beginIf("!m_state->usingDirectMapping()")
-    cgen.stmt("// This is to deal with a deficiency in the encoder,");
-    cgen.stmt("// where usingDirectMapping fails to set the proper packet size,");
-    cgen.stmt("// meaning we can read off the end of the packet.");
-    cgen.stmt("uint64_t sizeLeft = end - *readStreamPtrPtr")
-    cgen.beginFor("uint32_t i = 0", "i < memoryRangeCount", "++i")
-    cgen.beginIf("sizeLeft < sizeof(uint64_t)")
-    cgen.beginIf("m_prevSeqno")
-    cgen.stmt("m_prevSeqno = m_prevSeqno.value() - 1")
-    cgen.endIf()
-    cgen.stmt("return ptr - (unsigned char*)buf;")
-    cgen.endIf()
-    cgen.stmt("auto range = pMemoryRanges[i]")
-    cgen.stmt("auto memory = pMemoryRanges[i].memory")
-    cgen.stmt("auto size = pMemoryRanges[i].size")
-    cgen.stmt("auto offset = pMemoryRanges[i].offset")
-    cgen.stmt("uint64_t readStream = 0")
-    cgen.stmt("memcpy(&readStream, *readStreamPtrPtr, sizeof(uint64_t)); *readStreamPtrPtr += sizeof(uint64_t)")
-    cgen.stmt("sizeLeft -= sizeof(uint64_t)")
-    cgen.stmt("auto hostPtr = m_state->getMappedHostPointer(memory)")
-    cgen.stmt("if (!hostPtr && readStream > 0) GFXSTREAM_ABORT(::emugl::FatalError(::emugl::ABORT_REASON_OTHER))")
-    cgen.stmt("if (!hostPtr) continue")
-    cgen.beginIf("sizeLeft < readStream")
-    cgen.beginIf("m_prevSeqno")
-    cgen.stmt("m_prevSeqno = m_prevSeqno.value() - 1")
-    cgen.endIf()
-    cgen.stmt("return ptr - (unsigned char*)buf;")
-    cgen.endIf()
-    cgen.stmt("sizeLeft -= readStream")
-    cgen.stmt("uint8_t* targetRange = hostPtr + offset")
-    cgen.stmt("memcpy(targetRange, *readStreamPtrPtr, readStream); *readStreamPtrPtr += readStream")
-    cgen.stmt("packetLen += 8 + readStream")
-    cgen.endFor()
-    cgen.endIf()
-
-    emit_dispatch_call(api, cgen)
-    emit_decode_parameters_writeback(typeInfo, api, cgen)
-    emit_decode_return_writeback(api, cgen)
-    emit_decode_finish(api, cgen)
-    emit_snapshot(typeInfo, api, cgen);
-    emit_pool_free(cgen)
-    emit_seqno_incr(api, cgen)
-
-def decode_vkInvalidateMappedMemoryRanges(typeInfo, api, cgen):
-    emit_decode_parameters(typeInfo, api, cgen)
-    emit_dispatch_call(api, cgen)
-    emit_decode_parameters_writeback(typeInfo, api, cgen)
-    emit_decode_return_writeback(api, cgen)
-
-    cgen.beginIf("!m_state->usingDirectMapping()")
-    cgen.beginFor("uint32_t i = 0", "i < memoryRangeCount", "++i")
-    cgen.stmt("auto range = pMemoryRanges[i]")
-    cgen.stmt("auto memory = range.memory")
-    cgen.stmt("auto size = range.size")
-    cgen.stmt("auto offset = range.offset")
-    cgen.stmt("auto hostPtr = m_state->getMappedHostPointer(memory)")
-    cgen.stmt("auto actualSize = size == VK_WHOLE_SIZE ? m_state->getDeviceMemorySize(memory) : size")
-    cgen.stmt("uint64_t writeStream = 0")
-    cgen.stmt("if (!hostPtr) { %s->write(&writeStream, sizeof(uint64_t)); continue; }" % WRITE_STREAM)
-    cgen.stmt("uint8_t* targetRange = hostPtr + offset")
-    cgen.stmt("writeStream = actualSize")
-    cgen.stmt("%s->write(&writeStream, sizeof(uint64_t))" % WRITE_STREAM)
-    cgen.stmt("%s->write(targetRange, actualSize)" % WRITE_STREAM)
-    cgen.endFor()
-    cgen.endIf()
-
-    emit_decode_finish(api, cgen)
-    emit_snapshot(typeInfo, api, cgen);
-    emit_pool_free(cgen)
-    emit_seqno_incr(api, cgen)
-
-def decode_unsupported_api(typeInfo, api, cgen):
-    cgen.line(f"// Decoding {api.name} is not supported. This should not run.")
-    cgen.stmt(f"fprintf(stderr, \"stream %p: fatal: decoding unsupported API {api.name}\\n\", ioStream)");
-    cgen.stmt("__builtin_trap()")
-
-custom_decodes = {
-    "vkEnumerateInstanceVersion" : emit_global_state_wrapped_decoding,
-    "vkCreateInstance" : emit_global_state_wrapped_decoding,
-    "vkDestroyInstance" : emit_global_state_wrapped_decoding,
-    "vkEnumeratePhysicalDevices" : emit_global_state_wrapped_decoding,
-
-    "vkGetPhysicalDeviceFeatures" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceFeatures2" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceFeatures2KHR" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceFormatProperties" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceFormatProperties2" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceFormatProperties2KHR" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceImageFormatProperties" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceImageFormatProperties2" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceImageFormatProperties2KHR" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceProperties" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceProperties2" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceProperties2KHR" : emit_global_state_wrapped_decoding,
-
-    "vkGetPhysicalDeviceMemoryProperties" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceMemoryProperties2" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceMemoryProperties2KHR" : emit_global_state_wrapped_decoding,
-
-    "vkGetPhysicalDeviceExternalSemaphoreProperties" : emit_global_state_wrapped_decoding,
-    "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" : emit_global_state_wrapped_decoding,
-
-    "vkEnumerateDeviceExtensionProperties" : emit_global_state_wrapped_decoding,
-
-    "vkCreateBuffer" : emit_global_state_wrapped_decoding,
-    "vkDestroyBuffer" : emit_global_state_wrapped_decoding,
-
-    "vkBindBufferMemory" : emit_global_state_wrapped_decoding,
-    "vkBindBufferMemory2" : emit_global_state_wrapped_decoding,
-    "vkBindBufferMemory2KHR" : emit_global_state_wrapped_decoding,
-
-    "vkCreateDevice" : emit_global_state_wrapped_decoding,
-    "vkGetDeviceQueue" : emit_global_state_wrapped_decoding,
-    "vkDestroyDevice" : emit_global_state_wrapped_decoding,
-
-    "vkGetDeviceQueue2" : emit_global_state_wrapped_decoding,
-
-    "vkBindImageMemory" : emit_global_state_wrapped_decoding,
-    "vkBindImageMemory2" : emit_global_state_wrapped_decoding,
-    "vkBindImageMemory2KHR" : emit_global_state_wrapped_decoding,
-
-    "vkCreateImage" : emit_global_state_wrapped_decoding,
-    "vkCreateImageView" : emit_global_state_wrapped_decoding,
-    "vkCreateSampler" : emit_global_state_wrapped_decoding,
-    "vkDestroyImage" : emit_global_state_wrapped_decoding,
-    "vkDestroyImageView" : emit_global_state_wrapped_decoding,
-    "vkDestroySampler" : emit_global_state_wrapped_decoding,
-    "vkCmdCopyBufferToImage" : emit_global_state_wrapped_decoding_with_context,
-    "vkCmdCopyImage" : emit_global_state_wrapped_decoding,
-    "vkCmdCopyImageToBuffer" : emit_global_state_wrapped_decoding,
-    "vkCmdCopyBufferToImage2" : emit_global_state_wrapped_decoding_with_context,
-    "vkCmdCopyImage2" : emit_global_state_wrapped_decoding,
-    "vkCmdCopyImageToBuffer2" : emit_global_state_wrapped_decoding,
-    "vkGetImageMemoryRequirements" : emit_global_state_wrapped_decoding,
-    "vkGetImageMemoryRequirements2" : emit_global_state_wrapped_decoding,
-    "vkGetImageMemoryRequirements2KHR" : emit_global_state_wrapped_decoding,
-    "vkGetBufferMemoryRequirements" : emit_global_state_wrapped_decoding,
-    "vkGetBufferMemoryRequirements2": emit_global_state_wrapped_decoding,
-    "vkGetBufferMemoryRequirements2KHR": emit_global_state_wrapped_decoding,
-
-    "vkCreateDescriptorSetLayout" : emit_global_state_wrapped_decoding,
-    "vkDestroyDescriptorSetLayout" : emit_global_state_wrapped_decoding,
-    "vkCreateDescriptorPool" : emit_global_state_wrapped_decoding,
-    "vkDestroyDescriptorPool" : emit_global_state_wrapped_decoding,
-    "vkResetDescriptorPool" : emit_global_state_wrapped_decoding,
-    "vkAllocateDescriptorSets" : emit_global_state_wrapped_decoding,
-    "vkFreeDescriptorSets" : emit_global_state_wrapped_decoding,
-
-    "vkUpdateDescriptorSets" : emit_global_state_wrapped_decoding,
-
-    "vkCreateShaderModule": emit_global_state_wrapped_decoding,
-    "vkDestroyShaderModule": emit_global_state_wrapped_decoding,
-    "vkCreatePipelineCache": emit_global_state_wrapped_decoding,
-    "vkDestroyPipelineCache": emit_global_state_wrapped_decoding,
-    "vkCreateGraphicsPipelines": emit_global_state_wrapped_decoding,
-    "vkDestroyPipeline": emit_global_state_wrapped_decoding,
-
-    "vkAllocateMemory" : emit_global_state_wrapped_decoding,
-    "vkFreeMemory" : emit_global_state_wrapped_decoding,
-    "vkMapMemory" : emit_global_state_wrapped_decoding,
-    "vkUnmapMemory" : emit_global_state_wrapped_decoding,
-    "vkFlushMappedMemoryRanges" : decode_vkFlushMappedMemoryRanges,
-    "vkInvalidateMappedMemoryRanges" : decode_vkInvalidateMappedMemoryRanges,
-
-    "vkAllocateCommandBuffers" : emit_global_state_wrapped_decoding,
-    "vkCmdExecuteCommands" : emit_global_state_wrapped_decoding,
-    "vkQueueSubmit" : emit_global_state_wrapped_decoding,
-    "vkQueueSubmit2" : emit_global_state_wrapped_decoding,
-    "vkQueueWaitIdle" : emit_global_state_wrapped_decoding,
-    "vkBeginCommandBuffer" : emit_global_state_wrapped_decoding_with_context,
-    "vkEndCommandBuffer" : emit_global_state_wrapped_decoding_with_context,
-    "vkResetCommandBuffer" : emit_global_state_wrapped_decoding,
-    "vkFreeCommandBuffers" : emit_global_state_wrapped_decoding,
-    "vkCreateCommandPool" : emit_global_state_wrapped_decoding,
-    "vkDestroyCommandPool" : emit_global_state_wrapped_decoding,
-    "vkResetCommandPool" : emit_global_state_wrapped_decoding,
-    "vkCmdPipelineBarrier" : emit_global_state_wrapped_decoding,
-    "vkCmdPipelineBarrier2" : emit_global_state_wrapped_decoding,
-    "vkCmdBindPipeline" : emit_global_state_wrapped_decoding,
-    "vkCmdBindDescriptorSets" : emit_global_state_wrapped_decoding,
-
-    "vkCreateRenderPass" : emit_global_state_wrapped_decoding,
-    "vkCreateRenderPass2" : emit_global_state_wrapped_decoding,
-    "vkCreateRenderPass2KHR" : emit_global_state_wrapped_decoding,
-    "vkDestroyRenderPass" : emit_global_state_wrapped_decoding,
-    "vkCreateFramebuffer" : emit_global_state_wrapped_decoding,
-    "vkDestroyFramebuffer" : emit_global_state_wrapped_decoding,
-    "vkDestroyFramebuffer" : emit_global_state_wrapped_decoding,
-    "vkCmdBeginRenderPass" : emit_global_state_wrapped_decoding,
-    "vkCmdBeginRenderPass2" : emit_global_state_wrapped_decoding,
-    "vkCmdBeginRenderPass2KHR" : emit_global_state_wrapped_decoding,
-
-    "vkCreateSamplerYcbcrConversion": emit_global_state_wrapped_decoding,
-    "vkDestroySamplerYcbcrConversion": emit_global_state_wrapped_decoding,
-
-    # VK_ANDROID_native_buffer
-    "vkGetSwapchainGrallocUsageANDROID" : emit_global_state_wrapped_decoding,
-    "vkGetSwapchainGrallocUsage2ANDROID" : emit_global_state_wrapped_decoding,
-    "vkAcquireImageANDROID" : emit_global_state_wrapped_decoding,
-    "vkQueueSignalReleaseImageANDROID" : emit_global_state_wrapped_decoding,
-
-    "vkCreateSemaphore" : emit_global_state_wrapped_decoding,
-    "vkGetSemaphoreFdKHR" : emit_global_state_wrapped_decoding,
-    "vkImportSemaphoreFdKHR" : emit_global_state_wrapped_decoding,
-    "vkDestroySemaphore" : emit_global_state_wrapped_decoding,
-
-    "vkCreateFence" : emit_global_state_wrapped_decoding,
-    "vkResetFences" : emit_global_state_wrapped_decoding,
-    "vkDestroyFence" : emit_global_state_wrapped_decoding,
-
-    # VK_GOOGLE_gfxstream
-    "vkFreeMemorySyncGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkMapMemoryIntoAddressSpaceGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkGetMemoryHostAddressInfoGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkGetBlobGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkGetSemaphoreGOOGLE" : emit_global_state_wrapped_decoding,
-
-    # Descriptor update templates
-    "vkCreateDescriptorUpdateTemplate" : emit_global_state_wrapped_decoding,
-    "vkCreateDescriptorUpdateTemplateKHR" : emit_global_state_wrapped_decoding,
-    "vkDestroyDescriptorUpdateTemplate" : emit_global_state_wrapped_decoding,
-    "vkDestroyDescriptorUpdateTemplateKHR" : emit_global_state_wrapped_decoding,
-    "vkUpdateDescriptorSetWithTemplateSizedGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkUpdateDescriptorSetWithTemplateSized2GOOGLE" : emit_global_state_wrapped_decoding,
-
-    # VK_GOOGLE_gfxstream
-    "vkBeginCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding_with_context,
-    "vkEndCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding_with_context,
-    "vkResetCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkCommandBufferHostSyncGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkCreateImageWithRequirementsGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkCreateBufferWithRequirementsGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkQueueHostSyncGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkQueueSubmitAsyncGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkQueueSubmitAsync2GOOGLE" : emit_global_state_wrapped_decoding,
-    "vkQueueWaitIdleAsyncGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkQueueBindSparseAsyncGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkGetLinearImageLayoutGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkGetLinearImageLayout2GOOGLE" : emit_global_state_wrapped_decoding,
-    "vkQueueFlushCommandsGOOGLE" : emit_global_state_wrapped_decoding_with_context,
-    "vkQueueFlushCommandsFromAuxMemoryGOOGLE" : emit_global_state_wrapped_decoding_with_context,
-    "vkQueueCommitDescriptorSetUpdatesGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkCollectDescriptorPoolIdsGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE" : emit_global_state_wrapped_decoding,
-
-    "vkQueueBindSparse" : emit_global_state_wrapped_decoding,
-
-    # VK_KHR_xcb_surface
-    "vkCreateXcbSurfaceKHR": decode_unsupported_api,
-    "vkGetPhysicalDeviceXcbPresentationSupportKHR": decode_unsupported_api,
-
-    # VK_EXT_metal_surface
-    "vkCreateMetalSurfaceEXT": decode_unsupported_api,
-
-    # VK_KHR_sampler_ycbcr_conversion
-    "vkCreateSamplerYcbcrConversionKHR": emit_global_state_wrapped_decoding,
-    "vkDestroySamplerYcbcrConversionKHR": emit_global_state_wrapped_decoding,
-
-    #VK_KHR_copy_commands2
-    "vkCmdCopyBufferToImage2KHR" : emit_global_state_wrapped_decoding_with_context,
-    "vkCmdCopyImage2KHR" : emit_global_state_wrapped_decoding,
-    "vkCmdCopyImageToBuffer2KHR" : emit_global_state_wrapped_decoding,
-
-    # VK_KHR_device_group_creation / VK_VERSION_1_1
-    "vkEnumeratePhysicalDeviceGroups" : emit_global_state_wrapped_decoding,
-    "vkEnumeratePhysicalDeviceGroupsKHR" : emit_global_state_wrapped_decoding,
-}
-
-class VulkanDecoder(VulkanWrapperGenerator):
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-        self.typeInfo: VulkanTypeInfo = typeInfo
-        self.cgen = CodeGen()
-
-    def onBegin(self,):
-        self.module.appendImpl(
-            "#define MAX_PACKET_LENGTH %s\n" % MAX_PACKET_LENGTH)
-        self.module.appendHeader(decoder_decl_preamble)
-        self.module.appendImpl(decoder_impl_preamble)
-
-        self.module.appendImpl(
-            """
-size_t VkDecoder::Impl::decode(void* buf, size_t len, IOStream* ioStream,
-                               const ProcessResources* processResources,
-                               const VkDecoderContext& context)
-""")
-
-        self.cgen.beginBlock() # function body
-
-        self.cgen.stmt("const char* processName = context.processName")
-        self.cgen.stmt("auto& gfx_logger = *context.gfxApiLogger")
-        self.cgen.stmt("auto* healthMonitor = context.healthMonitor")
-        self.cgen.stmt("auto& metricsLogger = *context.metricsLogger")
-        self.cgen.stmt("if (len < 8) return 0")
-        self.cgen.stmt("unsigned char *ptr = (unsigned char *)buf")
-        self.cgen.stmt("const unsigned char* const end = (const unsigned char*)buf + len")
-
-        self.cgen.beginIf("m_forSnapshotLoad")
-        self.cgen.stmt("ptr += m_state->setCreatedHandlesForSnapshotLoad(ptr)");
-        self.cgen.endIf()
-        self.cgen.line("while (end - ptr >= 8)")
-        self.cgen.beginBlock() # while loop
-
-        self.cgen.stmt("uint32_t opcode = *(uint32_t *)ptr")
-        self.cgen.stmt("uint32_t packetLen = *(uint32_t *)(ptr + 4)")
-        self.cgen.line("""
-        // packetLen should be at least 8 (op code and packet length) and should not be excessively large
-        if (packetLen < 8 || packetLen > MAX_PACKET_LENGTH) {
-            WARN("Bad packet length %d detected, decode may fail", packetLen);
-            metricsLogger.logMetricEvent(MetricEventBadPacketLength{ .len = packetLen });
-        }
-        """)
-        self.cgen.stmt("if (end - ptr < packetLen) return ptr - (unsigned char*)buf")
-        self.cgen.stmt("gfx_logger.record(ptr, std::min(size_t(packetLen + 8), size_t(end - ptr)))")
-
-        self.cgen.stmt("stream()->setStream(ioStream)")
-        self.cgen.stmt("VulkanStream* %s = stream()" % WRITE_STREAM)
-        self.cgen.stmt("VulkanMemReadingStream* %s = readStream()" % READ_STREAM)
-        self.cgen.stmt("%s->setBuf((uint8_t*)(ptr + 8))" % READ_STREAM)
-        self.cgen.stmt("uint8_t* readStreamPtr = %s->getBuf(); uint8_t** readStreamPtrPtr = &readStreamPtr" % READ_STREAM)
-        self.cgen.stmt("uint8_t* snapshotTraceBegin = %s->beginTrace()" % READ_STREAM)
-        self.cgen.stmt("%s->setHandleMapping(&m_boxedHandleUnwrapMapping)" % READ_STREAM)
-        self.cgen.line("""
-        std::unique_ptr<EventHangMetadata::HangAnnotations> executionData =
-            std::make_unique<EventHangMetadata::HangAnnotations>();
-        if (healthMonitor) {
-            executionData->insert(
-                 {{"packet_length", std::to_string(packetLen)},
-                 {"opcode", std::to_string(opcode)}});
-            if (processName) {
-                executionData->insert(
-                    {{"renderthread_guest_process", std::string(processName)}});
-            }
-            if (m_prevSeqno) {
-                executionData->insert({{"previous_seqno", std::to_string(m_prevSeqno.value())}});
-            }
-        }
-
-        std::atomic<uint32_t>* seqnoPtr = processResources ?
-                processResources->getSequenceNumberPtr() : nullptr;
-
-        if (m_queueSubmitWithCommandsEnabled && ((opcode >= OP_vkFirst && opcode < OP_vkLast) || (opcode >= OP_vkFirst_old && opcode < OP_vkLast_old))) {
-            uint32_t seqno;
-            memcpy(&seqno, *readStreamPtrPtr, sizeof(uint32_t)); *readStreamPtrPtr += sizeof(uint32_t);
-            if (healthMonitor) executionData->insert({{"seqno", std::to_string(seqno)}});
-            if (m_prevSeqno  && seqno == m_prevSeqno.value()) {
-                WARN(
-                    "Seqno %d is the same as previously processed on thread %d. It might be a "
-                    "duplicate command.",
-                    seqno, getCurrentThreadId());
-                metricsLogger.logMetricEvent(MetricEventDuplicateSequenceNum{ .opcode = opcode });
-            }
-            if (seqnoPtr && !m_forSnapshotLoad) {
-                {
-                    auto seqnoWatchdog =
-                        WATCHDOG_BUILDER(healthMonitor,
-                                         "RenderThread seqno loop")
-                            .setHangType(EventHangMetadata::HangType::kRenderThread)
-                            .setAnnotations(std::make_unique<EventHangMetadata::HangAnnotations>(*executionData))
-                            /* Data gathered if this hangs*/
-                            .setOnHangCallback([=]() {
-                                auto annotations = std::make_unique<EventHangMetadata::HangAnnotations>();
-                                annotations->insert({{"seqnoPtr", std::to_string(seqnoPtr->load(std::memory_order_seq_cst))}});
-                                return annotations;
-                            })
-                            .build();
-                    while ((seqno - seqnoPtr->load(std::memory_order_seq_cst) != 1)) {
-                        #if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)))
-                        _mm_pause();
-                        #elif (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)))
-                        __asm__ __volatile__("pause;");
-                        #endif
-                    }
-                    m_prevSeqno = seqno;
-                }
-            }
-        }
-        """)
-
-        self.cgen.line("""
-        gfx_logger.recordCommandExecution();
-        """)
-
-        self.cgen.line("""
-        auto executionWatchdog =
-            WATCHDOG_BUILDER(healthMonitor, "RenderThread VkDecoder command execution")
-                .setHangType(EventHangMetadata::HangType::kRenderThread)
-                .setAnnotations(std::move(executionData))
-                .build();
-        """)
-
-        self.cgen.stmt("auto vk = m_vk")
-
-        self.cgen.line("switch (opcode)")
-        self.cgen.beginBlock()  # switch stmt
-
-        self.module.appendImpl(self.cgen.swapCode())
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        typeInfo = self.typeInfo
-        cgen = self.cgen
-        api: VulkanAPI = typeInfo.apis[name]
-
-        cgen.line("case OP_%s:" % name)
-        cgen.beginBlock()
-        cgen.stmt("GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY, \"VkDecoder %s\")" % name)
-
-        if api.name in custom_decodes.keys():
-            custom_decodes[api.name](typeInfo, api, cgen)
-        else:
-            emit_default_decoding(typeInfo, api, cgen)
-
-        cgen.stmt("break")
-        cgen.endBlock()
-        self.module.appendImpl(self.cgen.swapCode())
-
-    def onEnd(self,):
-        self.cgen.line("default:")
-        self.cgen.beginBlock()
-        self.cgen.stmt("m_pool.freeAll()")
-        self.cgen.stmt("return ptr - (unsigned char *)buf")
-        self.cgen.endBlock()
-
-        self.cgen.endBlock() # switch stmt
-
-        self.cgen.stmt("ptr += packetLen")
-        self.cgen.endBlock() # while loop
-
-        self.cgen.beginIf("m_forSnapshotLoad")
-        self.cgen.stmt("m_state->clearCreatedHandlesForSnapshotLoad()");
-        self.cgen.endIf()
-
-        self.cgen.stmt("m_pool.freeAll()")
-        self.cgen.stmt("return ptr - (unsigned char*)buf;")
-        self.cgen.endBlock() # function body
-        self.module.appendImpl(self.cgen.swapCode())
-        self.module.appendImpl(decoder_impl_postamble)
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/decodersnapshot.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/decodersnapshot.py
deleted file mode 100644
index 0c0e9af..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/decodersnapshot.py
+++ /dev/null
@@ -1,442 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import CodeGen, VulkanWrapperGenerator, VulkanAPIWrapper
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, DISPATCHABLE_HANDLE_TYPES, NON_DISPATCHABLE_HANDLE_TYPES
-
-from .transform import TransformCodegen, genTransformsForVulkanType
-
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_UNMARSHAL
-from .wrapperdefs import VULKAN_STREAM_TYPE
-
-from copy import copy
-from dataclasses import dataclass
-
-decoder_snapshot_decl_preamble = """
-
-namespace android {
-namespace base {
-class BumpPool;
-class Stream;
-} // namespace base {
-} // namespace android {
-
-class VkDecoderSnapshot {
-public:
-    VkDecoderSnapshot();
-    ~VkDecoderSnapshot();
-
-    void save(android::base::Stream* stream);
-    void load(android::base::Stream* stream, emugl::GfxApiLogger& gfx_logger,
-              emugl::HealthMonitor<>* healthMonitor);
-    void createExtraHandlesForNextApi(const uint64_t* created, uint32_t count);
-"""
-
-decoder_snapshot_decl_postamble = """
-private:
-    class Impl;
-    std::unique_ptr<Impl> mImpl;
-
-};
-"""
-
-decoder_snapshot_impl_preamble ="""
-
-using namespace gfxstream::vk;
-using emugl::GfxApiLogger;
-using emugl::HealthMonitor;
-
-class VkDecoderSnapshot::Impl {
-public:
-    Impl() { }
-
-    void save(android::base::Stream* stream) {
-        mReconstruction.save(stream);
-    }
-
-    void load(android::base::Stream* stream, GfxApiLogger& gfx_logger,
-              HealthMonitor<>* healthMonitor) {
-        mReconstruction.load(stream, gfx_logger, healthMonitor);
-    }
-
-    void createExtraHandlesForNextApi(const uint64_t* created, uint32_t count) {
-        mLock.lock();
-        mReconstruction.createExtraHandlesForNextApi(created, count);
-    }
-"""
-
-decoder_snapshot_impl_postamble = """
-private:
-    android::base::Lock mLock;
-    VkReconstruction mReconstruction;
-};
-
-VkDecoderSnapshot::VkDecoderSnapshot() :
-    mImpl(new VkDecoderSnapshot::Impl()) { }
-
-void VkDecoderSnapshot::save(android::base::Stream* stream) {
-    mImpl->save(stream);
-}
-
-void VkDecoderSnapshot::load(android::base::Stream* stream, GfxApiLogger& gfx_logger,
-                             HealthMonitor<>* healthMonitor) {
-    mImpl->load(stream, gfx_logger, healthMonitor);
-}
-
-void VkDecoderSnapshot::createExtraHandlesForNextApi(const uint64_t* created, uint32_t count) {
-    mImpl->createExtraHandlesForNextApi(created, count);
-}
-
-VkDecoderSnapshot::~VkDecoderSnapshot() = default;
-"""
-
-AUXILIARY_SNAPSHOT_API_BASE_PARAM_COUNT = 3
-
-AUXILIARY_SNAPSHOT_API_PARAM_NAMES = [
-    "input_result",
-]
-
-# Vulkan handle dependencies.
-# (a, b): a depends on b
-SNAPSHOT_HANDLE_DEPENDENCIES = [
-    # Dispatchable handle types
-    ("VkCommandBuffer", "VkCommandPool"),
-    ("VkCommandPool", "VkDevice"),
-    ("VkQueue", "VkDevice"),
-    ("VkDevice", "VkPhysicalDevice"),
-    ("VkPhysicalDevice", "VkInstance")] + \
-    list(map(lambda handleType : (handleType, "VkDevice"), NON_DISPATCHABLE_HANDLE_TYPES))
-
-handleDependenciesDict = dict(SNAPSHOT_HANDLE_DEPENDENCIES)
-
-def extract_deps_vkAllocateMemory(param, access, lenExpr, api, cgen):
-    cgen.stmt("const VkMemoryDedicatedAllocateInfo* dedicatedAllocateInfo = vk_find_struct<VkMemoryDedicatedAllocateInfo>(pAllocateInfo)");
-    cgen.beginIf("dedicatedAllocateInfo");
-    cgen.beginIf("dedicatedAllocateInfo->image")
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s)" % \
-              (access, lenExpr, "unboxed_to_boxed_non_dispatchable_VkImage(dedicatedAllocateInfo->image)"))
-    cgen.endIf()
-    cgen.beginIf("dedicatedAllocateInfo->buffer")
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s)" % \
-              (access, lenExpr, "unboxed_to_boxed_non_dispatchable_VkBuffer(dedicatedAllocateInfo->buffer)"))
-    cgen.endIf()
-    cgen.endIf()
-
-def extract_deps_vkAllocateCommandBuffers(param, access, lenExpr, api, cgen):
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s)" % \
-              (access, lenExpr, "unboxed_to_boxed_non_dispatchable_VkCommandPool(pAllocateInfo->commandPool)"))
-
-def extract_deps_vkCreateImageView(param, access, lenExpr, api, cgen):
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s, VkReconstruction::CREATED, VkReconstruction::BOUND_MEMORY)" % \
-              (access, lenExpr, "unboxed_to_boxed_non_dispatchable_VkImage(pCreateInfo->image)"))
-
-def extract_deps_vkCreateGraphicsPipelines(param, access, lenExpr, api, cgen):
-    cgen.beginFor("uint32_t i = 0", "i < createInfoCount", "++i")
-    cgen.beginFor("uint32_t j = 0", "j < pCreateInfos[i].stageCount", "++j")
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)(%s + i), %s, (uint64_t)(uintptr_t)%s)" % \
-              (access, 1, "unboxed_to_boxed_non_dispatchable_VkShaderModule(pCreateInfos[i].pStages[j].module)"))
-    cgen.endFor()
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)(%s + i), %s, (uint64_t)(uintptr_t)%s)" % \
-              (access, 1, "unboxed_to_boxed_non_dispatchable_VkRenderPass(pCreateInfos[i].renderPass)"))
-    cgen.endFor()
-
-def extract_deps_vkCreateFramebuffer(param, access, lenExpr, api, cgen):
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s)" % \
-              (access, lenExpr, "unboxed_to_boxed_non_dispatchable_VkRenderPass(pCreateInfo->renderPass)"))
-    cgen.beginFor("uint32_t i = 0", "i < pCreateInfo->attachmentCount" , "++i")
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s)" % \
-              (access, lenExpr, "unboxed_to_boxed_non_dispatchable_VkImageView(pCreateInfo->pAttachments[i])"))
-    cgen.endFor()
-
-def extract_deps_vkBindImageMemory(param, access, lenExpr, api, cgen):
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s, VkReconstruction::BOUND_MEMORY)" % \
-              (access, lenExpr, "unboxed_to_boxed_non_dispatchable_VkDeviceMemory(memory)"))
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)((%s)[0]), VkReconstruction::BOUND_MEMORY)" % \
-              (access, lenExpr, access))
-
-def extract_deps_vkBindBufferMemory(param, access, lenExpr, api, cgen):
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s, VkReconstruction::BOUND_MEMORY)" % \
-              (access, lenExpr, "unboxed_to_boxed_non_dispatchable_VkDeviceMemory(memory)"))
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)((%s)[0]), VkReconstruction::BOUND_MEMORY)" % \
-              (access, lenExpr, access))
-
-specialCaseDependencyExtractors = {
-    "vkAllocateCommandBuffers" : extract_deps_vkAllocateCommandBuffers,
-    "vkAllocateMemory" : extract_deps_vkAllocateMemory,
-    "vkCreateImageView" : extract_deps_vkCreateImageView,
-    "vkCreateGraphicsPipelines" : extract_deps_vkCreateGraphicsPipelines,
-    "vkCreateFramebuffer" : extract_deps_vkCreateFramebuffer,
-    "vkBindImageMemory": extract_deps_vkBindImageMemory,
-    "vkBindBufferMemory": extract_deps_vkBindBufferMemory,
-}
-
-apiSequences = {
-    "vkAllocateMemory" : ["vkAllocateMemory", "vkMapMemoryIntoAddressSpaceGOOGLE"]
-}
-
-apiCrreateExtraHandles = [
-    "vkCreateDevice",
-    "vkCreateDescriptorPool",
-]
-
-@dataclass(frozen=True)
-class VkObjectState:
-    vk_object : str
-    state : str = "VkReconstruction::CREATED"
-
-# TODO: add vkBindImageMemory2 and vkBindBufferMemory2 into this list
-apiChangeState = {
-    "vkBindImageMemory": VkObjectState("image", "VkReconstruction::BOUND_MEMORY"),
-    "vkBindBufferMemory": VkObjectState("buffer", "VkReconstruction::BOUND_MEMORY"),
-}
-
-def api_special_implementation_vkBindImageMemory2(api, cgen):
-    childType = "VkImage"
-    parentType = "VkDeviceMemory"
-    childObj = "boxed_%s" % childType
-    parentObj = "boxed_%s" % parentType
-    cgen.stmt("android::base::AutoLock lock(mLock)")
-    cgen.beginFor("uint32_t i = 0", "i < bindInfoCount", "++i")
-    cgen.stmt("%s boxed_%s = unboxed_to_boxed_non_dispatchable_%s(pBindInfos[i].image)"
-              % (childType, childType, childType))
-    cgen.stmt("%s boxed_%s = unboxed_to_boxed_non_dispatchable_%s(pBindInfos[i].memory)"
-              % (parentType, parentType, parentType))
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)&%s, %s, (uint64_t)(uintptr_t)%s, VkReconstruction::BOUND_MEMORY)" % \
-              (childObj, "1", parentObj))
-    cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)&%s, %s, (uint64_t)(uintptr_t)%s, VkReconstruction::BOUND_MEMORY)" % \
-              (childObj, "1", childObj))
-    cgen.endFor()
-
-    cgen.stmt("auto apiHandle = mReconstruction.createApiInfo()")
-    cgen.stmt("auto apiInfo = mReconstruction.getApiInfo(apiHandle)")
-    cgen.stmt("mReconstruction.setApiTrace(apiInfo, OP_%s, snapshotTraceBegin, snapshotTraceBytes)" % api.name)
-    cgen.line("// Note: the implementation does not work with bindInfoCount > 1");
-    cgen.beginFor("uint32_t i = 0", "i < bindInfoCount", "++i")
-    cgen.stmt("%s boxed_%s = unboxed_to_boxed_non_dispatchable_%s(pBindInfos[i].image)"
-              % (childType, childType, childType))
-    cgen.stmt(f"mReconstruction.forEachHandleAddApi((const uint64_t*)&{childObj}, {1}, apiHandle, VkReconstruction::BOUND_MEMORY)")
-    cgen.endFor()
-
-apiSpecialImplementation = {
-    "vkBindImageMemory2": api_special_implementation_vkBindImageMemory2,
-    "vkBindImageMemory2KHR": api_special_implementation_vkBindImageMemory2,
-}
-
-apiModifies = {
-    "vkMapMemoryIntoAddressSpaceGOOGLE" : ["memory"],
-    "vkGetBlobGOOGLE" : ["memory"],
-    "vkBeginCommandBuffer" : ["commandBuffer"],
-    "vkEndCommandBuffer" : ["commandBuffer"],
-}
-
-apiClearModifiers = {
-    "vkResetCommandBuffer" : ["commandBuffer"],
-}
-
-delayedDestroys = [
-    "vkDestroyShaderModule",
-]
-
-# The following types are created and cached by other commands.
-# Thus we should not snapshot their "create" commands.
-skipCreatorSnapshotTypes = [
-    "VkQueue", # created by vkCreateDevice
-    "VkDescriptorSet", # created by vkCreateDescriptorPool
-]
-
-def is_state_change_operation(api, param):
-    if param.isCreatedBy(api) and param.typeName not in skipCreatorSnapshotTypes:
-        return True
-    if api.name in apiChangeState:
-        if param.paramName == apiChangeState[api.name].vk_object:
-            return True
-    return False
-
-def get_target_state(api, param):
-    if param.isCreatedBy(api):
-        return "VkReconstruction::CREATED"
-    if api.name in apiChangeState:
-        if param.paramName == apiChangeState[api.name].vk_object:
-            return apiChangeState[api.name].state
-    return None
-
-def is_modify_operation(api, param):
-    if api.name in apiModifies:
-        if param.paramName in apiModifies[api.name]:
-            return True
-    if api.name.startswith('vkCmd') and param.paramName == 'commandBuffer':
-        return True
-    return False
-
-def is_clear_modifier_operation(api, param):
-    if api.name in apiClearModifiers:
-        if param.paramName in apiClearModifiers[api.name]:
-            return True
-
-
-def emit_impl(typeInfo, api, cgen):
-    if api.name in apiSpecialImplementation:
-        apiSpecialImplementation[api.name](api, cgen)
-    for p in api.parameters:
-        if not (p.isHandleType):
-            continue
-
-        lenExpr = cgen.generalLengthAccess(p)
-        lenAccessGuard = cgen.generalLengthAccessGuard(p)
-
-        if lenExpr is None:
-            lenExpr = "1"
-
-        # Note that in vkCreate*, the last parameter (the output) is boxed. But all input parameters are unboxed.
-
-        if p.pointerIndirectionLevels > 0:
-            access = p.paramName
-        else:
-            access = "(&%s)" % p.paramName
-
-        if is_state_change_operation(api, p):
-            if p.isCreatedBy(api):
-                boxed_access = access
-            else:
-                cgen.stmt("%s boxed_%s = unboxed_to_boxed_non_dispatchable_%s(%s[0])" % (p.typeName, p.typeName, p.typeName, access))
-                boxed_access = "&boxed_%s" % p.typeName
-            if p.pointerIndirectionLevels > 0:
-                cgen.stmt("if (!%s) return" % access)
-            isCreateExtraHandleApi = api.name in apiCrreateExtraHandles
-            if isCreateExtraHandleApi:
-                cgen.stmt("mLock.tryLock()");
-            else:
-                cgen.stmt("android::base::AutoLock lock(mLock)")
-            cgen.line("// %s create" % p.paramName)
-            if p.isCreatedBy(api):
-                cgen.stmt("mReconstruction.addHandles((const uint64_t*)%s, %s)" % (boxed_access, lenExpr));
-
-            if p.isCreatedBy(api) and p.typeName in handleDependenciesDict:
-                dependsOnType = handleDependenciesDict[p.typeName];
-                for p2 in api.parameters:
-                    if p2.typeName == dependsOnType:
-                        cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s)" % (boxed_access, lenExpr, p2.paramName))
-            if api.name in specialCaseDependencyExtractors:
-                specialCaseDependencyExtractors[api.name](p, boxed_access, lenExpr, api, cgen)
-
-            cgen.stmt("auto apiHandle = mReconstruction.createApiInfo()")
-            cgen.stmt("auto apiInfo = mReconstruction.getApiInfo(apiHandle)")
-            cgen.stmt("mReconstruction.setApiTrace(apiInfo, OP_%s, snapshotTraceBegin, snapshotTraceBytes)" % api.name)
-            if lenAccessGuard is not None:
-                cgen.beginIf(lenAccessGuard)
-            cgen.stmt(f"mReconstruction.forEachHandleAddApi((const uint64_t*){boxed_access}, {lenExpr}, apiHandle, {get_target_state(api, p)})")
-            if p.isCreatedBy(api):
-                cgen.stmt("mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)%s, %s)" % (boxed_access, lenExpr))
-            if lenAccessGuard is not None:
-                cgen.endIf()
-            if isCreateExtraHandleApi:
-                cgen.stmt("mLock.unlock()")
-
-        if p.isDestroyedBy(api):
-            cgen.stmt("android::base::AutoLock lock(mLock)")
-            cgen.line("// %s destroy" % p.paramName)
-            if lenAccessGuard is not None:
-                cgen.beginIf(lenAccessGuard)
-            shouldRecursiveDestroy = "false" if api.name in delayedDestroys else "true"
-            cgen.stmt("mReconstruction.removeHandles((const uint64_t*)%s, %s, %s)" % (access, lenExpr, shouldRecursiveDestroy));
-            if lenAccessGuard is not None:
-                cgen.endIf()
-
-        if is_modify_operation(api, p) or is_clear_modifier_operation(api, p):
-            cgen.stmt("android::base::AutoLock lock(mLock)")
-            cgen.line("// %s modify" % p.paramName)
-            cgen.stmt("auto apiHandle = mReconstruction.createApiInfo()")
-            cgen.stmt("auto apiInfo = mReconstruction.getApiInfo(apiHandle)")
-            cgen.stmt("mReconstruction.setApiTrace(apiInfo, OP_%s, snapshotTraceBegin, snapshotTraceBytes)" % api.name)
-            if lenAccessGuard is not None:
-                cgen.beginIf(lenAccessGuard)
-            cgen.beginFor("uint32_t i = 0", "i < %s" % lenExpr, "++i")
-            if p.isNonDispatchableHandleType():
-                cgen.stmt("%s boxed = unboxed_to_boxed_non_dispatchable_%s(%s[i])" % (p.typeName, p.typeName, access))
-            else:
-                cgen.stmt("%s boxed = unboxed_to_boxed_%s(%s[i])" % (p.typeName, p.typeName, access))
-            if is_modify_operation(api, p):
-                cgen.stmt("mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle)")
-            else: # is clear modifier operation
-                cgen.stmt("mReconstruction.forEachHandleClearModifyApi((const uint64_t*)(&boxed), 1)")
-            cgen.endFor()
-            if lenAccessGuard is not None:
-                cgen.endIf()
-
-def emit_passthrough_to_impl(typeInfo, api, cgen):
-    cgen.vkApiCall(api, customPrefix = "mImpl->")
-
-class VulkanDecoderSnapshot(VulkanWrapperGenerator):
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.typeInfo = typeInfo
-
-        self.cgenHeader = CodeGen()
-        self.cgenHeader.incrIndent()
-
-        self.cgenImpl = CodeGen()
-
-        self.currentFeature = None
-
-        self.feature_apis = []
-
-    def onBegin(self,):
-        self.module.appendHeader(decoder_snapshot_decl_preamble)
-        self.module.appendImpl(decoder_snapshot_impl_preamble)
-
-    def onBeginFeature(self, featureName, featureType):
-        VulkanWrapperGenerator.onBeginFeature(self, featureName, featureType)
-        self.currentFeature = featureName
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-        api = self.typeInfo.apis[name]
-
-        additionalParams = [ \
-            makeVulkanTypeSimple(True, "uint8_t", 1, "snapshotTraceBegin"),
-            makeVulkanTypeSimple(False, "size_t", 0, "snapshotTraceBytes"),
-            makeVulkanTypeSimple(False, "android::base::BumpPool", 1, "pool"),]
-
-        if api.retType.typeName != "void":
-            additionalParams.append( \
-                makeVulkanTypeSimple(False, api.retType.typeName, 0, "input_result"))
-
-        apiForSnapshot = \
-            api.withCustomParameters( \
-                additionalParams + \
-                api.parameters).withCustomReturnType( \
-                    makeVulkanTypeSimple(False, "void", 0, "void"))
-
-        self.feature_apis.append((self.currentFeature, apiForSnapshot))
-
-        self.cgenHeader.stmt(self.cgenHeader.makeFuncProto(apiForSnapshot))
-        self.module.appendHeader(self.cgenHeader.swapCode())
-
-        self.cgenImpl.emitFuncImpl( \
-            apiForSnapshot, lambda cgen: emit_impl(self.typeInfo, apiForSnapshot, cgen))
-        self.module.appendImpl(self.cgenImpl.swapCode())
-
-    def onEnd(self,):
-        self.module.appendHeader(decoder_snapshot_decl_postamble)
-        self.module.appendImpl(decoder_snapshot_impl_postamble)
-        self.cgenHeader.decrIndent()
-
-        for feature, api in self.feature_apis:
-            if feature is not None:
-                self.cgenImpl.line("#ifdef %s" % feature)
-
-            apiImplShell = \
-                api.withModifiedName("VkDecoderSnapshot::" + api.name)
-
-            self.cgenImpl.emitFuncImpl( \
-                apiImplShell, lambda cgen: emit_passthrough_to_impl(self.typeInfo, api, cgen))
-
-            if feature is not None:
-                self.cgenImpl.line("#endif")
-
-        self.module.appendImpl(self.cgenImpl.swapCode())
-
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/deepcopy.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/deepcopy.py
deleted file mode 100644
index 5921804..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/deepcopy.py
+++ /dev/null
@@ -1,371 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE, EXTENSION_SIZE_API_NAME
-
-class DeepcopyCodegen(VulkanTypeIterator):
-    def __init__(self, cgen, inputVars, poolVarName, rootVarName, prefix, skipValues=False):
-        self.cgen = cgen
-        self.inputVars = inputVars
-        self.prefix = prefix
-        self.poolVarName = poolVarName
-        self.rootVarName = rootVarName
-        self.skipValues = skipValues
-
-        def makeAccess(varName, asPtr = True):
-            return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
-
-        def makeLengthAccess(varName):
-            return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
-
-        def makeLengthAccessGuard(varName):
-            return lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName=varName)
-
-        self.exprAccessorLhs = makeAccess(self.inputVars[0])
-        self.exprAccessorRhs = makeAccess(self.inputVars[1])
-
-        self.exprAccessorValueLhs = makeAccess(self.inputVars[0], asPtr = False)
-        self.exprAccessorValueRhs = makeAccess(self.inputVars[1], asPtr = False)
-
-        self.lenAccessorLhs = makeLengthAccess(self.inputVars[0])
-        self.lenAccessorRhs = makeLengthAccess(self.inputVars[1])
-
-        self.lenAccessorGuardLhs = makeLengthAccessGuard(self.inputVars[0])
-        self.lenAccessorGuardRhs = makeLengthAccessGuard(self.inputVars[1])
-
-        self.checked = False
-
-    def needSkip(self, vulkanType):
-        return False
-
-    def makeCastExpr(self, vulkanType):
-        return "(%s)" % (
-            self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
-    def makeNonConstCastForCopy(self, access, vulkanType):
-        if vulkanType.staticArrExpr:
-            casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
-        elif vulkanType.accessibleAsPointer():
-            casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForNonConstAccess()), access)
-        else:
-            casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
-        return casted
-
-    def makeAllocBytesExpr(self, lenAccess, vulkanType):
-        sizeof = self.cgen.sizeofExpr( \
-                     vulkanType.getForValueAccess())
-        if lenAccess:
-            bytesExpr = "%s * %s" % (lenAccess, sizeof)
-        else:
-            bytesExpr = sizeof
-
-        return bytesExpr
-
-    def onCheck(self, vulkanType):
-        pass
-
-    def endCheck(self, vulkanType):
-        pass
-
-    def onCompoundType(self, vulkanType):
-
-        if self.needSkip(vulkanType):
-            self.cgen.line("// TODO: Unsupported : %s" %
-                           self.cgen.makeCTypeDecl(vulkanType))
-            return
-
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        lenAccessLhs = self.lenAccessorLhs(vulkanType)
-        lenAccessRhs = self.lenAccessorRhs(vulkanType)
-
-        lenAccessorGuardLhs = self.lenAccessorGuardLhs(vulkanType)
-        lenAccessorGuardRhs = self.lenAccessorGuardRhs(vulkanType)
-
-        isPtr = vulkanType.pointerIndirectionLevels > 0
-
-        if lenAccessorGuardLhs is not None:
-            self.cgen.beginIf(lenAccessorGuardLhs)
-
-        if isPtr:
-            self.cgen.stmt("%s = nullptr" % accessRhs)
-            self.cgen.beginIf(accessLhs)
-
-            self.cgen.stmt( \
-                "%s = %s%s->alloc(%s)" % \
-                (accessRhs, self.makeCastExpr(vulkanType.getForNonConstAccess()),
-                 self.poolVarName, self.makeAllocBytesExpr(lenAccessLhs, vulkanType)))
-
-        if lenAccessLhs is not None:
-
-            loopVar = "i"
-            accessLhs = "%s + %s" % (accessLhs, loopVar)
-            forInit = "uint32_t %s = 0" % loopVar
-            forCond = "%s < (uint32_t)%s" % (loopVar, lenAccessLhs)
-            forIncr = "++%s" % loopVar
-
-            if isPtr:
-                # Avoid generating a self-assign.
-                if lenAccessRhs != lenAccessLhs:
-                    self.cgen.stmt("%s = %s" % (lenAccessRhs, lenAccessLhs))
-
-            accessRhs = "%s + %s" % (accessRhs, loopVar)
-            self.cgen.beginFor(forInit, forCond, forIncr)
-
-
-        accessRhsCasted = self.makeNonConstCastForCopy(accessRhs, vulkanType)
-
-        self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
-                           [self.poolVarName, self.rootVarName, accessLhs, accessRhsCasted])
-
-        if lenAccessLhs is not None:
-            self.cgen.endFor()
-
-        if isPtr:
-            self.cgen.endIf()
-
-        if lenAccessorGuardLhs is not None:
-            self.cgen.endIf()
-
-    def onString(self, vulkanType):
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        self.cgen.stmt("%s = nullptr" % accessRhs)
-        self.cgen.beginIf(accessLhs)
-
-        self.cgen.stmt( \
-            "%s = %s->strDup(%s)" % \
-            (accessRhs,
-             self.poolVarName,
-             accessLhs))
-
-        self.cgen.endIf()
-
-    def onStringArray(self, vulkanType):
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        lenAccessLhs = self.lenAccessorLhs(vulkanType)
-
-        self.cgen.stmt("%s = nullptr" % accessRhs)
-        self.cgen.beginIf("%s && %s" % (accessLhs, lenAccessLhs))
-
-        self.cgen.stmt( \
-            "%s = %s->strDupArray(%s, %s)" % \
-            (accessRhs,
-             self.poolVarName,
-             accessLhs,
-             lenAccessLhs))
-
-        self.cgen.endIf()
-
-    def onStaticArr(self, vulkanType):
-        accessLhs = self.exprAccessorValueLhs(vulkanType)
-        accessRhs = self.exprAccessorValueRhs(vulkanType)
-
-        lenAccessLhs = self.lenAccessorLhs(vulkanType)
-
-        bytesExpr = self.makeAllocBytesExpr(lenAccessLhs, vulkanType)
-        self.cgen.stmt("memcpy(%s, %s, %s)" % (accessRhs, accessLhs, bytesExpr))
-
-    def onStructExtension(self, vulkanType):
-
-        lhs = self.exprAccessorLhs(vulkanType)
-        rhs = self.exprAccessorRhs(vulkanType)
-
-        rhsExpr = "(%s)(%s)" % ("void*", rhs)
-
-        nextVar = "from_%s" % vulkanType.paramName
-        sizeVar = "%s_size" % vulkanType.paramName
-
-        self.cgen.beginIf("%s == VK_STRUCTURE_TYPE_MAX_ENUM" %
-                          self.rootVarName)
-        self.cgen.stmt("%s = from->sType" % self.rootVarName)
-        self.cgen.endIf()
-
-        self.cgen.stmt("const void* %s = %s" % (nextVar, self.inputVars[0]))
-        self.cgen.stmt("size_t %s = 0u" % sizeVar)
-        self.cgen.beginWhile("!%s && %s" % (sizeVar, nextVar))
-        self.cgen.stmt("%s = static_cast<const vk_struct_common*>(%s)->%s" % (
-            nextVar, nextVar, vulkanType.paramName
-        ))
-        self.cgen.stmt("%s = %s(%s, %s)" % (
-            sizeVar, EXTENSION_SIZE_API_NAME, self.rootVarName, nextVar))
-        self.cgen.endWhile()
-        
-        self.cgen.stmt("%s = nullptr" % rhs)
-
-        self.cgen.beginIf(sizeVar)
-
-        self.cgen.stmt( \
-            "%s = %s%s->alloc(%s)" % \
-            (rhs, self.makeCastExpr(vulkanType.getForNonConstAccess()), self.poolVarName, sizeVar))
-
-        self.cgen.funcCall(None, self.prefix + "extension_struct",
-                           [self.poolVarName, self.rootVarName, nextVar, rhsExpr])
-
-        self.cgen.endIf()
-
-    def onPointer(self, vulkanType):
-
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        if self.needSkip(vulkanType):
-            self.cgen.stmt("%s = nullptr" % accessRhs)
-            return
-
-        lenAccessLhs = self.lenAccessorLhs(vulkanType)
-
-        self.cgen.stmt("%s = nullptr" % accessRhs)
-        self.cgen.beginIf(accessLhs)
-
-        bytesExpr = self.makeAllocBytesExpr(lenAccessLhs, vulkanType)
-
-        self.cgen.stmt( \
-            "%s = %s%s->dupArray(%s, %s)" % \
-            (accessRhs,
-             self.makeCastExpr(vulkanType.getForNonConstAccess()),
-             self.poolVarName,
-             accessLhs,
-             bytesExpr))
-
-        self.cgen.endIf()
-
-    def onValue(self, vulkanType):
-        if self.skipValues:
-            return
-
-        accessLhs = self.exprAccessorValueLhs(vulkanType)
-        accessRhs = self.exprAccessorValueRhs(vulkanType)
-
-        self.cgen.stmt("%s = %s" % (accessRhs, accessLhs))
-
-class VulkanDeepcopy(VulkanWrapperGenerator):
-
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.codegen = CodeGen()
-
-        self.deepcopyPrefix = "deepcopy_"
-        self.deepcopyVars = ["from", "to"]
-        self.deepcopyAllocatorVarName = "alloc"
-        self.deepcopyAllocatorParam = \
-            makeVulkanTypeSimple(False, "Allocator", 1,
-                                 self.deepcopyAllocatorVarName)
-        self.deepcopyRootVarName = "rootType"
-        self.deepcopyRootParam = \
-            makeVulkanTypeSimple(False, "VkStructureType",
-                                 0, self.deepcopyRootVarName)
-        self.voidType = makeVulkanTypeSimple(False, "void", 0)
-
-        self.deepcopyCodegen = \
-            DeepcopyCodegen(
-                None,
-                self.deepcopyVars,
-                self.deepcopyAllocatorVarName,
-                self.deepcopyRootVarName,
-                self.deepcopyPrefix,
-                skipValues=True)
-
-        self.knownDefs = {}
-
-        self.extensionDeepcopyPrototype = \
-            VulkanAPI(self.deepcopyPrefix + "extension_struct",
-                      self.voidType,
-                      [self.deepcopyAllocatorParam,
-                       self.deepcopyRootParam,
-                       STRUCT_EXTENSION_PARAM,
-                       STRUCT_EXTENSION_PARAM_FOR_WRITE])
-
-    def onBegin(self,):
-        VulkanWrapperGenerator.onBegin(self)
-        self.module.appendImpl(self.codegen.makeFuncDecl(
-            self.extensionDeepcopyPrototype))
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-        if name in self.knownDefs:
-            return
-
-        category = self.typeInfo.categoryOf(name)
-
-        if category in ["struct", "union"] and alias:
-            self.module.appendHeader(
-                self.codegen.makeFuncAlias(self.deepcopyPrefix + name,
-                                           self.deepcopyPrefix + alias))
-
-        if category in ["struct", "union"] and not alias:
-
-            structInfo = self.typeInfo.structs[name]
-
-            typeFromName = \
-                lambda varname: \
-                    makeVulkanTypeSimple(varname == "from", name, 1, varname)
-
-            deepcopyParams = \
-                [self.deepcopyAllocatorParam, self.deepcopyRootParam] + \
-                 list(map(typeFromName, self.deepcopyVars))
-
-            deepcopyPrototype = \
-                VulkanAPI(self.deepcopyPrefix + name,
-                          self.voidType,
-                          deepcopyParams)
-
-            def structDeepcopyDef(cgen):
-                self.deepcopyCodegen.cgen = cgen
-                canSimplyAssign = True
-                for member in structInfo.members:
-                    if not member.isSimpleValueType(self.typeInfo):
-                        canSimplyAssign = False
-
-                cgen.stmt("(void)%s" % self.deepcopyAllocatorVarName)
-                cgen.stmt("(void)%s" % self.deepcopyRootVarName)
-                cgen.stmt("*to = *from")
-                if canSimplyAssign:
-                    pass
-                else:
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member,
-                                          self.deepcopyCodegen)
-
-            self.module.appendHeader(
-                self.codegen.makeFuncDecl(deepcopyPrototype))
-            self.module.appendImpl(
-                self.codegen.makeFuncImpl(deepcopyPrototype, structDeepcopyDef))
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-    def onEnd(self,):
-        VulkanWrapperGenerator.onEnd(self)
-
-        def deepcopyDstExpr(cgen, typeName):
-            return cgen.makeReinterpretCast( \
-                       STRUCT_EXTENSION_PARAM_FOR_WRITE.paramName,
-                       typeName, const=False)
-
-        def forEachExtensionDeepcopy(ext, castedAccess, cgen):
-            cgen.funcCall(None, self.deepcopyPrefix + ext.name,
-                          [self.deepcopyAllocatorVarName,
-                           self.deepcopyRootVarName,
-                           castedAccess, deepcopyDstExpr(cgen, ext.name)])
-
-        self.module.appendImpl(
-            self.codegen.makeFuncImpl(
-                self.extensionDeepcopyPrototype,
-                lambda cgen: self.emitForEachStructExtension(
-                    cgen,
-                    self.voidType,
-                    STRUCT_EXTENSION_PARAM,
-                    forEachExtensionDeepcopy,
-                    rootTypeVar=self.deepcopyRootParam)))
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/dispatch.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/dispatch.py
deleted file mode 100644
index c0e283d..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/dispatch.py
+++ /dev/null
@@ -1,482 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-
-from .wrapperdefs import VulkanWrapperGenerator
-
-# No real good way to automatically infer the most important Vulkan API
-# functions as it relates to which getProcAddress function to use, plus
-# we might want to control which function to use depending on our
-# performance needs.
-
-# This is based on the minimum set of functions needed to be directly
-# queried with dlsym and not returning null.
-getProcAddrFuncs = [
-    "vkGetInstanceProcAddr",
-    "vkDestroyInstance",
-    "vkEnumeratePhysicalDevices",
-    "vkGetPhysicalDeviceFeatures",
-    "vkGetPhysicalDeviceFormatProperties",
-    "vkGetPhysicalDeviceImageFormatProperties",
-    "vkGetPhysicalDeviceProperties",
-    "vkGetPhysicalDeviceQueueFamilyProperties",
-    "vkGetPhysicalDeviceMemoryProperties",
-    "vkCreateDevice",
-    "vkDestroyDevice",
-    "vkEnumerateDeviceExtensionProperties",
-    "vkEnumerateDeviceLayerProperties",
-]
-
-# Some methods can only be found using dlsym() while we cannot get the function
-# address using vkGetInstProcAddr() or vkGetDeviceProcAddr(). These function
-# pointers should only be initialized when setting up the dispatch from system
-# loader.
-getProcAddrOnlyFuncs = []
-
-getInstanceProcAddrNoInstanceFuncs = [
-    "vkCreateInstance",
-    "vkEnumerateInstanceExtensionProperties",
-    "vkEnumerateInstanceLayerProperties",
-]
-
-getInstanceProcAddrFuncs = [
-    "vkGetDeviceProcAddr",
-    "vkCreateSwapchainKHR",
-    "vkDestroySwapchainKHR",
-    "vkGetSwapchainImagesKHR",
-    "vkAcquireNextImageKHR",
-    "vkQueuePresentKHR",
-    "vkCreateMacOSSurfaceMVK",
-    "vkCreateWin32SurfaceKHR",
-    "vkGetPhysicalDeviceWin32PresentationSupportKHR",
-    "vkCreateXlibSurfaceKHR",
-    "vkGetPhysicalDeviceXlibPresentationSupportKHR",
-    "vkCreateXcbSurfaceKHR",
-    "vkGetPhysicalDeviceXcbPresentationSupportKHR",
-    "vkGetPhysicalDeviceSparseImageFormatProperties",
-    "vkEnumerateInstanceVersion",
-    "vkEnumeratePhysicalDeviceGroups",
-    "vkGetPhysicalDeviceFeatures2",
-    "vkGetPhysicalDeviceProperties2",
-    "vkGetPhysicalDeviceFormatProperties2",
-    "vkGetPhysicalDeviceImageFormatProperties2",
-    "vkGetPhysicalDeviceQueueFamilyProperties2",
-    "vkGetPhysicalDeviceMemoryProperties2",
-    "vkGetPhysicalDeviceSparseImageFormatProperties2",
-    "vkGetPhysicalDeviceExternalBufferProperties",
-    "vkGetPhysicalDeviceExternalFenceProperties",
-    "vkGetPhysicalDeviceExternalSemaphoreProperties",
-]
-
-# Implicitly, everything else is going to be obtained
-# with vkGetDeviceProcAddr,
-# unless it has instance in the arg.
-
-def isGetProcAddressAPI(vulkanApi):
-    return vulkanApi.name in getProcAddrFuncs
-
-def isGetProcAddressOnlyAPI(vulkanApi):
-    return vulkanApi.name in getProcAddrOnlyFuncs
-
-def isGetInstanceProcAddressNoInstanceAPI(vulkanApi):
-    return vulkanApi.name in getInstanceProcAddrNoInstanceFuncs
-
-def isGetInstanceProcAddressAPI(vulkanApi):
-    if vulkanApi.name in getInstanceProcAddrFuncs:
-        return True
-
-    if vulkanApi.parameters[0].typeName == "VkInstance":
-        return True
-
-    return False
-
-def isGetDeviceProcAddressAPI(vulkanApi):
-    if isGetProcAddressAPI(vulkanApi):
-        return False
-
-    if isGetProcAddressOnlyAPI(vulkanApi):
-        return False
-
-    if isGetInstanceProcAddressAPI(vulkanApi):
-        return False
-
-    return True
-
-def inferProcAddressFuncType(vulkanApi):
-    if isGetProcAddressAPI(vulkanApi):
-        return "global"
-    if isGetProcAddressOnlyAPI(vulkanApi):
-        return "global-only"
-    if isGetInstanceProcAddressNoInstanceAPI(vulkanApi):
-        return "global-instance"
-    if isGetInstanceProcAddressAPI(vulkanApi):
-        return "instance"
-    return "device"
-
-# VulkanDispatch defines a struct, VulkanDispatch,
-# that is populated by function pointers from the Vulkan
-# loader. No attempt is made to do something different
-# for instance vs device functions.
-class VulkanDispatch(VulkanWrapperGenerator):
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.apisToGet = {}
-
-        self.cgenHeader = CodeGen()
-        self.cgenImpl = CodeGen()
-        self.typeInfo = typeInfo
-
-        self.currentFeature = ""
-        self.featureForCodegen = ""
-
-    def onBegin(self):
-
-        # The first way is to use just the loader to get symbols. This doesn't
-        # necessarily work with extensions because at that point the dispatch
-        # table needs to be specific to a particular Vulkan instance or device.
-
-        self.cgenHeader.line("""
-void init_vulkan_dispatch_from_system_loader(
-    DlOpenFunc dlOpenFunc,
-    DlSymFunc dlSymFunc,
-    VulkanDispatch* dispatch_out);
-""")
-
-        # The second way is to initialize the table from a given Vulkan
-        # instance or device. Provided the instance or device was created with
-        # the right extensions, we can obtain function pointers to extension
-        # functions this way.
-
-        self.cgenHeader.line("""
-void init_vulkan_dispatch_from_instance(
-    VulkanDispatch* vk,
-    VkInstance instance,
-    VulkanDispatch* dispatch_out);
-""")
-        self.cgenHeader.line("""
-void init_vulkan_dispatch_from_device(
-    VulkanDispatch* vk,
-    VkDevice device,
-    VulkanDispatch* dispatch_out);
-""")
-
-        # After populating a VulkanDispatch with the above methods,
-        # it can be useful to check whether the Vulkan 1.0 or 1.1 methods
-        # are all there.
-        def emit_feature_check_decl(cgen, tag, featureToCheck):
-            cgen.line("""
-bool vulkan_dispatch_check_%s_%s(
-    const VulkanDispatch* vk);
-""" % (tag, featureToCheck))
-
-        emit_feature_check_decl(self.cgenHeader, "instance", "VK_VERSION_1_0")
-        emit_feature_check_decl(self.cgenHeader, "instance", "VK_VERSION_1_1")
-        emit_feature_check_decl(self.cgenHeader, "device", "VK_VERSION_1_0")
-        emit_feature_check_decl(self.cgenHeader, "device", "VK_VERSION_1_1")
-
-        self.cgenHeader.line("struct VulkanDispatch {")
-        self.module.appendHeader(self.cgenHeader.swapCode())
-
-    def syncFeatureQuiet(self, cgen, feature):
-        if self.featureForCodegen != feature:
-            if feature == "":
-                self.featureForCodegen = feature
-                return
-
-            self.featureForCodegen = feature
-
-    def syncFeature(self, cgen, feature):
-        if self.featureForCodegen != feature:
-            if feature == "":
-                cgen.leftline("#endif")
-                self.featureForCodegen = feature
-                return
-
-            if self.featureForCodegen != "":
-                cgen.leftline("#endif")
-
-            cgen.leftline("#ifdef %s" % feature)
-            self.featureForCodegen = feature
-
-    def makeDlsymCall(self, cgen, apiname, typedecl):
-        cgen.stmt( \
-            "out->%s = (%s)dlSymFunc(lib, \"%s\")" % \
-            (apiname, typedecl, apiname))
-
-    def makeGetInstanceProcAddrCall(self, cgen, dispatch, instance, apiname, typedecl):
-        cgen.stmt( \
-            "out->%s = (%s)%s->vkGetInstanceProcAddr(%s, \"%s\")" % \
-            (apiname, typedecl, dispatch, instance, apiname))
-
-    def makeGetDeviceProcAddrCall(self, cgen, dispatch, device, apiname, typedecl):
-        cgen.stmt( \
-            "out->%s = (%s)%s->vkGetDeviceProcAddr(%s, \"%s\")" % \
-            (apiname, typedecl, dispatch, device, apiname))
-
-    def onEnd(self):
-        self.cgenHeader.line("};")
-        self.module.appendHeader(self.cgenHeader.swapCode())
-
-        # Getting dispatch tables from the loader
-        self.cgenImpl.line("""
-void init_vulkan_dispatch_from_system_loader(
-    DlOpenFunc dlOpenFunc,
-    DlSymFunc dlSymFunc,
-    VulkanDispatch* out)""")
-
-        self.cgenImpl.beginBlock()
-
-        self.cgenImpl.stmt("memset(out, 0x0, sizeof(VulkanDispatch))")
-
-        self.cgenImpl.stmt("void* lib = dlOpenFunc()")
-        self.cgenImpl.stmt("if (!lib) return")
-
-        apis = \
-            self.apisToGet["global"] + \
-            self.apisToGet["global-instance"] + \
-            self.apisToGet["instance"] + \
-            self.apisToGet["device"]
-
-        if "global-only" in self.apisToGet:
-            apis = apis + self.apisToGet["global-only"]
-
-        for vulkanApi, typeDecl, feature in apis:
-            self.syncFeature(self.cgenImpl, feature)
-            self.makeDlsymCall(self.cgenImpl, vulkanApi.name, typeDecl)
-
-        self.syncFeature(self.cgenImpl, "")
-        self.cgenImpl.endBlock()
-
-        # Getting instance dispatch tables
-        self.cgenImpl.line("""
-void init_vulkan_dispatch_from_instance(
-    VulkanDispatch* vk,
-    VkInstance instance,
-    VulkanDispatch* out)""")
-
-        self.cgenImpl.beginBlock()
-
-        self.cgenImpl.stmt("memset(out, 0x0, sizeof(VulkanDispatch))")
-
-        apis = \
-            self.apisToGet["global"] + \
-            self.apisToGet["global-instance"] + \
-            self.apisToGet["instance"] + \
-            self.apisToGet["device"]
-
-        for vulkanApi, typeDecl, feature in apis:
-            self.syncFeature(self.cgenImpl, feature)
-            self.makeGetInstanceProcAddrCall(
-                self.cgenImpl, "vk", "instance", vulkanApi.name, typeDecl)
-
-        self.syncFeature(self.cgenImpl, "")
-        self.cgenImpl.endBlock()
-
-        # Getting device dispatch tables
-        self.cgenImpl.line("""
-void init_vulkan_dispatch_from_device(
-    VulkanDispatch* vk,
-    VkDevice device,
-    VulkanDispatch* out)""")
-
-        self.cgenImpl.beginBlock()
-
-        self.cgenImpl.stmt("memset(out, 0x0, sizeof(VulkanDispatch))")
-
-        apis = \
-            self.apisToGet["global"] + \
-            self.apisToGet["global-instance"] + \
-            self.apisToGet["instance"] + \
-            self.apisToGet["device"]
-
-        for vulkanApi, typeDecl, feature in apis:
-            self.syncFeature(self.cgenImpl, feature)
-            self.makeGetDeviceProcAddrCall(
-                self.cgenImpl, "vk", "device", vulkanApi.name, typeDecl)
-
-        self.syncFeature(self.cgenImpl, "")
-        self.cgenImpl.endBlock()
-
-        # Check Vulkan 1.0 / 1.1 functions
-
-        def emit_check_impl(cgen, dispatchVar, feature, featureToCheck, apiName):
-            if feature == featureToCheck:
-                cgen.beginIf("!%s->%s" % (dispatchVar, apiName))
-                cgen.stmt("fprintf(stderr, \"%s check failed: %s not found\\n\")" % (featureToCheck, apiName))
-                cgen.stmt("good = false")
-                cgen.endIf()
-
-        def emit_feature_check_impl(context, cgen, tag, featureToCheck, apis):
-            cgen.line("""
-bool vulkan_dispatch_check_%s_%s(
-    const VulkanDispatch* vk)
-""" % (tag, featureToCheck))
-
-            cgen.beginBlock()
-
-            cgen.stmt("bool good = true")
-
-            for vulkanApi, typeDecl, feature in apis:
-                context.syncFeatureQuiet(self.cgenImpl, feature)
-                emit_check_impl(cgen, "vk", feature, featureToCheck, vulkanApi.name)
-
-            context.syncFeatureQuiet(self.cgenImpl, "")
-
-            cgen.stmt("return good")
-            cgen.endBlock()
-
-        instanceApis = self.apisToGet["global-instance"] + self.apisToGet["instance"]
-
-        emit_feature_check_impl(self, self.cgenImpl, "instance", "VK_VERSION_1_0", instanceApis)
-        emit_feature_check_impl(self, self.cgenImpl, "instance", "VK_VERSION_1_1", instanceApis)
-        emit_feature_check_impl(self, self.cgenImpl, "device", "VK_VERSION_1_0", self.apisToGet["device"])
-        emit_feature_check_impl(self, self.cgenImpl, "device", "VK_VERSION_1_1", self.apisToGet["device"])
-
-        self.module.appendImpl(self.cgenImpl.swapCode())
-
-    def onBeginFeature(self, featureName, featureType):
-        self.currentFeature = featureName
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-        vulkanApi = self.typeInfo.apis[name]
-
-        typeDecl = "PFN_%s" % name
-
-        procAddressType = inferProcAddressFuncType(vulkanApi)
-
-        self.cgenHeader.stmt("%s %s" % (typeDecl, name));
-        self.module.appendHeader(self.cgenHeader.swapCode())
-
-        current = self.apisToGet.get(procAddressType, [])
-        if current == []:
-            self.apisToGet[procAddressType] = current
-        current.append((vulkanApi, typeDecl, self.currentFeature))
-
-# VulkanDispatchFast allows one to get the optimal function pointers
-# for a given Vulkan API call, in order to improve performance.
-#
-# We can optionally query VkDevices to get function pointers that are
-# closer to the ICD and have fewer levels of indirection from the loader
-# to get there.
-# See
-# https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md
-# for more info.
-#
-# This requires the calling C++ code to provide functions to
-# generate the desired instances and devices, otherwise we won't know
-# which instance or device to pass to vkGet(Instance|Device)ProcAddr,
-# so it does push more complexity to the user.
-class VulkanDispatchFast(VulkanDispatch):
-
-    def __init__(self, module, typeInfo):
-        VulkanDispatch.__init__(self, module, typeInfo)
-
-    def onBegin(self):
-        self.cgenHeader.line("""
-void init_vulkan_dispatch_from_system_loader(
-    DlOpenFunc dlOpenFunc,
-    DlSymFunc dlSymFunc,
-    InstanceGetter instanceGetter,
-    DeviceGetter deviceGetter,
-    VulkanDispatch* dispatch_out);
-""")
-
-        self.cgenHeader.line("struct VulkanDispatch {")
-        self.cgenHeader.line("VkInstance instance;")
-        self.cgenHeader.line("VkPhysicalDevice physicalDevice;")
-        self.cgenHeader.line("uint32_t physicalDeviceQueueFamilyInfoCount;")
-        self.cgenHeader.line("VkQueueFamilyProperties* physicalDeviceQueueFamilyInfos;")
-        self.cgenHeader.line("VkDevice device;")
-        self.cgenHeader.line("bool presentCapable;")
-        self.module.appendHeader(self.cgenHeader.swapCode())
-
-    def makeGetProcAddr(self, cgen, dispatchLevel, dispatch, apiname, typedecl):
-        if dispatchLevel == "instance":
-            funcname = "vkGetInstanceProcAddr"
-        elif dispatchLevel == "device":
-            funcname = "vkGetDeviceProcAddr"
-        else:
-            raise
-
-        cgen.stmt( \
-            "out->%s = (%s)out->%s(%s, \"%s\")" % \
-            (apiname, typedecl, funcname, dispatch, apiname))
-
-    def onEnd(self):
-        self.cgenHeader.line("};")
-        self.module.appendHeader(self.cgenHeader.swapCode())
-
-        self.cgenImpl.line("""
-void init_vulkan_dispatch_from_system_loader(
-    DlOpenFunc dlOpenFunc,
-    DlSymFunc dlSymFunc,
-    InstanceGetter instanceGetter,
-    DeviceGetter deviceGetter,
-    VulkanDispatch* out)""")
-
-        self.cgenImpl.beginBlock()
-
-        self.cgenImpl.stmt("out->instance = nullptr")
-        self.cgenImpl.stmt("out->physicalDevice = nullptr")
-        self.cgenImpl.stmt("out->physicalDeviceQueueFamilyInfoCount = 0")
-        self.cgenImpl.stmt("out->physicalDeviceQueueFamilyInfos = nullptr")
-        self.cgenImpl.stmt("out->device = nullptr")
-        self.cgenImpl.stmt("out->presentCapable = false")
-
-        self.cgenImpl.stmt("void* lib = dlOpenFunc()")
-        self.cgenImpl.stmt("if (!lib) return")
-
-        for vulkanApi, typeDecl, feature in self.apisToGet["global"]:
-            self.syncFeature(self.cgenImpl, feature)
-            self.makeDlsymCall(self.cgenImpl, vulkanApi.name, typeDecl)
-
-        self.syncFeature(self.cgenImpl, "")
-        self.cgenImpl.stmt("if (!out->vkGetInstanceProcAddr) return")
-
-        for vulkanApi, typeDecl, feature in self.apisToGet["global-instance"]:
-            self.syncFeature(self.cgenImpl, feature)
-            self.makeGetProcAddr( \
-                self.cgenImpl, "instance", "nullptr", vulkanApi.name, typeDecl);
-
-        self.syncFeature(self.cgenImpl, "")
-        self.cgenImpl.stmt("if (!instanceGetter(out, &out->instance)) return")
-
-        for vulkanApi, typeDecl, feature in self.apisToGet["instance"]:
-            self.syncFeature(self.cgenImpl, feature)
-            self.makeGetProcAddr( \
-                self.cgenImpl, "instance", "out->instance", vulkanApi.name, typeDecl);
-
-        self.syncFeature(self.cgenImpl, "")
-
-        self.cgenImpl.stmt("if (!deviceGetter(out, out->instance, &out->physicalDevice, &out->physicalDeviceQueueFamilyInfoCount, nullptr, &out->device, &out->presentCapable)) return")
-        self.cgenImpl.stmt("out->physicalDeviceQueueFamilyInfos = (VkQueueFamilyProperties*)malloc(out->physicalDeviceQueueFamilyInfoCount * sizeof(VkQueueFamilyProperties))");
-        self.cgenImpl.stmt("if (!deviceGetter(out, out->instance, &out->physicalDevice, &out->physicalDeviceQueueFamilyInfoCount, out->physicalDeviceQueueFamilyInfos, &out->device, &out->presentCapable)) return")
-
-        for vulkanApi, typeDecl, feature in self.apisToGet["device"]:
-            self.syncFeature(self.cgenImpl, feature)
-            self.makeGetProcAddr( \
-                self.cgenImpl, "device", "out->device", vulkanApi.name, typeDecl);
-
-        self.syncFeature(self.cgenImpl, "")
-
-        self.cgenImpl.endBlock()
-
-        self.module.appendImpl(self.cgenImpl.swapCode())
-
-    def onBeginFeature(self, featureName, featureType):
-        VulkanDispatch.onBeginFeature(self, featureName, featureType);
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanDispatch.onGenType(self, typeXml, name, alias);
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanDispatch.onGenCmd(self, cmdinfo, name, alias);
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/encoder.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/encoder.py
deleted file mode 100644
index 42e5ff9..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/encoder.py
+++ /dev/null
@@ -1,686 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-import copy
-
-from .common.codegen import CodeGen, VulkanWrapperGenerator
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-
-from .marshaling import VulkanMarshalingCodegen
-from .reservedmarshaling import VulkanReservedMarshalingCodegen
-from .counting import VulkanCountingCodegen
-from .handlemap import HandleMapCodegen
-from .deepcopy import DeepcopyCodegen
-from .transform import TransformCodegen, genTransformsForVulkanType
-
-from .wrapperdefs import API_PREFIX_RESERVEDMARSHAL
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_UNMARSHAL
-from .wrapperdefs import ROOT_TYPE_DEFAULT_VALUE
-from .wrapperdefs import VULKAN_STREAM_TYPE_GUEST
-
-encoder_decl_preamble = """
-
-class VkEncoder {
-public:
-    VkEncoder(gfxstream::guest::IOStream* stream);
-    ~VkEncoder();
-
-#include "VkEncoder.h.inl"
-"""
-
-encoder_decl_postamble = """
-private:
-    class Impl;
-    std::unique_ptr<Impl> mImpl;
-};
-"""
-
-encoder_impl_preamble ="""
-
-using namespace gfxstream::vk;
-
-using android::base::BumpPool;
-
-#include "VkEncoder.cpp.inl"
-
-#define VALIDATE_RET(retType, success, validate) \\
-    retType goldfish_vk_validateResult = validate; \\
-    if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \\
-
-#define VALIDATE_VOID(validate) \\
-    VkResult goldfish_vk_validateResult = validate; \\
-    if (goldfish_vk_validateResult != VK_SUCCESS) return; \\
-
-"""
-
-STREAM = "stream"
-RESOURCES = "sResourceTracker"
-POOL = "pool"
-
-ENCODER_PREVALIDATED_APIS = [
-    "vkFlushMappedMemoryRanges",
-    "vkInvalidateMappedMemoryRanges",
-]
-
-ENCODER_CUSTOM_RESOURCE_PREPROCESS = [
-    "vkMapMemoryIntoAddressSpaceGOOGLE",
-    "vkDestroyDevice",
-]
-
-ENCODER_CUSTOM_RESOURCE_POSTPROCESS = [
-    "vkCreateInstance",
-    "vkCreateDevice",
-    "vkMapMemoryIntoAddressSpaceGOOGLE",
-    "vkGetPhysicalDeviceFeatures2",
-    "vkGetPhysicalDeviceFeatures2KHR",
-    "vkGetPhysicalDeviceProperties",
-    "vkGetPhysicalDeviceProperties2",
-    "vkGetPhysicalDeviceProperties2KHR",
-    "vkCreateDescriptorUpdateTemplate",
-    "vkCreateDescriptorUpdateTemplateKHR",
-    "vkGetPhysicalDeviceExternalSemaphoreProperties",
-    "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR",
-    "vkGetDeviceQueue",
-    "vkGetDeviceQueue2",
-]
-
-ENCODER_EXPLICIT_FLUSHED_APIS = [
-    "vkEndCommandBufferAsyncGOOGLE",
-    "vkQueueSubmitAsyncGOOGLE",
-    "vkQueueBindSparseAsyncGOOGLE",
-    "vkQueueWaitIdleAsyncGOOGLE",
-    "vkQueueSignalReleaseImageANDROID",
-    "vkDestroyDevice",
-]
-
-SUCCESS_RET_TYPES = {
-    "VkResult" : "VK_SUCCESS",
-    "void" : None,
-    # TODO: Put up success results for other return types here.
-}
-
-ENCODER_THIS_PARAM = makeVulkanTypeSimple(False, "VkEncoder", 1, "this")
-
-# Common components of encoding a Vulkan API call
-def make_event_handler_call(
-    handler_access,
-    api,
-    context_param,
-    input_result_param,
-    cgen,
-    suffix=""):
-    extraParams = [context_param.paramName]
-    if input_result_param:
-        extraParams.append(input_result_param)
-    return cgen.makeCallExpr( \
-               "%s->on_%s%s" % (handler_access, api.name, suffix),
-               extraParams + \
-                       [p.paramName for p in api.parameters[:-1]])
-
-def emit_custom_pre_validate(typeInfo, api, cgen):
-    if api.name in ENCODER_PREVALIDATED_APIS:
-        callExpr = \
-            make_event_handler_call( \
-                "mImpl->validation()", api,
-                ENCODER_THIS_PARAM,
-                SUCCESS_RET_TYPES[api.getRetTypeExpr()],
-                cgen)
-
-        if api.getRetTypeExpr() == "void":
-            cgen.stmt("VALIDATE_VOID(%s)" % callExpr)
-        else:
-            cgen.stmt("VALIDATE_RET(%s, %s, %s)" % \
-                (api.getRetTypeExpr(),
-                 SUCCESS_RET_TYPES[api.getRetTypeExpr()],
-                 callExpr))
-
-def emit_custom_resource_preprocess(typeInfo, api, cgen):
-    if api.name in ENCODER_CUSTOM_RESOURCE_PREPROCESS:
-        cgen.stmt( \
-            make_event_handler_call( \
-                "sResourceTracker", api,
-                ENCODER_THIS_PARAM,
-                SUCCESS_RET_TYPES[api.getRetTypeExpr()],
-                cgen, suffix="_pre"))
-
-def emit_custom_resource_postprocess(typeInfo, api, cgen):
-    if api.name in ENCODER_CUSTOM_RESOURCE_POSTPROCESS:
-        cgen.stmt(make_event_handler_call( \
-            "sResourceTracker",
-            api,
-            ENCODER_THIS_PARAM,
-            api.getRetVarExpr(),
-            cgen))
-
-def emit_count_marshal(typeInfo, param, cgen):
-    res = \
-        iterateVulkanType(
-            typeInfo, param,
-            VulkanCountingCodegen( \
-                cgen, "sFeatureBits", param.paramName, "countPtr", ROOT_TYPE_DEFAULT_VALUE,
-               "count_"))
-    if not res:
-        cgen.stmt("(void)%s" % param.paramName)
-
-def emit_marshal(typeInfo, param, cgen):
-    forOutput = param.isHandleType() and ("out" in param.inout)
-    if forOutput:
-        cgen.stmt("/* is handle, possibly out */")
-
-    res = \
-        iterateVulkanType(
-            typeInfo, param,
-            VulkanReservedMarshalingCodegen( \
-                cgen, "guest", STREAM, ROOT_TYPE_DEFAULT_VALUE, param.paramName, "streamPtrPtr",
-               API_PREFIX_RESERVEDMARSHAL,
-               "" if forOutput else "get_host_u64_",
-               direction="write"))
-    if not res:
-        cgen.stmt("(void)%s" % param.paramName)
-
-    if forOutput:
-        cgen.stmt("/* is handle, possibly out */")
-
-def emit_unmarshal(typeInfo, param, cgen):
-    iterateVulkanType(
-        typeInfo, param,
-        VulkanMarshalingCodegen( \
-            cgen, STREAM, ROOT_TYPE_DEFAULT_VALUE, param.paramName,
-           API_PREFIX_UNMARSHAL, direction="read"))
-
-def emit_deepcopy(typeInfo, param, cgen):
-    res = \
-        iterateVulkanType(typeInfo, param, DeepcopyCodegen(
-            cgen, [param.paramName, "local_" + param.paramName], "pool", ROOT_TYPE_DEFAULT_VALUE, "deepcopy_"))
-    if not res:
-        cgen.stmt("(void)%s" % param.paramName)
-
-def emit_transform(typeInfo, param, cgen, variant="tohost"):
-    res = \
-        iterateVulkanType(typeInfo, param, TransformCodegen( \
-            cgen, param.paramName, "sResourceTracker", "transform_%s_" % variant, variant))
-    if not res:
-        cgen.stmt("(void)%s" % param.paramName)
-
-def emit_handlemap_create(typeInfo, param, cgen):
-    iterateVulkanType(typeInfo, param, HandleMapCodegen(
-        cgen, None, "sResourceTracker", "handlemap_",
-        lambda vtype: typeInfo.isHandleType(vtype.typeName)
-    ))
-
-def custom_encoder_args(api):
-    params = ["this"]
-    if api.getRetVarExpr() is not None:
-        params.append(api.getRetVarExpr())
-    return params
-
-def emit_handlemap_destroy(typeInfo, param, cgen):
-    iterateVulkanType(typeInfo, param, HandleMapCodegen(
-        cgen, None, "sResourceTracker->destroyMapping()", "handlemap_",
-        lambda vtype: typeInfo.isHandleType(vtype.typeName)
-    ))
-
-class EncodingParameters(object):
-    def __init__(self, api):
-        self.localCopied = []
-        self.toWrite = []
-        self.toRead = []
-        self.toCreate = []
-        self.toDestroy = []
-
-        for param in api.parameters:
-            param.action = None
-            param.inout = "in"
-
-            if param.paramName == "doLock":
-                continue
-
-            if param.possiblyOutput():
-                param.inout += "out"
-                self.toWrite.append(param)
-                self.toRead.append(param)
-                if param.isCreatedBy(api):
-                    self.toCreate.append(param)
-                    param.action = "create"
-            else:
-
-                if param.paramName == "doLock":
-                    continue
-
-                if param.isDestroyedBy(api):
-                    self.toDestroy.append(param)
-                    param.action = "destroy"
-                localCopyParam = \
-                    param.getForNonConstAccess().withModifiedName( \
-                        "local_" + param.paramName)
-                self.localCopied.append((param, localCopyParam))
-                self.toWrite.append(localCopyParam)
-
-def emit_parameter_encode_preamble_write(typeInfo, api, cgen):
-    emit_custom_pre_validate(typeInfo, api, cgen);
-    emit_custom_resource_preprocess(typeInfo, api, cgen);
-
-    cgen.stmt("auto %s = mImpl->stream()" % STREAM)
-    cgen.stmt("auto %s = mImpl->pool()" % POOL)
-    # cgen.stmt("%s->setHandleMapping(%s->unwrapMapping())" % (STREAM, RESOURCES))
-
-    encodingParams = EncodingParameters(api)
-    for (_, localCopyParam) in encodingParams.localCopied:
-        cgen.stmt(cgen.makeRichCTypeDecl(localCopyParam))
-
-def emit_parameter_encode_copy_unwrap_count(typeInfo, api, cgen, customUnwrap=None):
-    encodingParams = EncodingParameters(api)
-
-    for (origParam, localCopyParam) in encodingParams.localCopied:
-        shouldCustomCopy = \
-            customUnwrap and \
-            origParam.paramName in customUnwrap and \
-            "copyOp" in customUnwrap[origParam.paramName]
-
-        shouldCustomMap = \
-            customUnwrap and \
-            origParam.paramName in customUnwrap and \
-            "mapOp" in customUnwrap[origParam.paramName]
-
-        if shouldCustomCopy:
-            customUnwrap[origParam.paramName]["copyOp"](cgen, origParam, localCopyParam)
-        else:
-            # if this is a pointer type and we don't do custom copy nor unwrap,
-            # and the transform doesn't end up doing anything,
-            # don't deepcopy, just cast it.
-
-            avoidDeepcopy = False
-
-            if origParam.pointerIndirectionLevels > 0:
-                testCgen = CodeGen()
-                genTransformsForVulkanType("sResourceTracker", origParam, lambda p: testCgen.generalAccess(p, parentVarName = None, asPtr = True), lambda p: testCgen.generalLengthAccess(p, parentVarName = None), testCgen)
-                emit_transform(typeInfo, origParam, testCgen, variant="tohost")
-                if "" == testCgen.swapCode():
-                    avoidDeepcopy = True
-            if avoidDeepcopy:
-                cgen.line("// Avoiding deepcopy for %s" % origParam.paramName)
-                cgen.stmt("%s = (%s%s)%s" % (localCopyParam.paramName, localCopyParam.typeName, "*" * origParam.pointerIndirectionLevels, origParam.paramName))
-            else:
-                emit_deepcopy(typeInfo, origParam, cgen)
-
-    for (origParam, localCopyParam) in encodingParams.localCopied:
-        shouldCustomMap = \
-            customUnwrap and \
-            origParam.paramName in customUnwrap and \
-            "mapOp" in customUnwrap[origParam.paramName]
-
-        if shouldCustomMap:
-            customUnwrap[origParam.paramName]["mapOp"](cgen, origParam, localCopyParam)
-        else:
-            if localCopyParam.typeName == "VkAllocationCallbacks":
-                cgen.stmt("%s = nullptr" % localCopyParam.paramName)
-
-    apiForTransform = \
-        api.withCustomParameters( \
-            map(lambda p: p[1], \
-                encodingParams.localCopied))
-
-    # Apply transforms if applicable.
-    # Apply transform to API itself:
-    genTransformsForVulkanType(
-        "sResourceTracker",
-        apiForTransform,
-        lambda p: cgen.generalAccess(p, parentVarName = None, asPtr = True),
-        lambda p: cgen.generalLengthAccess(p, parentVarName = None),
-        cgen)
-
-    # For all local copied parameters, run the transforms
-    for localParam in apiForTransform.parameters:
-        if "doLock" in localParam.paramName:
-            continue
-        emit_transform(typeInfo, localParam, cgen, variant="tohost")
-
-    cgen.stmt("size_t count = 0")
-    cgen.stmt("size_t* countPtr = &count")
-    cgen.beginBlock()
-
-    # Use counting stream to calculate the packet size.
-    for p in encodingParams.toWrite:
-        emit_count_marshal(typeInfo, p, cgen)
-
-    cgen.endBlock()
-
-def is_cmdbuf_dispatch(api):
-    return "VkCommandBuffer" == api.parameters[0].typeName
-
-def emit_parameter_encode_write_packet_info(typeInfo, api, cgen):
-    # Seqno and skipping dispatch serialize are for use with VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT
-    doSeqno = True
-    doDispatchSerialize = True
-
-    if is_cmdbuf_dispatch(api):
-        doSeqno = False
-        doDispatchSerialize = False
-
-    if doSeqno:
-        cgen.stmt("uint32_t packetSize_%s = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count" % (api.name))
-    else:
-        cgen.stmt("uint32_t packetSize_%s = 4 + 4 + count" % (api.name))
-
-    if not doDispatchSerialize:
-        cgen.stmt("if (queueSubmitWithCommandsEnabled) packetSize_%s -= 8" % api.name)
-
-    cgen.stmt("uint8_t* streamPtr = %s->reserve(packetSize_%s)" % (STREAM, api.name))
-    cgen.stmt("uint8_t* packetBeginPtr = streamPtr")
-    cgen.stmt("uint8_t** streamPtrPtr = &streamPtr")
-    cgen.stmt("uint32_t opcode_%s = OP_%s" % (api.name, api.name))
-
-    if doSeqno:
-        cgen.stmt("uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno()")
-
-    cgen.stmt("memcpy(streamPtr, &opcode_%s, sizeof(uint32_t)); streamPtr += sizeof(uint32_t)" % api.name)
-    cgen.stmt("memcpy(streamPtr, &packetSize_%s, sizeof(uint32_t)); streamPtr += sizeof(uint32_t)" % api.name)
-
-    if doSeqno:
-        cgen.line("if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); }")
-
-def emit_parameter_encode_do_parameter_write(typeInfo, api, cgen):
-    encodingParams = EncodingParameters(api)
-
-    dispatchDone = False
-
-    for p in encodingParams.toWrite:
-        if is_cmdbuf_dispatch(api) and not dispatchDone:
-            cgen.beginIf("!queueSubmitWithCommandsEnabled")
-            emit_marshal(typeInfo, p, cgen)
-            cgen.endIf()
-        else:
-            emit_marshal(typeInfo, p, cgen)
-
-        dispatchDone = True
-
-def emit_parameter_encode_read(typeInfo, api, cgen):
-    encodingParams = EncodingParameters(api)
-
-    for p in encodingParams.toRead:
-        if p.action == "create":
-            cgen.stmt(
-                "%s->setHandleMapping(%s->createMapping())" % \
-                (STREAM, RESOURCES))
-        emit_unmarshal(typeInfo, p, cgen)
-        if p.action == "create":
-            cgen.stmt(
-                "%s->unsetHandleMapping()" % STREAM)
-        emit_transform(typeInfo, p, cgen, variant="fromhost")
-
-def emit_post(typeInfo, api, cgen):
-    encodingParams = EncodingParameters(api)
-
-    emit_custom_resource_postprocess(typeInfo, api, cgen)
-
-    for p in encodingParams.toDestroy:
-        emit_handlemap_destroy(typeInfo, p, cgen)
-
-    doSeqno = True
-    if is_cmdbuf_dispatch(api):
-        doSeqno = False
-
-    retType = api.getRetTypeExpr()
-
-    if api.name in ENCODER_EXPLICIT_FLUSHED_APIS:
-        cgen.stmt("stream->flush()");
-        return
-
-    if doSeqno:
-        if retType == "void":
-            encodingParams = EncodingParameters(api)
-            if 0 == len(encodingParams.toRead):
-                cgen.stmt("stream->flush()");
-
-def emit_pool_free(cgen):
-    cgen.stmt("++encodeCount")
-    cgen.beginIf("0 == encodeCount % POOL_CLEAR_INTERVAL")
-    cgen.stmt("pool->freeAll()")
-    cgen.stmt("%s->clearPool()" % STREAM)
-    cgen.endIf()
-
-def emit_return_unmarshal(typeInfo, api, cgen):
-
-    retType = api.getRetTypeExpr()
-
-    if retType == "void":
-        return
-
-    retVar = api.getRetVarExpr()
-    cgen.stmt("%s %s = (%s)0" % (retType, retVar, retType))
-    cgen.stmt("%s->read(&%s, %s)" % \
-              (STREAM, retVar, cgen.sizeofExpr(api.retType)))
-
-def emit_return(typeInfo, api, cgen):
-    if api.getRetTypeExpr() == "void":
-        return
-
-    retVar = api.getRetVarExpr()
-    cgen.stmt("return %s" % retVar)
-
-def emit_lock(cgen):
-    cgen.stmt("(void)doLock");
-    cgen.stmt("bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT")
-    cgen.stmt("if (!queueSubmitWithCommandsEnabled && doLock) this->lock()")
-
-def emit_unlock(cgen):
-    cgen.stmt("if (!queueSubmitWithCommandsEnabled && doLock) this->unlock()")
-
-def emit_debug_log(typeInfo, api, cgen):
-    logFormat = []
-    logVargs = []
-    for param in api.parameters:
-        if param.paramName == "doLock":
-            continue
-
-        paramFormatSpecifier = param.getPrintFormatSpecifier()
-        if not paramFormatSpecifier:
-            continue
-
-        logFormat.append(param.paramName + ":" + paramFormatSpecifier)
-        logVargs.append(param.paramName)
-
-    logFormatStr = ", ".join(logFormat)
-    logVargsStr = ", ".join(logVargs)
-
-def emit_default_encoding(typeInfo, api, cgen):
-    emit_debug_log(typeInfo, api, cgen)
-    emit_lock(cgen)
-    emit_parameter_encode_preamble_write(typeInfo, api, cgen)
-    emit_parameter_encode_copy_unwrap_count(typeInfo, api, cgen)
-    emit_parameter_encode_write_packet_info(typeInfo, api, cgen)
-    emit_parameter_encode_do_parameter_write(typeInfo, api, cgen)
-    emit_parameter_encode_read(typeInfo, api, cgen)
-    emit_return_unmarshal(typeInfo, api, cgen)
-    emit_post(typeInfo, api, cgen)
-    emit_pool_free(cgen)
-    emit_unlock(cgen)
-    emit_return(typeInfo, api, cgen)
-
-## Custom encoding definitions##################################################
-
-def emit_only_goldfish_custom(typeInfo, api, cgen):
-    emit_lock(cgen)
-    cgen.vkApiCall( \
-        api,
-        customPrefix="sResourceTracker->on_",
-        customParameters=custom_encoder_args(api) + \
-                [p.paramName for p in api.parameters[:-1]])
-    emit_unlock(cgen)
-    emit_return(typeInfo, api, cgen)
-
-def emit_only_resource_event(typeInfo, api, cgen):
-    cgen.stmt("(void)doLock");
-    input_result = None
-    retExpr = api.getRetVarExpr()
-
-    if retExpr:
-        retType = api.getRetTypeExpr()
-        input_result = SUCCESS_RET_TYPES[retType]
-        cgen.stmt("%s %s = (%s)0" % (retType, retExpr, retType))
-
-    cgen.stmt(
-        (("%s = " % retExpr) if retExpr else "") +
-        make_event_handler_call(
-            "sResourceTracker",
-            api,
-            ENCODER_THIS_PARAM,
-            input_result, cgen))
-
-    if retExpr:
-        emit_return(typeInfo, api, cgen)
-
-def emit_with_custom_unwrap(custom):
-    def call(typeInfo, api, cgen):
-        emit_lock(cgen)
-        emit_parameter_encode_preamble_write(typeInfo, api, cgen)
-        emit_parameter_encode_copy_unwrap_count(
-            typeInfo, api, cgen, customUnwrap=custom)
-        emit_parameter_encode_write_packet_info(typeInfo, api, cgen)
-        emit_parameter_encode_do_parameter_write(typeInfo, api, cgen)
-        emit_parameter_encode_read(typeInfo, api, cgen)
-        emit_return_unmarshal(typeInfo, api, cgen)
-        emit_pool_free(cgen)
-        emit_unlock(cgen)
-        emit_return(typeInfo, api, cgen)
-    return call
-
-def encode_vkFlushMappedMemoryRanges(typeInfo, api, cgen):
-    emit_lock(cgen)
-    emit_parameter_encode_preamble_write(typeInfo, api, cgen)
-    emit_parameter_encode_copy_unwrap_count(typeInfo, api, cgen)
-
-    def emit_flush_ranges(streamVar):
-        cgen.beginIf("!sResourceTracker->usingDirectMapping()")
-        cgen.beginFor("uint32_t i = 0", "i < memoryRangeCount", "++i")
-        cgen.stmt("auto range = pMemoryRanges[i]")
-        cgen.stmt("auto memory = pMemoryRanges[i].memory")
-        cgen.stmt("auto size = pMemoryRanges[i].size")
-        cgen.stmt("auto offset = pMemoryRanges[i].offset")
-        cgen.stmt("uint64_t streamSize = 0")
-        cgen.stmt("if (!memory) { %s->write(&streamSize, sizeof(uint64_t)); continue; }" % streamVar)
-        cgen.stmt("auto hostPtr = sResourceTracker->getMappedPointer(memory)")
-        cgen.stmt("auto actualSize = size == VK_WHOLE_SIZE ? sResourceTracker->getMappedSize(memory) : size")
-        cgen.stmt("if (!hostPtr) { %s->write(&streamSize, sizeof(uint64_t)); continue; }" % streamVar)
-        cgen.stmt("streamSize = actualSize")
-        cgen.stmt("%s->write(&streamSize, sizeof(uint64_t))" % streamVar)
-        cgen.stmt("uint8_t* targetRange = hostPtr + offset")
-        cgen.stmt("%s->write(targetRange, actualSize)" % streamVar)
-        cgen.endFor()
-        cgen.endIf()
-
-    emit_parameter_encode_write_packet_info(typeInfo, api, cgen)
-    emit_parameter_encode_do_parameter_write(typeInfo, api, cgen)
-
-    emit_flush_ranges(STREAM)
-
-    emit_parameter_encode_read(typeInfo, api, cgen)
-    emit_return_unmarshal(typeInfo, api, cgen)
-    emit_pool_free(cgen)
-    emit_unlock(cgen)
-    emit_return(typeInfo, api, cgen)
-
-def encode_vkInvalidateMappedMemoryRanges(typeInfo, api, cgen):
-    emit_lock(cgen)
-    emit_parameter_encode_preamble_write(typeInfo, api, cgen)
-    emit_parameter_encode_copy_unwrap_count(typeInfo, api, cgen)
-    emit_parameter_encode_write_packet_info(typeInfo, api, cgen)
-    emit_parameter_encode_do_parameter_write(typeInfo, api, cgen)
-    emit_parameter_encode_read(typeInfo, api, cgen)
-    emit_return_unmarshal(typeInfo, api, cgen)
-
-    def emit_invalidate_ranges(streamVar):
-        cgen.beginIf("!sResourceTracker->usingDirectMapping()")
-        cgen.beginFor("uint32_t i = 0", "i < memoryRangeCount", "++i")
-        cgen.stmt("auto range = pMemoryRanges[i]")
-        cgen.stmt("auto memory = pMemoryRanges[i].memory")
-        cgen.stmt("auto size = pMemoryRanges[i].size")
-        cgen.stmt("auto offset = pMemoryRanges[i].offset")
-        cgen.stmt("uint64_t streamSize = 0")
-        cgen.stmt("if (!memory) { %s->read(&streamSize, sizeof(uint64_t)); continue; }" % streamVar)
-        cgen.stmt("auto hostPtr = sResourceTracker->getMappedPointer(memory)")
-        cgen.stmt("auto actualSize = size == VK_WHOLE_SIZE ? sResourceTracker->getMappedSize(memory) : size")
-        cgen.stmt("if (!hostPtr) { %s->read(&streamSize, sizeof(uint64_t)); continue; }" % streamVar)
-        cgen.stmt("streamSize = actualSize")
-        cgen.stmt("%s->read(&streamSize, sizeof(uint64_t))" % streamVar)
-        cgen.stmt("uint8_t* targetRange = hostPtr + offset")
-        cgen.stmt("%s->read(targetRange, actualSize)" % streamVar)
-        cgen.endFor()
-        cgen.endIf()
-
-    emit_invalidate_ranges(STREAM)
-    emit_pool_free(cgen)
-    emit_unlock(cgen)
-    emit_return(typeInfo, api, cgen)
-
-def emit_manual_inline(typeInfo, api, cgen):
-    cgen.line("#include \"%s_encode_impl.cpp.inl\"" % api.name)
-
-def unwrap_vkCreateImage_pCreateInfo():
-    def mapOp(cgen, orig, local):
-        cgen.stmt("sResourceTracker->unwrap_vkCreateImage_pCreateInfo(%s, %s)" %
-                  (orig.paramName, local.paramName))
-    return { "pCreateInfo" : { "mapOp" : mapOp } }
-
-def unwrap_vkBindImageMemory2_pBindInfos():
-    def mapOp(cgen, orig, local):
-        cgen.stmt("sResourceTracker->unwrap_VkBindImageMemory2_pBindInfos(bindInfoCount, %s, %s)" %
-                  (orig.paramName, local.paramName))
-    return { "pBindInfos" : { "mapOp" : mapOp } }
-
-def unwrap_vkAcquireImageANDROID_nativeFenceFd():
-    def mapOp(cgen, orig, local):
-        cgen.stmt("sResourceTracker->unwrap_vkAcquireImageANDROID_nativeFenceFd(%s, &%s)" %
-                  (orig.paramName, local.paramName))
-    return { "nativeFenceFd" : { "mapOp" : mapOp } }
-
-custom_encodes = {
-    "vkMapMemory" : emit_only_resource_event,
-    "vkUnmapMemory" : emit_only_resource_event,
-    "vkFlushMappedMemoryRanges" : encode_vkFlushMappedMemoryRanges,
-    "vkInvalidateMappedMemoryRanges" : encode_vkInvalidateMappedMemoryRanges,
-    "vkCreateImage" : emit_with_custom_unwrap(unwrap_vkCreateImage_pCreateInfo()),
-    "vkCreateImageWithRequirementsGOOGLE" : emit_with_custom_unwrap(unwrap_vkCreateImage_pCreateInfo()),
-    "vkBindImageMemory2": emit_with_custom_unwrap(unwrap_vkBindImageMemory2_pBindInfos()),
-    "vkAcquireImageANDROID" : emit_with_custom_unwrap(unwrap_vkAcquireImageANDROID_nativeFenceFd()),
-    "vkQueueFlushCommandsGOOGLE" : emit_manual_inline,
-}
-
-class VulkanEncoder(VulkanWrapperGenerator):
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.typeInfo = typeInfo
-
-        self.cgenHeader = CodeGen()
-        self.cgenHeader.incrIndent()
-
-        self.cgenImpl = CodeGen()
-
-    def onBegin(self,):
-        self.module.appendHeader(encoder_decl_preamble)
-        self.module.appendImpl(encoder_impl_preamble)
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-        api = copy.deepcopy(self.typeInfo.apis[name])
-        api.parameters.append(makeVulkanTypeSimple(False, "uint32_t", 0, "doLock"))
-
-        self.cgenHeader.stmt(self.cgenHeader.makeFuncProto(api))
-        apiImpl = api.withModifiedName("VkEncoder::" + api.name)
-
-        self.module.appendHeader(self.cgenHeader.swapCode())
-
-        def emit_function_impl(cgen):
-            if api.name in custom_encodes.keys():
-                custom_encodes[api.name](self.typeInfo, api, cgen)
-            else:
-                emit_default_encoding(self.typeInfo, api, cgen)
-
-        self.module.appendImpl(self.cgenImpl.makeFuncImpl(apiImpl, emit_function_impl))
-
-    def onEnd(self,):
-        self.module.appendHeader(encoder_decl_postamble)
-        self.cgenHeader.decrIndent()
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/extensionstructs.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/extensionstructs.py
deleted file mode 100644
index caa4ea1..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/extensionstructs.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM
-from .wrapperdefs import STRUCT_EXTENSION_PARAM_FOR_WRITE
-from .wrapperdefs import EXTENSION_SIZE_API_NAME
-from .wrapperdefs import EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME
-from .wrapperdefs import STRUCT_TYPE_API_NAME
-
-class VulkanExtensionStructs(VulkanWrapperGenerator):
-
-    def __init__(self, module, typeInfo, variant="host"):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.codegen = CodeGen()
-
-        self.variant = variant
-
-        self.structTypeRetType = \
-            makeVulkanTypeSimple(False, "uint32_t", 0)
-
-        self.rootTypeVarName = "rootType"
-        self.rootTypeParam = \
-            makeVulkanTypeSimple(False, "VkStructureType",
-                                 0, self.rootTypeVarName)
-        self.structTypePrototype = \
-            VulkanAPI(STRUCT_TYPE_API_NAME,
-                      self.structTypeRetType,
-                      [STRUCT_EXTENSION_PARAM])
-
-        self.extensionStructSizeRetType = \
-            makeVulkanTypeSimple(False, "size_t", 0)
-        self.extensionStructSizePrototype = \
-            VulkanAPI(EXTENSION_SIZE_API_NAME,
-                      self.extensionStructSizeRetType,
-                      [self.rootTypeParam, STRUCT_EXTENSION_PARAM])
-
-        self.streamFeaturesType = makeVulkanTypeSimple(False, "uint32_t", 0, "streamFeatures")
-
-        self.extensionStructSizeWithStreamFeaturesPrototype = \
-            VulkanAPI(EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME,
-                      self.extensionStructSizeRetType,
-                      [self.streamFeaturesType, self.rootTypeParam, STRUCT_EXTENSION_PARAM])
-    def onBegin(self,):
-        VulkanWrapperGenerator.onBegin(self)
-        self.module.appendHeader(self.codegen.makeFuncDecl(
-            self.structTypePrototype))
-        self.module.appendHeader(self.codegen.makeFuncDecl(
-            self.extensionStructSizePrototype))
-        self.module.appendHeader(self.codegen.makeFuncDecl(
-            self.extensionStructSizeWithStreamFeaturesPrototype))
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-    def onEnd(self,):
-        VulkanWrapperGenerator.onEnd(self)
-
-        def castAsStruct(varName, typeName, const=True):
-            return "reinterpret_cast<%s%s*>(%s)" % \
-                   ("const " if const else "", typeName, varName)
-
-        def structTypeImpl(cgen):
-            cgen.stmt(
-                "const uint32_t asStructType = *(%s)" %
-                (castAsStruct(STRUCT_EXTENSION_PARAM.paramName, "uint32_t")))
-            cgen.stmt("return asStructType")
-
-        self.module.appendImpl(
-            self.codegen.makeFuncImpl(
-                self.structTypePrototype, structTypeImpl))
-
-        def forEachExtensionReturnSize(ext, _, cgen):
-            cgen.stmt("return sizeof(%s)" % ext.name)
-
-        def forEachExtensionReturnSizeProtectedByFeature(ext, _, cgen):
-            streamFeature = ext.getProtectStreamFeature()
-            if streamFeature is None:
-                cgen.stmt("return sizeof(%s)" % ext.name)
-                return
-            cgen.beginIf("%s & %s" % ("streamFeatures", streamFeature))
-            cgen.stmt("return sizeof(%s)" % ext.name)
-            cgen.endIf()
-            cgen.beginElse()
-            cgen.stmt("return 0")
-            cgen.endIf()
-
-        def defaultAbortEmit(cgen):
-            # The 'structType' name and return behavior are defined in
-            # emitForEachStructExtension and not accessible here. Consequently,
-            # this is a copy-paste from there and must be updated accordingly.
-            # NOTE: No need for %% if no substitution is made.
-            cgen.stmt("fprintf(stderr, \"Unhandled Vulkan structure type %s [%d], aborting.\\n\", string_VkStructureType(VkStructureType(structType)), structType)")
-            cgen.stmt("GFXSTREAM_ABORT(::emugl::FatalError(::emugl::ABORT_REASON_OTHER))")
-            cgen.stmt("return (%s)0" % self.extensionStructSizeRetType.typeName)
-
-        self.module.appendImpl(
-            self.codegen.makeFuncImpl(
-                self.extensionStructSizePrototype,
-                lambda cgen: self.emitForEachStructExtension(
-                    cgen,
-                    self.extensionStructSizeRetType,
-                    STRUCT_EXTENSION_PARAM,
-                    forEachExtensionReturnSize, autoBreak=False,
-                    defaultEmit=(defaultAbortEmit if self.variant == "host" else None),
-                    rootTypeVar=self.rootTypeParam)))
-
-        self.module.appendImpl(
-            self.codegen.makeFuncImpl(
-                self.extensionStructSizeWithStreamFeaturesPrototype,
-                lambda cgen: self.emitForEachStructExtension(
-                    cgen,
-                    self.extensionStructSizeRetType,
-                    STRUCT_EXTENSION_PARAM,
-                    forEachExtensionReturnSizeProtectedByFeature, autoBreak=False,
-                    defaultEmit=(defaultAbortEmit if self.variant == "host" else None),
-                    rootTypeVar=self.rootTypeParam)))
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/frontend.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/frontend.py
deleted file mode 100644
index 2938a04..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/frontend.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import CodeGen, VulkanAPIWrapper
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-
-from .wrapperdefs import VulkanWrapperGenerator
-
-from .wrapperdefs import API_PREFIX_VALIDATE
-from .wrapperdefs import PARAMETERS_VALIDATE
-from .wrapperdefs import VOID_TYPE
-from .wrapperdefs import VALIDATE_RESULT_TYPE
-from .wrapperdefs import VALIDATE_VAR_NAME
-from .wrapperdefs import VALIDATE_GOOD_RESULT
-
-from .wrapperdefs import VULKAN_STREAM_TYPE
-from .wrapperdefs import VULKAN_STREAM_VAR_NAME
-
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_FRONTEND
-
-# Frontend
-class VulkanFrontend(VulkanWrapperGenerator):
-
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        def validateDefFunc(_codegen, _api):
-            # TODO
-            pass
-
-        self.validateWrapper = \
-            VulkanAPIWrapper(
-                API_PREFIX_VALIDATE,
-                PARAMETERS_VALIDATE,
-                VOID_TYPE,
-                validateDefFunc)
-
-        def frontendDefFunc(codegen, api):
-            retTypeName = api.retType.typeName
-
-            codegen.stmt(
-                "%s %s = %s" % (VALIDATE_RESULT_TYPE, VALIDATE_VAR_NAME,
-                                VALIDATE_GOOD_RESULT))
-            codegen.funcCall(None, API_PREFIX_VALIDATE + api.origName,
-                             ["&%s" % VALIDATE_VAR_NAME] + list(
-                                 map(lambda p: p.paramName, api.parameters)))
-
-            codegen.beginIf(
-                "%s != %s" % (VALIDATE_VAR_NAME, VALIDATE_GOOD_RESULT))
-            if retTypeName == VALIDATE_RESULT_TYPE:
-                codegen.stmt("return %s" % VALIDATE_VAR_NAME)
-            elif retTypeName != "void":
-                codegen.stmt("return (%s)0" % retTypeName)
-            else:
-                codegen.stmt("return")
-            codegen.endIf()
-
-            codegen.stmt("// VULKAN_STREAM_GET()")
-            codegen.stmt("%s* %s = nullptr" % (VULKAN_STREAM_TYPE,
-                                               VULKAN_STREAM_VAR_NAME))
-
-            retLhs = None
-            if retTypeName != "void":
-                retLhs = retTypeName + " res"
-
-            codegen.funcCall(retLhs, API_PREFIX_MARSHAL + api.origName,
-                             [VULKAN_STREAM_VAR_NAME] + list(
-                                 map(lambda p: p.paramName, api.parameters)))
-
-            if retTypeName != "void":
-                codegen.stmt("return res")
-
-        self.frontendWrapper = \
-            VulkanAPIWrapper(
-                API_PREFIX_FRONTEND,
-                [],
-                None,
-                frontendDefFunc)
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-        self.module.appendHeader(
-            self.frontendWrapper.makeDecl(self.typeInfo, name))
-        self.module.appendImpl(
-            self.validateWrapper.makeDefinition(
-                self.typeInfo, name, isStatic=True))
-        self.module.appendImpl(
-            self.frontendWrapper.makeDefinition(self.typeInfo, name))
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/functable.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/functable.py
deleted file mode 100644
index a14bc92..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/functable.py
+++ /dev/null
@@ -1,570 +0,0 @@
-from .common.codegen import CodeGen, VulkanWrapperGenerator
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-from .common.vulkantypes import EXCLUDED_APIS
-from .common.vulkantypes import HANDLE_TYPES
-
-import copy
-import re
-
-RESOURCE_TRACKER_ENTRIES = [
-    "vkEnumerateInstanceExtensionProperties",
-    "vkEnumerateDeviceExtensionProperties",
-    "vkEnumeratePhysicalDevices",
-    "vkAllocateMemory",
-    "vkFreeMemory",
-    "vkCreateImage",
-    "vkDestroyImage",
-    "vkGetImageMemoryRequirements",
-    "vkGetImageMemoryRequirements2",
-    "vkGetImageMemoryRequirements2KHR",
-    "vkGetImageSubresourceLayout",
-    "vkBindImageMemory",
-    "vkBindImageMemory2",
-    "vkBindImageMemory2KHR",
-    "vkCreateBuffer",
-    "vkDestroyBuffer",
-    "vkGetBufferMemoryRequirements",
-    "vkGetBufferMemoryRequirements2",
-    "vkGetBufferMemoryRequirements2KHR",
-    "vkBindBufferMemory",
-    "vkBindBufferMemory2",
-    "vkBindBufferMemory2KHR",
-    "vkCreateSemaphore",
-    "vkDestroySemaphore",
-    "vkQueueSubmit",
-    "vkQueueSubmit2",
-    "vkQueueWaitIdle",
-    "vkImportSemaphoreFdKHR",
-    "vkGetSemaphoreFdKHR",
-    # Warning: These need to be defined in vk.xml (currently no-op) {
-    "vkGetMemoryFuchsiaHandleKHR",
-    "vkGetMemoryFuchsiaHandlePropertiesKHR",
-    "vkGetSemaphoreFuchsiaHandleKHR",
-    "vkImportSemaphoreFuchsiaHandleKHR",
-    # } end Warning: These need to be defined in vk.xml (currently no-op)
-    "vkGetAndroidHardwareBufferPropertiesANDROID",
-    "vkGetMemoryAndroidHardwareBufferANDROID",
-    "vkGetMemoryFdKHR",
-    "vkGetMemoryFdPropertiesKHR",
-    "vkCreateSamplerYcbcrConversion",
-    "vkDestroySamplerYcbcrConversion",
-    "vkCreateSamplerYcbcrConversionKHR",
-    "vkDestroySamplerYcbcrConversionKHR",
-    "vkUpdateDescriptorSetWithTemplate",
-    "vkUpdateDescriptorSetWithTemplateKHR",
-    "vkGetPhysicalDeviceImageFormatProperties2",
-    "vkGetPhysicalDeviceImageFormatProperties2KHR",
-    "vkBeginCommandBuffer",
-    "vkEndCommandBuffer",
-    "vkResetCommandBuffer",
-    "vkCreateImageView",
-    "vkCreateSampler",
-    "vkGetPhysicalDeviceExternalFenceProperties",
-    "vkGetPhysicalDeviceExternalFencePropertiesKHR",
-    "vkGetPhysicalDeviceExternalBufferProperties",
-    "vkGetPhysicalDeviceExternalBufferPropertiesKHR",
-    "vkCreateFence",
-    "vkResetFences",
-    "vkImportFenceFdKHR",
-    "vkGetFenceFdKHR",
-    "vkGetFenceStatus",
-    "vkWaitForFences",
-    "vkCreateDescriptorPool",
-    "vkDestroyDescriptorPool",
-    "vkResetDescriptorPool",
-    "vkAllocateDescriptorSets",
-    "vkFreeDescriptorSets",
-    "vkCreateDescriptorSetLayout",
-    "vkCmdExecuteCommands",
-    "vkCmdBindDescriptorSets",
-    "vkDestroyDescriptorSetLayout",
-    "vkAllocateCommandBuffers",
-    "vkQueueSignalReleaseImageANDROID",
-    "vkCmdPipelineBarrier",
-    "vkCreateGraphicsPipelines",
-    # Fuchsia
-    "vkGetMemoryZirconHandleFUCHSIA",
-    "vkGetMemoryZirconHandlePropertiesFUCHSIA",
-    "vkGetSemaphoreZirconHandleFUCHSIA",
-    "vkImportSemaphoreZirconHandleFUCHSIA",
-    "vkCreateBufferCollectionFUCHSIA",
-    "vkDestroyBufferCollectionFUCHSIA",
-    "vkSetBufferCollectionImageConstraintsFUCHSIA",
-    "vkSetBufferCollectionBufferConstraintsFUCHSIA",
-    "vkGetBufferCollectionPropertiesFUCHSIA",
-]
-
-SUCCESS_VAL = {
-    "VkResult" : ["VK_SUCCESS"],
-}
-
-HANDWRITTEN_ENTRY_POINTS = [
-    # Instance/device/physical-device special-handling, dispatch tables, etc..
-    "vkCreateInstance",
-    "vkDestroyInstance",
-    "vkGetInstanceProcAddr",
-    "vkEnumerateInstanceVersion",
-    "vkEnumerateInstanceLayerProperties",
-    "vkEnumerateInstanceExtensionProperties",
-    "vkEnumerateDeviceExtensionProperties",
-    "vkGetDeviceProcAddr",
-    "vkEnumeratePhysicalDevices",
-    "vkEnumeratePhysicalDeviceGroups",
-    "vkCreateDevice",
-    "vkDestroyDevice",
-    # Manual alloc/free + vk_*_init/free() call w/ special params
-    "vkGetDeviceQueue",
-    "vkGetDeviceQueue2",
-    # Command pool/buffer handling
-    "vkCreateCommandPool",
-    "vkDestroyCommandPool",
-    "vkAllocateCommandBuffers",
-    "vkResetCommandPool",
-    "vkFreeCommandBuffers",
-    "vkResetCommandPool",
-    # Transform feedback
-    "vkCmdBeginTransformFeedbackEXT",
-    # Special cases to handle struct translations in the pNext chain
-    # TODO: Make a codegen module (use deepcopy as reference) to make this more robust
-    "vkAllocateMemory",
-    "vkUpdateDescriptorSets",
-]
-
-# Handles that need to be translated to/from their corresponding gfxstream object types
-HANDLES_TRANSLATE = {
-    "VkInstance",
-    "VkPhysicalDevice",
-    "VkDevice",
-    "VkQueue",
-    "VkCommandPool",
-    "VkCommandBuffer",
-    "VkFence",
-    "VkSemaphore",
-    # TODO: Still need this translation to avoid descriptorSets crash
-    "VkBuffer",
-}
-
-# Types that have a corresponding method for transforming
-# an input list to its internal counterpart
-TYPES_TRANSFORM_LIST_METHOD = {
-    "VkFence",
-    "VkSemaphore",
-    "VkSemaphoreSubmitInfo",
-}
-
-def is_cmdbuf_dispatch(api):
-    return "VkCommandBuffer" == api.parameters[0].typeName
-
-def is_queue_dispatch(api):
-    return "VkQueue" == api.parameters[0].typeName
-
-def getCreateParam(api):
-    for param in api.parameters:
-        if param.isCreatedBy(api):
-            return param
-    return None
-
-def getDestroyParam(api):
-    for param in api.parameters:
-        if param.isDestroyedBy(api):
-            return param
-    return None
-
-# i.e. VkQueryPool --> vk_query_pool
-def typeNameToMesaType(typeName):
-    vkTypeNameRegex = "(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])"
-    words = re.split(vkTypeNameRegex, typeName)
-    outputType = "vk"
-    for word in words[1:]:
-        outputType += "_"
-        outputType += word.lower()
-    return outputType
-
-def typeNameToBaseName(typeName):
-    return typeNameToMesaType(typeName)[len("vk_"):]
-
-def paramNameToObjectName(paramName):
-    return "gfxstream_%s" % paramName
-
-def typeNameToVkObjectType(typeName):
-    return "VK_OBJECT_TYPE_%s" % typeNameToBaseName(typeName).upper()
-
-def typeNameToObjectType(typeName):
-    return "gfxstream_vk_%s" % typeNameToBaseName(typeName)
-
-def transformListFuncName(typeName):
-    return "transform%sList" % (typeName)
-
-def isAllocatorParam(param):
-    ALLOCATOR_TYPE_NAME = "VkAllocationCallbacks"
-    return (param.pointerIndirectionLevels == 1
-            and param.isConst
-            and param.typeName == ALLOCATOR_TYPE_NAME)
-
-def isArrayParam(param):
-    return (1 == param.pointerIndirectionLevels
-            and param.isConst
-            and "len" in param.attribs)
-
-INTERNAL_OBJECT_NAME = "internal_object"
-
-class VulkanFuncTable(VulkanWrapperGenerator):
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-        self.typeInfo = typeInfo
-        self.cgen = CodeGen()
-        self.entries = []
-        self.entryFeatures = []
-        self.cmdToFeatureType = {}
-        self.feature = None
-        self.featureType = None
-
-    def onBegin(self,):
-        cgen = self.cgen
-        self.module.appendImpl(cgen.swapCode())
-        pass
-
-    def onBeginFeature(self, featureName, featureType):
-        self.feature = featureName
-        self.featureType = featureType
-
-    def onEndFeature(self):
-        self.feature = None
-        self.featureType = None
-
-    def onFeatureNewCmd(self, name):
-        self.cmdToFeatureType[name] = self.featureType
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        typeInfo = self.typeInfo
-        cgen = self.cgen
-        api = typeInfo.apis[name]
-        self.entries.append(api)
-        self.entryFeatures.append(self.feature)
-        self.loopVars = ["i", "j", "k", "l", "m", "n"]
-        self.loopVarIndex = 0
-
-        def getNextLoopVar():
-            if self.loopVarIndex >= len(self.loopVars):
-                raise
-            loopVar = self.loopVars[self.loopVarIndex]
-            self.loopVarIndex += 1
-            return loopVar
-
-        def isCompoundType(typeName):
-            return typeInfo.isCompoundType(typeName)
-
-        def handleTranslationRequired(typeName):
-            return typeName in HANDLE_TYPES and typeName in HANDLES_TRANSLATE
-
-        def translationRequired(typeName):
-            if isCompoundType(typeName):
-                struct = typeInfo.structs[typeName]
-                for member in struct.members:
-                    if translationRequired(member.typeName):
-                        return True
-                return False
-            else:
-                return handleTranslationRequired(typeName)
-
-        def genDestroyGfxstreamObjects():
-            destroyParam = getDestroyParam(api)
-            if not destroyParam:
-                return
-            if not translationRequired(destroyParam.typeName):
-                return
-            objectName = paramNameToObjectName(destroyParam.paramName)
-            allocatorParam = "NULL"
-            for p in api.parameters:
-                if isAllocatorParam(p):
-                    allocatorParam = p.paramName
-            deviceParam = api.parameters[0]
-            if "VkDevice" != deviceParam.typeName:
-                print("ERROR: Unhandled non-VkDevice parameters[0]: %s (for API: %s)" %(deviceParam.typeName, api.name))
-                raise
-            # call vk_object_free() directly
-            mesaObjectDestroy = "(void *)%s" % objectName
-            cgen.funcCall(
-                None,
-                "vk_object_free",
-                ["&%s->vk" % paramNameToObjectName(deviceParam.paramName), allocatorParam, mesaObjectDestroy]
-            )
-
-        def genMesaObjectAlloc(allocCallLhs):
-            deviceParam = api.parameters[0]
-            if "VkDevice" != deviceParam.typeName:
-                print("ERROR: Unhandled non-VkDevice parameters[0]: %s (for API: %s)" %(deviceParam.typeName, api.name))
-                raise
-            allocatorParam = "NULL"
-            for p in api.parameters:
-                if isAllocatorParam(p):
-                    allocatorParam = p.paramName
-            createParam = getCreateParam(api)
-            objectType = typeNameToObjectType(createParam.typeName)
-            # Call vk_object_zalloc directly
-            cgen.funcCall(
-                allocCallLhs,
-                "(%s *)vk_object_zalloc" % objectType,
-                ["&%s->vk" % paramNameToObjectName(deviceParam.paramName), allocatorParam, ("sizeof(%s)" % objectType), typeNameToVkObjectType(createParam.typeName)]
-            )
-
-        # Alloc/create gfxstream_vk_* object
-        def genCreateGfxstreamObjects():
-            createParam = getCreateParam(api)
-            if not createParam:
-                return False
-            if not handleTranslationRequired(createParam.typeName):
-                return False
-            objectType = "struct %s" % typeNameToObjectType(createParam.typeName)
-            callLhs = "%s *%s" % (objectType, paramNameToObjectName(createParam.paramName))
-            genMesaObjectAlloc(callLhs)
-
-            retVar = api.getRetVarExpr()
-            if retVar:
-                retTypeName = api.getRetTypeExpr()
-                # ex: vkCreateBuffer_VkResult_return = gfxstream_buffer ? VK_SUCCESS : VK_ERROR_OUT_OF_HOST_MEMORY;
-                cgen.stmt("%s = %s ? %s : %s" %
-                          (retVar, paramNameToObjectName(createParam.paramName), SUCCESS_VAL[retTypeName][0], "VK_ERROR_OUT_OF_HOST_MEMORY"))
-            return True
-
-        def genVkFromHandle(param, fromName):
-            objectName = paramNameToObjectName(param.paramName)
-            cgen.stmt("VK_FROM_HANDLE(%s, %s, %s)" %
-                      (typeNameToObjectType(param.typeName), objectName, fromName))
-            return objectName
-
-        def genGetGfxstreamHandles():
-            createParam = getCreateParam(api)
-            for param in api.parameters:
-                if not handleTranslationRequired(param.typeName):
-                    continue
-                elif isArrayParam(param):
-                    continue
-                elif param != createParam:
-                    if param.pointerIndirectionLevels > 0:
-                        print("ERROR: Unhandled pointerIndirectionLevels > 1 for API %s (param %s)" % (api.name, param.paramName))
-                        raise
-                    genVkFromHandle(param, param.paramName)
-
-        def internalNestedParamName(param):
-            parentName = ""
-            if param.parent:
-                parentName = "_%s" % param.parent.typeName
-            return "internal%s_%s" % (parentName, param.paramName)
-
-        def genInternalArrayDeclarations(param, countParamName, nestLevel=0):
-            internalArray = None
-            if 0 == nestLevel:
-                internalArray = "internal_%s" % param.paramName
-                cgen.stmt("std::vector<%s> %s(%s)" % (param.typeName, internalArray, countParamName))
-            elif 1 == nestLevel or 2 == nestLevel:
-                internalArray = internalNestedParamName(param)
-                if isArrayParam(param):
-                    cgen.stmt("std::vector<std::vector<%s>> %s" % (param.typeName, internalArray))
-                else:
-                    cgen.stmt("std::vector<%s> %s" % (param.typeName, internalArray))
-            else:
-                print("ERROR: nestLevel > 2 not verified.")
-                raise
-            if isCompoundType(param.typeName):
-                for member in typeInfo.structs[param.typeName].members:
-                    if translationRequired(member.typeName):
-                        if handleTranslationRequired(member.typeName) and not isArrayParam(member):
-                            # No declarations for non-array handleType
-                            continue
-                        genInternalArrayDeclarations(member, countParamName, nestLevel + 1)
-            return internalArray
-
-        def genInternalCompoundType(param, outName, inName, currLoopVar):
-            nextLoopVar = None
-            cgen.stmt("%s = %s" % (outName, inName))
-            for member in typeInfo.structs[param.typeName].members:
-                if not translationRequired(member.typeName):
-                    continue
-                cgen.line("/* %s::%s */" % (param.typeName, member.paramName))
-                nestedOutName = ("%s[%s]" % (internalNestedParamName(member), currLoopVar))
-                if isArrayParam(member):
-                    countParamName = "%s.%s" % (outName, member.attribs["len"])
-                    inArrayName = "%s.%s" % (outName, member.paramName)
-                    cgen.stmt("%s.push_back(std::vector<%s>())" % (internalNestedParamName(member), member.typeName))
-                    if member.typeName in TYPES_TRANSFORM_LIST_METHOD:
-                        # Use the corresponding transformList call
-                        cgen.funcCall(nestedOutName, transformListFuncName(member.typeName), [inArrayName, countParamName])
-                        cgen.stmt("%s = %s.data()" % (inArrayName, nestedOutName))
-                        cgen.stmt("%s = %s.size()" % (countParamName, nestedOutName))
-                    else:
-                        # Standard translation
-                        cgen.stmt("%s.resize(%s)" % (nestedOutName, countParamName))
-                        if not nextLoopVar:
-                            nextLoopVar = getNextLoopVar()
-                        internalArray = genInternalArray(member, countParamName, nestedOutName, inArrayName, nextLoopVar)
-                        cgen.stmt("%s = %s" %(inArrayName, internalArray))
-                elif isCompoundType(member.typeName):
-                    memberFullName = "%s.%s" % (outName, member.paramName)
-                    if 1 == member.pointerIndirectionLevels:
-                        cgen.beginIf(memberFullName)
-                        inParamName = "%s[0]" % memberFullName
-                        genInternalCompoundType(member, nestedOutName, inParamName, currLoopVar)
-                        cgen.stmt("%s.%s = &%s" % (outName, member.paramName,  nestedOutName))
-                    else:
-                        cgen.beginBlock()
-                        genInternalCompoundType(member, nestedOutName, memberFullName, currLoopVar)
-                        cgen.stmt("%s.%s = %s" % (outName, member.paramName,  nestedOutName))
-                    cgen.endBlock()
-                else:
-                    # Replace member with internal object
-                    replaceName = "%s.%s" % (outName, member.paramName)
-                    if member.isOptional:
-                        cgen.beginIf(replaceName)
-                    gfxstreamObject = genVkFromHandle(member, replaceName)
-                    cgen.stmt("%s = %s->%s" % (replaceName, gfxstreamObject, INTERNAL_OBJECT_NAME))
-                    if member.isOptional:
-                        cgen.endIf()
-
-        def genInternalArray(param, countParamName, outArrayName, inArrayName, loopVar):
-            if param.typeName in TYPES_TRANSFORM_LIST_METHOD:
-                # Use the corresponding transformList call
-                cgen.funcCall(outArrayName, transformListFuncName(param.typeName), [inArrayName, countParamName])
-                cgen.stmt("%s = %s.data()" % (inArrayName, outArrayName))
-                cgen.stmt("%s = %s.size()" % (countParamName, outArrayName))
-            else:
-                cgen.beginFor("uint32_t %s = 0" % loopVar, "%s < %s" % (loopVar, countParamName), "++%s" % loopVar)
-                if param.isOptional:
-                    cgen.beginIf(inArrayName)
-                if isCompoundType(param.typeName):
-                    genInternalCompoundType(param, ("%s[%s]" % (outArrayName, loopVar)), "%s[%s]" % (inArrayName, loopVar), loopVar)
-                else:
-                    gfxstreamObject = genVkFromHandle(param, "%s[%s]" % (inArrayName, loopVar))
-                    cgen.stmt("%s[%s] = %s->%s" % (outArrayName, loopVar, gfxstreamObject, INTERNAL_OBJECT_NAME))
-                if param.isOptional:
-                    cgen.endIf()
-                cgen.endFor()
-            return "%s.data()" % outArrayName
-
-        # Translate params into params needed for gfxstream-internal
-        #  encoder/resource-tracker calls
-        def getEncoderOrResourceTrackerParams():
-            createParam = getCreateParam(api)
-            outParams = copy.deepcopy(api.parameters)
-            nextLoopVar = getNextLoopVar()
-            for param in outParams:
-                if not translationRequired(param.typeName):
-                    continue
-                elif isArrayParam(param) or isCompoundType(param.typeName):
-                    if param.possiblyOutput():
-                        print("ERROR: Unhandled CompoundType / Array output for API %s (param %s)" % (api.name, param.paramName))
-                        raise
-                    if 1 != param.pointerIndirectionLevels or not param.isConst:
-                        print("ERROR: Compound type / array input is not 'const <type>*' (API: %s, paramName: %s)" % (api.name, param.paramName))
-                        raise
-                    countParamName = "1"
-                    if "len" in param.attribs:
-                        countParamName = param.attribs["len"]
-                    internalArrayName = genInternalArrayDeclarations(param, countParamName)
-                    param.paramName = genInternalArray(param, countParamName, internalArrayName, param.paramName, nextLoopVar)
-                elif 0 == param.pointerIndirectionLevels:
-                    if param.isOptional:
-                        param.paramName = ("%s ? %s->%s : VK_NULL_HANDLE" % (paramNameToObjectName(param.paramName), paramNameToObjectName(param.paramName), INTERNAL_OBJECT_NAME))
-                    else:
-                        param.paramName = ("%s->%s" % (paramNameToObjectName(param.paramName), INTERNAL_OBJECT_NAME))
-                elif createParam and param.paramName == createParam.paramName:
-                    param.paramName = ("&%s->%s" % (paramNameToObjectName(param.paramName), INTERNAL_OBJECT_NAME))
-                else:
-                    print("ERROR: Unknown handling for param: %s (API: %s)" % (param, api.name))
-                    raise
-            return outParams
-
-        def genEncoderOrResourceTrackerCall(declareResources=True):
-            if is_cmdbuf_dispatch(api):
-                cgen.stmt("auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(%s->%s)" % (paramNameToObjectName(api.parameters[0].paramName), INTERNAL_OBJECT_NAME))
-            elif is_queue_dispatch(api):
-                cgen.stmt("auto vkEnc = gfxstream::vk::ResourceTracker::getQueueEncoder(%s->%s)" % (paramNameToObjectName(api.parameters[0].paramName), INTERNAL_OBJECT_NAME))
-            else:
-                cgen.stmt("auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder()")
-            callLhs = None
-            retTypeName = api.getRetTypeExpr()
-            if retTypeName != "void":
-                callLhs = api.getRetVarExpr()
-
-            # Get parameter list modded for gfxstream-internal call
-            parameters = getEncoderOrResourceTrackerParams()
-            if name in RESOURCE_TRACKER_ENTRIES:
-                if declareResources:
-                    cgen.stmt("auto resources = gfxstream::vk::ResourceTracker::get()")
-                cgen.funcCall(
-                    callLhs, "resources->" + "on_" + api.name,
-                    ["vkEnc"] + SUCCESS_VAL.get(retTypeName, []) + \
-                    [p.paramName for p in parameters])
-            else:
-                cgen.funcCall(
-                    callLhs, "vkEnc->" + api.name, [p.paramName for p in parameters] + ["true /* do lock */"])
-
-        def genReturnExpression():
-            retTypeName = api.getRetTypeExpr()
-            # Set the createParam output, if applicable
-            createParam = getCreateParam(api)
-            if createParam and handleTranslationRequired(createParam.typeName):
-                if 1 != createParam.pointerIndirectionLevels:
-                    print("ERROR: Unhandled pointerIndirectionLevels != 1 in return for API %s (createParam %s)" % api.name, createParam.paramName)
-                    raise
-                # ex: *pBuffer = gfxstream_vk_buffer_to_handle(gfxstream_buffer)
-                cgen.funcCall(
-                    "*%s" % createParam.paramName,
-                    "%s_to_handle" % typeNameToObjectType(createParam.typeName),
-                    [paramNameToObjectName(createParam.paramName)]
-                )
-
-            if retTypeName != "void":
-                cgen.stmt("return %s" % api.getRetVarExpr())
-
-        def genGfxstreamEntry(declareResources=True):
-            cgen.stmt("MESA_TRACE_SCOPE(\"%s\")" % api.name)
-            # declare returnVar
-            retTypeName = api.getRetTypeExpr()
-            retVar = api.getRetVarExpr()
-            if retVar:
-                cgen.stmt("%s %s = (%s)0" % (retTypeName, retVar, retTypeName))
-            # Check non-null destroy param for free/destroy calls
-            destroyParam = getDestroyParam(api)
-            if destroyParam:
-                cgen.beginIf("VK_NULL_HANDLE == %s" % destroyParam.paramName)
-                if api.getRetTypeExpr() != "void":
-                    cgen.stmt("return %s" % api.getRetVarExpr())
-                else:
-                    cgen.stmt("return")
-                cgen.endIf()
-            # Translate handles
-            genGetGfxstreamHandles()
-            # Translation/creation of objects
-            createdObject = genCreateGfxstreamObjects()
-            # Make encoder/resource-tracker call
-            if retVar and createdObject:
-                cgen.beginIf("%s == %s" % (SUCCESS_VAL[retTypeName][0], retVar))
-            else:
-                cgen.beginBlock()
-            genEncoderOrResourceTrackerCall()
-            cgen.endBlock()
-            # Destroy gfxstream objects
-            genDestroyGfxstreamObjects()
-            # Set output / return variables
-            genReturnExpression()
-
-        api_entry = api.withModifiedName("gfxstream_vk_" + api.name[2:])
-        if api.name not in HANDWRITTEN_ENTRY_POINTS:
-            cgen.line(self.cgen.makeFuncProto(api_entry))
-            cgen.beginBlock()
-            genGfxstreamEntry()
-            cgen.endBlock()
-            self.module.appendImpl(cgen.swapCode())
-
-
-    def onEnd(self,):
-        pass
-
-    def isDeviceDispatch(self, api):
-        # TODO(230793667): improve the heuristic and just use "cmdToFeatureType"
-        return (len(api.parameters) > 0 and
-            "VkDevice" == api.parameters[0].typeName) or (
-            "VkCommandBuffer" == api.parameters[0].typeName and
-            self.cmdToFeatureType.get(api.name, "") == "device")
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/handlemap.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/handlemap.py
deleted file mode 100644
index 8ccc43c..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/handlemap.py
+++ /dev/null
@@ -1,252 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE
-
-class HandleMapCodegen(VulkanTypeIterator):
-    def __init__(self, cgen, inputVar, handlemapVarName, prefix, isHandleFunc):
-        self.cgen = cgen
-        self.inputVar = inputVar
-        self.prefix = prefix
-        self.handlemapVarName = handlemapVarName
-
-        def makeAccess(varName, asPtr = True):
-            return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
-
-        def makeLengthAccess(varName):
-            return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
-
-        def makeLengthAccessGuard(varName):
-            return lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName=varName)
-
-        self.exprAccessor = makeAccess(self.inputVar)
-        self.exprAccessorValue = makeAccess(self.inputVar, asPtr = False)
-        self.lenAccessor = makeLengthAccess(self.inputVar)
-        self.lenAccessorGuard = makeLengthAccessGuard(self.inputVar)
-
-        self.checked = False
-        self.isHandleFunc = isHandleFunc
-
-    def needSkip(self, vulkanType):
-        return False
-
-    def makeCastExpr(self, vulkanType):
-        return "(%s)" % (
-            self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
-    def asNonConstCast(self, access, vulkanType):
-        if vulkanType.staticArrExpr:
-            casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
-        elif vulkanType.accessibleAsPointer():
-            casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForNonConstAccess()), access)
-        else:
-            casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
-        return casted
-
-    def onCheck(self, vulkanType):
-        pass
-
-    def endCheck(self, vulkanType):
-        pass
-
-    def onCompoundType(self, vulkanType):
-
-        if self.needSkip(vulkanType):
-            self.cgen.line("// TODO: Unsupported : %s" %
-                           self.cgen.makeCTypeDecl(vulkanType))
-            return
-        access = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        isPtr = vulkanType.pointerIndirectionLevels > 0
-
-        if lenAccessGuard is not None:
-            self.cgen.beginIf(lenAccessGuard)
-
-        if isPtr:
-            self.cgen.beginIf(access)
-
-        if lenAccess is not None:
-
-            loopVar = "i"
-            access = "%s + %s" % (access, loopVar)
-            forInit = "uint32_t %s = 0" % loopVar
-            forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
-            forIncr = "++%s" % loopVar
-
-            self.cgen.beginFor(forInit, forCond, forIncr)
-            
-        accessCasted = self.asNonConstCast(access, vulkanType)
-        self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
-                           [self.handlemapVarName, accessCasted])
-
-        if lenAccess is not None:
-            self.cgen.endFor()
-
-        if isPtr:
-            self.cgen.endIf()
-
-        if lenAccessGuard is not None:
-            self.cgen.endIf()
-
-    def onString(self, vulkanType):
-        pass
-
-    def onStringArray(self, vulkanType):
-        pass
-
-    def onStaticArr(self, vulkanType):
-        if not self.isHandleFunc(vulkanType):
-            return
-
-        accessLhs = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-
-        self.cgen.stmt("%s->mapHandles_%s(%s%s, %s)" % \
-            (self.handlemapVarName, vulkanType.typeName,
-             self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()),
-             accessLhs, lenAccess))
-
-    def onStructExtension(self, vulkanType):
-        access = self.exprAccessor(vulkanType)
-
-        castedAccessExpr = "(%s)(%s)" % ("void*", access)
-        self.cgen.beginIf(access)
-        self.cgen.funcCall(None, self.prefix + "extension_struct",
-                           [self.handlemapVarName, castedAccessExpr])
-        self.cgen.endIf()
-
-    def onPointer(self, vulkanType):
-        if self.needSkip(vulkanType):
-            return
-
-        if not self.isHandleFunc(vulkanType):
-            return
-
-        access = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccess = "1" if lenAccess is None else lenAccess
-
-        self.cgen.beginIf(access)
-
-        self.cgen.stmt( \
-            "%s->mapHandles_%s(%s%s, %s)" % \
-            (self.handlemapVarName,
-             vulkanType.typeName,
-             self.makeCastExpr(vulkanType.getForNonConstAccess()),
-             access,
-             lenAccess))
-
-        self.cgen.endIf()
-
-    def onValue(self, vulkanType):
-        if not self.isHandleFunc(vulkanType):
-            return
-        access = self.exprAccessor(vulkanType)
-        self.cgen.stmt(
-            "%s->mapHandles_%s(%s%s)" % \
-            (self.handlemapVarName, vulkanType.typeName,
-             self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()),
-             access))
-
-class VulkanHandleMap(VulkanWrapperGenerator):
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.codegen = CodeGen()
-
-        self.handlemapPrefix = "handlemap_"
-        self.toMapVar = "toMap"
-        self.handlemapVarName = "handlemap"
-        self.handlemapParam = \
-            makeVulkanTypeSimple(False, "VulkanHandleMapping", 1,
-                                 self.handlemapVarName)
-        self.voidType = makeVulkanTypeSimple(False, "void", 0)
-
-        self.handlemapCodegen = \
-            HandleMapCodegen(
-                None,
-                self.toMapVar,
-                self.handlemapVarName,
-                self.handlemapPrefix,
-                lambda vtype : typeInfo.isHandleType(vtype.typeName))
-
-        self.knownDefs = {}
-
-        self.extensionHandlemapPrototype = \
-            VulkanAPI(self.handlemapPrefix + "extension_struct",
-                      self.voidType,
-                      [self.handlemapParam, STRUCT_EXTENSION_PARAM_FOR_WRITE])
-
-    def onBegin(self,):
-        VulkanWrapperGenerator.onBegin(self)
-        self.module.appendImpl(self.codegen.makeFuncDecl(
-            self.extensionHandlemapPrototype))
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-        if name in self.knownDefs:
-            return
-
-        category = self.typeInfo.categoryOf(name)
-
-        if category in ["struct", "union"] and alias:
-            self.module.appendHeader(
-                self.codegen.makeFuncAlias(self.handlemapPrefix + name,
-                                           self.handlemapPrefix + alias))
-
-        if category in ["struct", "union"] and not alias:
-
-            structInfo = self.typeInfo.structs[name]
-
-            typeFromName = \
-                lambda varname: \
-                    makeVulkanTypeSimple(varname == "from", name, 1, varname)
-
-            handlemapParams = \
-                [self.handlemapParam] + \
-                list(map(typeFromName, [self.toMapVar]))
-
-            handlemapPrototype = \
-                VulkanAPI(self.handlemapPrefix + name,
-                          self.voidType,
-                          handlemapParams)
-
-            def funcDefGenerator(cgen):
-                self.handlemapCodegen.cgen = cgen
-                for p in handlemapParams:
-                    cgen.stmt("(void)%s" % p.paramName)
-                for member in structInfo.members:
-                    iterateVulkanType(self.typeInfo, member,
-                                      self.handlemapCodegen)
-
-            self.module.appendHeader(
-                self.codegen.makeFuncDecl(handlemapPrototype))
-            self.module.appendImpl(
-                self.codegen.makeFuncImpl(handlemapPrototype, funcDefGenerator))
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-    def onEnd(self,):
-        VulkanWrapperGenerator.onEnd(self)
-
-        def forEachExtensionHandlemap(ext, castedAccess, cgen):
-            cgen.funcCall(None, self.handlemapPrefix + ext.name,
-                          [self.handlemapVarName, castedAccess])
-
-        self.module.appendImpl(
-            self.codegen.makeFuncImpl(
-                self.extensionHandlemapPrototype,
-                lambda cgen: self.emitForEachStructExtension(
-                    cgen,
-                    self.voidType,
-                    STRUCT_EXTENSION_PARAM_FOR_WRITE,
-                    forEachExtensionHandlemap)))
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/marshaling.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/marshaling.py
deleted file mode 100644
index a7d6394..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/marshaling.py
+++ /dev/null
@@ -1,1020 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from copy import copy
-import hashlib, sys
-
-from .common.codegen import CodeGen, VulkanAPIWrapper
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator, Atom, FuncExpr, FuncExprVal, FuncLambda
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import VULKAN_STREAM_VAR_NAME
-from .wrapperdefs import ROOT_TYPE_VAR_NAME, ROOT_TYPE_PARAM
-from .wrapperdefs import STREAM_RET_TYPE
-from .wrapperdefs import MARSHAL_INPUT_VAR_NAME
-from .wrapperdefs import UNMARSHAL_INPUT_VAR_NAME
-from .wrapperdefs import PARAMETERS_MARSHALING
-from .wrapperdefs import PARAMETERS_MARSHALING_GUEST
-from .wrapperdefs import STYPE_OVERRIDE
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_UNMARSHAL
-
-from .marshalingdefs import KNOWN_FUNCTION_OPCODES, CUSTOM_MARSHAL_TYPES
-
-class VulkanMarshalingCodegen(VulkanTypeIterator):
-
-    def __init__(self,
-                 cgen,
-                 streamVarName,
-                 rootTypeVarName,
-                 inputVarName,
-                 marshalPrefix,
-                 direction = "write",
-                 forApiOutput = False,
-                 dynAlloc = False,
-                 mapHandles = True,
-                 handleMapOverwrites = False,
-                 doFiltering = True):
-        self.cgen = cgen
-        self.direction = direction
-        self.processSimple = "write" if self.direction == "write" else "read"
-        self.forApiOutput = forApiOutput
-
-        self.checked = False
-
-        self.streamVarName = streamVarName
-        self.rootTypeVarName = rootTypeVarName
-        self.inputVarName = inputVarName
-        self.marshalPrefix = marshalPrefix
-
-        self.exprAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = True)
-        self.exprValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = False)
-        self.exprPrimitiveValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = False)
-        self.lenAccessor = lambda t: self.cgen.generalLengthAccess(t, parentVarName = self.inputVarName)
-        self.lenAccessorGuard = lambda t: self.cgen.generalLengthAccessGuard(
-            t, parentVarName=self.inputVarName)
-        self.filterVarAccessor = lambda t: self.cgen.filterVarAccess(t, parentVarName = self.inputVarName)
-
-        self.dynAlloc = dynAlloc
-        self.mapHandles = mapHandles
-        self.handleMapOverwrites = handleMapOverwrites
-        self.doFiltering = doFiltering
-
-    def getTypeForStreaming(self, vulkanType):
-        res = copy(vulkanType)
-
-        if not vulkanType.accessibleAsPointer():
-            res = res.getForAddressAccess()
-
-        if vulkanType.staticArrExpr:
-            res = res.getForAddressAccess()
-
-        if self.direction == "write":
-            return res
-        else:
-            return res.getForNonConstAccess()
-
-    def makeCastExpr(self, vulkanType):
-        return "(%s)" % (
-            self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
-    def genStreamCall(self, vulkanType, toStreamExpr, sizeExpr):
-        varname = self.streamVarName
-        func = self.processSimple
-        cast = self.makeCastExpr(self.getTypeForStreaming(vulkanType))
-
-        self.cgen.stmt(
-            "%s->%s(%s%s, %s)" % (varname, func, cast, toStreamExpr, sizeExpr))
-
-    def genPrimitiveStreamCall(self, vulkanType, access):
-        varname = self.streamVarName
-
-        self.cgen.streamPrimitive(
-            self.typeInfo,
-            varname,
-            access,
-            vulkanType,
-            direction=self.direction)
-
-    def genHandleMappingCall(self, vulkanType, access, lenAccess):
-
-        if lenAccess is None:
-            lenAccess = "1"
-            handle64Bytes = "8"
-        else:
-            handle64Bytes = "%s * 8" % lenAccess
-
-        handle64Var = self.cgen.var()
-        if lenAccess != "1":
-            self.cgen.beginIf(lenAccess)
-            self.cgen.stmt("uint64_t* %s" % handle64Var)
-            self.cgen.stmt(
-                "%s->alloc((void**)&%s, %s * 8)" % \
-                (self.streamVarName, handle64Var, lenAccess))
-            handle64VarAccess = handle64Var
-            handle64VarType = \
-                makeVulkanTypeSimple(False, "uint64_t", 1, paramName=handle64Var)
-        else:
-            self.cgen.stmt("uint64_t %s" % handle64Var)
-            handle64VarAccess = "&%s" % handle64Var
-            handle64VarType = \
-                makeVulkanTypeSimple(False, "uint64_t", 0, paramName=handle64Var)
-
-        if self.direction == "write":
-            if self.handleMapOverwrites:
-                self.cgen.stmt(
-                    "static_assert(8 == sizeof(%s), \"handle map overwrite requires %s to be 8 bytes long\")" % \
-                            (vulkanType.typeName, vulkanType.typeName))
-                self.cgen.stmt(
-                    "%s->handleMapping()->mapHandles_%s((%s*)%s, %s)" %
-                    (self.streamVarName, vulkanType.typeName, vulkanType.typeName,
-                    access, lenAccess))
-                self.genStreamCall(vulkanType, access, "8 * %s" % lenAccess)
-            else:
-                self.cgen.stmt(
-                    "%s->handleMapping()->mapHandles_%s_u64(%s, %s, %s)" %
-                    (self.streamVarName, vulkanType.typeName,
-                    access,
-                    handle64VarAccess, lenAccess))
-                self.genStreamCall(handle64VarType, handle64VarAccess, handle64Bytes)
-        else:
-            self.genStreamCall(handle64VarType, handle64VarAccess, handle64Bytes)
-            self.cgen.stmt(
-                "%s->handleMapping()->mapHandles_u64_%s(%s, %s%s, %s)" %
-                (self.streamVarName, vulkanType.typeName,
-                handle64VarAccess,
-                self.makeCastExpr(vulkanType.getForNonConstAccess()), access,
-                lenAccess))
-
-        if lenAccess != "1":
-            self.cgen.endIf()
-
-    def doAllocSpace(self, vulkanType):
-        if self.dynAlloc and self.direction == "read":
-            access = self.exprAccessor(vulkanType)
-            lenAccess = self.lenAccessor(vulkanType)
-            sizeof = self.cgen.sizeofExpr( \
-                         vulkanType.getForValueAccess())
-            if lenAccess:
-                bytesExpr = "%s * %s" % (lenAccess, sizeof)
-            else:
-                bytesExpr = sizeof
-
-            self.cgen.stmt( \
-                "%s->alloc((void**)&%s, %s)" %
-                    (self.streamVarName,
-                     access, bytesExpr))
-
-    def getOptionalStringFeatureExpr(self, vulkanType):
-        streamFeature = vulkanType.getProtectStreamFeature()
-        if streamFeature is None:
-            return None
-        return "%s->getFeatureBits() & %s" % (self.streamVarName, streamFeature)
-
-    def onCheck(self, vulkanType):
-
-        if self.forApiOutput:
-            return
-
-        featureExpr = self.getOptionalStringFeatureExpr(vulkanType);
-
-        self.checked = True
-
-        access = self.exprAccessor(vulkanType)
-
-        needConsistencyCheck = False
-
-        self.cgen.line("// WARNING PTR CHECK")
-        if (self.dynAlloc and self.direction == "read") or self.direction == "write":
-            checkAccess = self.exprAccessor(vulkanType)
-            addrExpr = "&" + checkAccess
-            sizeExpr = self.cgen.sizeofExpr(vulkanType)
-        else:
-            checkName = "check_%s" % vulkanType.paramName
-            self.cgen.stmt("%s %s" % (
-                self.cgen.makeCTypeDecl(vulkanType, useParamName = False), checkName))
-            checkAccess = checkName
-            addrExpr = "&" + checkAccess
-            sizeExpr = self.cgen.sizeofExpr(vulkanType)
-            needConsistencyCheck = True
-
-        if featureExpr is not None:
-            self.cgen.beginIf(featureExpr)
-
-        self.genPrimitiveStreamCall(
-            vulkanType,
-            checkAccess)
-
-        if featureExpr is not None:
-            self.cgen.endIf()
-
-        if featureExpr is not None:
-            self.cgen.beginIf("(!(%s) || %s)" % (featureExpr, access))
-        else:
-            self.cgen.beginIf(access)
-
-        if needConsistencyCheck and featureExpr is None:
-            self.cgen.beginIf("!(%s)" % checkName)
-            self.cgen.stmt(
-                "fprintf(stderr, \"fatal: %s inconsistent between guest and host\\n\")" % (access))
-            self.cgen.endIf()
-
-
-    def onCheckWithNullOptionalStringFeature(self, vulkanType):
-        self.cgen.beginIf("%s->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT" % self.streamVarName)
-        self.onCheck(vulkanType)
-
-    def endCheckWithNullOptionalStringFeature(self, vulkanType):
-        self.endCheck(vulkanType)
-        self.cgen.endIf()
-        self.cgen.beginElse()
-
-    def finalCheckWithNullOptionalStringFeature(self, vulkanType):
-        self.cgen.endElse()
-
-    def endCheck(self, vulkanType):
-
-        if self.checked:
-            self.cgen.endIf()
-            self.checked = False
-
-    def genFilterFunc(self, filterfunc, env):
-
-        def loop(expr, lambdaEnv={}):
-            def do_func(expr):
-                fnamestr = expr.name.name
-                if "not" == fnamestr:
-                    return "!(%s)" % (loop(expr.args[0], lambdaEnv))
-                if "eq" == fnamestr:
-                    return "(%s == %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "and" == fnamestr:
-                    return "(%s && %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "or" == fnamestr:
-                    return "(%s || %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "bitwise_and" == fnamestr:
-                    return "(%s & %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "getfield" == fnamestr:
-                    ptrlevels = get_ptrlevels(expr.args[0].val.name)
-                    if ptrlevels == 0:
-                        return "%s.%s" % (loop(expr.args[0], lambdaEnv), expr.args[1].val)
-                    else:
-                        return "(%s(%s)).%s" % ("*" * ptrlevels, loop(expr.args[0], lambdaEnv), expr.args[1].val)
-
-                if "if" == fnamestr:
-                    return "((%s) ? (%s) : (%s))" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv), loop(expr.args[2], lambdaEnv))
-
-                return "%s(%s)" % (fnamestr, ", ".join(map(lambda e: loop(e, lambdaEnv), expr.args)))
-
-            def do_expratom(atomname, lambdaEnv= {}):
-                if lambdaEnv.get(atomname, None) is not None:
-                    return atomname
-
-                enventry = env.get(atomname, None)
-                if None != enventry:
-                    return self.getEnvAccessExpr(atomname)
-                return atomname
-
-            def get_ptrlevels(atomname, lambdaEnv= {}):
-                if lambdaEnv.get(atomname, None) is not None:
-                    return 0
-
-                enventry = env.get(atomname, None)
-                if None != enventry:
-                    return self.getPointerIndirectionLevels(atomname)
-
-                return 0
-
-            def do_exprval(expr, lambdaEnv= {}):
-                expratom = expr.val
-
-                if Atom == type(expratom):
-                    return do_expratom(expratom.name, lambdaEnv)
-
-                return "%s" % expratom
-
-            def do_lambda(expr, lambdaEnv= {}):
-                params = expr.vs
-                body = expr.body
-                newEnv = {}
-
-                for (k, v) in lambdaEnv.items():
-                    newEnv[k] = v
-
-                for p in params:
-                    newEnv[p.name] = p.typ
-
-                return "[](%s) { return %s; }" % (", ".join(list(map(lambda p: "%s %s" % (p.typ, p.name), params))), loop(body, lambdaEnv=newEnv))
-
-            if FuncExpr == type(expr):
-                return do_func(expr)
-            if FuncLambda == type(expr):
-                return do_lambda(expr)
-            elif FuncExprVal == type(expr):
-                return do_exprval(expr)
-
-        return loop(filterfunc)
-
-    def beginFilterGuard(self, vulkanType):
-        if vulkanType.filterVar == None:
-            return
-
-        if self.doFiltering == False:
-            return
-
-        filterVarAccess = self.getEnvAccessExpr(vulkanType.filterVar)
-
-        filterValsExpr = None
-        filterFuncExpr = None
-        filterExpr = None
-
-        filterFeature = "%s->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.streamVarName
-
-        if None != vulkanType.filterVals:
-            filterValsExpr = " || ".join(map(lambda filterval: "(%s == %s)" % (filterval, filterVarAccess), vulkanType.filterVals))
-
-        if None != vulkanType.filterFunc:
-            filterFuncExpr = self.genFilterFunc(vulkanType.filterFunc, self.currentStructInfo.environment)
-
-        if None != filterValsExpr and None != filterFuncExpr:
-            filterExpr = "%s || %s" % (filterValsExpr, filterFuncExpr)
-        elif None == filterValsExpr and None == filterFuncExpr:
-            # Assume is bool
-            self.cgen.beginIf(filterVarAccess)
-        elif None != filterValsExpr:
-            self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterValsExpr))
-        elif None != filterFuncExpr:
-            self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterFuncExpr))
-
-    def endFilterGuard(self, vulkanType, cleanupExpr=None):
-        if vulkanType.filterVar == None:
-            return
-
-        if self.doFiltering == False:
-            return
-
-        if cleanupExpr == None:
-            self.cgen.endIf()
-        else:
-            self.cgen.endIf()
-            self.cgen.beginElse()
-            self.cgen.stmt(cleanupExpr)
-            self.cgen.endElse()
-
-    def getEnvAccessExpr(self, varName):
-        parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
-        if parentEnvEntry != None:
-            isParentMember = parentEnvEntry["structmember"]
-
-            if isParentMember:
-                envAccess = self.exprValueAccessor(list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0])
-            else:
-                envAccess = varName
-            return envAccess
-
-        return None
-
-    def getPointerIndirectionLevels(self, varName):
-        parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
-        if parentEnvEntry != None:
-            isParentMember = parentEnvEntry["structmember"]
-
-            if isParentMember:
-                return list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0].pointerIndirectionLevels
-            else:
-                return 0
-            return 0
-
-        return 0
-
-
-    def onCompoundType(self, vulkanType):
-
-        access = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        self.beginFilterGuard(vulkanType)
-
-        if vulkanType.pointerIndirectionLevels > 0:
-            self.doAllocSpace(vulkanType)
-
-        if lenAccess is not None:
-            if lenAccessGuard is not None:
-                self.cgen.beginIf(lenAccessGuard)
-            loopVar = "i"
-            access = "%s + %s" % (access, loopVar)
-            forInit = "uint32_t %s = 0" % loopVar
-            forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
-            forIncr = "++%s" % loopVar
-            self.cgen.beginFor(forInit, forCond, forIncr)
-
-        accessWithCast = "%s(%s)" % (self.makeCastExpr(
-            self.getTypeForStreaming(vulkanType)), access)
-
-        callParams = [self.streamVarName, self.rootTypeVarName, accessWithCast]
-
-        for (bindName, localName) in vulkanType.binds.items():
-            callParams.append(self.getEnvAccessExpr(localName))
-
-        self.cgen.funcCall(None, self.marshalPrefix + vulkanType.typeName,
-                           callParams)
-
-        if lenAccess is not None:
-            self.cgen.endFor()
-            if lenAccessGuard is not None:
-                self.cgen.endIf()
-
-        if self.direction == "read":
-            self.endFilterGuard(vulkanType, "%s = 0" % self.exprAccessor(vulkanType))
-        else:
-            self.endFilterGuard(vulkanType)
-
-    def onString(self, vulkanType):
-
-        access = self.exprAccessor(vulkanType)
-
-        if self.direction == "write":
-            self.cgen.stmt("%s->putString(%s)" % (self.streamVarName, access))
-        else:
-            castExpr = \
-                self.makeCastExpr( \
-                    self.getTypeForStreaming( \
-                        vulkanType.getForAddressAccess()))
-
-            self.cgen.stmt( \
-                "%s->loadStringInPlace(%s&%s)" % (self.streamVarName, castExpr, access))
-
-    def onStringArray(self, vulkanType):
-
-        access = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-
-        if self.direction == "write":
-            self.cgen.stmt("saveStringArray(%s, %s, %s)" % (self.streamVarName,
-                                                            access, lenAccess))
-        else:
-            castExpr = \
-                self.makeCastExpr( \
-                    self.getTypeForStreaming( \
-                        vulkanType.getForAddressAccess()))
-
-            self.cgen.stmt("%s->loadStringArrayInPlace(%s&%s)" % (self.streamVarName, castExpr, access))
-
-    def onStaticArr(self, vulkanType):
-        access = self.exprValueAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        finalLenExpr = "%s * %s" % (lenAccess, self.cgen.sizeofExpr(vulkanType))
-        self.genStreamCall(vulkanType, access, finalLenExpr)
-
-    # Old version VkEncoder may have some sType values conflict with VkDecoder
-    # of new versions. For host decoder, it should not carry the incorrect old
-    # sType values to the |forUnmarshaling| struct. Instead it should overwrite
-    # the sType value.
-    def overwriteSType(self, vulkanType):
-        if self.direction == "read":
-            sTypeParam = copy(vulkanType)
-            sTypeParam.paramName = "sType"
-            sTypeAccess = self.exprAccessor(sTypeParam)
-
-            typeName = vulkanType.parent.typeName
-            if typeName in STYPE_OVERRIDE:
-                self.cgen.stmt("%s = %s" %
-                               (sTypeAccess, STYPE_OVERRIDE[typeName]))
-
-    def onStructExtension(self, vulkanType):
-        self.overwriteSType(vulkanType)
-
-        sTypeParam = copy(vulkanType)
-        sTypeParam.paramName = "sType"
-
-        access = self.exprAccessor(vulkanType)
-        sizeVar = "%s_size" % vulkanType.paramName
-
-        if self.direction == "read":
-            castedAccessExpr = "(%s)(%s)" % ("void*", access)
-        else:
-            castedAccessExpr = access
-
-        sTypeAccess = self.exprAccessor(sTypeParam)
-        self.cgen.beginIf("%s == VK_STRUCTURE_TYPE_MAX_ENUM" %
-                          self.rootTypeVarName)
-        self.cgen.stmt("%s = %s" % (self.rootTypeVarName, sTypeAccess))
-        self.cgen.endIf()
-
-        if self.direction == "read" and self.dynAlloc:
-            self.cgen.stmt("size_t %s" % sizeVar)
-            self.cgen.stmt("%s = %s->getBe32()" % \
-                (sizeVar, self.streamVarName))
-            self.cgen.stmt("%s = nullptr" % access)
-            self.cgen.beginIf(sizeVar)
-            self.cgen.stmt( \
-                    "%s->alloc((void**)&%s, sizeof(VkStructureType))" %
-                    (self.streamVarName, access))
-
-            self.genStreamCall(vulkanType, access, "sizeof(VkStructureType)")
-            self.cgen.stmt("VkStructureType extType = *(VkStructureType*)(%s)" % access)
-            self.cgen.stmt( \
-                "%s->alloc((void**)&%s, %s(%s->getFeatureBits(), %s, %s))" %
-                (self.streamVarName, access, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME, self.streamVarName, self.rootTypeVarName, access))
-            self.cgen.stmt("*(VkStructureType*)%s = extType" % access)
-
-            self.cgen.funcCall(None, self.marshalPrefix + "extension_struct",
-                               [self.streamVarName, self.rootTypeVarName, castedAccessExpr])
-            self.cgen.endIf()
-        else:
-
-            self.cgen.funcCall(None, self.marshalPrefix + "extension_struct",
-                               [self.streamVarName, self.rootTypeVarName, castedAccessExpr])
-
-
-    def onPointer(self, vulkanType):
-        access = self.exprAccessor(vulkanType)
-
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        self.beginFilterGuard(vulkanType)
-        self.doAllocSpace(vulkanType)
-
-        if vulkanType.isHandleType() and self.mapHandles:
-            self.genHandleMappingCall(vulkanType, access, lenAccess)
-        else:
-            if self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
-                if lenAccess is not None:
-                    if lenAccessGuard is not None:
-                        self.cgen.beginIf(lenAccessGuard)
-                    self.cgen.beginFor("uint32_t i = 0", "i < (uint32_t)%s" % lenAccess, "++i")
-                    self.genPrimitiveStreamCall(vulkanType.getForValueAccess(), "%s[i]" % access)
-                    self.cgen.endFor()
-                    if lenAccessGuard is not None:
-                        self.cgen.endIf()
-                else:
-                    self.genPrimitiveStreamCall(vulkanType.getForValueAccess(), "(*%s)" % access)
-            else:
-                if lenAccess is not None:
-                    finalLenExpr = "%s * %s" % (
-                        lenAccess, self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
-                else:
-                    finalLenExpr = "%s" % (
-                        self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
-                self.genStreamCall(vulkanType, access, finalLenExpr)
-
-        if self.direction == "read":
-            self.endFilterGuard(vulkanType, "%s = 0" % access)
-        else:
-            self.endFilterGuard(vulkanType)
-
-    def onValue(self, vulkanType):
-        self.beginFilterGuard(vulkanType)
-
-        if vulkanType.isHandleType() and self.mapHandles:
-            access = self.exprAccessor(vulkanType)
-            self.genHandleMappingCall(
-                vulkanType.getForAddressAccess(), access, "1")
-        elif self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
-            access = self.exprPrimitiveValueAccessor(vulkanType)
-            self.genPrimitiveStreamCall(vulkanType, access)
-        else:
-            access = self.exprAccessor(vulkanType)
-            self.genStreamCall(vulkanType, access, self.cgen.sizeofExpr(vulkanType))
-
-        self.endFilterGuard(vulkanType)
-
-    def streamLetParameter(self, structInfo, letParamInfo):
-        filterFeature = "%s->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.streamVarName
-        self.cgen.stmt("%s %s = 1" % (letParamInfo.typeName, letParamInfo.paramName))
-
-        self.cgen.beginIf(filterFeature)
-
-        if self.direction == "write":
-            bodyExpr = self.currentStructInfo.environment[letParamInfo.paramName]["body"]
-            self.cgen.stmt("%s = %s" % (letParamInfo.paramName, self.genFilterFunc(bodyExpr, self.currentStructInfo.environment)))
-
-        self.genPrimitiveStreamCall(letParamInfo, letParamInfo.paramName)
-
-        self.cgen.endIf()
-
-
-class VulkanMarshaling(VulkanWrapperGenerator):
-
-    def __init__(self, module, typeInfo, variant="host"):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.cgenHeader = CodeGen()
-        self.cgenImpl = CodeGen()
-
-        self.variant = variant
-
-        self.currentFeature = None
-        self.apiOpcodes = {}
-        self.dynAlloc = self.variant != "guest"
-
-        if self.variant == "guest":
-            self.marshalingParams = PARAMETERS_MARSHALING_GUEST
-        else:
-            self.marshalingParams = PARAMETERS_MARSHALING
-
-        self.writeCodegen = \
-            VulkanMarshalingCodegen(
-                None,
-                VULKAN_STREAM_VAR_NAME,
-                ROOT_TYPE_VAR_NAME,
-                MARSHAL_INPUT_VAR_NAME,
-                API_PREFIX_MARSHAL,
-                direction = "write")
-
-        self.readCodegen = \
-            VulkanMarshalingCodegen(
-                None,
-                VULKAN_STREAM_VAR_NAME,
-                ROOT_TYPE_VAR_NAME,
-                UNMARSHAL_INPUT_VAR_NAME,
-                API_PREFIX_UNMARSHAL,
-                direction = "read",
-                dynAlloc=self.dynAlloc)
-
-        self.knownDefs = {}
-
-        # Begin Vulkan API opcodes from something high
-        # that is not going to interfere with renderControl
-        # opcodes
-        self.beginOpcodeOld = 20000
-        self.endOpcodeOld = 30000
-
-        self.beginOpcode = 200000000
-        self.endOpcode = 300000000
-        self.knownOpcodes = set()
-
-        self.extensionMarshalPrototype = \
-            VulkanAPI(API_PREFIX_MARSHAL + "extension_struct",
-                      STREAM_RET_TYPE,
-                      self.marshalingParams +
-                      [STRUCT_EXTENSION_PARAM])
-
-        self.extensionUnmarshalPrototype = \
-            VulkanAPI(API_PREFIX_UNMARSHAL + "extension_struct",
-                      STREAM_RET_TYPE,
-                      self.marshalingParams +
-                      [STRUCT_EXTENSION_PARAM_FOR_WRITE])
-
-    def onBegin(self,):
-        VulkanWrapperGenerator.onBegin(self)
-        self.module.appendImpl(self.cgenImpl.makeFuncDecl(self.extensionMarshalPrototype))
-        self.module.appendImpl(self.cgenImpl.makeFuncDecl(self.extensionUnmarshalPrototype))
-
-    def onBeginFeature(self, featureName, featureType):
-        VulkanWrapperGenerator.onBeginFeature(self, featureName, featureType)
-        self.currentFeature = featureName
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-        if name in self.knownDefs:
-            return
-
-        category = self.typeInfo.categoryOf(name)
-
-        if category in ["struct", "union"] and alias:
-            self.module.appendHeader(
-                self.cgenHeader.makeFuncAlias(API_PREFIX_MARSHAL + name,
-                                              API_PREFIX_MARSHAL + alias))
-            self.module.appendHeader(
-                self.cgenHeader.makeFuncAlias(API_PREFIX_UNMARSHAL + name,
-                                              API_PREFIX_UNMARSHAL + alias))
-
-        if category in ["struct", "union"] and not alias:
-
-            structInfo = self.typeInfo.structs[name]
-
-            marshalParams = self.marshalingParams + \
-                [makeVulkanTypeSimple(True, name, 1, MARSHAL_INPUT_VAR_NAME)]
-
-            freeParams = []
-            letParams = []
-
-            for (envname, bindingInfo) in list(sorted(structInfo.environment.items(), key = lambda kv: kv[0])):
-                if None == bindingInfo["binding"]:
-                    freeParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
-                else:
-                    if not bindingInfo["structmember"]:
-                        letParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
-
-            marshalPrototype = \
-                VulkanAPI(API_PREFIX_MARSHAL + name,
-                          STREAM_RET_TYPE,
-                          marshalParams + freeParams)
-
-            marshalPrototypeNoFilter = \
-                VulkanAPI(API_PREFIX_MARSHAL + name,
-                          STREAM_RET_TYPE,
-                          marshalParams)
-
-            def structMarshalingCustom(cgen):
-                self.writeCodegen.cgen = cgen
-                self.writeCodegen.currentStructInfo = structInfo
-                self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
-                marshalingCode = \
-                    CUSTOM_MARSHAL_TYPES[name]["common"] + \
-                    CUSTOM_MARSHAL_TYPES[name]["marshaling"].format(
-                        streamVarName=self.writeCodegen.streamVarName,
-                        rootTypeVarName=self.writeCodegen.rootTypeVarName,
-                        inputVarName=self.writeCodegen.inputVarName,
-                        newInputVarName=self.writeCodegen.inputVarName + "_new")
-                for line in marshalingCode.split('\n'):
-                    cgen.line(line)
-
-            def structMarshalingDef(cgen):
-                self.writeCodegen.cgen = cgen
-                self.writeCodegen.currentStructInfo = structInfo
-                self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
-                if category == "struct":
-                    # marshal 'let' parameters first
-                    for letp in letParams:
-                        self.writeCodegen.streamLetParameter(self.typeInfo, letp)
-
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.writeCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.writeCodegen)
-
-            def structMarshalingDefNoFilter(cgen):
-                self.writeCodegen.cgen = cgen
-                self.writeCodegen.currentStructInfo = structInfo
-                self.writeCodegen.doFiltering = False
-                self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
-                if category == "struct":
-                    # marshal 'let' parameters first
-                    for letp in letParams:
-                        self.writeCodegen.streamLetParameter(self.typeInfo, letp)
-
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.writeCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.writeCodegen)
-                self.writeCodegen.doFiltering = True
-
-            self.module.appendHeader(
-                self.cgenHeader.makeFuncDecl(marshalPrototype))
-
-            if name in CUSTOM_MARSHAL_TYPES:
-                self.module.appendImpl(
-                    self.cgenImpl.makeFuncImpl(
-                        marshalPrototype, structMarshalingCustom))
-            else:
-                self.module.appendImpl(
-                    self.cgenImpl.makeFuncImpl(
-                        marshalPrototype, structMarshalingDef))
-
-            if freeParams != []:
-                self.module.appendHeader(
-                    self.cgenHeader.makeFuncDecl(marshalPrototypeNoFilter))
-                self.module.appendImpl(
-                    self.cgenImpl.makeFuncImpl(
-                        marshalPrototypeNoFilter, structMarshalingDefNoFilter))
-
-            unmarshalPrototype = \
-                VulkanAPI(API_PREFIX_UNMARSHAL + name,
-                          STREAM_RET_TYPE,
-                          self.marshalingParams + [makeVulkanTypeSimple(False, name, 1, UNMARSHAL_INPUT_VAR_NAME)] + freeParams)
-
-            unmarshalPrototypeNoFilter = \
-                VulkanAPI(API_PREFIX_UNMARSHAL + name,
-                          STREAM_RET_TYPE,
-                          self.marshalingParams + [makeVulkanTypeSimple(False, name, 1, UNMARSHAL_INPUT_VAR_NAME)])
-
-            def structUnmarshalingCustom(cgen):
-                self.readCodegen.cgen = cgen
-                self.readCodegen.currentStructInfo = structInfo
-                self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
-                unmarshalingCode = \
-                    CUSTOM_MARSHAL_TYPES[name]["common"] + \
-                    CUSTOM_MARSHAL_TYPES[name]["unmarshaling"].format(
-                        streamVarName=self.readCodegen.streamVarName,
-                        rootTypeVarName=self.readCodegen.rootTypeVarName,
-                        inputVarName=self.readCodegen.inputVarName,
-                        newInputVarName=self.readCodegen.inputVarName + "_new")
-                for line in unmarshalingCode.split('\n'):
-                    cgen.line(line)
-
-            def structUnmarshalingDef(cgen):
-                self.readCodegen.cgen = cgen
-                self.readCodegen.currentStructInfo = structInfo
-                self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
-                if category == "struct":
-                    # unmarshal 'let' parameters first
-                    for letp in letParams:
-                        self.readCodegen.streamLetParameter(self.typeInfo, letp)
-
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.readCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.readCodegen)
-
-            def structUnmarshalingDefNoFilter(cgen):
-                self.readCodegen.cgen = cgen
-                self.readCodegen.currentStructInfo = structInfo
-                self.readCodegen.doFiltering = False
-                self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
-                if category == "struct":
-                    # unmarshal 'let' parameters first
-                    for letp in letParams:
-                        iterateVulkanType(self.typeInfo, letp, self.readCodegen)
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.readCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.readCodegen)
-                self.readCodegen.doFiltering = True
-
-            self.module.appendHeader(
-                self.cgenHeader.makeFuncDecl(unmarshalPrototype))
-
-            if name in CUSTOM_MARSHAL_TYPES:
-                self.module.appendImpl(
-                    self.cgenImpl.makeFuncImpl(
-                        unmarshalPrototype, structUnmarshalingCustom))
-            else:
-                self.module.appendImpl(
-                    self.cgenImpl.makeFuncImpl(
-                        unmarshalPrototype, structUnmarshalingDef))
-
-            if freeParams != []:
-                self.module.appendHeader(
-                    self.cgenHeader.makeFuncDecl(unmarshalPrototypeNoFilter))
-                self.module.appendImpl(
-                    self.cgenImpl.makeFuncImpl(
-                        unmarshalPrototypeNoFilter, structUnmarshalingDefNoFilter))
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-        if name in KNOWN_FUNCTION_OPCODES:
-            opcode = KNOWN_FUNCTION_OPCODES[name]
-        else:
-            hashCode = hashlib.sha256(name.encode()).hexdigest()[:8]
-            hashInt = int(hashCode, 16)
-            opcode = self.beginOpcode + hashInt % (self.endOpcode - self.beginOpcode)
-            hasHashCollision = False
-            while opcode in self.knownOpcodes:
-                hasHashCollision = True
-                opcode += 1
-            if hasHashCollision:
-                print("Hash collision occurred on function '{}'. "
-                      "Please add the following line to marshalingdefs.py:".format(name), file=sys.stderr)
-                print("----------------------", file=sys.stderr)
-                print("    \"{}\": {},".format(name, opcode), file=sys.stderr)
-                print("----------------------", file=sys.stderr)
-
-        self.module.appendHeader(
-            "#define OP_%s %d\n" % (name, opcode))
-        self.apiOpcodes[name] = (opcode, self.currentFeature)
-        self.knownOpcodes.add(opcode)
-
-    def doExtensionStructMarshalingCodegen(self, cgen, retType, extParam, forEach, funcproto, direction):
-        accessVar = "structAccess"
-        sizeVar = "currExtSize"
-        cgen.stmt("VkInstanceCreateInfo* %s = (VkInstanceCreateInfo*)(%s)" % (accessVar, extParam.paramName))
-        cgen.stmt("size_t %s = %s(%s->getFeatureBits(), %s, %s)" % (sizeVar,
-                                                                    EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME, VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, extParam.paramName))
-
-        cgen.beginIf("!%s && %s" % (sizeVar, extParam.paramName))
-
-        cgen.line("// unknown struct extension; skip and call on its pNext field");
-        cgen.funcCall(None, funcproto.name, [
-                      "vkStream", ROOT_TYPE_VAR_NAME, "(void*)%s->pNext" % accessVar])
-        cgen.stmt("return")
-
-        cgen.endIf()
-        cgen.beginElse()
-
-        cgen.line("// known or null extension struct")
-
-        if direction == "write":
-            cgen.stmt("vkStream->putBe32(%s)" % sizeVar)
-        elif not self.dynAlloc:
-            cgen.stmt("vkStream->getBe32()");
-
-        cgen.beginIf("!%s" % (sizeVar))
-        cgen.line("// exit if this was a null extension struct (size == 0 in this branch)")
-        cgen.stmt("return")
-        cgen.endIf()
-
-        cgen.endIf()
-
-        # Now we can do stream stuff
-        if direction == "write":
-            cgen.stmt("vkStream->write(%s, sizeof(VkStructureType))" % extParam.paramName)
-        elif not self.dynAlloc:
-            cgen.stmt("uint64_t pNext_placeholder")
-            placeholderAccess = "(&pNext_placeholder)"
-            cgen.stmt("vkStream->read((void*)(&pNext_placeholder), sizeof(VkStructureType))")
-            cgen.stmt("(void)pNext_placeholder")
-
-        def fatalDefault(cgen):
-            cgen.line("// fatal; the switch is only taken if the extension struct is known")
-            if self.variant != "guest":
-                cgen.stmt("fprintf(stderr, \" %s, Unhandled Vulkan structure type %s [%d], aborting.\\n\", __func__, string_VkStructureType(VkStructureType(structType)), structType)")
-            cgen.stmt("abort()")
-            pass
-
-        self.emitForEachStructExtension(
-            cgen,
-            retType,
-            extParam,
-            forEach,
-            defaultEmit=fatalDefault,
-            rootTypeVar=ROOT_TYPE_PARAM)
-
-    def onEnd(self,):
-        VulkanWrapperGenerator.onEnd(self)
-
-        def forEachExtensionMarshal(ext, castedAccess, cgen):
-            cgen.funcCall(None, API_PREFIX_MARSHAL + ext.name,
-                          [VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, castedAccess])
-
-        def forEachExtensionUnmarshal(ext, castedAccess, cgen):
-            cgen.funcCall(None, API_PREFIX_UNMARSHAL + ext.name,
-                          [VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, castedAccess])
-
-        self.module.appendImpl(
-            self.cgenImpl.makeFuncImpl(
-                self.extensionMarshalPrototype,
-                lambda cgen: self.doExtensionStructMarshalingCodegen(
-                    cgen,
-                    STREAM_RET_TYPE,
-                    STRUCT_EXTENSION_PARAM,
-                    forEachExtensionMarshal,
-                    self.extensionMarshalPrototype,
-                    "write")))
-
-        self.module.appendImpl(
-            self.cgenImpl.makeFuncImpl(
-                self.extensionUnmarshalPrototype,
-                lambda cgen: self.doExtensionStructMarshalingCodegen(
-                    cgen,
-                    STREAM_RET_TYPE,
-                    STRUCT_EXTENSION_PARAM_FOR_WRITE,
-                    forEachExtensionUnmarshal,
-                    self.extensionUnmarshalPrototype,
-                    "read")))
-
-        opcode2stringPrototype = \
-            VulkanAPI("api_opcode_to_string",
-                          makeVulkanTypeSimple(True, "char", 1, "none"),
-                          [ makeVulkanTypeSimple(True, "uint32_t", 0, "opcode") ])
-
-        self.module.appendHeader(
-            self.cgenHeader.makeFuncDecl(opcode2stringPrototype))
-
-        def emitOpcode2StringImpl(apiOpcodes, cgen):
-            cgen.line("switch(opcode)")
-            cgen.beginBlock()
-
-            currFeature = None
-
-            for (name, (opcodeNum, feature)) in sorted(apiOpcodes.items(), key = lambda x : x[1][0]):
-                if not currFeature:
-                    cgen.leftline("#ifdef %s" % feature)
-                    currFeature = feature
-
-                if currFeature and feature != currFeature:
-                    cgen.leftline("#endif")
-                    cgen.leftline("#ifdef %s" % feature)
-                    currFeature = feature
-
-                cgen.line("case OP_%s:" % name)
-                cgen.beginBlock()
-                cgen.stmt("return \"OP_%s\"" % name)
-                cgen.endBlock()
-
-            if currFeature:
-                cgen.leftline("#endif")
-
-            cgen.line("default:")
-            cgen.beginBlock()
-            cgen.stmt("return \"OP_UNKNOWN_API_CALL\"")
-            cgen.endBlock()
-
-            cgen.endBlock()
-
-        self.module.appendImpl(
-            self.cgenImpl.makeFuncImpl(
-                opcode2stringPrototype,
-                lambda cgen: emitOpcode2StringImpl(self.apiOpcodes, cgen)))
-
-        self.module.appendHeader(
-            "#define OP_vkFirst_old %d\n" % (self.beginOpcodeOld))
-        self.module.appendHeader(
-            "#define OP_vkLast_old %d\n" % (self.endOpcodeOld))
-        self.module.appendHeader(
-            "#define OP_vkFirst %d\n" % (self.beginOpcode))
-        self.module.appendHeader(
-            "#define OP_vkLast %d\n" % (self.endOpcode))
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/marshalingdefs.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/marshalingdefs.py
deleted file mode 100644
index 01ac697..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/marshalingdefs.py
+++ /dev/null
@@ -1,511 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-KNOWN_FUNCTION_OPCODES = {
-    "vkCreateInstance": 20000,
-    "vkDestroyInstance": 20001,
-    "vkEnumeratePhysicalDevices": 20002,
-    "vkGetPhysicalDeviceFeatures": 20003,
-    "vkGetPhysicalDeviceFormatProperties": 20004,
-    "vkGetPhysicalDeviceImageFormatProperties": 20005,
-    "vkGetPhysicalDeviceProperties": 20006,
-    "vkGetPhysicalDeviceQueueFamilyProperties": 20007,
-    "vkGetPhysicalDeviceMemoryProperties": 20008,
-    "vkGetInstanceProcAddr": 20009,
-    "vkGetDeviceProcAddr": 20010,
-    "vkCreateDevice": 20011,
-    "vkDestroyDevice": 20012,
-    "vkEnumerateInstanceExtensionProperties": 20013,
-    "vkEnumerateDeviceExtensionProperties": 20014,
-    "vkEnumerateInstanceLayerProperties": 20015,
-    "vkEnumerateDeviceLayerProperties": 20016,
-    "vkGetDeviceQueue": 20017,
-    "vkQueueSubmit": 20018,
-    "vkQueueWaitIdle": 20019,
-    "vkDeviceWaitIdle": 20020,
-    "vkAllocateMemory": 20021,
-    "vkFreeMemory": 20022,
-    "vkMapMemory": 20023,
-    "vkUnmapMemory": 20024,
-    "vkFlushMappedMemoryRanges": 20025,
-    "vkInvalidateMappedMemoryRanges": 20026,
-    "vkGetDeviceMemoryCommitment": 20027,
-    "vkBindBufferMemory": 20028,
-    "vkBindImageMemory": 20029,
-    "vkGetBufferMemoryRequirements": 20030,
-    "vkGetImageMemoryRequirements": 20031,
-    "vkGetImageSparseMemoryRequirements": 20032,
-    "vkGetPhysicalDeviceSparseImageFormatProperties": 20033,
-    "vkQueueBindSparse": 20034,
-    "vkCreateFence": 20035,
-    "vkDestroyFence": 20036,
-    "vkResetFences": 20037,
-    "vkGetFenceStatus": 20038,
-    "vkWaitForFences": 20039,
-    "vkCreateSemaphore": 20040,
-    "vkDestroySemaphore": 20041,
-    "vkCreateEvent": 20042,
-    "vkDestroyEvent": 20043,
-    "vkGetEventStatus": 20044,
-    "vkSetEvent": 20045,
-    "vkResetEvent": 20046,
-    "vkCreateQueryPool": 20047,
-    "vkDestroyQueryPool": 20048,
-    "vkGetQueryPoolResults": 20049,
-    "vkCreateBuffer": 20050,
-    "vkDestroyBuffer": 20051,
-    "vkCreateBufferView": 20052,
-    "vkDestroyBufferView": 20053,
-    "vkCreateImage": 20054,
-    "vkDestroyImage": 20055,
-    "vkGetImageSubresourceLayout": 20056,
-    "vkCreateImageView": 20057,
-    "vkDestroyImageView": 20058,
-    "vkCreateShaderModule": 20059,
-    "vkDestroyShaderModule": 20060,
-    "vkCreatePipelineCache": 20061,
-    "vkDestroyPipelineCache": 20062,
-    "vkGetPipelineCacheData": 20063,
-    "vkMergePipelineCaches": 20064,
-    "vkCreateGraphicsPipelines": 20065,
-    "vkCreateComputePipelines": 20066,
-    "vkDestroyPipeline": 20067,
-    "vkCreatePipelineLayout": 20068,
-    "vkDestroyPipelineLayout": 20069,
-    "vkCreateSampler": 20070,
-    "vkDestroySampler": 20071,
-    "vkCreateDescriptorSetLayout": 20072,
-    "vkDestroyDescriptorSetLayout": 20073,
-    "vkCreateDescriptorPool": 20074,
-    "vkDestroyDescriptorPool": 20075,
-    "vkResetDescriptorPool": 20076,
-    "vkAllocateDescriptorSets": 20077,
-    "vkFreeDescriptorSets": 20078,
-    "vkUpdateDescriptorSets": 20079,
-    "vkCreateFramebuffer": 20080,
-    "vkDestroyFramebuffer": 20081,
-    "vkCreateRenderPass": 20082,
-    "vkDestroyRenderPass": 20083,
-    "vkGetRenderAreaGranularity": 20084,
-    "vkCreateCommandPool": 20085,
-    "vkDestroyCommandPool": 20086,
-    "vkResetCommandPool": 20087,
-    "vkAllocateCommandBuffers": 20088,
-    "vkFreeCommandBuffers": 20089,
-    "vkBeginCommandBuffer": 20090,
-    "vkEndCommandBuffer": 20091,
-    "vkResetCommandBuffer": 20092,
-    "vkCmdBindPipeline": 20093,
-    "vkCmdSetViewport": 20094,
-    "vkCmdSetScissor": 20095,
-    "vkCmdSetLineWidth": 20096,
-    "vkCmdSetDepthBias": 20097,
-    "vkCmdSetBlendConstants": 20098,
-    "vkCmdSetDepthBounds": 20099,
-    "vkCmdSetStencilCompareMask": 20100,
-    "vkCmdSetStencilWriteMask": 20101,
-    "vkCmdSetStencilReference": 20102,
-    "vkCmdBindDescriptorSets": 20103,
-    "vkCmdBindIndexBuffer": 20104,
-    "vkCmdBindVertexBuffers": 20105,
-    "vkCmdDraw": 20106,
-    "vkCmdDrawIndexed": 20107,
-    "vkCmdDrawIndirect": 20108,
-    "vkCmdDrawIndexedIndirect": 20109,
-    "vkCmdDispatch": 20110,
-    "vkCmdDispatchIndirect": 20111,
-    "vkCmdCopyBuffer": 20112,
-    "vkCmdCopyImage": 20113,
-    "vkCmdBlitImage": 20114,
-    "vkCmdCopyBufferToImage": 20115,
-    "vkCmdCopyImageToBuffer": 20116,
-    "vkCmdUpdateBuffer": 20117,
-    "vkCmdFillBuffer": 20118,
-    "vkCmdClearColorImage": 20119,
-    "vkCmdClearDepthStencilImage": 20120,
-    "vkCmdClearAttachments": 20121,
-    "vkCmdResolveImage": 20122,
-    "vkCmdSetEvent": 20123,
-    "vkCmdResetEvent": 20124,
-    "vkCmdWaitEvents": 20125,
-    "vkCmdPipelineBarrier": 20126,
-    "vkCmdBeginQuery": 20127,
-    "vkCmdEndQuery": 20128,
-    "vkCmdResetQueryPool": 20129,
-    "vkCmdWriteTimestamp": 20130,
-    "vkCmdCopyQueryPoolResults": 20131,
-    "vkCmdPushConstants": 20132,
-    "vkCmdBeginRenderPass": 20133,
-    "vkCmdNextSubpass": 20134,
-    "vkCmdEndRenderPass": 20135,
-    "vkCmdExecuteCommands": 20136,
-    "vkEnumerateInstanceVersion": 20137,
-    "vkBindBufferMemory2": 20138,
-    "vkBindImageMemory2": 20139,
-    "vkGetDeviceGroupPeerMemoryFeatures": 20140,
-    "vkCmdSetDeviceMask": 20141,
-    "vkCmdDispatchBase": 20142,
-    "vkEnumeratePhysicalDeviceGroups": 20143,
-    "vkGetImageMemoryRequirements2": 20144,
-    "vkGetBufferMemoryRequirements2": 20145,
-    "vkGetImageSparseMemoryRequirements2": 20146,
-    "vkGetPhysicalDeviceFeatures2": 20147,
-    "vkGetPhysicalDeviceProperties2": 20148,
-    "vkGetPhysicalDeviceFormatProperties2": 20149,
-    "vkGetPhysicalDeviceImageFormatProperties2": 20150,
-    "vkGetPhysicalDeviceQueueFamilyProperties2": 20151,
-    "vkGetPhysicalDeviceMemoryProperties2": 20152,
-    "vkGetPhysicalDeviceSparseImageFormatProperties2": 20153,
-    "vkTrimCommandPool": 20154,
-    "vkGetDeviceQueue2": 20155,
-    "vkCreateSamplerYcbcrConversion": 20156,
-    "vkDestroySamplerYcbcrConversion": 20157,
-    "vkCreateDescriptorUpdateTemplate": 20158,
-    "vkDestroyDescriptorUpdateTemplate": 20159,
-    "vkUpdateDescriptorSetWithTemplate": 20160,
-    "vkGetPhysicalDeviceExternalBufferProperties": 20161,
-    "vkGetPhysicalDeviceExternalFenceProperties": 20162,
-    "vkGetPhysicalDeviceExternalSemaphoreProperties": 20163,
-    "vkGetDescriptorSetLayoutSupport": 20164,
-    "vkDestroySurfaceKHR": 20165,
-    "vkGetPhysicalDeviceSurfaceSupportKHR": 20166,
-    "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": 20167,
-    "vkGetPhysicalDeviceSurfaceFormatsKHR": 20168,
-    "vkGetPhysicalDeviceSurfacePresentModesKHR": 20169,
-    "vkCreateSwapchainKHR": 20170,
-    "vkDestroySwapchainKHR": 20171,
-    "vkGetSwapchainImagesKHR": 20172,
-    "vkAcquireNextImageKHR": 20173,
-    "vkQueuePresentKHR": 20174,
-    "vkGetDeviceGroupPresentCapabilitiesKHR": 20175,
-    "vkGetDeviceGroupSurfacePresentModesKHR": 20176,
-    "vkGetPhysicalDevicePresentRectanglesKHR": 20177,
-    "vkAcquireNextImage2KHR": 20178,
-    "vkGetPhysicalDeviceDisplayPropertiesKHR": 20179,
-    "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": 20180,
-    "vkGetDisplayPlaneSupportedDisplaysKHR": 20181,
-    "vkGetDisplayModePropertiesKHR": 20182,
-    "vkCreateDisplayModeKHR": 20183,
-    "vkGetDisplayPlaneCapabilitiesKHR": 20184,
-    "vkCreateDisplayPlaneSurfaceKHR": 20185,
-    "vkCreateSharedSwapchainsKHR": 20186,
-    "vkCreateXlibSurfaceKHR": 20187,
-    "vkGetPhysicalDeviceXlibPresentationSupportKHR": 20188,
-    "vkCreateXcbSurfaceKHR": 20189,
-    "vkGetPhysicalDeviceXcbPresentationSupportKHR": 20190,
-    "vkCreateWaylandSurfaceKHR": 20191,
-    "vkGetPhysicalDeviceWaylandPresentationSupportKHR": 20192,
-    "vkCreateMirSurfaceKHR": 20193,
-    "vkGetPhysicalDeviceMirPresentationSupportKHR": 20194,
-    "vkCreateAndroidSurfaceKHR": 20195,
-    "vkCreateWin32SurfaceKHR": 20196,
-    "vkGetPhysicalDeviceWin32PresentationSupportKHR": 20197,
-    "vkGetPhysicalDeviceFeatures2KHR": 20198,
-    "vkGetPhysicalDeviceProperties2KHR": 20199,
-    "vkGetPhysicalDeviceFormatProperties2KHR": 20200,
-    "vkGetPhysicalDeviceImageFormatProperties2KHR": 20201,
-    "vkGetPhysicalDeviceQueueFamilyProperties2KHR": 20202,
-    "vkGetPhysicalDeviceMemoryProperties2KHR": 20203,
-    "vkGetPhysicalDeviceSparseImageFormatProperties2KHR": 20204,
-    "vkGetDeviceGroupPeerMemoryFeaturesKHR": 20205,
-    "vkCmdSetDeviceMaskKHR": 20206,
-    "vkCmdDispatchBaseKHR": 20207,
-    "vkTrimCommandPoolKHR": 20208,
-    "vkEnumeratePhysicalDeviceGroupsKHR": 20209,
-    "vkGetPhysicalDeviceExternalBufferPropertiesKHR": 20210,
-    "vkGetMemoryWin32HandleKHR": 20211,
-    "vkGetMemoryWin32HandlePropertiesKHR": 20212,
-    "vkGetMemoryFdKHR": 20213,
-    "vkGetMemoryFdPropertiesKHR": 20214,
-    "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR": 20215,
-    "vkImportSemaphoreWin32HandleKHR": 20216,
-    "vkGetSemaphoreWin32HandleKHR": 20217,
-    "vkImportSemaphoreFdKHR": 20218,
-    "vkGetSemaphoreFdKHR": 20219,
-    "vkCmdPushDescriptorSetKHR": 20220,
-    "vkCmdPushDescriptorSetWithTemplateKHR": 20221,
-    "vkCreateDescriptorUpdateTemplateKHR": 20222,
-    "vkDestroyDescriptorUpdateTemplateKHR": 20223,
-    "vkUpdateDescriptorSetWithTemplateKHR": 20224,
-    "vkCreateRenderPass2KHR": 20225,
-    "vkCmdBeginRenderPass2KHR": 20226,
-    "vkCmdNextSubpass2KHR": 20227,
-    "vkCmdEndRenderPass2KHR": 20228,
-    "vkGetSwapchainStatusKHR": 20229,
-    "vkGetPhysicalDeviceExternalFencePropertiesKHR": 20230,
-    "vkImportFenceWin32HandleKHR": 20231,
-    "vkGetFenceWin32HandleKHR": 20232,
-    "vkImportFenceFdKHR": 20233,
-    "vkGetFenceFdKHR": 20234,
-    "vkGetPhysicalDeviceSurfaceCapabilities2KHR": 20235,
-    "vkGetPhysicalDeviceSurfaceFormats2KHR": 20236,
-    "vkGetPhysicalDeviceDisplayProperties2KHR": 20237,
-    "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": 20238,
-    "vkGetDisplayModeProperties2KHR": 20239,
-    "vkGetDisplayPlaneCapabilities2KHR": 20240,
-    "vkGetImageMemoryRequirements2KHR": 20241,
-    "vkGetBufferMemoryRequirements2KHR": 20242,
-    "vkGetImageSparseMemoryRequirements2KHR": 20243,
-    "vkCreateSamplerYcbcrConversionKHR": 20244,
-    "vkDestroySamplerYcbcrConversionKHR": 20245,
-    "vkBindBufferMemory2KHR": 20246,
-    "vkBindImageMemory2KHR": 20247,
-    "vkGetDescriptorSetLayoutSupportKHR": 20248,
-    "vkCmdDrawIndirectCountKHR": 20249,
-    "vkCmdDrawIndexedIndirectCountKHR": 20250,
-    "vkGetSwapchainGrallocUsageANDROID": 20251,
-    "vkAcquireImageANDROID": 20252,
-    "vkQueueSignalReleaseImageANDROID": 20253,
-    "vkCreateDebugReportCallbackEXT": 20254,
-    "vkDestroyDebugReportCallbackEXT": 20255,
-    "vkDebugReportMessageEXT": 20256,
-    "vkDebugMarkerSetObjectTagEXT": 20257,
-    "vkDebugMarkerSetObjectNameEXT": 20258,
-    "vkCmdDebugMarkerBeginEXT": 20259,
-    "vkCmdDebugMarkerEndEXT": 20260,
-    "vkCmdDebugMarkerInsertEXT": 20261,
-    "vkCmdDrawIndirectCountAMD": 20262,
-    "vkCmdDrawIndexedIndirectCountAMD": 20263,
-    "vkGetShaderInfoAMD": 20264,
-    "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": 20265,
-    "vkGetMemoryWin32HandleNV": 20266,
-    "vkCreateViSurfaceNN": 20267,
-    "vkCmdBeginConditionalRenderingEXT": 20268,
-    "vkCmdEndConditionalRenderingEXT": 20269,
-    "vkCmdProcessCommandsNVX": 20270,
-    "vkCmdReserveSpaceForCommandsNVX": 20271,
-    "vkCreateIndirectCommandsLayoutNVX": 20272,
-    "vkDestroyIndirectCommandsLayoutNVX": 20273,
-    "vkCreateObjectTableNVX": 20274,
-    "vkDestroyObjectTableNVX": 20275,
-    "vkRegisterObjectsNVX": 20276,
-    "vkUnregisterObjectsNVX": 20277,
-    "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": 20278,
-    "vkCmdSetViewportWScalingNV": 20279,
-    "vkReleaseDisplayEXT": 20280,
-    "vkAcquireXlibDisplayEXT": 20281,
-    "vkGetRandROutputDisplayEXT": 20282,
-    "vkGetPhysicalDeviceSurfaceCapabilities2EXT": 20283,
-    "vkDisplayPowerControlEXT": 20284,
-    "vkRegisterDeviceEventEXT": 20285,
-    "vkRegisterDisplayEventEXT": 20286,
-    "vkGetSwapchainCounterEXT": 20287,
-    "vkGetRefreshCycleDurationGOOGLE": 20288,
-    "vkGetPastPresentationTimingGOOGLE": 20289,
-    "vkCmdSetDiscardRectangleEXT": 20290,
-    "vkSetHdrMetadataEXT": 20291,
-    "vkCreateIOSSurfaceMVK": 20292,
-    "vkCreateMacOSSurfaceMVK": 20293,
-    "vkSetDebugUtilsObjectNameEXT": 20294,
-    "vkSetDebugUtilsObjectTagEXT": 20295,
-    "vkQueueBeginDebugUtilsLabelEXT": 20296,
-    "vkQueueEndDebugUtilsLabelEXT": 20297,
-    "vkQueueInsertDebugUtilsLabelEXT": 20298,
-    "vkCmdBeginDebugUtilsLabelEXT": 20299,
-    "vkCmdEndDebugUtilsLabelEXT": 20300,
-    "vkCmdInsertDebugUtilsLabelEXT": 20301,
-    "vkCreateDebugUtilsMessengerEXT": 20302,
-    "vkDestroyDebugUtilsMessengerEXT": 20303,
-    "vkSubmitDebugUtilsMessageEXT": 20304,
-    "vkGetAndroidHardwareBufferPropertiesANDROID": 20305,
-    "vkGetMemoryAndroidHardwareBufferANDROID": 20306,
-    "vkCmdSetSampleLocationsEXT": 20307,
-    "vkGetPhysicalDeviceMultisamplePropertiesEXT": 20308,
-    "vkCreateValidationCacheEXT": 20309,
-    "vkDestroyValidationCacheEXT": 20310,
-    "vkMergeValidationCachesEXT": 20311,
-    "vkGetValidationCacheDataEXT": 20312,
-    "vkGetMemoryHostPointerPropertiesEXT": 20313,
-    "vkCmdWriteBufferMarkerAMD": 20314,
-    "vkCmdSetCheckpointNV": 20315,
-    "vkGetQueueCheckpointDataNV": 20316,
-    "vkMapMemoryIntoAddressSpaceGOOGLE": 20317,
-    "vkUpdateDescriptorSetWithTemplateSizedGOOGLE": 20320,
-    "vkBeginCommandBufferAsyncGOOGLE": 20321,
-    "vkEndCommandBufferAsyncGOOGLE": 20322,
-    "vkResetCommandBufferAsyncGOOGLE": 20323,
-    "vkCommandBufferHostSyncGOOGLE": 20324,
-    "vkCreateImageWithRequirementsGOOGLE": 20325,
-    "vkCreateBufferWithRequirementsGOOGLE": 20326,
-    "vkGetMemoryHostAddressInfoGOOGLE": 20327,
-    "vkFreeMemorySyncGOOGLE": 20328,
-    "vkQueueHostSyncGOOGLE": 20329,
-    "vkQueueSubmitAsyncGOOGLE": 20330,
-    "vkQueueWaitIdleAsyncGOOGLE": 20331,
-    "vkQueueBindSparseAsyncGOOGLE": 20332,
-    "vkGetLinearImageLayoutGOOGLE": 20333,
-    "vkQueueFlushCommandsGOOGLE": 20340,
-    "vkGetBlobGOOGLE": 20341,
-    "vkGetSemaphoreGOOGLE": 20342,
-}
-
-CUSTOM_MARSHAL_TYPES = {
-    "VkAccelerationStructureInstanceKHR": {
-        "common": """
-typedef struct VkAccelerationStructureInstanceKHRWithoutBitFields {
-    VkTransformMatrixKHR          transform;
-    uint32_t                      dwords[2];
-    uint64_t                      accelerationStructureReference;
-} VkAccelerationStructureInstanceKHRWithoutBitFields;
-""",
-        "marshaling": """
-const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
-marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform));
-for (uint32_t i = 0; i < 2; i++) {{
-    {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
-        "unmarshaling": """
-VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
-unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform));
-for (uint32_t i = 0; i < 2; i++) {{
-    {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
-        "reservedmarshaling": """
-(void)vkStream;
-const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
-reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
-    memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-    *ptr += sizeof(uint32_t);
-}}
-memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
-        "reservedunmarshaling": """
-VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
-reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
-    memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
-    *ptr += sizeof(uint32_t);
-}}
-memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
-    },
-    "VkAccelerationStructureMatrixMotionInstanceNV": {
-        "common": """
-typedef struct VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields {
-    VkTransformMatrixKHR          transformT0;
-    VkTransformMatrixKHR          transformT1;
-    uint32_t                      dwords[2];
-    uint64_t                      accelerationStructureReference;
-} VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields;
-""",
-        "marshaling": """
-const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
-marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0));
-marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1));
-for (uint32_t i = 0; i < 2; i++) {{
-    {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
-        "unmarshaling": """
-VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
-unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0));
-unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1));
-for (uint32_t i = 0; i < 2; i++) {{
-    {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
-        "reservedmarshaling": """
-(void)vkStream;
-const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
-reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0), ptr);
-reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
-    memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-    *ptr += sizeof(uint32_t);
-}}
-memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
-        "reservedunmarshaling": """
-VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
-reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0), ptr);
-reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
-    memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
-    *ptr += sizeof(uint32_t);
-}}
-memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
-    },
-    "VkAccelerationStructureSRTMotionInstanceNV": {
-        "common": """
-typedef struct VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields {
-    VkSRTDataNV          transformT0;
-    VkSRTDataNV          transformT1;
-    uint32_t             dwords[2];
-    uint64_t             accelerationStructureReference;
-} VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields;
-""",
-        "marshaling": """
-const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
-marshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0));
-marshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1));
-for (uint32_t i = 0; i < 2; i++) {{
-    {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
-        "unmarshaling": """
-VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
-unmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0));
-unmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1));
-for (uint32_t i = 0; i < 2; i++) {{
-    {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
-        "reservedmarshaling": """
-(void)vkStream;
-const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
-reservedmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0), ptr);
-reservedmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
-    memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-    *ptr += sizeof(uint32_t);
-}}
-memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
-        "reservedunmarshaling": """
-VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
-reservedunmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0), ptr);
-reservedunmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
-    memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
-    *ptr += sizeof(uint32_t);
-}}
-memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
-    },
-    "VkXcbSurfaceCreateInfoKHR": {
-        "common": """
-// This struct should never be marshaled / unmarshaled.
-__builtin_trap();
-""",
-        "marshaling": "",
-        "unmarshaling": "",
-        "reservedmarshaling": "",
-        "reservedunmarshaling": "",
-    },
-    "VkMetalSurfaceCreateInfoEXT": {
-        "common": """
-// This struct should never be marshaled / unmarshaled.
-__builtin_trap();
-""",
-        "marshaling": "",
-        "unmarshaling": "",
-        "reservedmarshaling": "",
-        "reservedunmarshaling": "",
-    },
-}
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/reservedmarshaling.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/reservedmarshaling.py
deleted file mode 100644
index 4f15663..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/reservedmarshaling.py
+++ /dev/null
@@ -1,1046 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-from copy import copy
-
-from .common.codegen import CodeGen, VulkanAPIWrapper
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator, Atom, FuncExpr, FuncExprVal, FuncLambda
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import VULKAN_STREAM_VAR_NAME
-from .wrapperdefs import ROOT_TYPE_VAR_NAME, ROOT_TYPE_PARAM
-from .wrapperdefs import STREAM_RET_TYPE
-from .wrapperdefs import MARSHAL_INPUT_VAR_NAME
-from .wrapperdefs import UNMARSHAL_INPUT_VAR_NAME
-from .wrapperdefs import PARAMETERS_MARSHALING
-from .wrapperdefs import PARAMETERS_MARSHALING_GUEST
-from .wrapperdefs import STYPE_OVERRIDE
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME
-from .wrapperdefs import API_PREFIX_RESERVEDMARSHAL
-from .wrapperdefs import API_PREFIX_RESERVEDUNMARSHAL
-
-from .marshalingdefs import CUSTOM_MARSHAL_TYPES
-class VulkanReservedMarshalingCodegen(VulkanTypeIterator):
-    def __init__(self,
-                 cgen,
-                 variant,
-                 streamVarName,
-                 rootTypeVarName,
-                 inputVarName,
-                 ptrVarName,
-                 marshalPrefix,
-                 handlemapPrefix,
-                 direction = "write",
-                 forApiOutput = False,
-                 dynAlloc = False,
-                 mapHandles = True,
-                 handleMapOverwrites = False,
-                 doFiltering = True,
-                 stackVar=None,
-                 stackArrSize=None):
-        self.cgen = cgen
-        self.variant = variant
-        self.direction = direction
-        self.processSimple = "write" if self.direction == "write" else "read"
-        self.forApiOutput = forApiOutput
-
-        self.checked = False
-
-        self.streamVarName = streamVarName
-        self.rootTypeVarName = rootTypeVarName
-        self.inputVarName = inputVarName
-        self.ptrVar = ptrVarName
-        self.marshalPrefix = marshalPrefix
-        self.handlemapPrefix = handlemapPrefix
-
-        self.exprAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = True)
-        self.exprValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = False)
-        self.exprPrimitiveValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = False)
-        self.lenAccessor = lambda t: self.cgen.generalLengthAccess(t, parentVarName = self.inputVarName)
-        self.lenAccessorGuard = lambda t: self.cgen.generalLengthAccessGuard(
-            t, parentVarName=self.inputVarName)
-        self.filterVarAccessor = lambda t: self.cgen.filterVarAccess(t, parentVarName = self.inputVarName)
-
-        self.dynAlloc = dynAlloc
-        self.mapHandles = mapHandles
-        self.handleMapOverwrites = handleMapOverwrites
-        self.doFiltering = doFiltering
-
-        self.stackVar = stackVar
-        self.stackArrSize = stackArrSize
-
-    def getTypeForStreaming(self, vulkanType):
-        res = copy(vulkanType)
-
-        if not vulkanType.accessibleAsPointer():
-            res = res.getForAddressAccess()
-
-        if vulkanType.staticArrExpr:
-            res = res.getForAddressAccess()
-
-        if self.direction == "write":
-            return res
-        else:
-            return res.getForNonConstAccess()
-
-    def makeCastExpr(self, vulkanType):
-        return "(%s)" % (
-            self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
-    def genPtrIncr(self, sizeExpr):
-        self.cgen.stmt("*%s += %s" % (self.ptrVar, sizeExpr))
-
-    def genMemcpyAndIncr(self, varname, cast, toStreamExpr, sizeExpr, toBe = False, actualSize = 4):
-        if self.direction == "write":
-            self.cgen.stmt("memcpy(*%s, %s%s, %s)" % (varname, cast, toStreamExpr, sizeExpr))
-        else:
-            self.cgen.stmt("memcpy(%s%s, *%s, %s)" % (cast, toStreamExpr, varname, sizeExpr))
-
-        if toBe:
-            streamPrefix = "to"
-            if "read" == self.direction:
-                streamPrefix = "from"
-
-            streamMethod = streamPrefix
-
-            if 1 == actualSize:
-                streamMethod += "Byte"
-            elif 2 == actualSize:
-                streamMethod += "Be16"
-            elif 4 == actualSize:
-                streamMethod += "Be32"
-            elif 8 == actualSize:
-                streamMethod += "Be64"
-            else:
-                pass
-
-            streamNamespace = "android::base"
-            if self.direction == "write":
-                self.cgen.stmt("%s::Stream::%s((uint8_t*)*%s)" % (streamNamespace, streamMethod, varname))
-            else:
-                self.cgen.stmt("%s::Stream::%s((uint8_t*)%s)" % (streamNamespace, streamMethod, toStreamExpr))
-
-        self.genPtrIncr(sizeExpr)
-
-    def genStreamCall(self, vulkanType, toStreamExpr, sizeExpr):
-        varname = self.ptrVar
-        cast = self.makeCastExpr(self.getTypeForStreaming(vulkanType))
-        self.genMemcpyAndIncr(varname, cast, toStreamExpr, sizeExpr)
-
-    def genPrimitiveStreamCall(self, vulkanType, access):
-        varname = self.ptrVar
-        self.cgen.memcpyPrimitive(
-            self.typeInfo,
-            "(*" + varname + ")",
-            access,
-            vulkanType,
-            self.variant,
-            direction=self.direction)
-        self.genPtrIncr(str(self.cgen.countPrimitive(
-            self.typeInfo,
-            vulkanType)))
-
-    def genHandleMappingCall(self, vulkanType, access, lenAccess, lenAccessGuard):
-
-        if lenAccess is None:
-            lenAccess = "1"
-            handle64Bytes = "8"
-        else:
-            handle64Bytes = "%s * 8" % lenAccess
-
-        handle64Var = self.cgen.var()
-        if lenAccess != "1":
-            self.cgen.beginIf(lenAccess)
-            self.cgen.stmt("uint8_t* %s_ptr = (uint8_t*)(*%s)" % (handle64Var, self.ptrVar))
-            handle64VarAccess = handle64Var
-            handle64VarType = \
-                makeVulkanTypeSimple(False, "uint64_t", 1, paramName=handle64Var)
-        else:
-            self.cgen.stmt("uint64_t %s" % handle64Var)
-            handle64VarAccess = "&%s" % handle64Var
-            handle64VarType = \
-                makeVulkanTypeSimple(False, "uint64_t", 0, paramName=handle64Var)
-
-        if "" == self.handlemapPrefix:
-            mapFunc = ("(%s)" % vulkanType.typeName)
-            mapFunc64 = ("(%s)" % "uint64_t")
-        else:
-            mapFunc = self.handlemapPrefix + vulkanType.typeName
-            mapFunc64 = mapFunc
-
-        if self.direction == "write":
-            if self.handleMapOverwrites:
-                self.cgen.stmt(
-                    "static_assert(8 == sizeof(%s), \"handle map overwrite requres %s to be 8 bytes long\")" % \
-                            (vulkanType.typeName, vulkanType.typeName))
-                if "1" == lenAccess:
-                    self.cgen.stmt("*%s = (%s)%s(*%s)" % (access, vulkanType.typeName, mapFunc, access))
-                    self.genStreamCall(vulkanType, access, "8 * %s" % lenAccess)
-                else:
-                    if lenAccessGuard is not None:
-                        self.cgen.beginIf(lenAccessGuard)
-                    self.cgen.beginFor("uint32_t k = 0", "k < %s" % lenAccess, "++k")
-                    self.cgen.stmt("%s[k] = (%s)%s(%s[k])" % (access, vulkanType.typeName, mapFunc, access))
-                    self.cgen.endFor()
-                    if lenAccessGuard is not None:
-                        self.cgen.endIf()
-                    self.genPtrIncr("8 * %s" % lenAccess)
-            else:
-                if "1" == lenAccess:
-                    self.cgen.stmt("*%s = %s((*%s))" % (handle64VarAccess, mapFunc64, access))
-                    self.genStreamCall(handle64VarType, handle64VarAccess, handle64Bytes)
-                else:
-                    if lenAccessGuard is not None:
-                        self.cgen.beginIf(lenAccessGuard)
-                    self.cgen.beginFor("uint32_t k = 0", "k < %s" % lenAccess, "++k")
-                    self.cgen.stmt("uint64_t tmpval = %s(%s[k])" % (mapFunc64, access))
-                    self.cgen.stmt("memcpy(%s_ptr + k * 8, &tmpval, sizeof(uint64_t))" % (handle64Var))
-                    self.cgen.endFor()
-                    if lenAccessGuard is not None:
-                        self.cgen.endIf()
-                    self.genPtrIncr("8 * %s" % lenAccess)
-        else:
-            if "1" == lenAccess:
-                self.genStreamCall(handle64VarType, handle64VarAccess, handle64Bytes)
-                self.cgen.stmt("*%s%s = (%s)%s((%s)(*%s))" % (
-                    self.makeCastExpr(vulkanType.getForNonConstAccess()), access,
-                    vulkanType.typeName, mapFunc, vulkanType.typeName, handle64VarAccess))
-            else:
-                self.genPtrIncr("8 * %s" % lenAccess)
-                if lenAccessGuard is not None:
-                    self.cgen.beginIf(lenAccessGuard)
-                self.cgen.beginFor("uint32_t k = 0", "k < %s" % lenAccess, "++k")
-                self.cgen.stmt("uint64_t tmpval; memcpy(&tmpval, %s_ptr + k * 8, sizeof(uint64_t))" % handle64Var)
-                self.cgen.stmt("*((%s%s) + k) = tmpval ? (%s)%s((%s)tmpval) : VK_NULL_HANDLE" % (
-                    self.makeCastExpr(vulkanType.getForNonConstAccess()), access,
-                    vulkanType.typeName, mapFunc, vulkanType.typeName))
-                if lenAccessGuard is not None:
-                    self.cgen.endIf()
-                self.cgen.endFor()
-
-        if lenAccess != "1":
-            self.cgen.endIf()
-
-    def doAllocSpace(self, vulkanType):
-        if self.dynAlloc and self.direction == "read":
-            access = self.exprAccessor(vulkanType)
-            lenAccess = self.lenAccessor(vulkanType)
-            sizeof = self.cgen.sizeofExpr(vulkanType.getForValueAccess())
-            if lenAccess:
-                bytesExpr = "%s * %s" % (lenAccess, sizeof)
-            else:
-                bytesExpr = sizeof
-                lenAccess = "1"
-
-            if self.stackVar:
-                if self.stackArrSize != lenAccess:
-                    self.cgen.beginIf("%s <= %s" % (lenAccess, self.stackArrSize))
-
-                self.cgen.stmt(
-                        "%s = %s%s" % (access, self.makeCastExpr(vulkanType.getForNonConstAccess()), self.stackVar))
-
-                if self.stackArrSize != lenAccess:
-                    self.cgen.endIf()
-                    self.cgen.beginElse()
-
-                if self.stackArrSize != lenAccess:
-                    self.cgen.stmt(
-                            "%s->alloc((void**)&%s, %s)" %
-                            (self.streamVarName,
-                                access, bytesExpr))
-
-                if self.stackArrSize != lenAccess:
-                    self.cgen.endIf()
-            else:
-                self.cgen.stmt(
-                        "%s->alloc((void**)&%s, %s)" %
-                        (self.streamVarName,
-                            access, bytesExpr))
-
-    def getOptionalStringFeatureExpr(self, vulkanType):
-        streamFeature = vulkanType.getProtectStreamFeature()
-        if streamFeature is None:
-            return None
-        return "%s->getFeatureBits() & %s" % (self.streamVarName, streamFeature)
-
-    def onCheck(self, vulkanType):
-        if self.forApiOutput:
-            return
-
-        featureExpr = self.getOptionalStringFeatureExpr(vulkanType)
-        self.checked = True
-        access = self.exprAccessor(vulkanType)
-        needConsistencyCheck = False
-
-        self.cgen.line("// WARNING PTR CHECK")
-        if (self.dynAlloc and self.direction == "read") or self.direction == "write":
-            checkAccess = self.exprAccessor(vulkanType)
-            addrExpr = "&" + checkAccess
-            sizeExpr = self.cgen.sizeofExpr(vulkanType)
-        else:
-            checkName = "check_%s" % vulkanType.paramName
-            self.cgen.stmt("%s %s" % (
-                self.cgen.makeCTypeDecl(vulkanType, useParamName = False), checkName))
-            checkAccess = checkName
-            addrExpr = "&" + checkAccess
-            sizeExpr = self.cgen.sizeofExpr(vulkanType)
-            needConsistencyCheck = True
-
-        if featureExpr is not None:
-            self.cgen.beginIf(featureExpr)
-
-        self.genPrimitiveStreamCall(
-            vulkanType,
-            checkAccess)
-
-        if featureExpr is not None:
-            self.cgen.endIf()
-
-        if featureExpr is not None:
-            self.cgen.beginIf("(!(%s) || %s)" % (featureExpr, access))
-        else:
-            self.cgen.beginIf(access)
-
-        if needConsistencyCheck and featureExpr is None:
-            self.cgen.beginIf("!(%s)" % checkName)
-            self.cgen.stmt(
-                "fprintf(stderr, \"fatal: %s inconsistent between guest and host\\n\")" % (access))
-            self.cgen.endIf()
-
-    def onCheckWithNullOptionalStringFeature(self, vulkanType):
-        self.cgen.beginIf("%s->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT" % self.streamVarName)
-        self.onCheck(vulkanType)
-
-    def endCheckWithNullOptionalStringFeature(self, vulkanType):
-        self.endCheck(vulkanType)
-        self.cgen.endIf()
-        self.cgen.beginElse()
-
-    def finalCheckWithNullOptionalStringFeature(self, vulkanType):
-        self.cgen.endElse()
-
-    def endCheck(self, vulkanType):
-
-        if self.checked:
-            self.cgen.endIf()
-            self.checked = False
-
-    def genFilterFunc(self, filterfunc, env):
-
-        def loop(expr, lambdaEnv={}):
-            def do_func(expr):
-                fnamestr = expr.name.name
-                if "not" == fnamestr:
-                    return "!(%s)" % (loop(expr.args[0], lambdaEnv))
-                if "eq" == fnamestr:
-                    return "(%s == %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "and" == fnamestr:
-                    return "(%s && %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "or" == fnamestr:
-                    return "(%s || %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "bitwise_and" == fnamestr:
-                    return "(%s & %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
-                if "getfield" == fnamestr:
-                    ptrlevels = get_ptrlevels(expr.args[0].val.name)
-                    if ptrlevels == 0:
-                        return "%s.%s" % (loop(expr.args[0], lambdaEnv), expr.args[1].val)
-                    else:
-                        return "(%s(%s)).%s" % ("*" * ptrlevels, loop(expr.args[0], lambdaEnv), expr.args[1].val)
-
-                if "if" == fnamestr:
-                    return "((%s) ? (%s) : (%s))" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv), loop(expr.args[2], lambdaEnv))
-
-                return "%s(%s)" % (fnamestr, ", ".join(map(lambda e: loop(e, lambdaEnv), expr.args)))
-
-            def do_expratom(atomname, lambdaEnv= {}):
-                if lambdaEnv.get(atomname, None) is not None:
-                    return atomname
-
-                enventry = env.get(atomname, None)
-                if None != enventry:
-                    return self.getEnvAccessExpr(atomname)
-                return atomname
-
-            def get_ptrlevels(atomname, lambdaEnv= {}):
-                if lambdaEnv.get(atomname, None) is not None:
-                    return 0
-
-                enventry = env.get(atomname, None)
-                if None != enventry:
-                    return self.getPointerIndirectionLevels(atomname)
-
-                return 0
-
-            def do_exprval(expr, lambdaEnv= {}):
-                expratom = expr.val
-
-                if Atom == type(expratom):
-                    return do_expratom(expratom.name, lambdaEnv)
-
-                return "%s" % expratom
-
-            def do_lambda(expr, lambdaEnv= {}):
-                params = expr.vs
-                body = expr.body
-                newEnv = {}
-
-                for (k, v) in lambdaEnv.items():
-                    newEnv[k] = v
-
-                for p in params:
-                    newEnv[p.name] = p.typ
-
-                return "[](%s) { return %s; }" % (", ".join(list(map(lambda p: "%s %s" % (p.typ, p.name), params))), loop(body, lambdaEnv=newEnv))
-
-            if FuncExpr == type(expr):
-                return do_func(expr)
-            if FuncLambda == type(expr):
-                return do_lambda(expr)
-            elif FuncExprVal == type(expr):
-                return do_exprval(expr)
-
-        return loop(filterfunc)
-
-    def beginFilterGuard(self, vulkanType):
-        if vulkanType.filterVar == None:
-            return
-
-        if self.doFiltering == False:
-            return
-
-        filterVarAccess = self.getEnvAccessExpr(vulkanType.filterVar)
-
-        filterValsExpr = None
-        filterFuncExpr = None
-        filterExpr = None
-
-        filterFeature = "%s->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.streamVarName
-
-        if None != vulkanType.filterVals:
-            filterValsExpr = " || ".join(map(lambda filterval: "(%s == %s)" % (filterval, filterVarAccess), vulkanType.filterVals))
-
-        if None != vulkanType.filterFunc:
-            filterFuncExpr = self.genFilterFunc(vulkanType.filterFunc, self.currentStructInfo.environment)
-
-        if None != filterValsExpr and None != filterFuncExpr:
-            filterExpr = "%s || %s" % (filterValsExpr, filterFuncExpr)
-        elif None == filterValsExpr and None == filterFuncExpr:
-            # Assume is bool
-            self.cgen.beginIf(filterVarAccess)
-        elif None != filterValsExpr:
-            self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterValsExpr))
-        elif None != filterFuncExpr:
-            self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterFuncExpr))
-
-    def endFilterGuard(self, vulkanType, cleanupExpr=None):
-        if vulkanType.filterVar == None:
-            return
-
-        if self.doFiltering == False:
-            return
-
-        if cleanupExpr == None:
-            self.cgen.endIf()
-        else:
-            self.cgen.endIf()
-            self.cgen.beginElse()
-            self.cgen.stmt(cleanupExpr)
-            self.cgen.endElse()
-
-    def getEnvAccessExpr(self, varName):
-        parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
-        if parentEnvEntry != None:
-            isParentMember = parentEnvEntry["structmember"]
-
-            if isParentMember:
-                envAccess = self.exprValueAccessor(list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0])
-            else:
-                envAccess = varName
-            return envAccess
-
-        return None
-
-    def getPointerIndirectionLevels(self, varName):
-        parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
-        if parentEnvEntry != None:
-            isParentMember = parentEnvEntry["structmember"]
-
-            if isParentMember:
-                return list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0].pointerIndirectionLevels
-            else:
-                return 0
-            return 0
-
-        return 0
-
-
-    def onCompoundType(self, vulkanType):
-
-        access = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-
-        self.beginFilterGuard(vulkanType)
-
-        if vulkanType.pointerIndirectionLevels > 0:
-            self.doAllocSpace(vulkanType)
-
-        if lenAccess is not None:
-            loopVar = "i"
-            access = "%s + %s" % (access, loopVar)
-            forInit = "uint32_t %s = 0" % loopVar
-            forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
-            forIncr = "++%s" % loopVar
-            self.cgen.beginFor(forInit, forCond, forIncr)
-
-        accessWithCast = "%s(%s)" % (self.makeCastExpr(
-            self.getTypeForStreaming(vulkanType)), access)
-
-        callParams = [self.streamVarName, self.rootTypeVarName, accessWithCast, self.ptrVar]
-
-        for (bindName, localName) in vulkanType.binds.items():
-            callParams.append(self.getEnvAccessExpr(localName))
-
-        self.cgen.funcCall(None, self.marshalPrefix + vulkanType.typeName,
-                           callParams)
-
-        if lenAccess is not None:
-            self.cgen.endFor()
-
-        if self.direction == "read":
-            self.endFilterGuard(vulkanType, "%s = 0" % self.exprAccessor(vulkanType))
-        else:
-            self.endFilterGuard(vulkanType)
-
-    def onString(self, vulkanType):
-        access = self.exprAccessor(vulkanType)
-
-        if self.direction == "write":
-            self.cgen.beginBlock()
-            self.cgen.stmt("uint32_t l = %s ? strlen(%s): 0" % (access, access))
-            self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&l", "sizeof(uint32_t)", toBe = True, actualSize = 4)
-            self.genMemcpyAndIncr(self.ptrVar, "(char*)", access, "l")
-            self.cgen.endBlock()
-        else:
-            castExpr = \
-                self.makeCastExpr( \
-                    self.getTypeForStreaming( \
-                        vulkanType.getForAddressAccess()))
-            self.cgen.stmt( \
-                "%s->loadStringInPlaceWithStreamPtr(%s&%s, %s)" % (self.streamVarName, castExpr, access, self.ptrVar))
-
-    def onStringArray(self, vulkanType):
-        access = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        if self.direction == "write":
-            self.cgen.beginBlock()
-
-            self.cgen.stmt("uint32_t c = 0")
-            if lenAccessGuard is not None:
-                self.cgen.beginIf(lenAccessGuard)
-            self.cgen.stmt("c = %s" % (lenAccess))
-            if lenAccessGuard is not None:
-                self.cgen.endIf()
-            self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&c", "sizeof(uint32_t)", toBe = True, actualSize = 4)
-
-            self.cgen.beginFor("uint32_t i = 0", "i < c", "++i")
-            self.cgen.stmt("uint32_t l = %s ? strlen(%s[i]): 0" % (access, access))
-            self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&l", "sizeof(uint32_t)", toBe = True, actualSize = 4)
-            self.cgen.beginIf("l")
-            self.genMemcpyAndIncr(self.ptrVar, "(char*)", "(%s[i])" % access, "l")
-            self.cgen.endIf()
-            self.cgen.endFor()
-
-            self.cgen.endBlock()
-        else:
-            castExpr = \
-                self.makeCastExpr( \
-                    self.getTypeForStreaming( \
-                        vulkanType.getForAddressAccess()))
-
-            self.cgen.stmt("%s->loadStringArrayInPlaceWithStreamPtr(%s&%s, %s)" % (self.streamVarName, castExpr, access, self.ptrVar))
-
-    def onStaticArr(self, vulkanType):
-        access = self.exprValueAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        finalLenExpr = "%s * %s" % (lenAccess, self.cgen.sizeofExpr(vulkanType))
-        self.genStreamCall(vulkanType, access, finalLenExpr)
-
-    # Old version VkEncoder may have some sType values conflict with VkDecoder
-    # of new versions. For host decoder, it should not carry the incorrect old
-    # sType values to the |forUnmarshaling| struct. Instead it should overwrite
-    # the sType value.
-    def overwriteSType(self, vulkanType):
-        if self.direction == "read":
-            sTypeParam = copy(vulkanType)
-            sTypeParam.paramName = "sType"
-            sTypeAccess = self.exprAccessor(sTypeParam)
-
-            typeName = vulkanType.parent.typeName
-            if typeName in STYPE_OVERRIDE:
-                self.cgen.stmt("%s = %s" %
-                               (sTypeAccess, STYPE_OVERRIDE[typeName]))
-
-    def onStructExtension(self, vulkanType):
-        self.overwriteSType(vulkanType)
-
-        sTypeParam = copy(vulkanType)
-        sTypeParam.paramName = "sType"
-
-        access = self.exprAccessor(vulkanType)
-        sizeVar = "%s_size" % vulkanType.paramName
-
-        if self.direction == "read":
-            castedAccessExpr = "(%s)(%s)" % ("void*", access)
-        else:
-            castedAccessExpr = access
-
-        sTypeAccess = self.exprAccessor(sTypeParam)
-        self.cgen.beginIf("%s == VK_STRUCTURE_TYPE_MAX_ENUM" % self.rootTypeVarName)
-        self.cgen.stmt("%s = %s" % (self.rootTypeVarName, sTypeAccess))
-        self.cgen.endIf()
-
-        if self.direction == "read" and self.dynAlloc:
-            self.cgen.stmt("uint32_t %s" % sizeVar)
-
-            self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)", "&" + sizeVar, "sizeof(uint32_t)", toBe = True, actualSize = 4)
-
-            self.cgen.stmt("%s = nullptr" % access)
-            self.cgen.beginIf(sizeVar)
-            self.cgen.stmt( \
-                    "%s->alloc((void**)&%s, sizeof(VkStructureType))" %
-                    (self.streamVarName, access))
-
-            self.genStreamCall(vulkanType, access, "sizeof(VkStructureType)")
-            self.cgen.stmt("VkStructureType extType = *(VkStructureType*)(%s)" % access)
-            self.cgen.stmt( \
-                    "%s->alloc((void**)&%s, %s(%s->getFeatureBits(), %s, %s))" %
-                    (self.streamVarName, access, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME, self.streamVarName, self.rootTypeVarName, access))
-            self.cgen.stmt("*(VkStructureType*)%s = extType" % access)
-
-            self.cgen.funcCall(None, self.marshalPrefix + "extension_struct",
-                [self.streamVarName, self.rootTypeVarName, castedAccessExpr, self.ptrVar])
-            self.cgen.endIf()
-        else:
-
-            self.cgen.funcCall(None, self.marshalPrefix + "extension_struct",
-                [self.streamVarName, self.rootTypeVarName, castedAccessExpr, self.ptrVar])
-
-    def onPointer(self, vulkanType):
-        access = self.exprAccessor(vulkanType)
-
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        self.beginFilterGuard(vulkanType)
-        self.doAllocSpace(vulkanType)
-
-        if vulkanType.isHandleType() and self.mapHandles:
-            self.genHandleMappingCall(
-                vulkanType, access, lenAccess, lenAccessGuard)
-        else:
-            if self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
-                if lenAccess is not None:
-                    if lenAccessGuard is not None:
-                        self.cgen.beginIf(lenAccessGuard)
-                    self.cgen.beginFor("uint32_t i = 0", "i < (uint32_t)%s" % lenAccess, "++i")
-                    self.genPrimitiveStreamCall(vulkanType.getForValueAccess(), "%s[i]" % access)
-                    self.cgen.endFor()
-                    if lenAccessGuard is not None:
-                        self.cgen.endIf()
-                else:
-                    self.genPrimitiveStreamCall(vulkanType.getForValueAccess(), "(*%s)" % access)
-            else:
-                if lenAccess is not None:
-                    finalLenExpr = "%s * %s" % (
-                        lenAccess, self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
-                else:
-                    finalLenExpr = "%s" % (
-                        self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
-                self.genStreamCall(vulkanType, access, finalLenExpr)
-
-        if self.direction == "read":
-            self.endFilterGuard(vulkanType, "%s = 0" % access)
-        else:
-            self.endFilterGuard(vulkanType)
-
-    def onValue(self, vulkanType):
-        self.beginFilterGuard(vulkanType)
-
-        if vulkanType.isHandleType() and self.mapHandles:
-            access = self.exprAccessor(vulkanType)
-            self.genHandleMappingCall(
-                vulkanType.getForAddressAccess(), access, "1", None)
-        elif self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
-            access = self.exprPrimitiveValueAccessor(vulkanType)
-            self.genPrimitiveStreamCall(vulkanType, access)
-        else:
-            access = self.exprAccessor(vulkanType)
-            self.genStreamCall(vulkanType, access, self.cgen.sizeofExpr(vulkanType))
-
-        self.endFilterGuard(vulkanType)
-
-    def streamLetParameter(self, structInfo, letParamInfo):
-        filterFeature = "%s->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.streamVarName
-        self.cgen.stmt("%s %s = 1" % (letParamInfo.typeName, letParamInfo.paramName))
-
-        self.cgen.beginIf(filterFeature)
-
-        if self.direction == "write":
-            bodyExpr = self.currentStructInfo.environment[letParamInfo.paramName]["body"]
-            self.cgen.stmt("%s = %s" % (letParamInfo.paramName, self.genFilterFunc(bodyExpr, self.currentStructInfo.environment)))
-
-        self.genPrimitiveStreamCall(letParamInfo, letParamInfo.paramName)
-
-        self.cgen.endIf()
-
-class VulkanReservedMarshaling(VulkanWrapperGenerator):
-
-    def __init__(self, module, typeInfo, variant="host"):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.cgenHeader = CodeGen()
-        self.cgenImpl = CodeGen()
-
-        self.variant = variant
-
-        self.currentFeature = None
-        self.apiOpcodes = {}
-        self.dynAlloc = self.variant != "guest"
-        self.ptrVarName = "ptr"
-        self.ptrVarType = makeVulkanTypeSimple(False, "uint8_t", 2, self.ptrVarName)
-        self.ptrVarTypeUnmarshal = makeVulkanTypeSimple(False, "uint8_t", 2, self.ptrVarName)
-
-        if self.variant == "guest":
-            self.marshalingParams = PARAMETERS_MARSHALING_GUEST
-        else:
-            self.marshalingParams = PARAMETERS_MARSHALING
-
-        self.writeCodegen = \
-            VulkanReservedMarshalingCodegen(
-                None,
-                self.variant,
-                VULKAN_STREAM_VAR_NAME,
-                ROOT_TYPE_VAR_NAME,
-                MARSHAL_INPUT_VAR_NAME,
-                self.ptrVarName,
-                API_PREFIX_RESERVEDMARSHAL,
-                "get_host_u64_" if "guest" == self.variant else "",
-                direction = "write")
-
-        self.readCodegen = \
-            VulkanReservedMarshalingCodegen(
-                None,
-                self.variant,
-                VULKAN_STREAM_VAR_NAME,
-                ROOT_TYPE_VAR_NAME,
-                UNMARSHAL_INPUT_VAR_NAME,
-                self.ptrVarName,
-                API_PREFIX_RESERVEDUNMARSHAL,
-                "unbox_" if "host" == self.variant else "",
-                direction = "read",
-                dynAlloc=self.dynAlloc)
-
-        self.knownDefs = {}
-
-        self.extensionMarshalPrototype = \
-            VulkanAPI(API_PREFIX_RESERVEDMARSHAL + "extension_struct",
-                      STREAM_RET_TYPE,
-                      self.marshalingParams +
-                      [STRUCT_EXTENSION_PARAM, self.ptrVarType])
-
-        self.extensionUnmarshalPrototype = \
-            VulkanAPI(API_PREFIX_RESERVEDUNMARSHAL + "extension_struct",
-                      STREAM_RET_TYPE,
-                      self.marshalingParams +
-                      [STRUCT_EXTENSION_PARAM_FOR_WRITE, self.ptrVarTypeUnmarshal])
-
-    def onBegin(self,):
-        VulkanWrapperGenerator.onBegin(self)
-        self.module.appendImpl(self.cgenImpl.makeFuncDecl(self.extensionMarshalPrototype))
-        self.module.appendImpl(self.cgenImpl.makeFuncDecl(self.extensionUnmarshalPrototype))
-
-    def onBeginFeature(self, featureName, featureType):
-        VulkanWrapperGenerator.onBeginFeature(self, featureName, featureType)
-        self.currentFeature = featureName
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-        if name in self.knownDefs:
-            return
-
-        category = self.typeInfo.categoryOf(name)
-
-        if category in ["struct", "union"] and alias:
-            if self.variant != "host":
-                self.module.appendHeader(
-                    self.cgenHeader.makeFuncAlias(API_PREFIX_RESERVEDMARSHAL + name,
-                                                  API_PREFIX_RESERVEDMARSHAL + alias))
-            if self.variant != "guest":
-                self.module.appendHeader(
-                    self.cgenHeader.makeFuncAlias(API_PREFIX_RESERVEDUNMARSHAL + name,
-                                                  API_PREFIX_RESERVEDUNMARSHAL + alias))
-
-        if category in ["struct", "union"] and not alias:
-
-            structInfo = self.typeInfo.structs[name]
-
-            marshalParams = self.marshalingParams + \
-                [makeVulkanTypeSimple(True, name, 1, MARSHAL_INPUT_VAR_NAME),
-                        self.ptrVarType]
-
-            freeParams = []
-            letParams = []
-
-            for (envname, bindingInfo) in list(sorted(structInfo.environment.items(), key = lambda kv: kv[0])):
-                if None == bindingInfo["binding"]:
-                    freeParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
-                else:
-                    if not bindingInfo["structmember"]:
-                        letParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
-
-            marshalPrototype = \
-                VulkanAPI(API_PREFIX_RESERVEDMARSHAL + name,
-                          STREAM_RET_TYPE,
-                          marshalParams + freeParams)
-
-            marshalPrototypeNoFilter = \
-                VulkanAPI(API_PREFIX_RESERVEDMARSHAL + name,
-                          STREAM_RET_TYPE,
-                          marshalParams)
-
-            def structMarshalingCustom(cgen):
-                self.writeCodegen.cgen = cgen
-                self.writeCodegen.currentStructInfo = structInfo
-                marshalingCode = \
-                    CUSTOM_MARSHAL_TYPES[name]["common"] + \
-                    CUSTOM_MARSHAL_TYPES[name]["reservedmarshaling"].format(
-                        streamVarName=self.writeCodegen.streamVarName,
-                        rootTypeVarName=self.writeCodegen.rootTypeVarName,
-                        inputVarName=self.writeCodegen.inputVarName,
-                        newInputVarName=self.writeCodegen.inputVarName + "_new")
-                for line in marshalingCode.split('\n'):
-                    cgen.line(line)
-
-            def structMarshalingDef(cgen):
-                self.writeCodegen.cgen = cgen
-                self.writeCodegen.currentStructInfo = structInfo
-                self.writeCodegen.cgen.stmt("(void)%s" % VULKAN_STREAM_VAR_NAME)
-                self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
-                if category == "struct":
-                    # marshal 'let' parameters first
-                    for letp in letParams:
-                        self.writeCodegen.streamLetParameter(self.typeInfo, letp)
-
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.writeCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.writeCodegen)
-
-            def structMarshalingDefNoFilter(cgen):
-                self.writeCodegen.cgen = cgen
-                self.writeCodegen.currentStructInfo = structInfo
-                self.writeCodegen.doFiltering = False
-                self.writeCodegen.cgen.stmt("(void)%s" % VULKAN_STREAM_VAR_NAME)
-                self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
-                if category == "struct":
-                    # marshal 'let' parameters first
-                    for letp in letParams:
-                        self.writeCodegen.streamLetParameter(self.typeInfo, letp)
-
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.writeCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.writeCodegen)
-                self.writeCodegen.doFiltering = True
-
-            if self.variant != "host":
-                self.module.appendHeader(
-                    self.cgenHeader.makeFuncDecl(marshalPrototype))
-
-                if name in CUSTOM_MARSHAL_TYPES:
-                    self.module.appendImpl(
-                        self.cgenImpl.makeFuncImpl(
-                            marshalPrototype, structMarshalingCustom))
-                else:
-                    self.module.appendImpl(
-                        self.cgenImpl.makeFuncImpl(
-                            marshalPrototype, structMarshalingDef))
-
-                if freeParams != []:
-                    self.module.appendHeader(
-                        self.cgenHeader.makeFuncDecl(marshalPrototypeNoFilter))
-                    self.module.appendImpl(
-                        self.cgenImpl.makeFuncImpl(
-                            marshalPrototypeNoFilter, structMarshalingDefNoFilter))
-
-            unmarshalPrototype = \
-                VulkanAPI(API_PREFIX_RESERVEDUNMARSHAL + name,
-                          STREAM_RET_TYPE,
-                          self.marshalingParams + [makeVulkanTypeSimple(False, name, 1, UNMARSHAL_INPUT_VAR_NAME), self.ptrVarTypeUnmarshal] + freeParams)
-
-            unmarshalPrototypeNoFilter = \
-                VulkanAPI(API_PREFIX_RESERVEDUNMARSHAL + name,
-                          STREAM_RET_TYPE,
-                          self.marshalingParams + [makeVulkanTypeSimple(False, name, 1, UNMARSHAL_INPUT_VAR_NAME), self.ptrVarTypeUnmarshal])
-
-            def structUnmarshalingCustom(cgen):
-                self.readCodegen.cgen = cgen
-                self.readCodegen.currentStructInfo = structInfo
-                unmarshalingCode = \
-                    CUSTOM_MARSHAL_TYPES[name]["common"] + \
-                    CUSTOM_MARSHAL_TYPES[name]["reservedunmarshaling"].format(
-                        streamVarName=self.readCodegen.streamVarName,
-                        rootTypeVarName=self.readCodegen.rootTypeVarName,
-                        inputVarName=self.readCodegen.inputVarName,
-                        newInputVarName=self.readCodegen.inputVarName + "_new")
-                for line in unmarshalingCode.split('\n'):
-                    cgen.line(line)
-
-            def structUnmarshalingDef(cgen):
-                self.readCodegen.cgen = cgen
-                self.readCodegen.currentStructInfo = structInfo
-                if category == "struct":
-                    # unmarshal 'let' parameters first
-                    for letp in letParams:
-                        self.readCodegen.streamLetParameter(self.typeInfo, letp)
-
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.readCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.readCodegen)
-
-            def structUnmarshalingDefNoFilter(cgen):
-                self.readCodegen.cgen = cgen
-                self.readCodegen.currentStructInfo = structInfo
-                self.readCodegen.doFiltering = False
-                if category == "struct":
-                    # unmarshal 'let' parameters first
-                    for letp in letParams:
-                        iterateVulkanType(self.typeInfo, letp, self.readCodegen)
-                    for member in structInfo.members:
-                        iterateVulkanType(self.typeInfo, member, self.readCodegen)
-                if category == "union":
-                    iterateVulkanType(self.typeInfo, structInfo.members[0], self.readCodegen)
-                self.readCodegen.doFiltering = True
-
-            if self.variant != "guest":
-                self.module.appendHeader(
-                    self.cgenHeader.makeFuncDecl(unmarshalPrototype))
-
-                if name in CUSTOM_MARSHAL_TYPES:
-                    self.module.appendImpl(
-                        self.cgenImpl.makeFuncImpl(
-                            unmarshalPrototype, structUnmarshalingCustom))
-                else:
-                    self.module.appendImpl(
-                        self.cgenImpl.makeFuncImpl(
-                            unmarshalPrototype, structUnmarshalingDef))
-
-                if freeParams != []:
-                    self.module.appendHeader(
-                        self.cgenHeader.makeFuncDecl(unmarshalPrototypeNoFilter))
-                    self.module.appendImpl(
-                        self.cgenImpl.makeFuncImpl(
-                            unmarshalPrototypeNoFilter, structUnmarshalingDefNoFilter))
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-    def doExtensionStructMarshalingCodegen(self, cgen, retType, extParam, forEach, funcproto, direction):
-        accessVar = "structAccess"
-        sizeVar = "currExtSize"
-        cgen.stmt("VkInstanceCreateInfo* %s = (VkInstanceCreateInfo*)(%s)" % (accessVar, extParam.paramName))
-        cgen.stmt("uint32_t %s = %s(%s->getFeatureBits(), %s, %s)" % (sizeVar, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME, VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, extParam.paramName))
-
-        cgen.beginIf("!%s && %s" % (sizeVar, extParam.paramName))
-
-        cgen.line("// unknown struct extension; skip and call on its pNext field");
-        cgen.funcCall(None, funcproto.name, ["vkStream", ROOT_TYPE_VAR_NAME, "(void*)%s->pNext" % accessVar, self.ptrVarName])
-        cgen.stmt("return")
-
-        cgen.endIf()
-        cgen.beginElse()
-
-        cgen.line("// known or null extension struct")
-
-        streamNamespace = "android::base"
-
-        if direction == "write":
-            cgen.stmt("memcpy(*%s, &%s, sizeof(uint32_t));" % (self.ptrVarName, sizeVar))
-            cgen.stmt("%s::Stream::toBe32((uint8_t*)*%s); *%s += sizeof(uint32_t)" % (streamNamespace, self.ptrVarName, self.ptrVarName))
-        elif not self.dynAlloc:
-            cgen.stmt("memcpy(&%s, *%s, sizeof(uint32_t));" % (sizeVar, self.ptrVarName))
-            cgen.stmt("%s::Stream::fromBe32((uint8_t*)&%s); *%s += sizeof(uint32_t)" % (streamNamespace, sizeVar, self.ptrVarName))
-
-        cgen.beginIf("!%s" % (sizeVar))
-        cgen.line("// exit if this was a null extension struct (size == 0 in this branch)")
-        cgen.stmt("return")
-        cgen.endIf()
-
-        cgen.endIf()
-
-        # Now we can do stream stuff
-        if direction == "write":
-            cgen.stmt("memcpy(*%s, %s, sizeof(VkStructureType)); *%s += sizeof(VkStructureType)" % (self.ptrVarName, extParam.paramName, self.ptrVarName))
-        elif not self.dynAlloc:
-            cgen.stmt("uint64_t pNext_placeholder")
-            placeholderAccess = "(&pNext_placeholder)"
-            cgen.stmt("memcpy(%s, *%s, sizeof(VkStructureType)); *%s += sizeof(VkStructureType)" % (placeholderAccess, self.ptrVarName, self.ptrVarName))
-            cgen.stmt("(void)pNext_placeholder")
-
-        def fatalDefault(cgen):
-            cgen.line("// fatal; the switch is only taken if the extension struct is known")
-            if self.variant != "guest":
-                cgen.stmt("fprintf(stderr, \" %s, Unhandled Vulkan structure type %s [%d], aborting.\\n\", __func__, string_VkStructureType(VkStructureType(structType)), structType)")
-            cgen.stmt("abort()")
-            pass
-
-        self.emitForEachStructExtension(
-            cgen,
-            retType,
-            extParam,
-            forEach,
-            defaultEmit=fatalDefault,
-            rootTypeVar=ROOT_TYPE_PARAM)
-
-    def onEnd(self,):
-        VulkanWrapperGenerator.onEnd(self)
-
-        def forEachExtensionMarshal(ext, castedAccess, cgen):
-            cgen.funcCall(None, API_PREFIX_RESERVEDMARSHAL + ext.name,
-                          [VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, castedAccess, self.ptrVarName])
-
-        def forEachExtensionUnmarshal(ext, castedAccess, cgen):
-            cgen.funcCall(None, API_PREFIX_RESERVEDUNMARSHAL + ext.name,
-                          [VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, castedAccess, self.ptrVarName])
-
-        if self.variant != "host":
-            self.module.appendImpl(
-                self.cgenImpl.makeFuncImpl(
-                    self.extensionMarshalPrototype,
-                    lambda cgen: self.doExtensionStructMarshalingCodegen(
-                        cgen,
-                        STREAM_RET_TYPE,
-                        STRUCT_EXTENSION_PARAM,
-                        forEachExtensionMarshal,
-                        self.extensionMarshalPrototype,
-                        "write")))
-
-        if self.variant != "guest":
-            self.module.appendImpl(
-                self.cgenImpl.makeFuncImpl(
-                    self.extensionUnmarshalPrototype,
-                    lambda cgen: self.doExtensionStructMarshalingCodegen(
-                        cgen,
-                        STREAM_RET_TYPE,
-                        STRUCT_EXTENSION_PARAM_FOR_WRITE,
-                        forEachExtensionUnmarshal,
-                        self.extensionUnmarshalPrototype,
-                        "read")))
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/subdecode.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/subdecode.py
deleted file mode 100644
index 3c535b3..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/subdecode.py
+++ /dev/null
@@ -1,410 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-from .common.codegen import CodeGen, VulkanWrapperGenerator
-from .common.vulkantypes import VulkanAPI, iterateVulkanType, VulkanType
-
-from .reservedmarshaling import VulkanReservedMarshalingCodegen
-from .transform import TransformCodegen
-
-from .wrapperdefs import API_PREFIX_RESERVEDUNMARSHAL
-from .wrapperdefs import MAX_PACKET_LENGTH
-from .wrapperdefs import ROOT_TYPE_DEFAULT_VALUE
-
-
-decoder_decl_preamble = """
-"""
-
-decoder_impl_preamble = """
-"""
-
-global_state_prefix = "this->on_"
-
-READ_STREAM = "readStream"
-WRITE_STREAM = "vkStream"
-
-# Driver workarounds for APIs that don't work well multithreaded
-driver_workarounds_global_lock_apis = [
-    "vkCreatePipelineLayout",
-    "vkDestroyPipelineLayout",
-]
-
-MAX_STACK_ITEMS = "16"
-
-
-def emit_param_decl_for_reading(param, cgen):
-    if param.staticArrExpr:
-        cgen.stmt(
-            cgen.makeRichCTypeDecl(param.getForNonConstAccess()))
-    else:
-        cgen.stmt(
-            cgen.makeRichCTypeDecl(param))
-
-    if param.pointerIndirectionLevels > 0:
-        lenAccess = cgen.generalLengthAccess(param)
-        if not lenAccess:
-            lenAccess = "1"
-        arrSize = "1" if "1" == lenAccess else "MAX_STACK_ITEMS"
-
-        typeHere = "uint8_t*" if "void" == param.typeName else param.typeName
-        cgen.stmt("%s%s stack_%s[%s]" % (
-            typeHere, "*" * (param.pointerIndirectionLevels - 1), param.paramName, arrSize))
-
-
-def emit_unmarshal(typeInfo, param, cgen, output=False, destroy=False, noUnbox=False):
-    if destroy:
-        iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
-            cgen,
-            "host",
-            READ_STREAM,
-            ROOT_TYPE_DEFAULT_VALUE,
-            param.paramName,
-            "readStreamPtrPtr",
-            API_PREFIX_RESERVEDUNMARSHAL,
-            "",
-            direction="read",
-            dynAlloc=True))
-        lenAccess = cgen.generalLengthAccess(param)
-        lenAccessGuard = cgen.generalLengthAccessGuard(param)
-        if None == lenAccess or "1" == lenAccess:
-            cgen.stmt("boxed_%s_preserve = %s" %
-                      (param.paramName, param.paramName))
-            cgen.stmt("%s = unbox_%s(%s)" %
-                      (param.paramName, param.typeName, param.paramName))
-        else:
-            if lenAccessGuard is not None:
-                self.cgen.beginIf(lenAccessGuard)
-            cgen.beginFor("uint32_t i = 0", "i < %s" % lenAccess, "++i")
-            cgen.stmt("boxed_%s_preserve[i] = %s[i]" %
-                      (param.paramName, param.paramName))
-            cgen.stmt("((%s*)(%s))[i] = unbox_%s(%s[i])" % (param.typeName,
-                                                            param.paramName, param.typeName, param.paramName))
-            cgen.endFor()
-            if lenAccessGuard is not None:
-                self.cgen.endIf()
-    else:
-        if noUnbox:
-            cgen.line("// No unbox for %s" % (param.paramName))
-
-        lenAccess = cgen.generalLengthAccess(param)
-        if not lenAccess:
-            lenAccess = "1"
-        arrSize = "1" if "1" == lenAccess else "MAX_STACK_ITEMS"
-
-        iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
-            cgen,
-            "host",
-            READ_STREAM,
-            ROOT_TYPE_DEFAULT_VALUE,
-            param.paramName,
-            "readStreamPtrPtr",
-            API_PREFIX_RESERVEDUNMARSHAL,
-            "" if (output or noUnbox) else "unbox_",
-            direction="read",
-            dynAlloc=True,
-            stackVar="stack_%s" % param.paramName,
-            stackArrSize=arrSize))
-
-
-def emit_dispatch_unmarshal(typeInfo, param, cgen, globalWrapped):
-    if globalWrapped:
-        cgen.stmt(
-            "// Begin global wrapped dispatchable handle unboxing for %s" % param.paramName)
-        iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
-            cgen,
-            "host",
-            READ_STREAM,
-            ROOT_TYPE_DEFAULT_VALUE,
-            param.paramName,
-            "readStreamPtrPtr",
-            API_PREFIX_RESERVEDUNMARSHAL,
-            "",
-            direction="read",
-            dynAlloc=True))
-    else:
-        cgen.stmt(
-            "// Begin non wrapped dispatchable handle unboxing for %s" % param.paramName)
-        # cgen.stmt("%s->unsetHandleMapping()" % READ_STREAM)
-        iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
-            cgen,
-            "host",
-            READ_STREAM,
-            ROOT_TYPE_DEFAULT_VALUE,
-            param.paramName,
-            "readStreamPtrPtr",
-            API_PREFIX_RESERVEDUNMARSHAL,
-            "",
-            direction="read",
-            dynAlloc=True))
-        cgen.stmt("auto unboxed_%s = unbox_%s(%s)" %
-                  (param.paramName, param.typeName, param.paramName))
-        cgen.stmt("auto vk = dispatch_%s(%s)" %
-                  (param.typeName, param.paramName))
-        cgen.stmt("// End manual dispatchable handle unboxing for %s" %
-                  param.paramName)
-
-
-def emit_transform(typeInfo, param, cgen, variant="tohost"):
-    res = \
-        iterateVulkanType(typeInfo, param, TransformCodegen(
-            cgen, param.paramName, "globalstate", "transform_%s_" % variant, variant))
-    if not res:
-        cgen.stmt("(void)%s" % param.paramName)
-
-# Everything here elides the initial arg
-
-
-class DecodingParameters(object):
-    def __init__(self, api: VulkanAPI):
-        self.params: list[VulkanType] = []
-        self.toRead: list[VulkanType] = []
-        self.toWrite: list[VulkanType] = []
-
-        for i, param in enumerate(api.parameters[1:]):
-            if i == 0 and param.isDispatchableHandleType():
-                param.dispatchHandle = True
-
-            if param.isNonDispatchableHandleType() and param.isCreatedBy(api):
-                param.nonDispatchableHandleCreate = True
-
-            if param.isNonDispatchableHandleType() and param.isDestroyedBy(api):
-                param.nonDispatchableHandleDestroy = True
-
-            if param.isDispatchableHandleType() and param.isCreatedBy(api):
-                param.dispatchableHandleCreate = True
-
-            if param.isDispatchableHandleType() and param.isDestroyedBy(api):
-                param.dispatchableHandleDestroy = True
-
-            self.toRead.append(param)
-
-            if param.possiblyOutput():
-                self.toWrite.append(param)
-
-            self.params.append(param)
-
-
-def emit_call_log(api, cgen):
-    decodingParams = DecodingParameters(api)
-    paramsToRead = decodingParams.toRead
-
-    # cgen.beginIf("m_logCalls")
-    paramLogFormat = "%p"
-    paramLogArgs = ["(void*)boxed_dispatchHandle"]
-
-    for p in paramsToRead:
-        paramLogFormat += "0x%llx "
-    for p in paramsToRead:
-        paramLogArgs.append("(unsigned long long)%s" % (p.paramName))
-    # cgen.stmt("fprintf(stderr, \"substream %%p: call %s %s\\n\", readStream, %s)" % (api.name, paramLogFormat, ", ".join(paramLogArgs)))
-    # cgen.endIf()
-
-
-def emit_decode_parameters(typeInfo, api, cgen, globalWrapped=False):
-
-    decodingParams = DecodingParameters(api)
-
-    paramsToRead = decodingParams.toRead
-
-    for p in paramsToRead:
-        emit_param_decl_for_reading(p, cgen)
-
-    i = 0
-    for p in paramsToRead:
-        lenAccess = cgen.generalLengthAccess(p)
-
-        if p.dispatchHandle:
-            emit_dispatch_unmarshal(typeInfo, p, cgen, globalWrapped)
-        else:
-            destroy = p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy
-            noUnbox = False
-
-            if p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy:
-                destroy = True
-                cgen.stmt(
-                    "// Begin manual non dispatchable handle destroy unboxing for %s" % p.paramName)
-                if None == lenAccess or "1" == lenAccess:
-                    cgen.stmt("%s boxed_%s_preserve" %
-                              (p.typeName, p.paramName))
-                else:
-                    cgen.stmt("%s* boxed_%s_preserve; %s->alloc((void**)&boxed_%s_preserve, %s * sizeof(%s))" %
-                              (p.typeName, p.paramName, READ_STREAM, p.paramName, lenAccess, p.typeName))
-
-            if p.possiblyOutput():
-                cgen.stmt(
-                    "// Begin manual dispatchable handle unboxing for %s" % p.paramName)
-                cgen.stmt("%s->unsetHandleMapping()" % READ_STREAM)
-
-            emit_unmarshal(typeInfo, p, cgen, output=p.possiblyOutput(
-            ), destroy=destroy, noUnbox=noUnbox)
-        i += 1
-
-    for p in paramsToRead:
-        emit_transform(typeInfo, p, cgen, variant="tohost")
-
-    emit_call_log(api, cgen)
-
-
-def emit_dispatch_call(api, cgen):
-
-    decodingParams = DecodingParameters(api)
-
-    customParams = ["(VkCommandBuffer)dispatchHandle"]
-
-    for (i, p) in enumerate(api.parameters[1:]):
-        customParam = p.paramName
-        if decodingParams.params[i].dispatchHandle:
-            customParam = "unboxed_%s" % p.paramName
-        customParams.append(customParam)
-
-    if api.name in driver_workarounds_global_lock_apis:
-        cgen.stmt("lock()")
-
-    cgen.vkApiCall(api, customPrefix="vk->", customParameters=customParams,
-                    checkForDeviceLost=True, globalStatePrefix=global_state_prefix,
-                    checkForOutOfMemory=True)
-
-    if api.name in driver_workarounds_global_lock_apis:
-        cgen.stmt("unlock()")
-
-
-def emit_global_state_wrapped_call(api, cgen, context=False):
-    customParams = ["pool", "(VkCommandBuffer)(boxed_dispatchHandle)"] + \
-        list(map(lambda p: p.paramName, api.parameters[1:]))
-    if context:
-        customParams += ["context"];
-    cgen.vkApiCall(api, customPrefix=global_state_prefix,
-                   customParameters=customParams, checkForDeviceLost=True,
-                   checkForOutOfMemory=True, globalStatePrefix=global_state_prefix)
-
-
-def emit_default_decoding(typeInfo, api, cgen):
-    emit_decode_parameters(typeInfo, api, cgen)
-    emit_dispatch_call(api, cgen)
-
-
-def emit_global_state_wrapped_decoding(typeInfo, api, cgen):
-    emit_decode_parameters(typeInfo, api, cgen, globalWrapped=True)
-    emit_global_state_wrapped_call(api, cgen)
-
-def emit_global_state_wrapped_decoding_with_context(typeInfo, api, cgen):
-    emit_decode_parameters(typeInfo, api, cgen, globalWrapped=True)
-    emit_global_state_wrapped_call(api, cgen, context=True)
-
-custom_decodes = {
-    "vkCmdCopyBufferToImage": emit_global_state_wrapped_decoding_with_context,
-    "vkCmdCopyImage": emit_global_state_wrapped_decoding,
-    "vkCmdCopyImageToBuffer": emit_global_state_wrapped_decoding,
-    "vkCmdCopyBufferToImage2": emit_global_state_wrapped_decoding_with_context,
-    "vkCmdCopyImage2": emit_global_state_wrapped_decoding,
-    "vkCmdCopyImageToBuffer2": emit_global_state_wrapped_decoding,
-    "vkCmdCopyBufferToImage2KHR": emit_global_state_wrapped_decoding_with_context,
-    "vkCmdCopyImage2KHR": emit_global_state_wrapped_decoding,
-    "vkCmdCopyImageToBuffer2KHR": emit_global_state_wrapped_decoding,
-    "vkCmdExecuteCommands": emit_global_state_wrapped_decoding,
-    "vkBeginCommandBuffer": emit_global_state_wrapped_decoding_with_context,
-    "vkEndCommandBuffer": emit_global_state_wrapped_decoding_with_context,
-    "vkResetCommandBuffer": emit_global_state_wrapped_decoding,
-    "vkCmdPipelineBarrier": emit_global_state_wrapped_decoding,
-    "vkCmdPipelineBarrier2": emit_global_state_wrapped_decoding,
-    "vkCmdBindPipeline": emit_global_state_wrapped_decoding,
-    "vkCmdBindDescriptorSets": emit_global_state_wrapped_decoding,
-    "vkCmdCopyQueryPoolResults": emit_global_state_wrapped_decoding,
-    "vkBeginCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding_with_context,
-    "vkEndCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding_with_context,
-    "vkResetCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding,
-    "vkCommandBufferHostSyncGOOGLE": emit_global_state_wrapped_decoding,
-    "vkCmdBeginRenderPass" : emit_global_state_wrapped_decoding,
-    "vkCmdBeginRenderPass2" : emit_global_state_wrapped_decoding,
-    "vkCmdBeginRenderPass2KHR" : emit_global_state_wrapped_decoding,
-}
-
-
-class VulkanSubDecoder(VulkanWrapperGenerator):
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-        self.typeInfo = typeInfo
-        self.cgen = CodeGen()
-
-    def onBegin(self,):
-        self.module.appendImpl(
-            "#define MAX_STACK_ITEMS %s\n" % MAX_STACK_ITEMS)
-
-        self.module.appendImpl(
-            "#define MAX_PACKET_LENGTH %s\n" % MAX_PACKET_LENGTH)
-
-        self.module.appendImpl(
-            "size_t subDecode(VulkanMemReadingStream* readStream, VulkanDispatch* vk, void* boxed_dispatchHandle, void* dispatchHandle, VkDeviceSize dataSize, const void* pData, const VkDecoderContext& context)\n")
-
-        self.cgen.beginBlock()  # function body
-
-        self.cgen.stmt("auto& metricsLogger = *context.metricsLogger")
-        self.cgen.stmt("uint32_t count = 0")
-        self.cgen.stmt("unsigned char *buf = (unsigned char *)pData")
-        self.cgen.stmt("android::base::BumpPool* pool = readStream->pool()")
-        self.cgen.stmt("unsigned char *ptr = (unsigned char *)pData")
-        self.cgen.stmt(
-            "const unsigned char* const end = (const unsigned char*)buf + dataSize")
-        self.cgen.stmt(
-            "VkDecoderGlobalState* globalstate = VkDecoderGlobalState::get()")
-
-        self.cgen.line("while (end - ptr >= 8)")
-        self.cgen.beginBlock()  # while loop
-
-        self.cgen.stmt("uint32_t opcode = *(uint32_t *)ptr")
-        self.cgen.stmt("uint32_t packetLen = *(uint32_t *)(ptr + 4)")
-        self.cgen.line("""
-        // packetLen should be at least 8 (op code and packet length) and should not be excessively large
-        if (packetLen < 8 || packetLen > MAX_PACKET_LENGTH) {
-            WARN("Bad packet length %d detected, subdecode may fail", packetLen);
-            metricsLogger.logMetricEvent(MetricEventBadPacketLength{ .len = packetLen });
-        }
-        """)
-        self.cgen.stmt("if (end - ptr < packetLen) return ptr - (unsigned char*)buf")
-
-
-        self.cgen.stmt("%s->setBuf((uint8_t*)(ptr + 8))" % READ_STREAM)
-        self.cgen.stmt(
-            "uint8_t* readStreamPtr = %s->getBuf(); uint8_t** readStreamPtrPtr = &readStreamPtr" % READ_STREAM)
-        self.cgen.line("switch (opcode)")
-        self.cgen.beginBlock()  # switch stmt
-
-        self.module.appendImpl(self.cgen.swapCode())
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        typeInfo = self.typeInfo
-        cgen = self.cgen
-        api = typeInfo.apis[name]
-
-        if "commandBuffer" != api.parameters[0].paramName:
-            return
-
-        cgen.line("case OP_%s:" % name)
-        cgen.beginBlock()
-        cgen.stmt("GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY, \"VkSubDecoder %s\")" % name)
-
-        if api.name in custom_decodes.keys():
-            custom_decodes[api.name](typeInfo, api, cgen)
-        else:
-            emit_default_decoding(typeInfo, api, cgen)
-
-        cgen.stmt("break")
-        cgen.endBlock()
-        self.module.appendImpl(self.cgen.swapCode())
-
-    def onEnd(self,):
-        self.cgen.line("default:")
-        self.cgen.beginBlock()
-        self.cgen.stmt(
-            "GFXSTREAM_ABORT(::emugl::FatalError(::emugl::ABORT_REASON_OTHER)) << \"Unrecognized opcode \" << opcode")
-        self.cgen.endBlock()
-
-        self.cgen.endBlock()  # switch stmt
-
-        self.cgen.stmt("++count; if (count % 1000 == 0) { pool->freeAll(); }")
-        self.cgen.stmt("ptr += packetLen")
-        self.cgen.endBlock()  # while loop
-
-        self.cgen.stmt("pool->freeAll()")
-        self.cgen.stmt("return ptr - (unsigned char*)buf;")
-        self.cgen.endBlock()  # function body
-        self.module.appendImpl(self.cgen.swapCode())
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/testing.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/testing.py
deleted file mode 100644
index fdf4b1d..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/testing.py
+++ /dev/null
@@ -1,387 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from copy import copy
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
-        VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import EQUALITY_VAR_NAMES
-from .wrapperdefs import EQUALITY_ON_FAIL_VAR
-from .wrapperdefs import EQUALITY_ON_FAIL_VAR_TYPE
-from .wrapperdefs import EQUALITY_RET_TYPE
-from .wrapperdefs import API_PREFIX_EQUALITY
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM2
-
-class VulkanEqualityCodegen(VulkanTypeIterator):
-
-    def __init__(self, cgen, inputVars, onFailCompareVar, prefix):
-        self.cgen = cgen
-        self.inputVars = inputVars
-        self.onFailCompareVar = onFailCompareVar
-        self.prefix = prefix
-
-        def makeAccess(varName, asPtr = True):
-            return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
-
-        def makeLengthAccess(varName):
-            return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
-
-        def makeLengthAccessGuard(varName):
-            return lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName=varName)
-
-        self.exprAccessorLhs = makeAccess(self.inputVars[0])
-        self.exprAccessorRhs = makeAccess(self.inputVars[1])
-
-        self.exprAccessorValueLhs = makeAccess(self.inputVars[0], asPtr = False)
-        self.exprAccessorValueRhs = makeAccess(self.inputVars[1], asPtr = False)
-
-        self.lenAccessorLhs = makeLengthAccess(self.inputVars[0])
-        self.lenAccessorRhs = makeLengthAccess(self.inputVars[1])
-
-        self.lenAccessGuardLhs = makeLengthAccessGuard(self.inputVars[0])
-        self.lenAccessGuardRhs = makeLengthAccessGuard(self.inputVars[1])
-
-        self.checked = False
-
-    def getTypeForCompare(self, vulkanType):
-        res = copy(vulkanType)
-
-        if not vulkanType.accessibleAsPointer():
-            res = res.getForAddressAccess()
-
-        if vulkanType.staticArrExpr:
-            res = res.getForAddressAccess()
-
-        return res
-
-    def makeCastExpr(self, vulkanType):
-        return "(%s)" % (
-            self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
-    def makeEqualExpr(self, lhs, rhs):
-        return "(%s) == (%s)" % (lhs, rhs)
-
-    def makeEqualBufExpr(self, lhs, rhs, size):
-        return "(memcmp(%s, %s, %s) == 0)" % (lhs, rhs, size)
-
-    def makeEqualStringExpr(self, lhs, rhs):
-        return "(strcmp(%s, %s) == 0)" % (lhs, rhs)
-
-    def makeBothNotNullExpr(self, lhs, rhs):
-        return "(%s) && (%s)" % (lhs, rhs)
-
-    def makeBothNullExpr(self, lhs, rhs):
-        return "!(%s) && !(%s)" % (lhs, rhs)
-
-    def compareWithConsequence(self, compareExpr, vulkanType, errMsg=""):
-        self.cgen.stmt("if (!(%s)) { %s(\"%s (Error: %s)\"); }" %
-                       (compareExpr, self.onFailCompareVar,
-                        self.exprAccessorValueLhs(vulkanType), errMsg))
-
-    def onCheck(self, vulkanType):
-
-        self.checked = True
-
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        bothNull = self.makeBothNullExpr(accessLhs, accessRhs)
-        bothNotNull = self.makeBothNotNullExpr(accessLhs, accessRhs)
-        nullMatchExpr = "(%s) || (%s)" % (bothNull, bothNotNull)
-
-        self.compareWithConsequence( \
-            nullMatchExpr,
-            vulkanType,
-            "Mismatch in optional field")
-
-        skipStreamInternal = vulkanType.typeName == "void"
-
-        if skipStreamInternal:
-            return
-
-        self.cgen.beginIf("%s && %s" % (accessLhs, accessRhs))
-
-    def endCheck(self, vulkanType):
-
-        skipStreamInternal = vulkanType.typeName == "void"
-        if skipStreamInternal:
-            return
-
-        if self.checked:
-            self.cgen.endIf()
-            self.checked = False
-
-    def onCompoundType(self, vulkanType):
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        lenAccessLhs = self.lenAccessorLhs(vulkanType)
-        lenAccessRhs = self.lenAccessorRhs(vulkanType)
-
-        lenAccessGuardLhs = self.lenAccessGuardLhs(vulkanType)
-        lenAccessGuardRhs = self.lenAccessGuardRhs(vulkanType)
-
-        needNullCheck = vulkanType.pointerIndirectionLevels > 0
-
-        if needNullCheck:
-            bothNotNullExpr = self.makeBothNotNullExpr(accessLhs, accessRhs)
-            self.cgen.beginIf(bothNotNullExpr)
-
-        if lenAccessLhs is not None:
-            equalLenExpr = self.makeEqualExpr(lenAccessLhs, lenAccessRhs)
-
-            self.compareWithConsequence( \
-                equalLenExpr,
-                vulkanType, "Lengths not equal")
-
-            loopVar = "i"
-            accessLhs = "%s + %s" % (accessLhs, loopVar)
-            accessRhs = "%s + %s" % (accessRhs, loopVar)
-            forInit = "uint32_t %s = 0" % loopVar
-            forCond = "%s < (uint32_t)%s" % (loopVar, lenAccessLhs)
-            forIncr = "++%s" % loopVar
-
-            if needNullCheck:
-                self.cgen.beginIf(equalLenExpr)
-
-            if lenAccessGuardLhs is not None:
-                self.cgen.beginIf(lenAccessGuardLhs)
-
-            self.cgen.beginFor(forInit, forCond, forIncr)
-
-        self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
-                           [accessLhs, accessRhs, self.onFailCompareVar])
-
-        if lenAccessLhs is not None:
-            self.cgen.endFor()
-            if lenAccessGuardLhs is not None:
-                self.cgen.endIf()
-            if needNullCheck:
-                self.cgen.endIf()
-
-        if needNullCheck:
-            self.cgen.endIf()
-
-    def onString(self, vulkanType):
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        bothNullExpr = self.makeBothNullExpr(accessLhs, accessRhs)
-        bothNotNullExpr = self.makeBothNotNullExpr(accessLhs, accessRhs)
-        nullMatchExpr = "(%s) || (%s)" % (bothNullExpr, bothNotNullExpr)
-
-        self.compareWithConsequence( \
-            nullMatchExpr,
-            vulkanType,
-            "Mismatch in string pointer nullness")
-
-        self.cgen.beginIf(bothNotNullExpr)
-
-        self.compareWithConsequence(
-            self.makeEqualStringExpr(accessLhs, accessRhs),
-            vulkanType, "Unequal strings")
-
-        self.cgen.endIf()
-
-    def onStringArray(self, vulkanType):
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        lenAccessLhs = self.lenAccessorLhs(vulkanType)
-        lenAccessRhs = self.lenAccessorRhs(vulkanType)
-
-        lenAccessGuardLhs = self.lenAccessGuardLhs(vulkanType)
-        lenAccessGuardRhs = self.lenAccessGuardRhs(vulkanType)
-
-        bothNullExpr = self.makeBothNullExpr(accessLhs, accessRhs)
-        bothNotNullExpr = self.makeBothNotNullExpr(accessLhs, accessRhs)
-        nullMatchExpr = "(%s) || (%s)" % (bothNullExpr, bothNotNullExpr)
-
-        self.compareWithConsequence( \
-            nullMatchExpr,
-            vulkanType,
-            "Mismatch in string array pointer nullness")
-
-        equalLenExpr = self.makeEqualExpr(lenAccessLhs, lenAccessRhs)
-
-        self.compareWithConsequence( \
-            equalLenExpr,
-            vulkanType, "Lengths not equal in string array")
-
-        self.compareWithConsequence( \
-            equalLenExpr,
-            vulkanType, "Lengths not equal in string array")
-
-        self.cgen.beginIf("%s && %s" % (equalLenExpr, bothNotNullExpr))
-
-        loopVar = "i"
-        accessLhs = "*(%s + %s)" % (accessLhs, loopVar)
-        accessRhs = "*(%s + %s)" % (accessRhs, loopVar)
-        forInit = "uint32_t %s = 0" % loopVar
-        forCond = "%s < (uint32_t)%s" % (loopVar, lenAccessLhs)
-        forIncr = "++%s" % loopVar
-
-        if lenAccessGuardLhs is not None:
-            self.cgen.beginIf(lenAccessGuardLhs)
-
-        self.cgen.beginFor(forInit, forCond, forIncr)
-
-        self.compareWithConsequence(
-            self.makeEqualStringExpr(accessLhs, accessRhs),
-            vulkanType, "Unequal string in string array")
-
-        self.cgen.endFor()
-
-        if lenAccessGuardLhs is not None:
-            self.cgen.endIf()
-
-        self.cgen.endIf()
-
-    def onStaticArr(self, vulkanType):
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        lenAccessLhs = self.lenAccessorLhs(vulkanType)
-
-        finalLenExpr = "%s * %s" % (lenAccessLhs,
-                                    self.cgen.sizeofExpr(vulkanType))
-
-        self.compareWithConsequence(
-            self.makeEqualBufExpr(accessLhs, accessRhs, finalLenExpr),
-            vulkanType, "Unequal static array")
-
-    def onStructExtension(self, vulkanType):
-        lhs = self.exprAccessorLhs(vulkanType)
-        rhs = self.exprAccessorRhs(vulkanType)
-
-        self.cgen.beginIf(lhs)
-        self.cgen.funcCall(None, self.prefix + "extension_struct",
-                           [lhs, rhs, self.onFailCompareVar])
-        self.cgen.endIf()
-
-    def onPointer(self, vulkanType):
-        accessLhs = self.exprAccessorLhs(vulkanType)
-        accessRhs = self.exprAccessorRhs(vulkanType)
-
-        skipStreamInternal = vulkanType.typeName == "void"
-        if skipStreamInternal:
-            return
-
-        lenAccessLhs = self.lenAccessorLhs(vulkanType)
-        lenAccessRhs = self.lenAccessorRhs(vulkanType)
-
-        if lenAccessLhs is not None:
-            self.compareWithConsequence( \
-                self.makeEqualExpr(lenAccessLhs, lenAccessRhs),
-                vulkanType, "Lengths not equal")
-
-            finalLenExpr = "%s * %s" % (lenAccessLhs,
-                                        self.cgen.sizeofExpr(
-                                            vulkanType.getForValueAccess()))
-        else:
-            finalLenExpr = self.cgen.sizeofExpr(vulkanType.getForValueAccess())
-
-        self.compareWithConsequence(
-            self.makeEqualBufExpr(accessLhs, accessRhs, finalLenExpr),
-            vulkanType, "Unequal dyn array")
-
-    def onValue(self, vulkanType):
-        accessLhs = self.exprAccessorValueLhs(vulkanType)
-        accessRhs = self.exprAccessorValueRhs(vulkanType)
-        self.compareWithConsequence(
-            self.makeEqualExpr(accessLhs, accessRhs), vulkanType,
-            "Value not equal")
-
-
-class VulkanTesting(VulkanWrapperGenerator):
-
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.codegen = CodeGen()
-
-        self.equalityCodegen = \
-            VulkanEqualityCodegen(
-                None,
-                EQUALITY_VAR_NAMES,
-                EQUALITY_ON_FAIL_VAR,
-                API_PREFIX_EQUALITY)
-
-        self.knownDefs = {}
-
-        self.extensionTestingPrototype = \
-            VulkanAPI(API_PREFIX_EQUALITY + "extension_struct",
-                      EQUALITY_RET_TYPE,
-                      [STRUCT_EXTENSION_PARAM,
-                       STRUCT_EXTENSION_PARAM2,
-                       EQUALITY_ON_FAIL_VAR_TYPE])
-
-    def onBegin(self,):
-        VulkanWrapperGenerator.onBegin(self)
-        self.module.appendImpl(self.codegen.makeFuncDecl(
-            self.extensionTestingPrototype))
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-        if name in self.knownDefs:
-            return
-
-        category = self.typeInfo.categoryOf(name)
-
-        if category in ["struct", "union"] and alias:
-            self.module.appendHeader(
-                self.codegen.makeFuncAlias(API_PREFIX_EQUALITY + name,
-                                           API_PREFIX_EQUALITY + alias))
-
-        if category in ["struct", "union"] and not alias:
-
-            structInfo = self.typeInfo.structs[name]
-
-            typeFromName = \
-                lambda varname: makeVulkanTypeSimple(True, name, 1, varname)
-
-            compareParams = \
-                list(map(typeFromName, EQUALITY_VAR_NAMES)) + \
-                [EQUALITY_ON_FAIL_VAR_TYPE]
-
-            comparePrototype = \
-                VulkanAPI(API_PREFIX_EQUALITY + name,
-                          EQUALITY_RET_TYPE,
-                          compareParams)
-
-            def structCompareDef(cgen):
-                self.equalityCodegen.cgen = cgen
-                for member in structInfo.members:
-                    iterateVulkanType(self.typeInfo, member,
-                                      self.equalityCodegen)
-
-            self.module.appendHeader(
-                self.codegen.makeFuncDecl(comparePrototype))
-            self.module.appendImpl(
-                self.codegen.makeFuncImpl(comparePrototype, structCompareDef))
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-    def onEnd(self,):
-        VulkanWrapperGenerator.onEnd(self)
-
-        def forEachExtensionCompare(ext, castedAccess, cgen):
-            cgen.funcCall(None, API_PREFIX_EQUALITY + ext.name,
-                          [castedAccess,
-                           cgen.makeReinterpretCast(
-                               STRUCT_EXTENSION_PARAM2.paramName, ext.name),
-                           EQUALITY_ON_FAIL_VAR])
-
-        self.module.appendImpl(
-            self.codegen.makeFuncImpl(
-                self.extensionTestingPrototype,
-                lambda cgen: self.emitForEachStructExtension(
-                    cgen,
-                    EQUALITY_RET_TYPE,
-                    STRUCT_EXTENSION_PARAM,
-                    forEachExtensionCompare)))
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/transform.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/transform.py
deleted file mode 100644
index d0026bc..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/transform.py
+++ /dev/null
@@ -1,336 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
-        VulkanCompoundType, VulkanAPI, makeVulkanTypeSimple, vulkanTypeNeedsTransform, vulkanTypeGetNeededTransformTypes, VulkanTypeIterator, iterateVulkanType, vulkanTypeforEachSubType, TRIVIAL_TRANSFORMED_TYPES, NON_TRIVIAL_TRANSFORMED_TYPES, TRANSFORMED_TYPES
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE
-
-def deviceMemoryTransform(resourceTrackerVarName, structOrApiInfo, getExpr, getLen, cgen, variant="tohost"):
-    paramIndices = \
-        structOrApiInfo.deviceMemoryInfoParameterIndices
-
-    for _, info in paramIndices.items():
-        orderedKeys = [
-            "handle",
-            "offset",
-            "size",
-            "typeIndex",
-            "typeBits",]
-        
-        casts = {
-            "handle" : "VkDeviceMemory*",
-            "offset" : "VkDeviceSize*",
-            "size" : "VkDeviceSize*",
-            "typeIndex" : "uint32_t*",
-            "typeBits" : "uint32_t*",
-        }
-
-        accesses = {
-            "handle" : "nullptr",
-            "offset" : "nullptr",
-            "size" : "nullptr",
-            "typeIndex" : "nullptr",
-            "typeBits" : "nullptr",
-        }
-
-        lenAccesses = {
-            "handle" : "0",
-            "offset" : "0",
-            "size" : "0",
-            "typeIndex" : "0",
-            "typeBits" : "0",
-        }
-
-        def doParam(i, vulkanType):
-            access = getExpr(vulkanType)
-            lenAccess = getLen(vulkanType)
-
-            for k in orderedKeys:
-                if i == info.__dict__[k]:
-                    accesses[k] = access
-                    if lenAccess is not None:
-                        lenAccesses[k] = lenAccess
-                    else:
-                        lenAccesses[k] = "1"
-
-        vulkanTypeforEachSubType(structOrApiInfo, doParam)
-
-        callParams = ", ".join( \
-            ["(%s)%s, %s" % (casts[k], accesses[k], lenAccesses[k]) \
-                for k in orderedKeys])
-
-        if variant == "tohost":
-            cgen.stmt("%s->deviceMemoryTransform_tohost(%s)" % \
-                (resourceTrackerVarName, callParams))
-        else:
-            cgen.stmt("%s->deviceMemoryTransform_fromhost(%s)" % \
-                (resourceTrackerVarName, callParams))
-
-def directTransform(resourceTrackerVarName, vulkanType, getExpr, getLen, cgen, variant="tohost"):
-    access = getExpr(vulkanType)
-    lenAccess = getLen(vulkanType)
-
-    if lenAccess:
-        finalLenAccess = lenAccess
-    else:
-        finalLenAccess = "1"
-
-    cgen.stmt("%s->transformImpl_%s_%s(%s, %s)" % (resourceTrackerVarName,
-                                                   vulkanType.typeName, variant, access, finalLenAccess))
-
-def genTransformsForVulkanType(resourceTrackerVarName, structOrApiInfo, getExpr, getLen, cgen, variant="tohost"):
-    for transform in vulkanTypeGetNeededTransformTypes(structOrApiInfo):
-        if transform == "devicememory":
-            deviceMemoryTransform( \
-                resourceTrackerVarName,
-                structOrApiInfo,
-                getExpr, getLen, cgen, variant=variant)
-
-class TransformCodegen(VulkanTypeIterator):
-    def __init__(self, cgen, inputVar, resourceTrackerVarName, prefix, variant):
-        self.cgen = cgen
-        self.inputVar = inputVar
-        self.prefix = prefix
-        self.resourceTrackerVarName = resourceTrackerVarName
-
-        def makeAccess(varName, asPtr = True):
-            return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
-
-        def makeLengthAccess(varName):
-            return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
-
-        def makeLengthAccessGuard(varName):
-            return lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName=varName)
-
-        self.exprAccessor = makeAccess(self.inputVar)
-        self.exprAccessorValue = makeAccess(self.inputVar, asPtr = False)
-        self.lenAccessor = makeLengthAccess(self.inputVar)
-        self.lenAccessorGuard = makeLengthAccessGuard(self.inputVar)
-
-        self.checked = False
-
-        self.variant = variant
-
-    def makeCastExpr(self, vulkanType):
-        return "(%s)" % (
-            self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
-    def asNonConstCast(self, access, vulkanType):
-        if vulkanType.staticArrExpr:
-            casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
-        elif vulkanType.accessibleAsPointer():
-            casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForNonConstAccess()), access)
-        else:
-            casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
-        return casted
-
-    def onCheck(self, vulkanType):
-        pass
-
-    def endCheck(self, vulkanType):
-        pass
-
-    def onCompoundType(self, vulkanType):
-
-        access = self.exprAccessor(vulkanType)
-        lenAccess = self.lenAccessor(vulkanType)
-        lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
-        isPtr = vulkanType.pointerIndirectionLevels > 0
-
-        if lenAccessGuard is not None:
-            self.cgen.beginIf(lenAccessGuard)
-
-        if isPtr:
-            self.cgen.beginIf(access)
-
-        if lenAccess is not None:
-
-            loopVar = "i"
-            access = "%s + %s" % (access, loopVar)
-            forInit = "uint32_t %s = 0" % loopVar
-            forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
-            forIncr = "++%s" % loopVar
-
-            self.cgen.beginFor(forInit, forCond, forIncr)
-
-        accessCasted = self.asNonConstCast(access, vulkanType)
-
-        if vulkanType.isTransformed:
-            directTransform(self.resourceTrackerVarName, vulkanType, self.exprAccessor, self.lenAccessor, self.cgen, variant=self.variant)
-
-        self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
-                           [self.resourceTrackerVarName, accessCasted])
-
-        if lenAccess is not None:
-            self.cgen.endFor()
-
-        if isPtr:
-            self.cgen.endIf()
-
-        if lenAccessGuard is not None:
-            self.cgen.endIf()
-
-    def onString(self, vulkanType):
-        pass
-
-    def onStringArray(self, vulkanType):
-        pass
-
-    def onStaticArr(self, vulkanType):
-        pass
-
-    def onStructExtension(self, vulkanType):
-        access = self.exprAccessor(vulkanType)
-
-        castedAccessExpr = "(%s)(%s)" % ("void*", access)
-        self.cgen.beginIf(access)
-        self.cgen.funcCall(None, self.prefix + "extension_struct",
-                           [self.resourceTrackerVarName, castedAccessExpr])
-        self.cgen.endIf()
-
-    def onPointer(self, vulkanType):
-        pass
-
-    def onValue(self, vulkanType):
-        pass
-
-
-class VulkanTransform(VulkanWrapperGenerator):
-    def __init__(self, module, typeInfo, resourceTrackerTypeName="ResourceTracker", resourceTrackerVarName="resourceTracker"):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.codegen = CodeGen()
-
-        self.transformPrefix = "transform_"
-
-        self.tohostpart = "tohost"
-        self.fromhostpart = "fromhost"
-        self.variants = [self.tohostpart, self.fromhostpart]
-
-        self.toTransformVar = "toTransform"
-        self.resourceTrackerTypeName = resourceTrackerTypeName
-        self.resourceTrackerVarName = resourceTrackerVarName
-        self.transformParam = \
-            makeVulkanTypeSimple(False, self.resourceTrackerTypeName, 1,
-                                 self.resourceTrackerVarName)
-        self.voidType = makeVulkanTypeSimple(False, "void", 0)
-
-        self.extensionTransformPrototypes = []
-
-        for variant in self.variants:
-            self.extensionTransformPrototypes.append( \
-                VulkanAPI(self.transformPrefix + variant + "_extension_struct",
-                          self.voidType,
-                          [self.transformParam, STRUCT_EXTENSION_PARAM_FOR_WRITE]))
-
-        self.knownStructs = {}
-        self.needsTransform = set([])
-
-    def onBegin(self,):
-        VulkanWrapperGenerator.onBegin(self)
-        # Set up a convenience macro fro the transformed structs
-        # and forward-declare the resource tracker class
-        self.codegen.stmt("class %s" % self.resourceTrackerTypeName)
-        self.codegen.line("#define LIST_TRIVIAL_TRANSFORMED_TYPES(f) \\")
-        for name in TRIVIAL_TRANSFORMED_TYPES:
-            self.codegen.line("f(%s) \\" % name)
-        self.codegen.line("")
-
-        self.codegen.line("#define LIST_NON_TRIVIAL_TRANSFORMED_TYPES(f) \\")
-        for name in NON_TRIVIAL_TRANSFORMED_TYPES:
-            self.codegen.line("f(%s) \\" % name)
-        self.codegen.line("")
-
-        self.codegen.line("#define LIST_TRANSFORMED_TYPES(f) \\")
-        self.codegen.line("LIST_TRIVIAL_TRANSFORMED_TYPES(f) \\")
-        self.codegen.line("LIST_NON_TRIVIAL_TRANSFORMED_TYPES(f) \\")
-        self.codegen.line("")
-
-        self.module.appendHeader(self.codegen.swapCode())
-
-        for prototype in self.extensionTransformPrototypes:
-            self.module.appendImpl(self.codegen.makeFuncDecl(
-                prototype))
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-        if name in self.knownStructs:
-            return
-
-        category = self.typeInfo.categoryOf(name)
-
-        if category in ["struct", "union"] and alias:
-            for variant in self.variants:
-                self.module.appendHeader(
-                    self.codegen.makeFuncAlias(self.transformPrefix + variant + "_" + name,
-                                               self.transformPrefix + variant + "_" + alias))
-
-        if category in ["struct", "union"] and not alias:
-            structInfo = self.typeInfo.structs[name]
-            self.knownStructs[name] = structInfo
-
-            for variant in self.variants:
-                api = VulkanAPI( \
-                    self.transformPrefix + variant + "_" + name,
-                    self.voidType,
-                    [self.transformParam] + \
-                    [makeVulkanTypeSimple( \
-                        False, name, 1, self.toTransformVar)])
-
-                transformer = TransformCodegen(
-                    None,
-                    self.toTransformVar,
-                    self.resourceTrackerVarName,
-                    self.transformPrefix + variant + "_",
-                    variant)
-
-                def funcDefGenerator(cgen):
-                    transformer.cgen = cgen
-                    for p in api.parameters:
-                        cgen.stmt("(void)%s" % p.paramName)
-
-                    genTransformsForVulkanType(
-                        self.resourceTrackerVarName,
-                        structInfo,
-                        transformer.exprAccessor,
-                        transformer.lenAccessor,
-                        cgen,
-                        variant=variant)
-
-                    for member in structInfo.members:
-                        iterateVulkanType(
-                            self.typeInfo, member,
-                            transformer)
-
-                self.module.appendHeader(
-                    self.codegen.makeFuncDecl(api))
-                self.module.appendImpl(
-                    self.codegen.makeFuncImpl(api, funcDefGenerator))
-
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-    def onEnd(self,):
-        VulkanWrapperGenerator.onEnd(self)
-
-        for (variant, prototype) in zip(self.variants, self.extensionTransformPrototypes):
-            def forEachExtensionTransform(ext, castedAccess, cgen):
-                if ext.isTransformed:
-                    directTransform(self.resourceTrackerVarName, ext, lambda _ : castedAccess, lambda _ : "1", cgen, variant);
-                cgen.funcCall(None, self.transformPrefix + variant + "_" + ext.name,
-                              [self.resourceTrackerVarName, castedAccess])
-
-            self.module.appendImpl(
-                self.codegen.makeFuncImpl(
-                    prototype,
-                    lambda cgen: self.emitForEachStructExtension(
-                        cgen,
-                        self.voidType,
-                        STRUCT_EXTENSION_PARAM_FOR_WRITE,
-                        forEachExtensionTransform)))
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/unbox.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/unbox.py
deleted file mode 100644
index 6c9c120..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/unbox.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
-        VulkanCompoundType, VulkanAPI, makeVulkanTypeSimple, vulkanTypeNeedsTransform, vulkanTypeGetNeededTransformTypes, VulkanTypeIterator, iterateVulkanType, vulkanTypeforEachSubType, TRANSFORMED_TYPES
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE
-
-# This is different from others; it operations solely in terms of deepcopy and handlemap
-class VulkanUnbox(VulkanWrapperGenerator):
-    def __init__(self, module, typeInfo):
-        VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
-        self.codegen = CodeGen()
-
-        self.unboxPrefix = "unbox"
-        self.toUnboxVar = "toUnbox"
-        self.poolParam = \
-            makeVulkanTypeSimple(False, "BumpPool", 1, "pool")
-
-        self.knownStructs = {}
-        self.needsTransform = set([])
-
-    def onBegin(self,):
-        VulkanWrapperGenerator.onBegin(self)
-
-    def onGenType(self, typeXml, name, alias):
-        VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
-        if name in self.knownStructs:
-            return
-
-        category = self.typeInfo.categoryOf(name)
-
-        if category in ["struct", "union"] and alias:
-            self.module.appendHeader(
-                self.codegen.makeFuncAlias(self.unboxPrefix + "_" + name,
-                                           self.unboxPrefix + "_" + alias))
-
-        if category in ["struct", "union"] and not alias:
-            structInfo = self.typeInfo.structs[name]
-            self.knownStructs[name] = structInfo
-
-            api = VulkanAPI( \
-                self.unboxPrefix + "_" + name,
-                makeVulkanTypeSimple(False, name, 1),
-                [self.poolParam] + \
-                [makeVulkanTypeSimple( \
-                    True, name, 1, self.toUnboxVar)])
-
-            def funcDefGenerator(cgen):
-                cgen.stmt("BoxedHandleUnwrapMapping unboxMapping")
-                cgen.stmt("%s* res = (%s*)pool->alloc(sizeof(const %s))" % (name, name, name))
-                cgen.stmt("deepcopy_%s(pool, %s, %s)" % (name, self.toUnboxVar, "res"))
-                cgen.stmt("handlemap_%s(%s, %s)" % (name, "&unboxMapping", "res"))
-                cgen.stmt("return res")
-
-            self.module.appendHeader(
-                self.codegen.makeFuncDecl(api))
-            self.module.appendImpl(
-                self.codegen.makeFuncImpl(api, funcDefGenerator))
-
-    def onGenCmd(self, cmdinfo, name, alias):
-        VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
-    def onEnd(self,):
-        VulkanWrapperGenerator.onEnd(self)
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/vkextensionstructuretype.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/vkextensionstructuretype.py
deleted file mode 100644
index ca3f97d..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/vkextensionstructuretype.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .wrapperdefs import VulkanWrapperGenerator
-
-
-class VulkanExtensionStructureType(VulkanWrapperGenerator):
-    def __init__(self, extensionName: str, module, typeInfo):
-        super().__init__(module, typeInfo)
-        self._extensionName = extensionName
-
-    def onGenGroup(self, groupinfo, groupName, alias=None):
-        super().onGenGroup(groupinfo, groupName, alias)
-        elem = groupinfo.elem
-        if (not elem.get('type') == 'enum'):
-            return
-        if (not elem.get('name') == 'VkStructureType'):
-            return
-        extensionEnumFactoryMacro = f'{self._extensionName.upper()}_ENUM'
-        for enum in elem.findall(f"enum[@extname='{self._extensionName}']"):
-            name = enum.get('name')
-            offset = enum.get('offset')
-            self.module.appendHeader(
-                f"#define {name} {extensionEnumFactoryMacro}(VkStructureType, {offset})\n")
-
-
-class VulkanGfxstreamStructureType(VulkanExtensionStructureType):
-    def __init__(self, module, typeInfo):
-        super().__init__('VK_GOOGLE_gfxstream', module, typeInfo)
-
-
-class VulkanAndroidNativeBufferStructureType(VulkanExtensionStructureType):
-    def __init__(self, module, typeInfo):
-        super().__init__('VK_ANDROID_native_buffer', module, typeInfo)
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cereal/wrapperdefs.py b/codegen/vulkan/vulkan-docs-next/scripts/cereal/wrapperdefs.py
deleted file mode 100644
index 5d6e2cd..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cereal/wrapperdefs.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright 2018 Google LLC
-# SPDX-License-Identifier: MIT
-
-from .common.codegen import VulkanWrapperGenerator
-from .common.vulkantypes import makeVulkanTypeSimple
-
-# Contains definitions for various Vulkan API wrappers. This information is
-# shared to make it easier for one kind of wrapper to know how to call
-# another one.
-
-API_PREFIX_MARSHAL = "marshal_"
-API_PREFIX_UNMARSHAL = "unmarshal_"
-API_PREFIX_RESERVEDMARSHAL = "reservedmarshal_"
-API_PREFIX_RESERVEDUNMARSHAL = "reservedunmarshal_"
-
-MARSHAL_INPUT_VAR_NAME = "forMarshaling"
-UNMARSHAL_INPUT_VAR_NAME = "forUnmarshaling"
-
-API_PREFIX_VALIDATE = "validate_"
-API_PREFIX_FRONTEND = "goldfish_frontend_"
-
-VULKAN_STREAM_TYPE = "VulkanStream"
-VULKAN_STREAM_TYPE_GUEST = "VulkanStreamGuest"
-VULKAN_STREAM_VAR_NAME = "vkStream"
-
-VALIDATE_RESULT_TYPE = "VkResult"
-VALIDATE_VAR_NAME = "validateResult"
-VALIDATE_GOOD_RESULT = "VK_SUCCESS"
-
-ROOT_TYPE_VAR_NAME = "rootType"
-ROOT_TYPE_DEFAULT_VALUE = "VK_STRUCTURE_TYPE_MAX_ENUM"
-ROOT_TYPE_TYPE = "VkStructureType"
-ROOT_TYPE_PARAM = makeVulkanTypeSimple(
-    False, ROOT_TYPE_TYPE, 0, ROOT_TYPE_VAR_NAME)
-
-PARAMETERS_MARSHALING = [
-    makeVulkanTypeSimple(False, VULKAN_STREAM_TYPE, 1, VULKAN_STREAM_VAR_NAME),
-    ROOT_TYPE_PARAM,
-]
-PARAMETERS_MARSHALING_GUEST = [
-    makeVulkanTypeSimple(False, VULKAN_STREAM_TYPE_GUEST,
-                         1, VULKAN_STREAM_VAR_NAME),
-    ROOT_TYPE_PARAM,
-]
-PARAMETERS_VALIDATE = [
-    makeVulkanTypeSimple(False, VALIDATE_RESULT_TYPE, 1, VALIDATE_VAR_NAME)
-]
-PARAMETERS_COUNTING = [
-    makeVulkanTypeSimple(False, "size_t", 1, VULKAN_STREAM_VAR_NAME)
-]
-
-STRUCT_EXTENSION_PARAM = \
-    makeVulkanTypeSimple(True, "void", 1, "structExtension")
-
-STRUCT_EXTENSION_PARAM2 = \
-    makeVulkanTypeSimple(True, "void", 1, "structExtension2")
-
-STRUCT_EXTENSION_PARAM_FOR_WRITE = \
-    makeVulkanTypeSimple(False, "void", 1, "structExtension_out")
-
-STRUCT_TYPE_API_NAME = "goldfish_vk_struct_type"
-EXTENSION_SIZE_API_NAME = "goldfish_vk_extension_struct_size"
-EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME = "goldfish_vk_extension_struct_size_with_stream_features"
-
-VOID_TYPE = makeVulkanTypeSimple(False, "void", 0)
-STREAM_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)
-
-API_PREFIX_EQUALITY = "checkEqual_"
-EQUALITY_VAR_NAMES = ["a", "b"]
-EQUALITY_ON_FAIL_VAR = "onFail"
-EQUALITY_ON_FAIL_VAR_TYPE = makeVulkanTypeSimple(False, "OnFailCompareFunc", 0,
-                                                 EQUALITY_ON_FAIL_VAR)
-EQUALITY_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)
-
-RELAXED_APIS = [
-    "vkWaitForFences",
-    "vkWaitSemaphores",
-    "vkWaitSemaphoresKHR",
-    "vkQueueWaitIdle",
-    "vkDeviceWaitIdle",
-    "vkQueueFlushCommandsGOOGLE",
-]
-
-STYPE_OVERRIDE = {
-    "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT",
-    "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT",
-    "VkRenderPassFragmentDensityMapCreateInfoEXT": "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT",
-    "VkImportColorBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE",
-    "VkImportBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE",
-    "VkCreateBlobGOOGLE": "VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE",
-}
-
-MAX_PACKET_LENGTH = "(400 * 1024 * 1024) // 400MB"
-
-
-
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cerealgenerator.py b/codegen/vulkan/vulkan-docs-next/scripts/cerealgenerator.py
deleted file mode 100644
index 660df5f..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cerealgenerator.py
+++ /dev/null
@@ -1,870 +0,0 @@
-# Copyright 2023 Google LLC
-# SPDX-License-Identifier: MIT
-
-import os, re, sys
-from generator import *
-from pathlib import Path, PurePosixPath
-
-import cereal
-from cereal.wrapperdefs import VULKAN_STREAM_TYPE
-from cereal.wrapperdefs import VULKAN_STREAM_TYPE_GUEST
-
-# CerealGenerator - generates set of driver sources
-# while being agnostic to the stream implementation
-from reg import GroupInfo, TypeInfo, EnumInfo
-
-VK_CEREAL_FLAG_HOST = 1
-VK_CEREAL_FLAG_GUEST = 2
-VK_CEREAL_FLAG_ALL = VK_CEREAL_FLAG_GUEST | VK_CEREAL_FLAG_HOST
-
-SUPPORTED_FEATURES = [
-    "VK_VERSION_1_0",
-    "VK_VERSION_1_1",
-    "VK_VERSION_1_2",
-    "VK_VERSION_1_3",
-    # Instance extensions
-    "VK_KHR_get_physical_device_properties2",
-    "VK_KHR_external_semaphore_capabilities",
-    "VK_KHR_external_memory_capabilities",
-    "VK_KHR_external_fence_capabilities",
-    "VK_EXT_debug_utils",
-    "VK_EXT_debug_report",
-    "VK_EXT_validation_features",
-    # Device extensions
-    "VK_EXT_external_memory_host",
-    "VK_KHR_storage_buffer_storage_class",
-    "VK_KHR_vulkan_memory_model",
-    "VK_KHR_buffer_device_address",
-    "VK_KHR_maintenance1",
-    "VK_KHR_maintenance2",
-    "VK_KHR_maintenance3",
-    "VK_KHR_bind_memory2",
-    "VK_KHR_dedicated_allocation",
-    "VK_KHR_get_memory_requirements2",
-    "VK_KHR_sampler_ycbcr_conversion",
-    "VK_KHR_shader_float16_int8",
-    "VK_AMD_gpu_shader_half_float",
-    "VK_NV_shader_subgroup_partitioned",
-    "VK_KHR_shader_subgroup_extended_types",
-    "VK_EXT_provoking_vertex",
-    "VK_EXT_line_rasterization",
-    "VK_EXT_transform_feedback",
-    "VK_EXT_primitive_topology_list_restart",
-    "VK_EXT_index_type_uint8",
-    "VK_EXT_load_store_op_none",
-    "VK_EXT_swapchain_colorspace",
-    "VK_EXT_custom_border_color",
-    "VK_EXT_shader_stencil_export",
-    "VK_KHR_image_format_list",
-    "VK_KHR_incremental_present",
-    "VK_KHR_pipeline_executable_properties",
-    "VK_EXT_queue_family_foreign",
-    "VK_EXT_scalar_block_layout",
-    "VK_KHR_external_semaphore",
-    "VK_KHR_external_semaphore_fd",
-    "VK_KHR_external_memory",
-    "VK_KHR_external_fence",
-    "VK_KHR_external_fence_fd",
-    "VK_EXT_device_memory_report",
-    "VK_KHR_create_renderpass2",
-    "VK_KHR_imageless_framebuffer",
-    "VK_KHR_descriptor_update_template",
-    "VK_EXT_depth_clip_enable",
-    "VK_EXT_robustness2",
-    # see aosp/2736079 + b/268351352
-    "VK_EXT_swapchain_maintenance1",
-    "VK_KHR_maintenance5",
-    "VK_EXT_host_image_copy",
-    "VK_EXT_image_compression_control",
-    "VK_EXT_image_compression_control_swapchain",
-    "VK_EXT_image_drm_format_modifier",
-    # VK1.3 extensions: see b/298704840
-    "VK_KHR_copy_commands2",
-    "VK_KHR_dynamic_rendering",
-    "VK_KHR_format_feature_flags2",
-    "VK_KHR_maintenance4",
-    "VK_KHR_shader_integer_dot_product",
-    "VK_KHR_shader_non_semantic_info",
-    "VK_KHR_shader_terminate_invocation",
-    "VK_KHR_synchronization2",
-    "VK_KHR_zero_initialize_workgroup_memory",
-    "VK_EXT_4444_formats",
-    "VK_EXT_extended_dynamic_state",
-    "VK_EXT_extended_dynamic_state2",
-    "VK_EXT_image_robustness",
-    "VK_EXT_inline_uniform_block",
-    "VK_EXT_pipeline_creation_cache_control",
-    "VK_EXT_pipeline_creation_feedback",
-    "VK_EXT_private_data",
-    "VK_EXT_shader_demote_to_helper_invocation",
-    "VK_EXT_subgroup_size_control",
-    "VK_EXT_texel_buffer_alignment",
-    "VK_EXT_texture_compression_astc_hdr",
-    "VK_EXT_tooling_info",
-    "VK_EXT_ycbcr_2plane_444_formats",
-    # Host dispatch
-    "VK_KHR_surface",
-    "VK_KHR_swapchain",
-    "VK_KHR_xcb_surface",
-    "VK_KHR_win32_surface",
-    "VK_EXT_metal_surface",
-    "VK_EXT_metal_objects",
-    "VK_EXT_external_memory_metal",
-    "VK_KHR_external_semaphore_win32",
-    "VK_KHR_external_memory_win32",
-    "VK_NV_device_diagnostic_checkpoints",
-    "VK_KHR_ray_tracing_pipeline",
-    "VK_KHR_pipeline_library",
-    # Android
-    "VK_ANDROID_native_buffer",
-    "VK_ANDROID_external_memory_android_hardware_buffer",
-    "VK_KHR_android_surface",
-    # Linux
-    "VK_KHR_external_memory_fd",
-    # Custom
-    "VK_GOOGLE_gfxstream",
-    # Used in tests without proper support checks
-    "VK_EXT_graphics_pipeline_library",
-    # Used by guest ANGLE
-    "VK_EXT_vertex_attribute_divisor",
-    # QNX
-    "VK_QNX_external_memory_screen_buffer",
-    # b/320855472 Chrome
-    "VK_EXT_fragment_density_map",
-    # b/349122558 Zink
-    "VK_EXT_color_write_enable",
-]
-
-HOST_MODULES = ["goldfish_vk_extension_structs", "goldfish_vk_marshaling",
-                "goldfish_vk_reserved_marshaling", "goldfish_vk_deepcopy",
-                "goldfish_vk_dispatch", "goldfish_vk_transform", "VkDecoder",
-                "VkDecoderSnapshot", "VkSubDecoder"]
-
-# By default, the all wrappers are run all on all features.  In certain cases,
-# we wish run wrappers when the module requires it. For example, `VK_GOOGLE_gfxstream`
-# shouldn't generate a function table entry since it's an internal interface.
-SUPPORTED_MODULES = {
-    "VK_EXT_external_memory_host": HOST_MODULES,
-    "VK_EXT_debug_utils": HOST_MODULES,
-    "VK_EXT_debug_report": HOST_MODULES,
-    "VK_EXT_validation_features": HOST_MODULES,
-    "VK_KHR_surface": ["goldfish_vk_dispatch"],
-    "VK_KHR_xcb_surface": ["goldfish_vk_dispatch"],
-    "VK_KHR_win32_surface": ["goldfish_vk_dispatch"],
-    "VK_EXT_metal_surface": ["goldfish_vk_dispatch"],
-    "VK_EXT_metal_objects": ["goldfish_vk_dispatch"],
-    "VK_EXT_external_memory_metal": ["goldfish_vk_dispatch"],
-    "VK_KHR_external_semaphore_win32" : ["goldfish_vk_dispatch"],
-    "VK_KHR_external_memory_win32" : ["goldfish_vk_dispatch"],
-    # Host dispatch for Linux hosts + and entrypoint for guests
-    "VK_KHR_external_memory_fd": ["goldfish_vk_dispatch", "func_table"],
-    "VK_QNX_external_memory_screen_buffer": ["goldfish_vk_dispatch"],
-    "VK_ANDROID_external_memory_android_hardware_buffer": ["func_table"],
-    "VK_KHR_android_surface": ["func_table"],
-    "VK_EXT_swapchain_maintenance1" : HOST_MODULES,
-    "VK_KHR_swapchain" : HOST_MODULES,
-    "VK_NV_device_diagnostic_checkpoints": ["goldfish_vk_dispatch"],
-    "VK_KHR_ray_tracing_pipeline": HOST_MODULES,
-    "VK_KHR_pipeline_library": HOST_MODULES,
-}
-
-# These modules will be used when the feature is not supported.
-# This is necessary to cover all extensions where needed.
-UNSUPPORTED_FEATURE_MODULES = {
-    "goldfish_vk_extension_structs",
-}
-
-
-REQUIRED_TYPES = {
-    "int",
-    "uint16_t",
-    "int64_t",
-    "double",
-    "VkPresentScalingFlagsEXT",
-    "VkPresentGravityFlagsEXT",
-}
-
-copyrightHeader = """// Copyright (C) 2018 The Android Open Source Project
-// Copyright (C) 2018 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-"""
-
-# We put the long generated commands in a separate paragraph, so that the formatter won't mess up
-# with other texts.
-autogeneratedHeaderTemplate = """
-// Autogenerated module %s
-//
-// %s
-//
-// Please do not modify directly;
-// re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
-// or directly from Python by defining:
-// VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
-// VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
-// CEREAL_OUTPUT_DIR: Where to put the generated sources.
-//
-// python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
-//
-"""
-namespaceBegin ="""
-namespace gfxstream {
-namespace vk {\n
-"""
-
-namespaceEnd = """
-}  // namespace vk
-}  // namespace gfxstream
-"""
-
-def banner_command(argv):
-    """Return sanitized command-line description.
-       |argv| must be a list of command-line parameters, e.g. sys.argv.
-       Return a string corresponding to the command, with platform-specific
-       paths removed."""
-
-    def makePosixRelative(someArg):
-        if os.path.exists(someArg):
-            return str(PurePosixPath(Path(os.path.relpath(someArg))))
-        return someArg
-
-    return ' '.join(map(makePosixRelative, argv))
-
-def envGetOrDefault(key, default=None):
-    if key in os.environ:
-        return os.environ[key]
-    return default
-
-# ---- methods overriding base class ----
-# beginFile(genOpts)
-# endFile()
-# beginFeature(interface, emit)
-# endFeature()
-# genType(typeinfo,name)
-# genStruct(typeinfo,name)
-# genGroup(groupinfo,name)
-# genEnum(enuminfo, name)
-# genCmd(cmdinfo)
-class CerealGenerator(OutputGenerator):
-
-    """Generate serialization code"""
-    def __init__(self, errFile = sys.stderr,
-                       warnFile = sys.stderr,
-                       diagFile = sys.stdout):
-        OutputGenerator.__init__(self, errFile, warnFile, diagFile)
-
-        self.typeInfo = cereal.VulkanTypeInfo(self)
-
-        self.modules = {}
-        self.protos = {}
-        self.moduleList = []
-        self.protoList = []
-
-        self.wrappers = []
-
-        self.codegen = cereal.CodeGen()
-        self.featureSupported = False
-        self.supportedModules = None
-
-        self.guestBaseLibDirPrefix = "aemu/base"
-        self.baseLibDirPrefix = "aemu/base"
-        self.utilsHeaderDirPrefix = "utils"
-
-        # The cereal variant should be an environmental variable of one of
-        # the following:
-        #    - "guest"
-        #    - "host"
-        #    - "both"
-        cerealVariant = envGetOrDefault("CEREAL_VARIANT", "both")
-        if cerealVariant == "guest":
-          self.cerealFlags = VK_CEREAL_FLAG_GUEST
-        elif cerealVariant == "host":
-          self.cerealFlags = VK_CEREAL_FLAG_HOST
-        else:
-          self.cerealFlags = VK_CEREAL_FLAG_ALL
-
-        # THe host always needs all possible guest struct definitions, while the guest only needs
-        # platform sepcific headers.
-        self.hostCommonExtraVulkanHeaders = '#include "vk_android_native_buffer_gfxstream.h"'
-
-        encoderInclude = f"""
-#include "goldfish_vk_private_defs.h"
-#include <memory>
-
-namespace gfxstream {{
-namespace guest {{
-class IOStream;
-}}  // namespace guest
-}}  // namespace gfxstream
-"""
-        encoderImplInclude = f"""
-#include "Resources.h"
-#include "ResourceTracker.h"
-#include "Validation.h"
-#include "%s.h"
-#include "gfxstream/guest/IOStream.h"
-
-#include "{self.guestBaseLibDirPrefix}/AlignedBuf.h"
-#include "{self.guestBaseLibDirPrefix}/BumpPool.h"
-
-#include "goldfish_vk_marshaling_guest.h"
-#include "goldfish_vk_reserved_marshaling_guest.h"
-#include "goldfish_vk_deepcopy_guest.h"
-#include "goldfish_vk_counting_guest.h"
-#include "goldfish_vk_private_defs.h"
-#include "goldfish_vk_transform_guest.h"
-
-#include <memory>
-#include <optional>
-#include <unordered_map>
-#include <string>
-#include <vector>
-
-""" % VULKAN_STREAM_TYPE_GUEST
-
-        functableImplInclude = """
-#include "VkEncoder.h"
-#include "ResourceTracker.h"
-#include "gfxstream_vk_entrypoints.h"
-#include "gfxstream_vk_private.h"
-
-#include "goldfish_vk_private_defs.h"
-
-#include <cstring>
-
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#if defined(LINUX_GUEST_BUILD) || defined(__Fuchsia__)
-#undef VK_ANDROID_native_buffer
-#endif
-"""
-        marshalIncludeGuest = """
-#include "goldfish_vk_marshaling_guest.h"
-#include "goldfish_vk_private_defs.h"
-#include "%s.h"
-
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-""" % VULKAN_STREAM_TYPE_GUEST
-
-        reservedmarshalIncludeGuest = """
-#include "goldfish_vk_marshaling_guest.h"
-#include "goldfish_vk_private_defs.h"
-#include "%s.h"
-
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-""" % VULKAN_STREAM_TYPE_GUEST
-
-        reservedmarshalImplIncludeGuest = """
-#include "Resources.h"
-"""
-
-        vulkanStreamIncludeHost = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-
-#include "%s.h"
-#include "{self.baseLibDirPrefix}/files/StreamSerializing.h"
-""" % VULKAN_STREAM_TYPE
-
-        poolInclude = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-#include "{self.baseLibDirPrefix}/BumpPool.h"
-using android::base::Allocator;
-using android::base::BumpPool;
-"""
-        transformIncludeGuest = """
-#include "goldfish_vk_private_defs.h"
-"""
-        transformInclude = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-#include "goldfish_vk_extension_structs.h"
-"""
-        transformImplIncludeGuest = """
-#include "ResourceTracker.h"
-"""
-        transformImplInclude = """
-#include "VkDecoderGlobalState.h"
-"""
-        deepcopyInclude = """
-#include "vk_util.h"
-"""
-        poolIncludeGuest = f"""
-#include "goldfish_vk_private_defs.h"
-#include "{self.guestBaseLibDirPrefix}/BumpPool.h"
-using android::base::Allocator;
-using android::base::BumpPool;
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-"""
-        dispatchHeaderDefs = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-namespace gfxstream {{
-namespace vk {{
-
-struct VulkanDispatch;
-
-}} // namespace vk
-}} // namespace gfxstream
-using DlOpenFunc = void* (void);
-using DlSymFunc = void* (void*, const char*);
-"""
-
-        extensionStructsInclude = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-#include "host-common/GfxstreamFatalError.h"
-#include "vulkan/vk_enum_string_helper.h"
-"""
-
-        extensionStructsIncludeGuest = """
-#include "vk_platform_compat.h"
-#include "goldfish_vk_private_defs.h"
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-"""
-        commonCerealImplIncludes = """
-#include "goldfish_vk_extension_structs.h"
-#include "goldfish_vk_private_defs.h"
-#include <string.h>
-"""
-        commonCerealIncludesGuest = """
-#include "vk_platform_compat.h"
-"""
-        commonCerealImplIncludesGuest = """
-#include "goldfish_vk_extension_structs_guest.h"
-#include "goldfish_vk_private_defs.h"
-
-#include <cstring>
-"""
-        countingIncludes = """
-#include "vk_platform_compat.h"
-#include "goldfish_vk_private_defs.h"
-"""
-
-        dispatchImplIncludes = """
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-"""
-
-        decoderSnapshotHeaderIncludes = f"""
-#include <memory>
-#include "{self.utilsHeaderDirPrefix}/GfxApiLogger.h"
-#include "{self.baseLibDirPrefix}/HealthMonitor.h"
-#include "goldfish_vk_private_defs.h"
-"""
-        decoderSnapshotImplIncludes = f"""
-#include "VulkanHandleMapping.h"
-#include "VkDecoderGlobalState.h"
-#include "VkReconstruction.h"
-
-#include "{self.baseLibDirPrefix}/synchronization/Lock.h"
-"""
-
-        decoderHeaderIncludes = f"""
-#include "VkDecoderContext.h"
-#include "ProcessResources.h"
-
-#include <memory>
-
-namespace android {{
-namespace base {{
-class BumpPool;
-}} // namespace android
-}} // namespace base
-
-"""
-
-        decoderImplIncludes = f"""
-#include "common/goldfish_vk_marshaling.h"
-#include "common/goldfish_vk_reserved_marshaling.h"
-#include "goldfish_vk_private_defs.h"
-#include "common/goldfish_vk_transform.h"
-
-#include "{self.baseLibDirPrefix}/BumpPool.h"
-#include "{self.baseLibDirPrefix}/system/System.h"
-#include "{self.baseLibDirPrefix}/Metrics.h"
-#include "render-utils/IOStream.h"
-#include "FrameBuffer.h"
-#include "gfxstream/host/Tracing.h"
-#include "host-common/feature_control.h"
-#include "host-common/GfxstreamFatalError.h"
-#include "host-common/logging.h"
-
-#include "VkDecoderGlobalState.h"
-#include "VkDecoderSnapshot.h"
-
-#include "VulkanDispatch.h"
-#include "%s.h"
-
-#include <functional>
-#include <optional>
-#include <unordered_map>
-""" % VULKAN_STREAM_TYPE
-
-        def createVkExtensionStructureTypePreamble(extensionName: str) -> str:
-            return f"""
-#define {extensionName}_ENUM(type,id) \
-    ((type)(1000000000 + (1000 * ({extensionName}_NUMBER - 1)) + (id)))
-"""
-        self.guest_encoder_tag = "guest_encoder"
-        self.host_tag = "host"
-
-        default_guest_abs_encoder_destination = \
-            os.path.join(
-                os.getcwd(),
-                "..", "..",
-                "device", "generic", "goldfish-opengl",
-                "system", "vulkan_enc")
-        self.guest_abs_encoder_destination = \
-            envGetOrDefault("GFXSTREAM_GUEST_ENCODER_DIR",
-                            default_guest_abs_encoder_destination)
-
-        default_host_abs_decoder_destination = \
-            os.path.join(
-                os.getcwd(),
-                "android", "android-emugl", "host",
-                "libs", "libOpenglRender", "vulkan")
-        self.host_abs_decoder_destination = \
-            envGetOrDefault("GFXSTREAM_HOST_DECODER_DIR",
-                            default_host_abs_decoder_destination)
-        self.host_script_destination = envGetOrDefault("GFXSTREAM_SCRIPTS_DIR")
-
-        if self.cerealFlags & VK_CEREAL_FLAG_GUEST:
-            self.addGuestEncoderModule(
-                "VkEncoder",
-                extraHeader = encoderInclude,
-                extraImpl = encoderImplInclude)
-
-            self.addGuestEncoderModule("goldfish_vk_extension_structs_guest",
-                                       extraHeader=extensionStructsIncludeGuest)
-            self.addGuestEncoderModule("goldfish_vk_marshaling_guest",
-                                       extraHeader=commonCerealIncludesGuest + marshalIncludeGuest,
-                                       extraImpl=commonCerealImplIncludesGuest)
-            self.addGuestEncoderModule("goldfish_vk_reserved_marshaling_guest",
-                                       extraHeader=commonCerealIncludesGuest + reservedmarshalIncludeGuest,
-                                       extraImpl=commonCerealImplIncludesGuest + reservedmarshalImplIncludeGuest)
-            self.addGuestEncoderModule("goldfish_vk_deepcopy_guest",
-                                       extraHeader=commonCerealIncludesGuest + poolIncludeGuest,
-                                       extraImpl=commonCerealImplIncludesGuest + deepcopyInclude)
-            self.addGuestEncoderModule("goldfish_vk_counting_guest",
-                                       extraHeader=countingIncludes,
-                                       extraImpl=commonCerealImplIncludesGuest)
-            self.addGuestEncoderModule("goldfish_vk_transform_guest",
-                                       extraHeader=commonCerealIncludesGuest + transformIncludeGuest,
-                                       extraImpl=commonCerealImplIncludesGuest + transformImplIncludeGuest)
-            self.addGuestEncoderModule(
-                "vulkan_gfxstream_structure_type", headerOnly=True, suppressFeatureGuards=True,
-                moduleName="vulkan_gfxstream_structure_type_guest", useNamespace=False,
-                suppressVulkanHeaders=True,
-                extraHeader=createVkExtensionStructureTypePreamble('VK_GOOGLE_GFXSTREAM'))
-
-            self.addGuestEncoderModule("func_table", extraImpl=functableImplInclude, implOnly = True,
-                                    useNamespace = False)
-
-            self.addWrapper(cereal.VulkanEncoder, "VkEncoder")
-            self.addWrapper(cereal.VulkanExtensionStructs, "goldfish_vk_extension_structs_guest", variant = "guest")
-            self.addWrapper(cereal.VulkanMarshaling, "goldfish_vk_marshaling_guest", variant = "guest")
-            self.addWrapper(cereal.VulkanReservedMarshaling, "goldfish_vk_reserved_marshaling_guest", variant = "guest")
-            self.addWrapper(cereal.VulkanDeepcopy, "goldfish_vk_deepcopy_guest")
-            self.addWrapper(cereal.VulkanCounting, "goldfish_vk_counting_guest")
-            self.addWrapper(cereal.VulkanTransform, "goldfish_vk_transform_guest")
-            self.addWrapper(cereal.VulkanFuncTable, "func_table")
-            self.addWrapper(cereal.VulkanGfxstreamStructureType,
-                            "vulkan_gfxstream_structure_type_guest")
-
-        if self.cerealFlags & VK_CEREAL_FLAG_HOST:
-            self.addCppModule("common", "goldfish_vk_extension_structs",
-                           extraHeader=extensionStructsInclude)
-            self.addCppModule("common", "goldfish_vk_marshaling",
-                           extraHeader=vulkanStreamIncludeHost,
-                           extraImpl=commonCerealImplIncludes)
-            self.addCppModule("common", "goldfish_vk_reserved_marshaling",
-                           extraHeader=vulkanStreamIncludeHost,
-                           extraImpl=commonCerealImplIncludes)
-            self.addCppModule("common", "goldfish_vk_deepcopy",
-                           extraHeader=poolInclude,
-                           extraImpl=commonCerealImplIncludes + deepcopyInclude)
-            self.addCppModule("common", "goldfish_vk_dispatch",
-                           extraHeader=dispatchHeaderDefs,
-                           extraImpl=dispatchImplIncludes)
-            self.addCppModule("common", "goldfish_vk_transform",
-                           extraHeader=transformInclude,
-                           extraImpl=transformImplInclude)
-            self.addHostModule("VkDecoder",
-                               extraHeader=decoderHeaderIncludes,
-                               extraImpl=decoderImplIncludes,
-                               useNamespace=False)
-            self.addHostModule("VkDecoderSnapshot",
-                               extraHeader=decoderSnapshotHeaderIncludes,
-                               extraImpl=decoderSnapshotImplIncludes,
-                               useNamespace=False)
-            self.addHostModule("VkSubDecoder",
-                               extraHeader="",
-                               extraImpl="",
-                               useNamespace=False,
-                               implOnly=True)
-
-            self.addModule(cereal.PyScript(self.host_tag, "vulkan_printer", customAbsDir=Path(
-                self.host_script_destination) / "print_gfx_logs"), moduleName="ApiLogDecoder")
-            self.addHostModule(
-                "vulkan_gfxstream_structure_type", headerOnly=True, suppressFeatureGuards=True,
-                moduleName="vulkan_gfxstream_structure_type_host", useNamespace=False,
-                suppressVulkanHeaders=True,
-                extraHeader=createVkExtensionStructureTypePreamble('VK_GOOGLE_GFXSTREAM'))
-            self.addHostModule(
-                "vk_android_native_buffer_structure_type", headerOnly=True, suppressFeatureGuards=True,
-                useNamespace=False, suppressVulkanHeaders=True,
-                extraHeader=createVkExtensionStructureTypePreamble('VK_ANDROID_NATIVE_BUFFER'))
-
-            self.addWrapper(cereal.VulkanExtensionStructs, "goldfish_vk_extension_structs", variant = "host")
-            self.addWrapper(cereal.VulkanMarshaling, "goldfish_vk_marshaling")
-            self.addWrapper(cereal.VulkanReservedMarshaling, "goldfish_vk_reserved_marshaling", variant = "host")
-            self.addWrapper(cereal.VulkanDeepcopy, "goldfish_vk_deepcopy")
-            self.addWrapper(cereal.VulkanDispatch, "goldfish_vk_dispatch")
-            self.addWrapper(cereal.VulkanTransform, "goldfish_vk_transform", resourceTrackerTypeName="VkDecoderGlobalState")
-            self.addWrapper(cereal.VulkanDecoder, "VkDecoder")
-            self.addWrapper(cereal.VulkanDecoderSnapshot, "VkDecoderSnapshot")
-            self.addWrapper(cereal.VulkanSubDecoder, "VkSubDecoder")
-            self.addWrapper(cereal.ApiLogDecoder, "ApiLogDecoder")
-            self.addWrapper(cereal.VulkanGfxstreamStructureType, "vulkan_gfxstream_structure_type_host")
-            self.addWrapper(cereal.VulkanAndroidNativeBufferStructureType,
-                            "vk_android_native_buffer_structure_type")
-
-    def addGuestEncoderModule(
-            self, basename, extraHeader="", extraImpl="", useNamespace=True, headerOnly=False,
-            suppressFeatureGuards=False, moduleName=None, suppressVulkanHeaders=False, implOnly=False):
-        if not os.path.exists(self.guest_abs_encoder_destination):
-            print("Path [%s] not found (guest encoder path), skipping" % self.guest_abs_encoder_destination)
-            return
-        self.addCppModule(self.guest_encoder_tag, basename, extraHeader=extraHeader,
-                       extraImpl=extraImpl, customAbsDir=self.guest_abs_encoder_destination,
-                       useNamespace=useNamespace, implOnly=implOnly, headerOnly=headerOnly,
-                       suppressFeatureGuards=suppressFeatureGuards, moduleName=moduleName,
-                       suppressVulkanHeaders=suppressVulkanHeaders)
-
-    def addHostModule(
-            self, basename, extraHeader="", extraImpl="", useNamespace=True, implOnly=False,
-            suppress=False, headerOnly=False, suppressFeatureGuards=False, moduleName=None,
-            suppressVulkanHeaders=False):
-        if not os.path.exists(self.host_abs_decoder_destination):
-            print("Path [%s] not found (host encoder path), skipping" %
-                  self.host_abs_decoder_destination)
-            return
-        if not suppressVulkanHeaders:
-            extraHeader = self.hostCommonExtraVulkanHeaders + '\n' + extraHeader
-        self.addCppModule(
-            self.host_tag, basename, extraHeader=extraHeader, extraImpl=extraImpl,
-            customAbsDir=self.host_abs_decoder_destination, useNamespace=useNamespace,
-            implOnly=implOnly, suppress=suppress, headerOnly=headerOnly,
-            suppressFeatureGuards=suppressFeatureGuards, moduleName=moduleName,
-            suppressVulkanHeaders=suppressVulkanHeaders)
-
-    def addModule(self, module, moduleName=None):
-        if moduleName is None:
-            moduleName = module.basename
-        self.moduleList.append(moduleName)
-        self.modules[moduleName] = module
-
-    def addCppModule(
-            self, directory, basename, extraHeader="", extraImpl="", customAbsDir=None,
-            useNamespace=True, implOnly=False, suppress=False, headerOnly=False,
-            suppressFeatureGuards=False, moduleName=None, suppressVulkanHeaders=False):
-        module = cereal.Module(
-            directory, basename, customAbsDir=customAbsDir, suppress=suppress, implOnly=implOnly,
-            headerOnly=headerOnly, suppressFeatureGuards=suppressFeatureGuards)
-        self.addModule(module, moduleName=moduleName)
-        module.headerPreamble = copyrightHeader
-        module.headerPreamble += \
-                autogeneratedHeaderTemplate % \
-                (basename, "(header) generated by %s" % banner_command(sys.argv))
-
-        module.headerPreamble += "#pragma once\n"
-        if (not suppressVulkanHeaders):
-            module.headerPreamble += "#include <vulkan/vulkan.h>\n"
-            module.headerPreamble += '#include "vulkan_gfxstream.h"\n'
-            module.headerPreamble += '#include "vk_android_native_buffer_gfxstream.h"\n'
-        module.headerPreamble += extraHeader + '\n'
-        if useNamespace:
-            module.headerPreamble += namespaceBegin
-
-        module.implPreamble = copyrightHeader
-        module.implPreamble += \
-                autogeneratedHeaderTemplate % \
-                (basename, "(impl) generated by %s" % \
-                    banner_command(sys.argv))
-        if not implOnly:
-            module.implPreamble += '\n#include "%s.h"' % \
-                (basename)
-
-        module.implPreamble += extraImpl
-
-        if useNamespace:
-            module.implPreamble += namespaceBegin
-            module.implPostamble += namespaceEnd
-            module.headerPostamble += namespaceEnd
-
-    def addWrapper(self, moduleType, moduleName, **kwargs):
-        if moduleName not in self.modules:
-            print(f'Unknown module: {moduleName}. All known modules are: {", ".join(self.modules)}.')
-            return
-        self.wrappers.append(
-            (moduleType(
-                self.modules[moduleName],
-                self.typeInfo, **kwargs),
-             moduleName)
-            )
-
-    def forEachModule(self, func):
-        for moduleName in self.moduleList:
-            func(self.modules[moduleName])
-
-    def forEachWrapper(self, func, supportedModules):
-        for wrapper in self.wrappers:
-            if supportedModules is None:
-                func(wrapper[0])
-            elif wrapper[1] in supportedModules:
-                func(wrapper[0])
-
-## Overrides####################################################################
-
-    def beginFile(self, genOpts):
-        OutputGenerator.beginFile(self, genOpts)
-
-        self.forEachModule(lambda m: m.begin(self.genOpts.directory))
-        self.forEachWrapper(lambda w: w.onBegin(), None)
-
-    def endFile(self):
-        OutputGenerator.endFile(self)
-
-        self.typeInfo.onEnd()
-
-        self.forEachWrapper(lambda w: w.onEnd(), None)
-        self.forEachModule(lambda m: m.end())
-
-    def beginFeature(self, interface, emit):
-        # Start processing in superclass
-        OutputGenerator.beginFeature(self, interface, emit)
-
-        for supportedFeature in SUPPORTED_FEATURES:
-            if self.featureName == supportedFeature:
-                self.featureSupported = True
-
-        if self.featureSupported == False and UNSUPPORTED_FEATURE_MODULES:
-            self.featureSupported = True
-            self.supportedModules = UNSUPPORTED_FEATURE_MODULES
-        elif self.featureSupported == False:
-            return
-        else:
-            self.supportedModules = SUPPORTED_MODULES.get(self.featureName)
-
-        self.typeInfo.onBeginFeature(self.featureName, self.featureType)
-
-        self.forEachModule(
-            lambda m: m.appendHeader("#ifdef %s\n" % self.featureName)
-            if isinstance(m, cereal.Module) and not m.suppressFeatureGuards else None)
-        self.forEachModule(
-            lambda m: m.appendImpl("#ifdef %s\n" % self.featureName)
-            if isinstance(m, cereal.Module) and not m.suppressFeatureGuards else None)
-        self.forEachWrapper(lambda w: w.onBeginFeature(self.featureName, self.featureType), self.supportedModules)
-        # functable needs to understand the feature type (device vs instance) of each cmd
-        for features in interface.findall('require'):
-            for c in features.findall('command'):
-                self.forEachWrapper(lambda w: w.onFeatureNewCmd(c.get('name')), self.supportedModules)
-
-    def endFeature(self):
-        # Finish processing in superclass
-        OutputGenerator.endFeature(self)
-
-        if self.featureSupported == False:
-            return
-
-        self.featureSupported = False
-
-        self.typeInfo.onEndFeature()
-
-        self.forEachModule(lambda m: m.appendHeader("#endif\n") if isinstance(
-            m, cereal.Module) and not m.suppressFeatureGuards else None)
-        self.forEachModule(lambda m: m.appendImpl("#endif\n") if isinstance(
-            m, cereal.Module) and not m.suppressFeatureGuards else None)
-        self.forEachWrapper(lambda w: w.onEndFeature(), self.supportedModules)
-
-    def genType(self, typeinfo: TypeInfo, name, alias):
-        OutputGenerator.genType(self, typeinfo, name, alias)
-
-        # Maybe this check can be removed if we refactor other things inside
-        # the cereal subdirectory.
-        if self.featureSupported == False and name in REQUIRED_TYPES:
-            self.typeInfo.onGenType(typeinfo, name, alias)
-            return
-
-        if self.featureSupported == False:
-            return
-
-        self.typeInfo.onGenType(typeinfo, name, alias)
-        self.forEachWrapper(lambda w: w.onGenType(typeinfo, name, alias), self.supportedModules)
-
-    def genStruct(self, typeinfo, typeName, alias):
-        OutputGenerator.genStruct(self, typeinfo, typeName, alias)
-        if self.featureSupported == False:
-            return
-
-        self.typeInfo.onGenStruct(typeinfo, typeName, alias)
-        self.forEachWrapper(lambda w: w.onGenStruct(typeinfo, typeName, alias), self.supportedModules)
-
-    def genGroup(self, groupinfo: GroupInfo, groupName, alias = None):
-        OutputGenerator.genGroup(self, groupinfo, groupName, alias)
-        if self.featureSupported == False:
-            return
-
-        self.typeInfo.onGenGroup(groupinfo, groupName, alias)
-        self.forEachWrapper(lambda w: w.onGenGroup(groupinfo, groupName, alias), self.supportedModules)
-
-    def genEnum(self, enuminfo: EnumInfo, name, alias):
-        OutputGenerator.genEnum(self, enuminfo, name, alias)
-        if self.featureSupported == False:
-            return
-        self.typeInfo.onGenEnum(enuminfo, name, alias)
-        self.forEachWrapper(lambda w: w.onGenEnum(enuminfo, name, alias), self.supportedModules)
-
-    def genCmd(self, cmdinfo, name, alias):
-        OutputGenerator.genCmd(self, cmdinfo, name, alias)
-        if self.featureSupported == False:
-            return
-
-        self.typeInfo.onGenCmd(cmdinfo, name, alias)
-        self.forEachWrapper(lambda w: w.onGenCmd(cmdinfo, name, alias), self.supportedModules)
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cgenerator.py b/codegen/vulkan/vulkan-docs-next/scripts/cgenerator.py
deleted file mode 100644
index 44a2ba4..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/cgenerator.py
+++ /dev/null
@@ -1,292 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2023 The Khronos Group Inc.
-# Copyright 2023-2024 Google Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import os
-import re
-
-from generator import (GeneratorOptions,
-                       MissingGeneratorOptionsError, MissingRegistryError,
-                       OutputGenerator, noneStr, regSortFeatures, write)
-
-class CGeneratorOptions(GeneratorOptions):
-    """CGeneratorOptions - subclass of GeneratorOptions.
-
-    Adds options used by COutputGenerator objects during C language header
-    generation."""
-
-    def __init__(self,
-                 prefixText='',
-                 apientry='',
-                 apientryp='',
-                 alignFuncParam=0,
-                 **kwargs
-                 ):
-        """Constructor.
-        Additional parameters beyond parent class:
-
-        - prefixText - list of strings to prefix generated header with
-        (usually a copyright statement + calling convention macros)
-        - apientry - string to use for the calling convention macro,
-        in typedefs, such as APIENTRY
-        - apientryp - string to use for the calling convention macro
-        in function pointer typedefs, such as APIENTRYP
-        - alignFuncParam - if nonzero and parameters are being put on a
-        separate line, align parameter names at the specified column"""
-
-        GeneratorOptions.__init__(self, **kwargs)
-
-        self.prefixText = prefixText
-        """list of strings to prefix generated header with (usually a copyright statement + calling convention macros)."""
-
-        self.apientry = apientry
-        """string to use for the calling convention macro, in typedefs, such as APIENTRY."""
-
-        self.apientryp = apientryp
-        """string to use for the calling convention macro in function pointer typedefs, such as APIENTRYP."""
-
-        self.alignFuncParam = alignFuncParam
-        """if nonzero and parameters are being put on a separate line, align parameter names at the specified column"""
-
-class COutputGenerator(OutputGenerator):
-    """Generates C-language API interfaces."""
-
-    # This is an ordered list of sections in the header file.
-    TYPE_SECTIONS = ['include', 'define', 'basetype', 'handle', 'enum',
-                     'group', 'bitmask', 'funcpointer', 'struct']
-    ALL_SECTIONS = TYPE_SECTIONS + ['commandPointer', 'command']
-
-    def __init__(self, *args, **kwargs):
-        super().__init__(*args, **kwargs)
-        # Internal state - accumulators for different inner block text
-        self.sections = {section: [] for section in self.ALL_SECTIONS}
-        self.feature_not_empty = False
-
-    def beginFile(self, genOpts):
-        OutputGenerator.beginFile(self, genOpts)
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-
-        # User-supplied prefix text, if any (list of strings)
-        if genOpts.prefixText:
-            for s in genOpts.prefixText:
-                write(s, file=self.outFile)
-
-        # C++ extern wrapper - after prefix lines so they can add includes.
-        self.newline()
-        write('#ifdef __cplusplus', file=self.outFile)
-        write('extern "C" {', file=self.outFile)
-        write('#endif', file=self.outFile)
-        self.newline()
-
-    def endFile(self):
-        # C-specific
-        # Finish C++ wrapper and multiple inclusion protection
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-        self.newline()
-        write('#ifdef __cplusplus', file=self.outFile)
-        write('}', file=self.outFile)
-        write('#endif', file=self.outFile)
-        # Finish processing in superclass
-        OutputGenerator.endFile(self)
-
-    def beginFeature(self, interface, emit):
-        # Start processing in superclass
-        OutputGenerator.beginFeature(self, interface, emit)
-        # C-specific
-        # Accumulate includes, defines, types, enums, function pointer typedefs,
-        # end function prototypes separately for this feature. They are only
-        # printed in endFeature().
-        self.sections = {section: [] for section in self.ALL_SECTIONS}
-        self.feature_not_empty = False
-
-    def endFeature(self):
-        "Actually write the interface to the output file."
-        # C-specific
-        if self.emit:
-            if self.feature_not_empty:
-                if self.genOpts is None:
-                    raise MissingGeneratorOptionsError()
-                is_core = self.featureName and self.featureName.startswith('VK_VERSION_')
-                self.newline()
-
-                # Generate warning of possible use in IDEs
-                write(f'// {self.featureName} is a preprocessor guard. Do not pass it to API calls.', file=self.outFile)
-                write('#define', self.featureName, '1', file=self.outFile)
-                for section in self.TYPE_SECTIONS:
-                    contents = self.sections[section]
-                    if contents:
-                        write('\n'.join(contents), file=self.outFile)
-
-                if self.sections['commandPointer']:
-                    write('\n'.join(self.sections['commandPointer']), file=self.outFile)
-                    self.newline()
-
-                if self.sections['command']:
-                    write('\n'.join(self.sections['command']), end='', file=self.outFile)
-
-        # Finish processing in superclass
-        OutputGenerator.endFeature(self)
-
-    def appendSection(self, section, text):
-        "Append a definition to the specified section"
-
-        if section is None:
-            exit(1)
-
-        self.sections[section].append(text)
-        self.feature_not_empty = True
-
-    def genType(self, typeinfo, name, alias):
-        "Generate type."
-        OutputGenerator.genType(self, typeinfo, name, alias)
-        typeElem = typeinfo.elem
-
-        # Vulkan:
-        # Determine the category of the type, and the type section to add
-        # its definition to.
-        # 'funcpointer' is added to the 'struct' section as a workaround for
-        # internal issue #877, since structures and function pointer types
-        # can have cross-dependencies.
-        category = typeElem.get('category')
-        if category == 'funcpointer':
-            section = 'struct'
-        else:
-            section = category
-
-        if category in ('struct', 'union'):
-            # If the type is a struct type, generate it using the
-            # special-purpose generator.
-            self.genStruct(typeinfo, name, alias)
-        else:
-            if self.genOpts is None:
-                raise MissingGeneratorOptionsError()
-            # Replace <apientry /> tags with an APIENTRY-style string
-            # (from self.genOpts). Copy other text through unchanged.
-            # If the resulting text is an empty string, do not emit it.
-            body = noneStr(typeElem.text)
-            for elem in typeElem:
-                if elem.tag == 'apientry':
-                    body += self.genOpts.apientry + noneStr(elem.tail)
-                else:
-                    body += noneStr(elem.text) + noneStr(elem.tail)
-            if body:
-                # Add extra newline after multi-line entries.
-                if '\n' in body[0:-1]:
-                    body += '\n'
-                self.appendSection(section, body)
-
-    def genProtectString(self, protect_str):
-        """Generate protection string.
-
-        Protection strings are the strings defining the OS/Platform/Graphics
-        requirements for a given API command.  When generating the
-        language header files, we need to make sure the items specific to a
-        graphics API or OS platform are properly wrapped in #ifs."""
-        protect_if_str = ''
-        protect_end_str = ''
-        if not protect_str:
-            return (protect_if_str, protect_end_str)
-
-        if ',' in protect_str:
-            protect_list = protect_str.split(',')
-            protect_defs = ('defined(%s)' % d for d in protect_list)
-            protect_def_str = ' && '.join(protect_defs)
-            protect_if_str = '#if %s\n' % protect_def_str
-            protect_end_str = '#endif // %s\n' % protect_def_str
-        else:
-            protect_if_str = '#ifdef %s\n' % protect_str
-            protect_end_str = '#endif // %s\n' % protect_str
-
-        return (protect_if_str, protect_end_str)
-
-    def genStruct(self, typeinfo, typeName, alias):
-        """Generate struct (e.g. C "struct" type).
-
-        This is a special case of the <type> tag where the contents are
-        interpreted as a set of <member> tags instead of freeform C
-        C type declarations. The <member> tags are just like <param>
-        tags - they are a declaration of a struct or union member.
-        Only simple member declarations are supported (no nested
-        structs etc.)
-
-        If alias is not None, then this struct aliases another; just
-        generate a typedef of that alias."""
-        OutputGenerator.genStruct(self, typeinfo, typeName, alias)
-
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-
-        typeElem = typeinfo.elem
-
-        if alias:
-            body = 'typedef ' + alias + ' ' + typeName + ';\n'
-        else:
-            body = ''
-            (protect_begin, protect_end) = self.genProtectString(typeElem.get('protect'))
-            if protect_begin:
-                body += protect_begin
-
-            body += 'typedef ' + typeElem.get('category')
-
-            body += ' ' + typeName + ' {\n'
-
-            targetLen = self.getMaxCParamTypeLength(typeinfo)
-            for member in typeElem.findall('.//member'):
-                body += self.makeCParamDecl(member, targetLen + 4)
-                body += ';\n'
-            body += '} ' + typeName + ';\n'
-            if protect_end:
-                body += protect_end
-
-        self.appendSection('struct', body)
-
-    def genGroup(self, groupinfo, groupName, alias=None):
-        """Generate groups (e.g. C "enum" type).
-
-        These are concatenated together with other types.
-
-        If alias is not None, it is the name of another group type
-        which aliases this type; just generate that alias."""
-        OutputGenerator.genGroup(self, groupinfo, groupName, alias)
-        groupElem = groupinfo.elem
-
-        # After either enumerated type or alias paths, add the declaration
-        # to the appropriate section for the group being defined.
-        if groupElem.get('type') == 'bitmask':
-            section = 'bitmask'
-        else:
-            section = 'group'
-
-        if alias:
-            # If the group name is aliased, just emit a typedef declaration
-            # for the alias.
-            body = 'typedef ' + alias + ' ' + groupName + ';\n'
-            self.appendSection(section, body)
-
-    def genEnum(self, enuminfo, name, alias):
-        """Generate the C declaration for a constant (a single <enum> value).
-
-        <enum> tags may specify their values in several ways, but are usually
-        just integers."""
-
-        OutputGenerator.genEnum(self, enuminfo, name, alias)
-
-        body = self.buildConstantCDecl(enuminfo, name, alias)
-        self.appendSection('enum', body)
-
-    def genCmd(self, cmdinfo, name, alias):
-        "Command generation"
-        OutputGenerator.genCmd(self, cmdinfo, name, alias)
-
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-
-        prefix = ''
-        decls = self.makeCDecls(cmdinfo.elem)
-        self.appendSection('command', prefix + decls[0] + '\n')
-        self.appendSection('commandPointer', decls[1])
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/generator.py b/codegen/vulkan/vulkan-docs-next/scripts/generator.py
deleted file mode 100644
index 51ae8cf..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/generator.py
+++ /dev/null
@@ -1,803 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2023 The Khronos Group Inc.
-# Copyright 2023-2024 Google Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-"""Base class for source/header/doc generators, as well as some utility functions."""
-
-from __future__ import unicode_literals
-
-import io
-import os
-import re
-import shutil
-import sys
-import tempfile
-try:
-    from pathlib import Path
-except ImportError:
-    from pathlib2 import Path  # type: ignore
-
-CATEGORIES_REQUIRING_VALIDATION = set(('handle',
-                                       'enum',
-                                       'bitmask',
-                                       'basetype',
-                                       None))
-
-# These are basic C types pulled in via openxr_platform_defines.h
-TYPES_KNOWN_ALWAYS_VALID = set(('char',
-                                'float',
-                                'int8_t', 'uint8_t',
-                                'int16_t', 'uint16_t',
-                                'int32_t', 'uint32_t',
-                                'int64_t', 'uint64_t',
-                                'size_t',
-                                'intptr_t', 'uintptr_t',
-                                'int',
-                                ))
-
-def getElemName(elem, default=None):
-    """Get the name associated with an element, either a name child or name attribute."""
-    name_elem = elem.find('name')
-    if name_elem is not None:
-        return name_elem.text
-    # Fallback if there is no child.
-    return elem.get('name', default)
-
-
-def getElemType(elem, default=None):
-    """Get the type associated with an element, either a type child or type attribute."""
-    type_elem = elem.find('type')
-    if type_elem is not None:
-        return type_elem.text
-    # Fallback if there is no child.
-    return elem.get('type', default)
-
-def write(*args, **kwargs):
-    file = kwargs.pop('file', sys.stdout)
-    end = kwargs.pop('end', '\n')
-    file.write(' '.join(str(arg) for arg in args))
-    file.write(end)
-
-def category_requires_validation(category):
-    """Return True if the given type 'category' always requires validation.
-
-    Defaults to a reasonable implementation.
-
-    May override."""
-    return category in CATEGORIES_REQUIRING_VALIDATION
-
-def type_always_valid(typename):
-    """Return True if the given type name is always valid (never requires validation).
-
-    This is for things like integers.
-
-    Defaults to a reasonable implementation.
-
-    May override."""
-    return typename in TYPES_KNOWN_ALWAYS_VALID
-
-def noneStr(s):
-    """Return string argument, or "" if argument is None.
-
-    Used in converting etree Elements into text.
-    s - string to convert"""
-    if s:
-        return s
-    return ""
-
-def regSortCategoryKey(feature):
-    """Sort key for regSortFeatures.
-    Sorts by category of the feature name string:
-
-    - Core API features (those defined with a `<feature>` tag)
-        - (sort VKSC after VK - this is Vulkan-specific)
-    - ARB/KHR/OES (Khronos extensions)
-    - other       (EXT/vendor extensions)"""
-
-    if feature.elem.tag == 'feature':
-        if feature.name.startswith('VKSC'):
-            return 0.5
-        else:
-            return 0
-    if (feature.category == 'ARB'
-        or feature.category == 'KHR'
-            or feature.category == 'OES'):
-        return 1
-
-    return 2
-
-
-def regSortOrderKey(feature):
-    """Sort key for regSortFeatures - key is the sortorder attribute."""
-
-    return feature.sortorder
-
-
-def regSortNameKey(feature):
-    """Sort key for regSortFeatures - key is the extension name."""
-
-    return feature.name
-
-
-def regSortFeatureVersionKey(feature):
-    """Sort key for regSortFeatures - key is the feature version.
-    `<extension>` elements all have version number 0."""
-
-    return float(feature.versionNumber)
-
-
-def regSortExtensionNumberKey(feature):
-    """Sort key for regSortFeatures - key is the extension number.
-    `<feature>` elements all have extension number 0."""
-
-    return int(feature.number)
-
-
-def regSortFeatures(featureList):
-    """Default sort procedure for features.
-
-    - Sorts by explicit sort order (default 0) relative to other features
-    - then by feature category ('feature' or 'extension'),
-    - then by version number (for features)
-    - then by extension number (for extensions)"""
-    featureList.sort(key=regSortExtensionNumberKey)
-    featureList.sort(key=regSortFeatureVersionKey)
-    featureList.sort(key=regSortCategoryKey)
-    featureList.sort(key=regSortOrderKey)
-
-
-class MissingGeneratorOptionsError(RuntimeError):
-    """Error raised when a Generator tries to do something that requires GeneratorOptions but it is None."""
-
-    def __init__(self, msg=None):
-        full_msg = 'Missing generator options object self.genOpts'
-        if msg:
-            full_msg += ': ' + msg
-        super().__init__(full_msg)
-
-
-class MissingRegistryError(RuntimeError):
-    """Error raised when a Generator tries to do something that requires a Registry object but it is None."""
-
-    def __init__(self, msg=None):
-        full_msg = 'Missing Registry object self.registry'
-        if msg:
-            full_msg += ': ' + msg
-        super().__init__(full_msg)
-
-class GeneratorOptions:
-    """Base class for options used during header/documentation production.
-
-    These options are target language independent, and used by
-    Registry.apiGen() and by base OutputGenerator objects."""
-
-    def __init__(self,
-                 filename=None,
-                 directory='.',
-                 versions='.*',
-                 emitversions='.*',
-                 addExtensions=None,
-                 emitExtensions=None,
-                 sortProcedure=regSortFeatures,
-                ):
-        """Constructor.
-
-        Arguments:
-
-        an object that implements ConventionsBase
-        - filename - basename of file to generate, or None to write to stdout.
-        - directory - directory in which to generate filename
-        - versions - regex matching API versions to process interfaces for.
-        Normally `'.*'` or `'[0-9][.][0-9]'` to match all defined versions.
-        - emitversions - regex matching API versions to actually emit
-        interfaces for (though all requested versions are considered
-        when deciding which interfaces to generate). For GL 4.3 glext.h,
-        this might be `'1[.][2-5]|[2-4][.][0-9]'`.
-        - addExtensions - regex matching names of additional extensions
-        to include. Defaults to None.
-        - emitExtensions - regex matching names of extensions to actually emit
-        interfaces for (though all requested versions are considered when
-        deciding which interfaces to generate). Defaults to None.
-        - sortProcedure - takes a list of FeatureInfo objects and sorts
-        them in place to a preferred order in the generated output.
-
-        Default is
-          - core API versions
-          - Khronos (ARB/KHR/OES) extensions
-          - All other extensions
-          - By core API version number or extension number in each group.
-
-        The regex patterns can be None or empty, in which case they match
-        nothing."""
-
-        self.filename = filename
-        "basename of file to generate, or None to write to stdout."
-
-        self.directory = directory
-        "directory in which to generate filename"
-
-        self.versions = self.emptyRegex(versions)
-        """regex matching API versions to process interfaces for.
-        Normally `'.*'` or `'[0-9][.][0-9]'` to match all defined versions."""
-
-        self.emitversions = self.emptyRegex(emitversions)
-        """regex matching API versions to actually emit
-        interfaces for (though all requested versions are considered
-        when deciding which interfaces to generate). For GL 4.3 glext.h,
-        this might be `'1[.][2-5]|[2-4][.][0-9]'`."""
-
-        self.addExtensions = self.emptyRegex(addExtensions)
-        """regex matching names of additional extensions
-        to include. Defaults to None."""
-
-        self.emitExtensions = self.emptyRegex(emitExtensions)
-        """regex matching names of extensions to actually emit
-        interfaces for (though all requested versions are considered when
-        deciding which interfaces to generate)."""
-
-        self.sortProcedure = sortProcedure
-        """takes a list of FeatureInfo objects and sorts
-        them in place to a preferred order in the generated output.
-        Default is core API versions, ARB/KHR/OES extensions, all
-        other extensions, alphabetically within each group."""
-
-        self.registry = None
-        """Populated later with the registry object."""
-
-    def emptyRegex(self, pat):
-        """Substitute a regular expression which matches no version
-        or extension names for None or the empty string."""
-        if not pat:
-            return '_nomatch_^'
-
-        return pat
-
-
-class OutputGenerator:
-    """Generate specified API interfaces in a specific style, such as a C header.
-
-    Base class for generating API interfaces.
-    Manages basic logic, logging, and output file control.
-    Derived classes actually generate formatted output.
-    """
-
-    # categoryToPath - map XML 'category' to include file directory name
-    categoryToPath = {
-        'bitmask': 'flags',
-        'enum': 'enums',
-        'funcpointer': 'funcpointers',
-        'handle': 'handles',
-        'define': 'defines',
-        'basetype': 'basetypes',
-    }
-
-    def __init__(self, errFile=sys.stderr, warnFile=sys.stderr, diagFile=sys.stdout):
-        """Constructor
-
-        - errFile, warnFile, diagFile - file handles to write errors,
-          warnings, diagnostics to. May be None to not write."""
-        self.outFile = None
-        self.errFile = errFile
-        self.warnFile = warnFile
-        self.diagFile = diagFile
-        # Internal state
-        self.featureName = None
-        """The current feature name being generated."""
-
-        self.featureType = None
-        """The current feature type being generated."""
-
-        self.genOpts = None
-        """The GeneratorOptions subclass instance."""
-
-        self.registry = None
-        """The specification registry object."""
-
-        self.featureDictionary = {}
-        """The dictionary of dictionaries of API features."""
-
-        # Used for extension enum value generation
-        self.extBase = 1000000000
-        self.extBlockSize = 1000
-        self.madeDirs = {}
-
-        # API dictionary, which may be loaded by the beginFile method of
-        # derived generators.
-        self.apidict = None
-
-    def enumToValue(self, elem, needsNum, bitwidth = 32,
-                    forceSuffix = False, parent_for_alias_dereference=None):
-        """Parse and convert an `<enum>` tag into a value.
-
-        - elem - <enum> Element
-        - needsNum - generate a numeric representation of the element value
-        - bitwidth - size of the numeric representation in bits (32 or 64)
-        - forceSuffix - if True, always use a 'U' / 'ULL' suffix on integers
-        - parent_for_alias_dereference - if not None, an Element containing
-          the parent of elem, used to look for elements this is an alias of
-
-        Returns a list:
-
-        - first element - integer representation of the value, or None
-          if needsNum is False. The value must be a legal number
-          if needsNum is True.
-        - second element - string representation of the value
-
-        There are several possible representations of values.
-
-        - A 'value' attribute simply contains the value.
-        - A 'bitpos' attribute defines a value by specifying the bit
-          position which is set in that value.
-        - An 'offset','extbase','extends' triplet specifies a value
-          as an offset to a base value defined by the specified
-          'extbase' extension name, which is then cast to the
-          typename specified by 'extends'. This requires probing
-          the registry database, and imbeds knowledge of the
-          API extension enum scheme in this function.
-        - An 'alias' attribute contains the name of another enum
-          which this is an alias of. The other enum must be
-          declared first when emitting this enum."""
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-
-        name = elem.get('name')
-        numVal = None
-        if 'value' in elem.keys():
-            value = elem.get('value')
-            # print('About to translate value =', value, 'type =', type(value))
-            if needsNum:
-                numVal = int(value, 0)
-            # If there is a non-integer, numeric 'type' attribute (e.g. 'u' or
-            # 'ull'), append it to the string value.
-            # t = enuminfo.elem.get('type')
-            # if t is not None and t != '' and t != 'i' and t != 's':
-            #     value += enuminfo.type
-            if forceSuffix:
-              if bitwidth == 64:
-                value = value + 'ULL'
-              else:
-                value = value + 'U'
-            return [numVal, value]
-        if 'bitpos' in elem.keys():
-            value = elem.get('bitpos')
-            bitpos = int(value, 0)
-            numVal = 1 << bitpos
-            value = '0x%08x' % numVal
-            if bitwidth == 64 or bitpos >= 32:
-              value = value + 'ULL'
-            elif forceSuffix:
-              value = value + 'U'
-            return [numVal, value]
-        if 'offset' in elem.keys():
-            # Obtain values in the mapping from the attributes
-            enumNegative = False
-            offset = int(elem.get('offset'), 0)
-            extnumber = int(elem.get('extnumber'), 0)
-            extends = elem.get('extends')
-            if 'dir' in elem.keys():
-                enumNegative = True
-            # Now determine the actual enumerant value, as defined
-            # in the "Layers and Extensions" appendix of the spec.
-            numVal = self.extBase + (extnumber - 1) * self.extBlockSize + offset
-            if enumNegative:
-                numVal *= -1
-            value = '%d' % numVal
-            # More logic needed!
-            return [numVal, value]
-        if 'alias' in elem.keys():
-            alias_of = elem.get('alias')
-            if parent_for_alias_dereference is None:
-                return (None, alias_of)
-            siblings = parent_for_alias_dereference.findall('enum')
-            for sib in siblings:
-                sib_name = sib.get('name')
-                if sib_name == alias_of:
-                    return self.enumToValue(sib, needsNum)
-            raise RuntimeError("Could not find the aliased enum value")
-        return [None, None]
-
-    def buildConstantCDecl(self, enuminfo, name, alias):
-        """Generate the C declaration for a constant (a single <enum>
-        value).
-
-        <enum> tags may specify their values in several ways, but are
-        usually just integers or floating-point numbers."""
-
-        (_, strVal) = self.enumToValue(enuminfo.elem, False)
-
-        if enuminfo.elem.get('type') and not alias:
-            # Generate e.g.: #define x (~0ULL)
-            typeStr = enuminfo.elem.get('type');
-            invert = '~' in strVal
-            paren = '(' in strVal
-            number = strVal.strip("()~UL")
-            if typeStr != "float":
-                if typeStr == "uint64_t":
-                    number += 'ULL'
-                else:
-                    number += 'U'
-            strVal = "~" if invert else ""
-            strVal += number
-            if paren:
-                strVal = "(" + strVal + ")";
-            body = '#define ' + name.ljust(33) + ' ' + strVal;
-        else:
-            body = '#define ' + name.ljust(33) + ' ' + strVal
-
-        return body
-
-    def beginFile(self, genOpts):
-        """Start a new interface file
-
-        - genOpts - GeneratorOptions controlling what is generated and how"""
-
-        self.genOpts = genOpts
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-
-        # Open a temporary file for accumulating output.
-        if self.genOpts.filename is not None:
-            self.outFile = tempfile.NamedTemporaryFile(mode='w', encoding='utf-8', newline='\n', delete=False)
-        else:
-            self.outFile = sys.stdout
-
-    def endFile(self):
-        if self.errFile:
-            self.errFile.flush()
-        if self.warnFile:
-            self.warnFile.flush()
-        if self.diagFile:
-            self.diagFile.flush()
-        if self.outFile:
-            self.outFile.flush()
-            if self.outFile != sys.stdout and self.outFile != sys.stderr:
-                self.outFile.close()
-
-            if self.genOpts is None:
-                raise MissingGeneratorOptionsError()
-
-            # On successfully generating output, move the temporary file to the
-            # target file.
-            if self.genOpts.filename is not None:
-                if sys.platform == 'win32':
-                    directory = Path(self.genOpts.directory)
-                    if not Path.exists(directory):
-                        os.makedirs(directory)
-                shutil.copy(self.outFile.name, self.genOpts.directory + '/' + self.genOpts.filename)
-                os.remove(self.outFile.name)
-        self.genOpts = None
-
-    def beginFeature(self, interface, emit):
-        """Write interface for a feature and tag generated features as having been done.
-
-        - interface - element for the `<version>` / `<extension>` to generate
-        - emit - actually write to the header only when True"""
-        self.emit = emit
-        self.featureName = interface.get('name')
-        self.featureType = interface.get('type')
-
-    def endFeature(self):
-        """Finish an interface file, closing it when done.
-
-        Derived classes responsible for emitting feature"""
-        self.featureName = None
-        self.featureType = None
-
-    def validateFeature(self, featureType, featureName):
-        """Validate we are generating something only inside a `<feature>` tag"""
-        if self.featureName is None:
-            raise UserWarning('Attempt to generate', featureType,
-                              featureName, 'when not in feature')
-
-    def genType(self, typeinfo, name, alias):
-        """Generate interface for a type
-
-        - typeinfo - TypeInfo for a type
-
-        Extend to generate as desired in your derived class."""
-        self.validateFeature('type', name)
-
-    def genStruct(self, typeinfo, typeName, alias):
-        """Generate interface for a C "struct" type.
-
-        - typeinfo - TypeInfo for a type interpreted as a struct
-
-        Extend to generate as desired in your derived class."""
-        self.validateFeature('struct', typeName)
-
-        # The mixed-mode <member> tags may contain no-op <comment> tags.
-        # It is convenient to remove them here where all output generators
-        # will benefit.
-        for member in typeinfo.elem.findall('.//member'):
-            for comment in member.findall('comment'):
-                member.remove(comment)
-
-    def genGroup(self, groupinfo, groupName, alias):
-        """Generate interface for a group of enums (C "enum")
-
-        - groupinfo - GroupInfo for a group.
-
-        Extend to generate as desired in your derived class."""
-
-        self.validateFeature('group', groupName)
-
-    def genEnum(self, enuminfo, typeName, alias):
-        """Generate interface for an enum (constant).
-
-        - enuminfo - EnumInfo for an enum
-        - name - enum name
-
-        Extend to generate as desired in your derived class."""
-        self.validateFeature('enum', typeName)
-
-    def genCmd(self, cmd, cmdinfo, alias):
-        """Generate interface for a command.
-
-        - cmdinfo - CmdInfo for a command
-
-        Extend to generate as desired in your derived class."""
-        self.validateFeature('command', cmdinfo)
-
-    def makeProtoName(self, name, tail):
-        """Turn a `<proto>` `<name>` into C-language prototype
-        and typedef declarations for that name.
-
-        - name - contents of `<name>` tag
-        - tail - whatever text follows that tag in the Element"""
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-        return self.genOpts.apientry + name + tail
-
-    def makeTypedefName(self, name, tail):
-        """Make the function-pointer typedef name for a command."""
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-        return '(' + self.genOpts.apientryp + 'PFN_' + name + tail + ')'
-
-    def makeCParamDecl(self, param, aligncol):
-        """Return a string which is an indented, formatted
-        declaration for a `<param>` or `<member>` block (e.g. function parameter
-        or structure/union member).
-
-        - param - Element (`<param>` or `<member>`) to format
-        - aligncol - if non-zero, attempt to align the nested `<name>` element
-          at this column"""
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-        indent = '    '
-        paramdecl = indent
-        prefix = noneStr(param.text)
-
-        for elem in param:
-            text = noneStr(elem.text)
-            tail = noneStr(elem.tail)
-
-            if elem.tag == 'name' and aligncol > 0:
-                # Align at specified column, if possible
-                paramdecl = paramdecl.rstrip()
-                oldLen = len(paramdecl)
-                # This works around a problem where very long type names -
-                # longer than the alignment column - would run into the tail
-                # text.
-                paramdecl = paramdecl.ljust(aligncol - 1) + ' '
-                newLen = len(paramdecl)
-
-            paramdecl += prefix + text + tail
-
-            # Clear prefix for subsequent iterations
-            prefix = ''
-
-        paramdecl = paramdecl + prefix
-
-        if aligncol == 0:
-            # Squeeze out multiple spaces other than the indentation
-            paramdecl = indent + ' '.join(paramdecl.split())
-        return paramdecl
-
-    def getCParamTypeLength(self, param):
-        """Return the length of the type field is an indented, formatted
-        declaration for a `<param>` or `<member>` block (e.g. function parameter
-        or structure/union member).
-
-        - param - Element (`<param>` or `<member>`) to identify"""
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-
-        # Allow for missing <name> tag
-        newLen = 0
-        paramdecl = '    ' + noneStr(param.text)
-        for elem in param:
-            text = noneStr(elem.text)
-            tail = noneStr(elem.tail)
-
-            if elem.tag == 'name':
-                # Align at specified column, if possible
-                newLen = len(paramdecl.rstrip())
-            paramdecl += text + tail
-
-        return newLen
-
-    def getMaxCParamTypeLength(self, info):
-        """Return the length of the longest type field for a member/parameter.
-        - info - TypeInfo or CommandInfo.
-        """
-        lengths = (self.getCParamTypeLength(member)
-                   for member in info.getMembers())
-        return max(lengths)
-
-    def getTypeCategory(self, typename):
-        """Get the category of a type."""
-        if self.registry is None:
-            raise MissingRegistryError()
-
-        info = self.registry.typedict.get(typename)
-        if info is None:
-            return None
-
-        elem = info.elem
-        if elem is not None:
-            return elem.get('category')
-        return None
-
-    def isStructAlwaysValid(self, structname):
-        """Try to do check if a structure is always considered valid (i.e. there is no rules to its acceptance)."""
-        # A conventions object is required for this call.
-        if self.registry is None:
-            raise MissingRegistryError()
-
-        if type_always_valid(structname):
-            return True
-
-        category = self.getTypeCategory(structname)
-        if category_requires_validation(category):
-            return False
-
-        info = self.registry.typedict.get(structname)
-        members = info.getMembers()
-
-        for member in members:
-            member_name = getElemName(member)
-            if member_name in ('sType', 'pNext'):
-                return False
-
-            if member.get('noautovalidity'):
-                return False
-
-            member_type = getElemType(member)
-
-            if member_type in ('void', 'char') or self.paramIsArray(member) or self.paramIsPointer(member):
-                return False
-
-            if type_always_valid(member_type):
-                continue
-
-            member_category = self.getTypeCategory(member_type)
-
-            if category_requires_validation(member_category):
-                return False
-
-            if member_category in ('struct', 'union'):
-                if self.isStructAlwaysValid(member_type) is False:
-                    return False
-
-        return True
-
-    def paramIsArray(self, param):
-        """Check if the parameter passed in is a pointer to an array.
-
-        param           the XML information for the param
-        """
-        return param.get('len') is not None
-
-    def paramIsPointer(self, param):
-        """Check if the parameter passed in is a pointer.
-
-        param           the XML information for the param
-        """
-        tail = param.find('type').tail
-        return tail is not None and '*' in tail
-
-    def isEnumRequired(self, elem):
-        """Return True if this `<enum>` element is
-        required, False otherwise
-
-        - elem - `<enum>` element to test"""
-        required = elem.get('required') is not None
-        return required
-
-        # @@@ This code is overridden by equivalent code now run in
-        # @@@ Registry.generateFeature
-
-        required = False
-
-        extname = elem.get('extname')
-        if extname is not None:
-            # 'supported' attribute was injected when the <enum> element was
-            # moved into the <enums> group in Registry.parseTree()
-            if 'vulkan' == elem.get('supported'):
-                required = True
-            elif re.match(self.genOpts.addExtensions, extname) is not None:
-                required = True
-        elif elem.get('version') is not None:
-            required = re.match(self.genOpts.emitversions, elem.get('version')) is not None
-        else:
-            required = True
-
-        return required
-
-    def makeCDecls(self, cmd):
-        """Return C prototype and function pointer typedef for a
-        `<command>` Element, as a two-element list of strings.
-
-        - cmd - Element containing a `<command>` tag"""
-        if self.genOpts is None:
-            raise MissingGeneratorOptionsError()
-        proto = cmd.find('proto')
-        params = cmd.findall('param')
-        # Begin accumulating prototype and typedef strings
-        pdecl = 'VKAPI_ATTR '
-        tdecl = 'typedef '
-
-        # Insert the function return type/name.
-        # For prototypes, add APIENTRY macro before the name
-        # For typedefs, add (APIENTRY *<name>) around the name and
-        #   use the PFN_cmdnameproc naming convention.
-        # Done by walking the tree for <proto> element by element.
-        # etree has elem.text followed by (elem[i], elem[i].tail)
-        #   for each child element and any following text
-        # Leading text
-        pdecl += noneStr(proto.text)
-        tdecl += noneStr(proto.text)
-        # For each child element, if it is a <name> wrap in appropriate
-        # declaration. Otherwise append its contents and tail contents.
-        for elem in proto:
-            text = noneStr(elem.text)
-            tail = noneStr(elem.tail)
-            if elem.tag == 'name':
-                pdecl += self.makeProtoName(text, tail)
-                tdecl += self.makeTypedefName(text, tail)
-            else:
-                pdecl += text + tail
-                tdecl += text + tail
-
-        if self.genOpts.alignFuncParam == 0:
-            # Squeeze out multiple spaces - there is no indentation
-            pdecl = ' '.join(pdecl.split())
-            tdecl = ' '.join(tdecl.split())
-
-        # Now add the parameter declaration list, which is identical
-        # for prototypes and typedefs. Concatenate all the text from
-        # a <param> node without the tags. No tree walking required
-        # since all tags are ignored.
-        # Uses: self.indentFuncProto
-        # self.indentFuncPointer
-        # self.alignFuncParam
-        n = len(params)
-        # Indented parameters
-        if n > 0:
-            indentdecl = '(\n'
-            indentdecl += ',\n'.join(self.makeCParamDecl(p, self.genOpts.alignFuncParam)
-                                     for p in params)
-            indentdecl += ');'
-        else:
-            indentdecl = '(void);'
-        # Non-indented parameters
-        paramdecl = '('
-        if n > 0:
-            paramnames = []
-            paramnames = (''.join(t for t in p.itertext())
-                          for p in params)
-            paramdecl += ', '.join(paramnames)
-        else:
-            paramdecl += 'void'
-        paramdecl += ");"
-        return [pdecl + indentdecl, tdecl + paramdecl]
-
-    def newline(self):
-        """Print a newline to the output file (utility function)"""
-        write('', file=self.outFile)
-
-    def setRegistry(self, registry):
-        self.registry = registry
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/genvk.py b/codegen/vulkan/vulkan-docs-next/scripts/genvk.py
deleted file mode 100755
index b8b24c9..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/genvk.py
+++ /dev/null
@@ -1,230 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2013-2023 The Khronos Group Inc.
-# Copyright 2023-2024 Google Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import argparse
-import os
-import re
-import sys
-import xml.etree.ElementTree as etree
-
-sys.path.append(os.path.abspath(os.path.dirname(__file__)))
-
-from cgenerator import CGeneratorOptions, COutputGenerator
-
-from generator import write
-from reg import Registry
-
-# gfxstream + cereal modules
-from cerealgenerator import CerealGenerator
-
-from typing import Optional
-
-def makeREstring(strings, default=None, strings_are_regex=False):
-    """Turn a list of strings into a regexp string matching exactly those strings."""
-    if strings or default is None:
-        if not strings_are_regex:
-            strings = (re.escape(s) for s in strings)
-        return '^(' + '|'.join(strings) + ')$'
-    return default
-
-
-def makeGenOpts(args):
-    """Returns a directory of [ generator function, generator options ] indexed
-    by specified short names. The generator options incorporate the following
-    parameters:
-
-    args is an parsed argument object; see below for the fields that are used."""
-    global genOpts
-    genOpts = {}
-
-    # Output target directory
-    directory = args.directory
-
-    # Descriptive names for various regexp patterns used to select
-    # versions and extensions
-    allFormats = allFeatures = allExtensions = r'.*'
-
-    # Turn lists of names/patterns into matching regular expressions
-    emitExtensionsPat    = makeREstring([], allExtensions)
-    emitFormatsPat       = makeREstring([], allFormats)
-    featuresPat          = makeREstring([], allFeatures)
-
-    # Copyright text prefixing all headers (list of strings).
-    # The SPDX formatting below works around constraints of the 'reuse' tool
-    prefixStrings = [
-        '/*',
-        '** Copyright 2015-2023 The Khronos Group Inc.',
-        '**',
-        '** SPDX-License-Identifier' + ': Apache-2.0',
-        '*/',
-        ''
-    ]
-
-    # Text specific to Vulkan headers
-    vkPrefixStrings = [
-        '/*',
-        '** This header is generated from the Khronos Vulkan XML API Registry.',
-        '**',
-        '*/',
-        ''
-    ]
-
-    genOpts['cereal'] = [
-            CerealGenerator,
-            CGeneratorOptions(
-                directory         = directory,
-                versions          = featuresPat,
-                emitversions      = featuresPat,
-                addExtensions     = None,
-                emitExtensions    = emitExtensionsPat,
-                prefixText        = prefixStrings + vkPrefixStrings,
-                apientry          = 'VKAPI_CALL ',
-                apientryp         = 'VKAPI_PTR *',
-                alignFuncParam    = 48)
-        ]
-
-    gfxstreamPrefixStrings = [
-        '#pragma once',
-        '#ifdef VK_GFXSTREAM_STRUCTURE_TYPE_EXT',
-        '#include "vulkan_gfxstream_structure_type.h"',
-        '#endif',
-    ]
-
-    # gfxstream specific header
-    genOpts['vulkan_gfxstream.h'] = [
-          COutputGenerator,
-          CGeneratorOptions(
-            filename          = 'vulkan_gfxstream.h',
-            directory         = directory,
-            versions          = featuresPat,
-            emitversions      = None,
-            addExtensions     = makeREstring(['VK_GOOGLE_gfxstream'], None),
-            emitExtensions    = makeREstring(['VK_GOOGLE_gfxstream'], None),
-            prefixText        = prefixStrings + vkPrefixStrings + gfxstreamPrefixStrings,
-            # Use #pragma once in the prefixText instead, so that we can put the copyright comments
-            # at the beginning of the file.
-            apientry          = 'VKAPI_CALL ',
-            apientryp         = 'VKAPI_PTR *',
-            alignFuncParam    = 48)
-        ]
-
-def genTarget(args):
-    """Create an API generator and corresponding generator options based on
-    the requested target and command line options.
-
-    This is encapsulated in a function so it can be profiled and/or timed.
-    The args parameter is an parsed argument object containing the following
-    fields that are used:
-
-    - target - target to generate
-    - directory - directory to generate it in
-    - extensions - list of additional extensions to include in generated interfaces"""
-
-    # Create generator options with parameters specified on command line
-    makeGenOpts(args)
-
-    # Select a generator matching the requested target
-    if args.target in genOpts:
-        createGenerator = genOpts[args.target][0]
-        options = genOpts[args.target][1]
-
-        gen = createGenerator(errFile=errWarn,
-                              warnFile=errWarn,
-                              diagFile=diag)
-        return (gen, options)
-    else:
-        return None
-
-
-# -feature name
-# -extension name
-# For both, "name" may be a single name, or a space-separated list
-# of names, or a regular expression.
-if __name__ == '__main__':
-    parser = argparse.ArgumentParser()
-    parser.add_argument('-registry', action='store',
-                        default='vk.xml',
-                        help='Use specified registry file instead of vk.xml')
-    parser.add_argument('-registryGfxstream', action='store',
-                        default=None,
-                        help='Use specified gfxstream registry file')
-    parser.add_argument('-o', action='store', dest='directory',
-                        default='.',
-                        help='Create target and related files in specified directory')
-    parser.add_argument('target', metavar='target', nargs='?',
-                        help='Specify target')
-
-    args = parser.parse_args()
-
-    errWarn = sys.stderr
-    diag = None
-
-    # Create the API generator & generator options
-    (gen, options) = genTarget(args)
-
-    # Create the registry object with the specified generator and generator
-    # options. The options are set before XML loading as they may affect it.
-    reg = Registry(gen, options)
-
-    # Parse the specified registry XML into an ElementTree object
-    tree = etree.parse(args.registry)
-
-    # Merge the gfxstream registry with the official Vulkan registry if the
-    # target is the cereal generator
-    if args.registryGfxstream is not None and args.target == 'cereal':
-        treeGfxstream = etree.parse(args.registryGfxstream)
-        treeRoot = tree.getroot()
-        treeGfxstreamRoot = treeGfxstream.getroot()
-
-        def getEntryName(entry) -> Optional[str]:
-            name = entry.get("name")
-            if name is not None:
-                return name
-            try:
-                return entry.find("proto").find("name").text
-            except AttributeError:
-                return None
-
-        for entriesName in ['types', 'commands', 'extensions']:
-            treeEntries = treeRoot.find(entriesName)
-
-            originalEntryDict = {}
-            for entry in treeEntries:
-                name = getEntryName(entry)
-                if name is not None:
-                    originalEntryDict[name] = entry
-
-            for entry in treeGfxstreamRoot.find(entriesName):
-                name = getEntryName(entry)
-                # New entry, just append to entry list
-                if name not in originalEntryDict.keys():
-                    treeEntries.append(entry)
-                    continue
-
-                originalEntry = originalEntryDict[name]
-
-                # Extending an existing entry. This happens for MVK.
-                if entriesName == "extensions":
-                    for key, value in entry.attrib.items():
-                        originalEntry.set(key, value)
-                    require = entry.find("require")
-                    if require is not None:
-                        for child in require:
-                            originalEntry.find("require").append(child)
-                    continue
-
-                # Overwriting an existing entry. This happen for
-                # VkNativeBufferANDROID
-                if entriesName == "types" or entriesName == "commands":
-                    originalEntry.clear()
-                    originalEntry.attrib = entry.attrib
-                    for child in entry:
-                        originalEntry.append(child)
-
-    # Load the XML tree into the registry object
-    reg.loadElementTree(tree)
-    reg.apiGen()
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/reg.py b/codegen/vulkan/vulkan-docs-next/scripts/reg.py
deleted file mode 100644
index 803825b..0000000
--- a/codegen/vulkan/vulkan-docs-next/scripts/reg.py
+++ /dev/null
@@ -1,910 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2023 The Khronos Group Inc.
-# Copyright 2023-2024 Google Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-"""Types and classes for manipulating an API registry."""
-
-import copy
-import re
-import sys
-import xml.etree.ElementTree as etree
-from collections import defaultdict, deque, namedtuple
-
-from generator import GeneratorOptions, OutputGenerator, noneStr, write
-
-def apiNameMatch(str, supported):
-    """Return whether a required api name matches a pattern specified for an
-    XML <feature> 'api' attribute or <extension> 'supported' attribute.
-
-    - str - API name such as 'vulkan' or 'openxr'. May be None, in which
-        case it never matches (this should not happen).
-    - supported - comma-separated list of XML API names. May be None, in
-        which case str always matches (this is the usual case)."""
-
-    if str is not None:
-        return supported is None or str in supported.split(',')
-
-    # Fallthrough case - either str is None or the test failed
-    return False
-
-def matchAPIProfile(api, elem):
-    """Return whether an API and profile
-    like `"gl(core)|gles1(common-lite)"`."""
-    # Match 'api', if present
-    elem_api = elem.get('api')
-    if elem_api:
-        if api is None:
-            raise UserWarning("No API requested, but 'api' attribute is present with value '"
-                              + elem_api + "'")
-        elif api != elem_api:
-            # Requested API does not match attribute
-            return False
-    return True
-
-class BaseInfo:
-    """Base class for information about a registry feature
-    (type/group/enum/command/API/extension).
-
-    Represents the state of a registry feature, used during API generation.
-    """
-
-    def __init__(self, elem):
-        self.required = False
-        """should this feature be defined during header generation
-        (has it been removed by a profile or version)?"""
-
-        self.declared = False
-        "has this feature been defined already?"
-
-        self.elem = elem
-        "etree Element for this feature"
-
-    def resetState(self):
-        """Reset required/declared to initial values. Used
-        prior to generating a new API interface."""
-        self.required = False
-        self.declared = False
-
-    def compareKeys(self, info, key, required = False):
-        """Return True if self.elem and info.elem have the same attribute
-           value for key.
-           If 'required' is not True, also returns True if neither element
-           has an attribute value for key."""
-
-        if required and key not in self.elem.keys():
-            return False
-        return self.elem.get(key) == info.elem.get(key)
-
-    def compareElem(self, info, infoName):
-        """Return True if self.elem and info.elem have the same definition.
-        info - the other object
-        infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' /
-                   'extension'"""
-
-        if infoName == 'enum':
-            if self.compareKeys(info, 'extends'):
-                # Either both extend the same type, or no type
-                if (self.compareKeys(info, 'value', required = True) or
-                    self.compareKeys(info, 'bitpos', required = True)):
-                    # If both specify the same value or bit position,
-                    # they are equal
-                    return True
-                elif (self.compareKeys(info, 'extnumber') and
-                      self.compareKeys(info, 'offset') and
-                      self.compareKeys(info, 'dir')):
-                    # If both specify the same relative offset, they are equal
-                    return True
-                elif (self.compareKeys(info, 'alias')):
-                    # If both are aliases of the same value
-                    return True
-                else:
-                    return False
-            else:
-                # The same enum cannot extend two different types
-                return False
-        else:
-            # Non-<enum>s should never be redefined
-            return False
-
-
-class TypeInfo(BaseInfo):
-    """Registry information about a type. No additional state
-      beyond BaseInfo is required."""
-
-    def __init__(self, elem):
-        BaseInfo.__init__(self, elem)
-        self.additionalValidity = []
-        self.removedValidity = []
-
-    def getMembers(self):
-        """Get a collection of all member elements for this type, if any."""
-        return self.elem.findall('member')
-
-    def resetState(self):
-        BaseInfo.resetState(self)
-        self.additionalValidity = []
-        self.removedValidity = []
-
-
-class GroupInfo(BaseInfo):
-    """Registry information about a group of related enums
-    in an <enums> block, generally corresponding to a C "enum" type."""
-
-    def __init__(self, elem):
-        BaseInfo.__init__(self, elem)
-
-
-class EnumInfo(BaseInfo):
-    """Registry information about an enum"""
-
-    def __init__(self, elem):
-        BaseInfo.__init__(self, elem)
-        self.type = elem.get('type')
-        """numeric type of the value of the <enum> tag
-        ( '' for GLint, 'u' for GLuint, 'ull' for GLuint64 )"""
-        if self.type is None:
-            self.type = ''
-
-
-class CmdInfo(BaseInfo):
-    """Registry information about a command"""
-
-    def __init__(self, elem):
-        BaseInfo.__init__(self, elem)
-        self.additionalValidity = []
-        self.removedValidity = []
-
-    def getParams(self):
-        """Get a collection of all param elements for this command, if any."""
-        return self.elem.findall('param')
-
-    def resetState(self):
-        BaseInfo.resetState(self)
-        self.additionalValidity = []
-        self.removedValidity = []
-
-
-class FeatureInfo(BaseInfo):
-    """Registry information about an API <feature>
-    or <extension>."""
-
-    def __init__(self, elem):
-        BaseInfo.__init__(self, elem)
-        self.name = elem.get('name')
-        "feature name string (e.g. 'VK_KHR_surface')"
-
-        self.emit = False
-        "has this feature been defined already?"
-
-        self.sortorder = int(elem.get('sortorder', 0))
-        """explicit numeric sort key within feature and extension groups.
-        Defaults to 0."""
-
-        # Determine element category (vendor). Only works
-        # for <extension> elements.
-        if elem.tag == 'feature':
-            # Element category (vendor) is meaningless for <feature>
-            self.category = 'VERSION'
-            """category, e.g. VERSION or khr/vendor tag"""
-
-            self.version = elem.get('name')
-            """feature name string"""
-
-            self.versionNumber = elem.get('number')
-            """versionNumber - API version number, taken from the 'number'
-               attribute of <feature>. Extensions do not have API version
-               numbers and are assigned number 0."""
-
-            self.number = 0
-            self.supported = None
-        else:
-            # Extract vendor portion of <APIprefix>_<vendor>_<name>
-            self.category = self.name.split('_', 2)[1]
-            self.version = "0"
-            self.versionNumber = "0"
-
-            self.number = int(elem.get('number','0'))
-            """extension number, used for ordering and for assigning
-            enumerant offsets. <feature> features do not have extension
-            numbers and are assigned number 0, as are extensions without
-            numbers, so sorting works."""
-
-            self.supported = elem.get('supported', 'disabled')
-
-class Registry:
-    """Object representing an API registry, loaded from an XML file."""
-
-    def __init__(self, gen=None, genOpts=None):
-        if gen is None:
-            # If not specified, give a default object so messaging will work
-            self.gen = OutputGenerator()
-        else:
-            self.gen = gen
-        "Output generator used to write headers / messages"
-
-        if genOpts is None:
-            # If no generator is provided, we may still need the XML API name
-            # (for example, in genRef.py).
-            self.genOpts = GeneratorOptions(apiname = 'vulkan')
-        else:
-            self.genOpts = genOpts
-        "Options controlling features to write and how to format them"
-
-        self.gen.registry = self
-        self.gen.genOpts = self.genOpts
-        self.gen.genOpts.registry = self
-
-        self.tree = None
-        "ElementTree containing the root `<registry>`"
-
-        self.typedict = {}
-        "dictionary of TypeInfo objects keyed by type name"
-
-        self.groupdict = {}
-        "dictionary of GroupInfo objects keyed by group name"
-
-        self.enumdict = {}
-        "dictionary of EnumInfo objects keyed by enum name"
-
-        self.cmddict = {}
-        "dictionary of CmdInfo objects keyed by command name"
-
-        self.apidict = {}
-        "dictionary of FeatureInfo objects for `<feature>` elements keyed by API name"
-
-        self.extensions = []
-        "list of `<extension>` Elements"
-
-        self.extdict = {}
-        "dictionary of FeatureInfo objects for `<extension>` elements keyed by extension name"
-
-        self.emitFeatures = False
-        """True to actually emit features for a version / extension,
-        or False to just treat them as emitted"""
-
-        self.filename     = None
-
-    def loadElementTree(self, tree):
-        """Load ElementTree into a Registry object and parse it."""
-        self.tree = tree
-        self.parseTree()
-
-    def loadFile(self, file):
-        """Load an API registry XML file into a Registry object and parse it"""
-        self.filename = file
-        self.tree = etree.parse(file)
-        self.parseTree()
-
-    def setGenerator(self, gen):
-        """Specify output generator object.
-
-        `None` restores the default generator."""
-        self.gen = gen
-        self.gen.setRegistry(self)
-
-    def addElementInfo(self, elem, info, infoName, dictionary):
-        """Add information about an element to the corresponding dictionary.
-
-        Intended for internal use only.
-
-        - elem - `<type>`/`<enums>`/`<enum>`/`<command>`/`<feature>`/`<extension>`/`<spirvextension>`/`<spirvcapability>`/`<format>`/`<syncstage>`/`<syncaccess>`/`<syncpipeline>` Element
-        - info - corresponding {Type|Group|Enum|Cmd|Feature|Spirv|Format|SyncStage|SyncAccess|SyncPipeline}Info object
-        - infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension' / 'spirvextension' / 'spirvcapability' / 'format' / 'syncstage' / 'syncaccess' / 'syncpipeline'
-        - dictionary - self.{type|group|enum|cmd|api|ext|format|spirvext|spirvcap|sync}dict
-
-        The dictionary key is the element 'name' attribute."""
-
-        key = elem.get('name')
-        if key in dictionary:
-            if not dictionary[key].compareElem(info, infoName):
-                return
-        else:
-            dictionary[key] = info
-
-    def lookupElementInfo(self, fname, dictionary):
-        """Find a {Type|Enum|Cmd}Info object by name.
-
-        Intended for internal use only.
-
-        If an object qualified by API name exists, use that.
-
-        - fname - name of type / enum / command
-        - dictionary - self.{type|enum|cmd}dict"""
-        key = (fname, 'vulkan')
-        if key in dictionary:
-            return dictionary[key]
-        if fname in dictionary:
-            return dictionary[fname]
-
-        return None
-
-    def parseTree(self):
-        """Parse the registry Element, once created"""
-        # This must be the Element for the root <registry>
-        if self.tree is None:
-            raise RuntimeError("Tree not initialized!")
-        self.reg = self.tree.getroot()
-
-        # There is usually one <types> block; more are OK
-        # Required <type> attributes: 'name' or nested <name> tag contents
-        self.typedict = {}
-        for type_elem in self.reg.findall('types/type'):
-            # If the <type> does not already have a 'name' attribute, set
-            # it from contents of its <name> tag.
-            if type_elem.get('name') is None:
-                name_elem = type_elem.find('name')
-                if name_elem is None or not name_elem.text:
-                    raise RuntimeError("Type without a name!")
-                type_elem.set('name', name_elem.text)
-            self.addElementInfo(type_elem, TypeInfo(type_elem), 'type', self.typedict)
-
-        # Create dictionary of registry enum groups from <enums> tags.
-        #
-        # Required <enums> attributes: 'name'. If no name is given, one is
-        # generated, but that group cannot be identified and turned into an
-        # enum type definition - it is just a container for <enum> tags.
-        self.groupdict = {}
-        for group in self.reg.findall('enums'):
-            self.addElementInfo(group, GroupInfo(group), 'group', self.groupdict)
-
-        # Create dictionary of registry enums from <enum> tags
-        #
-        # <enums> tags usually define different namespaces for the values
-        #   defined in those tags, but the actual names all share the
-        #   same dictionary.
-        # Required <enum> attributes: 'name', 'value'
-        # For containing <enums> which have type="enum" or type="bitmask",
-        # tag all contained <enum>s are required. This is a stopgap until
-        # a better scheme for tagging core and extension enums is created.
-        self.enumdict = {}
-        for enums in self.reg.findall('enums'):
-            required = (enums.get('type') is not None)
-            for enum in enums.findall('enum'):
-                enumInfo = EnumInfo(enum)
-                enumInfo.required = required
-                self.addElementInfo(enum, enumInfo, 'enum', self.enumdict)
-
-        # Create dictionary of registry commands from <command> tags
-        # and add 'name' attribute to each <command> tag (where missing)
-        # based on its <proto><name> element.
-        #
-        # There is usually only one <commands> block; more are OK.
-        # Required <command> attributes: 'name' or <proto><name> tag contents
-        self.cmddict = {}
-        # List of commands which alias others. Contains
-        #   [ aliasName, element ]
-        # for each alias
-        cmdAlias = []
-        for cmd in self.reg.findall('commands/command'):
-            # If the <command> does not already have a 'name' attribute, set
-            # it from contents of its <proto><name> tag.
-            name = cmd.get('name')
-            if name is None:
-                name_elem = cmd.find('proto/name')
-                if name_elem is None or not name_elem.text:
-                    raise RuntimeError("Command without a name!")
-                name = cmd.set('name', name_elem.text)
-            ci = CmdInfo(cmd)
-            self.addElementInfo(cmd, ci, 'command', self.cmddict)
-            alias = cmd.get('alias')
-            if alias:
-                cmdAlias.append([name, alias, cmd])
-
-        # Now loop over aliases, injecting a copy of the aliased command's
-        # Element with the aliased prototype name replaced with the command
-        # name - if it exists.
-        for (name, alias, cmd) in cmdAlias:
-            if alias in self.cmddict:
-                aliasInfo = self.cmddict[alias]
-                cmdElem = copy.deepcopy(aliasInfo.elem)
-                cmdElem.find('proto/name').text = name
-                cmdElem.set('name', name)
-                cmdElem.set('alias', alias)
-                ci = CmdInfo(cmdElem)
-                # Replace the dictionary entry for the CmdInfo element
-                self.cmddict[name] = ci
-
-        # Create dictionaries of API and extension interfaces
-        #   from toplevel <api> and <extension> tags.
-        self.apidict = {}
-        for feature in self.reg.findall('feature'):
-            featureInfo = FeatureInfo(feature)
-            self.addElementInfo(feature, featureInfo, 'feature', self.apidict)
-
-            # Add additional enums defined only in <feature> tags
-            # to the corresponding enumerated type.
-            # When seen here, the <enum> element, processed to contain the
-            # numeric enum value, is added to the corresponding <enums>
-            # element, as well as adding to the enum dictionary. It is no
-            # longer removed from the <require> element it is introduced in.
-            # Instead, generateRequiredInterface ignores <enum> elements
-            # that extend enumerated types.
-            #
-            # For <enum> tags which are actually just constants, if there is
-            # no 'extends' tag but there is a 'value' or 'bitpos' tag, just
-            # add an EnumInfo record to the dictionary. That works because
-            # output generation of constants is purely dependency-based, and
-            # does not need to iterate through the XML tags.
-            for elem in feature.findall('require'):
-                for enum in elem.findall('enum'):
-                    addEnumInfo = False
-                    groupName = enum.get('extends')
-                    if groupName is not None:
-                        # Add version number attribute to the <enum> element
-                        enum.set('version', featureInfo.version)
-                        # Look up the GroupInfo with matching groupName
-                        if groupName in self.groupdict:
-                            gi = self.groupdict[groupName]
-                            gi.elem.append(copy.deepcopy(enum))
-                        addEnumInfo = True
-                    elif enum.get('value') or enum.get('bitpos') or enum.get('alias'):
-                        addEnumInfo = True
-                    if addEnumInfo:
-                        enumInfo = EnumInfo(enum)
-                        self.addElementInfo(enum, enumInfo, 'enum', self.enumdict)
-
-        self.extensions = self.reg.findall('extensions/extension')
-        self.extdict = {}
-        for feature in self.extensions:
-            featureInfo = FeatureInfo(feature)
-            self.addElementInfo(feature, featureInfo, 'extension', self.extdict)
-
-            # Add additional enums defined only in <extension> tags
-            # to the corresponding core type.
-            # Algorithm matches that of enums in a "feature" tag as above.
-            #
-            # This code also adds a 'extnumber' attribute containing the
-            # extension number, used for enumerant value calculation.
-            for elem in feature.findall('require'):
-                for enum in elem.findall('enum'):
-                    addEnumInfo = False
-                    groupName = enum.get('extends')
-                    if groupName is not None:
-
-                        # Add <extension> block's extension number attribute to
-                        # the <enum> element unless specified explicitly, such
-                        # as when redefining an enum in another extension.
-                        extnumber = enum.get('extnumber')
-                        if not extnumber:
-                            enum.set('extnumber', str(featureInfo.number))
-
-                        enum.set('extname', featureInfo.name)
-                        enum.set('supported', noneStr(featureInfo.supported))
-                        # Look up the GroupInfo with matching groupName
-                        if groupName in self.groupdict:
-                            gi = self.groupdict[groupName]
-                            gi.elem.append(copy.deepcopy(enum))
-
-                        addEnumInfo = True
-                    elif enum.get('value') or enum.get('bitpos') or enum.get('alias'):
-                        addEnumInfo = True
-                    if addEnumInfo:
-                        enumInfo = EnumInfo(enum)
-                        self.addElementInfo(enum, enumInfo, 'enum', self.enumdict)
-
-    def markTypeRequired(self, typename, required):
-        """Require (along with its dependencies) or remove (but not its dependencies) a type.
-
-        - typename - name of type
-        - required - boolean (to tag features as required or not)
-        """
-        # Get TypeInfo object for <type> tag corresponding to typename
-        typeinfo = self.lookupElementInfo(typename, self.typedict)
-        if typeinfo is not None:
-            if required:
-                # Tag type dependencies in 'alias' and 'required' attributes as
-                # required. This does not un-tag dependencies in a <remove>
-                # tag. See comments in markRequired() below for the reason.
-                for attrib_name in ['requires', 'alias']:
-                    depname = typeinfo.elem.get(attrib_name)
-                    if depname:
-                        # Do not recurse on self-referential structures.
-                        if typename != depname:
-                            self.markTypeRequired(depname, required)
-                # Tag types used in defining this type (e.g. in nested
-                # <type> tags)
-                # Look for <type> in entire <command> tree,
-                # not just immediate children
-                for subtype in typeinfo.elem.findall('.//type'):
-                    if typename != subtype.text:
-                        self.markTypeRequired(subtype.text, required)
-                # Tag enums used in defining this type, for example in
-                #   <member><name>member</name>[<enum>MEMBER_SIZE</enum>]</member>
-                for subenum in typeinfo.elem.findall('.//enum'):
-                    self.markEnumRequired(subenum.text, required)
-                # Tag type dependency in 'bitvalues' attributes as
-                # required. This ensures that the bit values for a flag
-                # are emitted
-                depType = typeinfo.elem.get('bitvalues')
-                if depType:
-                    self.markTypeRequired(depType, required)
-                    group = self.lookupElementInfo(depType, self.groupdict)
-                    if group is not None:
-                        group.flagType = typeinfo
-
-            typeinfo.required = required
-
-    def markEnumRequired(self, enumname, required):
-        """Mark an enum as required or not.
-
-        - enumname - name of enum
-        - required - boolean (to tag features as required or not)"""
-
-        enum = self.lookupElementInfo(enumname, self.enumdict)
-        if enum is not None:
-            # If the enum is part of a group, and is being removed, then
-            # look it up in that <enums> tag and remove the Element there,
-            # so that it is not visible to generators (which traverse the
-            # <enums> tag elements rather than using the dictionaries).
-            if not required:
-                groupName = enum.elem.get('extends')
-                if groupName is not None:
-
-                    # Look up the Info with matching groupName
-                    if groupName in self.groupdict:
-                        gi = self.groupdict[groupName]
-                        gienum = gi.elem.find("enum[@name='" + enumname + "']")
-                        if gienum is not None:
-                            # Remove copy of this enum from the group
-                            gi.elem.remove(gienum)
-                else:
-                    # This enum is not an extending enum.
-                    # The XML tree must be searched for all <enums> that
-                    # might have it, so we know the parent to delete from.
-
-                    enumName = enum.elem.get('name')
-                    count = 0
-                    for enums in self.reg.findall('enums'):
-                        for thisEnum in enums.findall('enum'):
-                            if thisEnum.get('name') == enumName:
-                                # Actually remove it
-                                count = count + 1
-                                enums.remove(thisEnum)
-
-            enum.required = required
-            # Tag enum dependencies in 'alias' attribute as required
-            depname = enum.elem.get('alias')
-            if depname:
-                self.markEnumRequired(depname, required)
-
-    def markCmdRequired(self, cmdname, required):
-        """Mark a command as required or not.
-
-        - cmdname - name of command
-        - required - boolean (to tag features as required or not)"""
-        cmd = self.lookupElementInfo(cmdname, self.cmddict)
-        if cmd is not None:
-            cmd.required = required
-            # Tag all parameter types of this command as required.
-            # This does not remove types of commands in a <remove>
-            # tag, because many other commands may use the same type.
-            # We could be more clever and reference count types,
-            # instead of using a boolean.
-            if required:
-                # Look for <type> in entire <command> tree,
-                # not just immediate children
-                for type_elem in cmd.elem.findall('.//type'):
-                    self.markTypeRequired(type_elem.text, required)
-
-    def markRequired(self, featurename, feature, required):
-        """Require or remove features specified in the Element.
-
-        - featurename - name of the feature
-        - feature - Element for `<require>` or `<remove>` tag
-        - required - boolean (to tag features as required or not)"""
-        # Loop over types, enums, and commands in the tag
-        # @@ It would be possible to respect 'api' and 'profile' attributes
-        #  in individual features, but that is not done yet.
-        for typeElem in feature.findall('type'):
-            self.markTypeRequired(typeElem.get('name'), required)
-        for enumElem in feature.findall('enum'):
-            self.markEnumRequired(enumElem.get('name'), required)
-
-        for cmdElem in feature.findall('command'):
-            self.markCmdRequired(cmdElem.get('name'), required)
-
-    def fillFeatureDictionary(self, interface, featurename, api):
-        """Capture added interfaces for a `<version>` or `<extension>`.
-
-        - interface - Element for `<version>` or `<extension>`, containing
-          `<require>` and `<remove>` tags
-        - featurename - name of the feature
-        - api - string specifying API name being generated
-        """
-
-        # Explicitly initialize known types - errors for unhandled categories
-        self.gen.featureDictionary[featurename] = {
-            "enumconstant": {},
-            "command": {},
-            "enum": {},
-            "struct": {},
-            "handle": {},
-            "basetype": {},
-            "include": {},
-            "define": {},
-            "bitmask": {},
-            "union": {},
-            "funcpointer": {},
-        }
-
-    def requireFeatures(self, interface, featurename, api):
-        """Process `<require>` tags for a `<version>` or `<extension>`.
-
-        - interface - Element for `<version>` or `<extension>`, containing
-          `<require>` tags
-        - featurename - name of the feature
-        - api - string specifying API name being generated
-        - profile - string specifying API profile being generated"""
-
-        # <require> marks things that are required by this version/profile
-        for feature in interface.findall('require'):
-            if matchAPIProfile(api, feature):
-                self.markRequired(featurename, feature, True)
-
-    def generateFeature(self, fname, ftype, dictionary, explicit=False):
-        """Generate a single type / enum group / enum / command,
-        and all its dependencies as needed.
-
-        - fname - name of feature (`<type>`/`<enum>`/`<command>`)
-        - ftype - type of feature, 'type' | 'enum' | 'command'
-        - dictionary - of *Info objects - self.{type|enum|cmd}dict
-        - explicit - True if this is explicitly required by the top-level
-          XML <require> tag, False if it is a dependency of an explicit
-          requirement."""
-
-        f = self.lookupElementInfo(fname, dictionary)
-        if f is None:
-            return
-
-        if not f.required:
-            return
-
-        # If feature is not required, or has already been declared, return
-        if f.declared:
-            return
-        # Always mark feature declared, as though actually emitted
-        f.declared = True
-
-        # Determine if this is an alias, and of what, if so
-        alias = f.elem.get('alias')
-        # Pull in dependent declaration(s) of the feature.
-        # For types, there may be one type in the 'requires' attribute of
-        #   the element, one in the 'alias' attribute, and many in
-        #   embedded <type> and <enum> tags within the element.
-        # For commands, there may be many in <type> tags within the element.
-        # For enums, no dependencies are allowed (though perhaps if you
-        #   have a uint64 enum, it should require that type).
-        genProc = None
-        followupFeature = None
-        if ftype == 'type':
-            genProc = self.gen.genType
-
-            # Generate type dependencies in 'alias' and 'requires' attributes
-            if alias:
-                self.generateFeature(alias, 'type', self.typedict)
-            requires = f.elem.get('requires')
-            if requires:
-                self.generateFeature(requires, 'type', self.typedict)
-
-            # Generate types used in defining this type (e.g. in nested
-            # <type> tags)
-            # Look for <type> in entire <command> tree,
-            # not just immediate children
-            for subtype in f.elem.findall('.//type'):
-                self.generateFeature(subtype.text, 'type', self.typedict)
-
-            # Generate enums used in defining this type, for example in
-            #   <member><name>member</name>[<enum>MEMBER_SIZE</enum>]</member>
-            for subtype in f.elem.findall('.//enum'):
-                self.generateFeature(subtype.text, 'enum', self.enumdict)
-
-            # If the type is an enum group, look up the corresponding
-            # group in the group dictionary and generate that instead.
-            if f.elem.get('category') == 'enum':
-                group = self.lookupElementInfo(fname, self.groupdict)
-                if alias is not None:
-                    # Now, pass the *aliased* GroupInfo to the genGroup, but
-                    # with an additional parameter which is the alias name.
-                    genProc = self.gen.genGroup
-                    f = self.lookupElementInfo(alias, self.groupdict)
-                elif group is None:
-                    return
-                else:
-                    genProc = self.gen.genGroup
-                    f = group
-
-                    # @ The enum group is not ready for generation. At this
-                    # @   point, it contains all <enum> tags injected by
-                    # @   <extension> tags without any verification of whether
-                    # @   they are required or not. It may also contain
-                    # @   duplicates injected by multiple consistent
-                    # @   definitions of an <enum>.
-
-                    # @ Pass over each enum, marking its enumdict[] entry as
-                    # @ required or not. Mark aliases of enums as required,
-                    # @ too.
-
-                    enums = group.elem.findall('enum')
-                    # Check for required enums, including aliases
-                    # LATER - Check for, report, and remove duplicates?
-                    enumAliases = []
-                    for elem in enums:
-                        name = elem.get('name')
-
-                        required = False
-
-                        extname = elem.get('extname')
-                        version = elem.get('version')
-                        if extname is not None:
-                            # 'supported' attribute was injected when the <enum> element was
-                            # moved into the <enums> group in Registry.parseTree()
-                            supported_list = elem.get('supported').split(",")
-                            if 'vulkan' in supported_list:
-                                required = True
-                            elif re.match(self.genOpts.addExtensions, extname) is not None:
-                                required = True
-                        elif version is not None:
-                            required = re.match(self.genOpts.emitversions, version) is not None
-                        else:
-                            required = True
-
-                        if required:
-                            # Mark this element as required (in the element, not the EnumInfo)
-                            elem.set('required', 'true')
-                            # If it is an alias, track that for later use
-                            enumAlias = elem.get('alias')
-                            if enumAlias:
-                                enumAliases.append(enumAlias)
-                    for elem in enums:
-                        name = elem.get('name')
-                        if name in enumAliases:
-                            elem.set('required', 'true')
-            if f is None:
-                raise RuntimeError("Should not get here")
-            if f.elem.get('category') == 'bitmask':
-                followupFeature = f.elem.get('bitvalues')
-        elif ftype == 'command':
-            # Generate command dependencies in 'alias' attribute
-            if alias:
-                self.generateFeature(alias, 'command', self.cmddict)
-
-            genProc = self.gen.genCmd
-            for type_elem in f.elem.findall('.//type'):
-                depname = type_elem.text
-                self.generateFeature(depname, 'type', self.typedict)
-        elif ftype == 'enum':
-            # Generate enum dependencies in 'alias' attribute
-            if alias:
-                self.generateFeature(alias, 'enum', self.enumdict)
-            genProc = self.gen.genEnum
-
-        # Actually generate the type only if emitting declarations
-        if self.emitFeatures:
-            if genProc is None:
-                raise RuntimeError("genProc is None when we should be emitting")
-            genProc(f, fname, alias)
-
-        if followupFeature:
-            self.generateFeature(followupFeature, "type", self.typedict)
-
-    def generateRequiredInterface(self, interface):
-        """Generate all interfaces required by an API version or extension.
-
-        - interface - Element for `<version>` or `<extension>`"""
-
-        # Loop over all features inside all <require> tags.
-        for features in interface.findall('require'):
-            for t in features.findall('type'):
-                self.generateFeature(t.get('name'), 'type', self.typedict, explicit=True)
-            for e in features.findall('enum'):
-                # If this is an enum extending an enumerated type, do not
-                # generate it - this has already been done in reg.parseTree,
-                # by copying this element into the enumerated type.
-                enumextends = e.get('extends')
-                if not enumextends:
-                    self.generateFeature(e.get('name'), 'enum', self.enumdict, explicit=True)
-            for c in features.findall('command'):
-                self.generateFeature(c.get('name'), 'command', self.cmddict, explicit=True)
-
-    def apiGen(self):
-        """Generate interface for specified versions using the current
-        generator and generator options"""
-
-        # Could reset required/declared flags for all features here.
-        # This has been removed as never used. The initial motivation was
-        # the idea of calling apiGen() repeatedly for different targets, but
-        # this has never been done. The 20% or so build-time speedup that
-        # might result is not worth the effort to make it actually work.
-        #
-        # self.apiReset()
-
-        # Compile regexps used to select versions & extensions
-        regVersions = re.compile(self.genOpts.versions)
-        regEmitVersions = re.compile(self.genOpts.emitversions)
-        regAddExtensions = re.compile(self.genOpts.addExtensions)
-        regEmitExtensions = re.compile(self.genOpts.emitExtensions)
-
-        # Get all matching API feature names & add to list of FeatureInfo
-        # Note we used to select on feature version attributes, not names.
-        features = []
-        apiMatch = False
-        for key in self.apidict:
-            fi = self.apidict[key]
-            api = fi.elem.get('api')
-            if apiNameMatch('vulkan', api):
-                apiMatch = True
-                if regVersions.match(fi.name):
-                    # Matches API & version #s being generated. Mark for
-                    # emission and add to the features[] list .
-                    # @@ Could use 'declared' instead of 'emit'?
-                    fi.emit = (regEmitVersions.match(fi.name) is not None)
-                    features.append(fi)
-
-        # Get all matching extensions, in order by their extension number,
-        # and add to the list of features.
-        # Start with extensions whose 'supported' attributes match the API
-        # being generated. Add extensions matching the pattern specified in
-        # regExtensions, then remove extensions matching the pattern
-        # specified in regRemoveExtensions
-        for (extName, ei) in sorted(self.extdict.items(), key=lambda x: x[1].number if x[1].number is not None else '0'):
-            extName = ei.name
-            include = False
-
-            # Include extension if defaultExtensions is not None and is
-            # exactly matched by the 'supported' attribute.
-            if apiNameMatch('vulkan', ei.elem.get('supported')):
-                include = True
-
-            # Include additional extensions if the extension name matches
-            # the regexp specified in the generator options. This allows
-            # forcing extensions into an interface even if they are not
-            # tagged appropriately in the registry.
-            # However, we still respect the 'supported' attribute.
-            if regAddExtensions.match(extName) is not None:
-                if not apiNameMatch('vulkan', ei.elem.get('supported')):
-                    include = False
-                else:
-                    include = True
-            # If the extension is to be included, add it to the
-            # extension features list.
-            if include:
-                ei.emit = (regEmitExtensions.match(extName) is not None)
-                features.append(ei)
-
-        # Sort the features list, if a sort procedure is defined
-        if self.genOpts.sortProcedure:
-            self.genOpts.sortProcedure(features)
-
-        # Passes 1+2: loop over requested API versions and extensions tagging
-        #   types/commands/features as required (in an <require> block) or no
-        #   longer required (in an <remove> block). <remove>s are processed
-        #   after all <require>s, so removals win.
-        # If a profile other than 'None' is being generated, it must
-        #   match the profile attribute (if any) of the <require> and
-        #   <remove> tags.
-        for f in features:
-            self.fillFeatureDictionary(f.elem, f.name, 'vulkan')
-            self.requireFeatures(f.elem, f.name, 'vulkan')
-
-        # @@May need to strip <spirvcapability> / <spirvextension> <enable>
-        # tags of these forms:
-        #   <enable version="VK_API_VERSION_1_0"/>
-        #   <enable struct="VkPhysicalDeviceFeatures" feature="geometryShader" requires="VK_VERSION_1_0"/>
-        #   <enable extension="VK_KHR_shader_draw_parameters"/>
-        #   <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-
-        # Pass 3: loop over specified API versions and extensions printing
-        #   declarations for required things which have not already been
-        #   generated.
-        self.gen.beginFile(self.genOpts)
-        for f in features:
-            emit = self.emitFeatures = f.emit
-            # Generate the interface (or just tag its elements as having been
-            # emitted, if they have not been).
-            self.gen.beginFeature(f.elem, emit)
-            self.generateRequiredInterface(f.elem)
-            self.gen.endFeature()
-        self.gen.endFile()
diff --git a/codegen/vulkan/vulkan-docs-next/xml/vk.xml b/codegen/vulkan/vulkan-docs-next/xml/vk.xml
deleted file mode 100644
index b5df31f..0000000
--- a/codegen/vulkan/vulkan-docs-next/xml/vk.xml
+++ /dev/null
@@ -1,26184 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<registry>
-    <comment>
-Copyright 2015-2023 The Khronos Group Inc.
-
-SPDX-License-Identifier: Apache-2.0 OR MIT
-    </comment>
-
-    <comment>
-This file, vk.xml, is the Vulkan API Registry. It is a critically important
-and normative part of the Vulkan Specification, including a canonical
-machine-readable definition of the API, parameter and member validation
-language incorporated into the Specification and reference pages, and other
-material which is registered by Khronos, such as tags used by extension and
-layer authors. The authoritative public version of vk.xml is maintained in
-the default branch (currently named main) of the Khronos Vulkan GitHub
-project. The authoritative private version is maintained in the default
-branch of the member gitlab server.
-    </comment>
-
-    <platforms comment="Vulkan platform names, reserved for use with platform- and window system-specific extensions">
-        <platform name="xlib" protect="VK_USE_PLATFORM_XLIB_KHR" comment="X Window System, Xlib client library"/>
-        <platform name="xlib_xrandr" protect="VK_USE_PLATFORM_XLIB_XRANDR_EXT" comment="X Window System, Xlib client library, XRandR extension"/>
-        <platform name="xcb" protect="VK_USE_PLATFORM_XCB_KHR" comment="X Window System, Xcb client library"/>
-        <platform name="wayland" protect="VK_USE_PLATFORM_WAYLAND_KHR" comment="Wayland display server protocol"/>
-        <platform name="directfb" protect="VK_USE_PLATFORM_DIRECTFB_EXT" comment="DirectFB library"/>
-        <platform name="android" protect="VK_USE_PLATFORM_ANDROID_KHR" comment="Android OS"/>
-        <platform name="win32" protect="VK_USE_PLATFORM_WIN32_KHR" comment="Microsoft Win32 API (also refers to Win64 apps)"/>
-        <platform name="vi" protect="VK_USE_PLATFORM_VI_NN" comment="Nintendo Vi"/>
-        <platform name="ios" protect="VK_USE_PLATFORM_IOS_MVK" comment="Apple IOS"/>
-        <platform name="macos" protect="VK_USE_PLATFORM_MACOS_MVK" comment="Apple MacOS"/>
-        <platform name="metal" protect="VK_USE_PLATFORM_METAL_EXT" comment="Metal on CoreAnimation on Apple platforms"/>
-        <platform name="fuchsia" protect="VK_USE_PLATFORM_FUCHSIA" comment="Fuchsia"/>
-        <platform name="ggp" protect="VK_USE_PLATFORM_GGP" comment="Google Games Platform"/>
-        <platform name="sci" protect="VK_USE_PLATFORM_SCI" comment="NVIDIA SCI"/>
-        <platform name="provisional" protect="VK_ENABLE_BETA_EXTENSIONS" comment="Enable declarations for beta/provisional extensions"/>
-        <platform name="screen" protect="VK_USE_PLATFORM_SCREEN_QNX" comment="QNX Screen Graphics Subsystem"/>
-    </platforms>
-
-    <tags comment="Vulkan vendor/author tags for extensions and layers">
-        <tag name="IMG"         author="Imagination Technologies"      contact="Andrew Garrard @fluppeteer"/>
-        <tag name="AMD"         author="Advanced Micro Devices, Inc."  contact="Daniel Rakos @drakos-amd"/>
-        <tag name="AMDX"        author="Advanced Micro Devices, Inc."  contact="Daniel Rakos @drakos-amd"/>
-        <tag name="ARM"         author="ARM Limited"                   contact="Jan-Harald Fredriksen @janharaldfredriksen-arm"/>
-        <tag name="FSL"         author="Freescale Semiconductor, Inc." contact="Norbert Nopper @FslNopper"/>
-        <tag name="BRCM"        author="Broadcom Corporation"          contact="Graeme Leese @gnl21"/>
-        <tag name="NXP"         author="NXP Semiconductors N.V."       contact="Norbert Nopper @FslNopper"/>
-        <tag name="NV"          author="NVIDIA Corporation"            contact="Daniel Koch @dgkoch"/>
-        <tag name="NVX"         author="NVIDIA Corporation"            contact="Daniel Koch @dgkoch"/>
-        <tag name="VIV"         author="Vivante Corporation"           contact="Yanjun Zhang gitlab:@yanjunzhang"/>
-        <tag name="VSI"         author="VeriSilicon Holdings Co., Ltd." contact="Yanjun Zhang gitlab:@yanjunzhang"/>
-        <tag name="KDAB"        author="KDAB"                          contact="Sean Harmer @seanharmer"/>
-        <tag name="ANDROID"     author="Google LLC"                    contact="Jesse Hall @critsec"/>
-        <tag name="CHROMIUM"    author="Google LLC"                    contact="Jesse Hall @critsec"/>
-        <tag name="FUCHSIA"     author="Google LLC"                    contact="Craig Stout @cdotstout, Jesse Hall @critsec, John Rosasco @rosasco"/>
-        <tag name="GGP"         author="Google, LLC"                   contact="Jean-Francois Roy @jfroy, Hai Nguyen @chaoticbob, Jesse Hall @critsec"/>
-        <tag name="GOOGLE"      author="Google LLC"                    contact="Jesse Hall @critsec"/>
-        <tag name="QCOM"        author="Qualcomm Technologies, Inc."   contact="Jeff Leger @jackohounhd"/>
-        <tag name="LUNARG"      author="LunarG, Inc."                  contact="Karen Ghavam @karenghavam-lunarg"/>
-        <tag name="NZXT"        author="NZXT Inc."                     contact="Jacob Kiesel @xaeroxe"/>
-        <tag name="SAMSUNG"     author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
-        <tag name="SEC"         author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
-        <tag name="TIZEN"       author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
-        <tag name="RENDERDOC"   author="RenderDoc (renderdoc.org)"     contact="Baldur Karlsson @baldurk"/>
-        <tag name="NN"          author="Nintendo Co., Ltd."            contact="Yasuhiro Yoshioka gitlab:@yoshioka_yasuhiro"/>
-        <tag name="MVK"         author="The Brenwill Workshop Ltd."    contact="Bill Hollings @billhollings"/>
-        <tag name="KHR"         author="Khronos"                       contact="Tom Olson @tomolson"/>
-        <tag name="KHX"         author="Khronos"                       contact="Tom Olson @tomolson"/>
-        <tag name="EXT"         author="Multivendor"                   contact="Jon Leech @oddhack"/>
-        <tag name="MESA"        author="Mesa open source project"      contact="Lina Versace @versalinyaa, Daniel Stone @fooishbar, David Airlie @airlied, Faith Ekstrand @gfxstrand"/>
-        <tag name="INTEL"       author="Intel Corporation"             contact="Slawek Grajewski @sgrajewski"/>
-        <tag name="HUAWEI"      author="Huawei Technologies Co. Ltd."  contact="Pan Gao @PanGao-h, Juntao Li @Lawrenceleehw"/>
-        <tag name="VALVE"       author="Valve Corporation"             contact="Pierre-Loup Griffais @plagman, Joshua Ashton @Joshua-Ashton, Hans-Kristian Arntzen @HansKristian-Work"/>
-        <tag name="QNX"         author="BlackBerry Limited"            contact="Mike Gorchak @mgorchak-blackberry, Aaron Ruby @aruby-blackberry"/>
-        <tag name="JUICE"       author="Juice Technologies, Inc."      contact="David McCloskey @damcclos, Dean Beeler @canadacow"/>
-        <tag name="FB"          author="Facebook, Inc"                 contact="Artem Bolgar @artyom17"/>
-        <tag name="RASTERGRID"  author="RasterGrid Kft."               contact="Daniel Rakos @aqnuep"/>
-        <tag name="MSFT"        author="Microsoft Corporation"         contact="Jesse Natalie @jenatali"/>
-    </tags>
-
-    <types comment="Vulkan type definitions">
-        <type name="vk_platform" category="include">#include "vk_platform.h"</type>
-
-            <comment>WSI extensions</comment>
-
-        <type category="include" name="X11/Xlib.h"/>
-        <type category="include" name="X11/extensions/Xrandr.h"/>
-        <type category="include" name="wayland-client.h"/>
-        <type category="include" name="windows.h"/>
-        <type category="include" name="xcb/xcb.h"/>
-        <type category="include" name="directfb.h"/>
-        <type category="include" name="zircon/types.h"/>
-        <type category="include" name="ggp_c/vulkan_types.h"/>
-        <type category="include" name="screen/screen.h"/>
-        <type category="include" name="nvscisync.h"/>
-        <type category="include" name="nvscibuf.h"/>
-            <comment>
-                In the current header structure, each platform's interfaces
-                are confined to a platform-specific header (vulkan_xlib.h,
-                vulkan_win32.h, etc.). These headers are not self-contained,
-                and should not include native headers (X11/Xlib.h,
-                windows.h, etc.). Code should either include vulkan.h after
-                defining the appropriate VK_USE_PLATFORM_platform
-                macros, or include the required native headers prior to
-                explicitly including the corresponding platform header.
-
-                To accomplish this, the dependencies of native types require
-                native headers, but the XML defines the content for those
-                native headers as empty. The actual native header includes
-                can be restored by modifying the native header tags above
-                to #include the header file in the 'name' attribute.
-            </comment>
-
-        <type requires="X11/Xlib.h" name="Display"/>
-        <type requires="X11/Xlib.h" name="VisualID"/>
-        <type requires="X11/Xlib.h" name="Window"/>
-        <type requires="X11/extensions/Xrandr.h" name="RROutput"/>
-        <type requires="wayland-client.h" name="wl_display"/>
-        <type requires="wayland-client.h" name="wl_surface"/>
-        <type requires="windows.h" name="HINSTANCE"/>
-        <type requires="windows.h" name="HWND"/>
-        <type requires="windows.h" name="HMONITOR"/>
-        <type requires="windows.h" name="HANDLE"/>
-        <type requires="windows.h" name="SECURITY_ATTRIBUTES"/>
-        <type requires="windows.h" name="DWORD"/>
-        <type requires="windows.h" name="LPCWSTR"/>
-        <type requires="xcb/xcb.h" name="xcb_connection_t"/>
-        <type requires="xcb/xcb.h" name="xcb_visualid_t"/>
-        <type requires="xcb/xcb.h" name="xcb_window_t"/>
-        <type requires="directfb.h" name="IDirectFB"/>
-        <type requires="directfb.h" name="IDirectFBSurface"/>
-        <type requires="zircon/types.h" name="zx_handle_t"/>
-        <type requires="ggp_c/vulkan_types.h" name="GgpStreamDescriptor"/>
-        <type requires="ggp_c/vulkan_types.h" name="GgpFrameToken"/>
-        <type requires="screen/screen.h" name="_screen_context"/>
-        <type requires="screen/screen.h" name="_screen_window"/>
-        <type requires="screen/screen.h" name="_screen_buffer"/>
-        <type requires="nvscisync.h" name="NvSciSyncAttrList"/>
-        <type requires="nvscisync.h" name="NvSciSyncObj"/>
-        <type requires="nvscisync.h" name="NvSciSyncFence"/>
-        <type requires="nvscibuf.h" name="NvSciBufAttrList"/>
-        <type requires="nvscibuf.h" name="NvSciBufObj"/>
-
-        <type category="define" deprecated="true">// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead.
-#define <name>VK_MAKE_VERSION</name>(major, minor, patch) \
-    ((((uint32_t)(major)) &lt;&lt; 22U) | (((uint32_t)(minor)) &lt;&lt; 12U) | ((uint32_t)(patch)))</type>
-        <type category="define" deprecated="true">// DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead.
-#define <name>VK_VERSION_MAJOR</name>(version) ((uint32_t)(version) &gt;&gt; 22U)</type>
-        <type category="define" deprecated="true">// DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead.
-#define <name>VK_VERSION_MINOR</name>(version) (((uint32_t)(version) &gt;&gt; 12U) &amp; 0x3FFU)</type>
-        <type category="define" deprecated="true">// DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead.
-#define <name>VK_VERSION_PATCH</name>(version) ((uint32_t)(version) &amp; 0xFFFU)</type>
-
-        <type category="define">#define <name>VK_MAKE_API_VERSION</name>(variant, major, minor, patch) \
-    ((((uint32_t)(variant)) &lt;&lt; 29U) | (((uint32_t)(major)) &lt;&lt; 22U) | (((uint32_t)(minor)) &lt;&lt; 12U) | ((uint32_t)(patch)))</type>
-        <type category="define">#define <name>VK_API_VERSION_VARIANT</name>(version) ((uint32_t)(version) &gt;&gt; 29U)</type>
-        <type category="define">#define <name>VK_API_VERSION_MAJOR</name>(version) (((uint32_t)(version) &gt;&gt; 22U) &amp; 0x7FU)</type>
-        <type category="define">#define <name>VK_API_VERSION_MINOR</name>(version) (((uint32_t)(version) &gt;&gt; 12U) &amp; 0x3FFU)</type>
-        <type category="define">#define <name>VK_API_VERSION_PATCH</name>(version) ((uint32_t)(version) &amp; 0xFFFU)</type>
-
-        <type category="define" requires="VK_HEADER_VERSION">// Vulkan SC variant number
-#define <name>VKSC_API_VARIANT</name> 1</type>
-
-        <type category="define">// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
-//#define <name>VK_API_VERSION</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 0, 0) // Patch version should always be set to 0</type>
-        <type category="define">// Vulkan 1.0 version number
-#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 0, 0)// Patch version should always be set to 0</type>
-        <type category="define">// Vulkan 1.1 version number
-#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 1, 0)// Patch version should always be set to 0</type>
-        <type category="define">// Vulkan 1.2 version number
-#define <name>VK_API_VERSION_1_2</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 2, 0)// Patch version should always be set to 0</type>
-        <type category="define" requires="VK_MAKE_API_VERSION">// Vulkan 1.3 version number
-#define <name>VK_API_VERSION_1_3</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, 0)// Patch version should always be set to 0</type>
-        <type category="define" requires="VKSC_API_VARIANT">// Vulkan SC 1.0 version number
-#define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type>
-
-        <type api="vulkan" category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 269</type>
-        <type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file
-#define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, VK_HEADER_VERSION)</type>
-        <type api="vulkansc" category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 13</type>
-        <type api="vulkansc" category="define" requires="VKSC_API_VARIANT">// Complete version of this file
-#define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, VK_HEADER_VERSION)</type>
-
-        <type api="vulkan" category="define">
-#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
-        <type api="vulkansc" category="define" comment="Extra parenthesis are a MISRA-C requirement that exposes a bug in MSVC">
-#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* (object);</type>
-
-        <type category="define" name="VK_USE_64_BIT_PTR_DEFINES">
-#ifndef VK_USE_64_BIT_PTR_DEFINES
-    #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) &amp;&amp; !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) || (defined(__riscv) &amp;&amp; __riscv_xlen == 64)
-        #define VK_USE_64_BIT_PTR_DEFINES 1
-    #else
-        #define VK_USE_64_BIT_PTR_DEFINES 0
-    #endif
-#endif</type>
-        <type category="define" requires="VK_USE_64_BIT_PTR_DEFINES" name="VK_NULL_HANDLE">
-#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
-    #if (VK_USE_64_BIT_PTR_DEFINES==1)
-        #if (defined(__cplusplus) &amp;&amp; (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) &amp;&amp; (_MSVC_LANG >= 201103L))
-            #define VK_NULL_HANDLE nullptr
-        #else
-            #define VK_NULL_HANDLE ((void*)0)
-        #endif
-    #else
-        #define VK_NULL_HANDLE 0ULL
-    #endif
-#endif
-#ifndef VK_NULL_HANDLE
-    #define VK_NULL_HANDLE 0
-#endif</type>
-        <type api="vulkan" category="define" requires="VK_NULL_HANDLE" name="VK_DEFINE_NON_DISPATCHABLE_HANDLE">
-#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
-    #if (VK_USE_64_BIT_PTR_DEFINES==1)
-        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
-    #else
-        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
-    #endif
-#endif</type>
-        <type api="vulkansc" category="define" requires="VK_NULL_HANDLE" name="VK_DEFINE_NON_DISPATCHABLE_HANDLE" comment="Extra parenthesis are a MISRA-C requirement that exposes a bug in MSVC">
-#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
-    #if (VK_USE_64_BIT_PTR_DEFINES==1)
-        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *(object);
-    #else
-        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t (object);
-    #endif
-#endif</type>
-
-        <type category="basetype">struct <name>ANativeWindow</name>;</type>
-        <type category="basetype">struct <name>AHardwareBuffer</name>;</type>
-        <type category="basetype">#ifdef __OBJC__
-@class CAMetalLayer;
-#else
-typedef void <name>CAMetalLayer</name>;
-#endif</type>
-        <type category="basetype">#ifdef __OBJC__
-@protocol MTLDevice;
-typedef id&lt;MTLDevice&gt; MTLDevice_id;
-#else
-typedef void* <name>MTLDevice_id</name>;
-#endif</type>
-        <type category="basetype">#ifdef __OBJC__
-@protocol MTLCommandQueue;
-typedef id&lt;MTLCommandQueue&gt; MTLCommandQueue_id;
-#else
-typedef void* <name>MTLCommandQueue_id</name>;
-#endif</type>
-        <type category="basetype">#ifdef __OBJC__
-@protocol MTLBuffer;
-typedef id&lt;MTLBuffer&gt; MTLBuffer_id;
-#else
-typedef void* <name>MTLBuffer_id</name>;
-#endif</type>
-        <type category="basetype">#ifdef __OBJC__
-@protocol MTLTexture;
-typedef id&lt;MTLTexture&gt; MTLTexture_id;
-#else
-typedef void* <name>MTLTexture_id</name>;
-#endif</type>
-        <type category="basetype">#ifdef __OBJC__
-@protocol MTLSharedEvent;
-typedef id&lt;MTLSharedEvent&gt; MTLSharedEvent_id;
-#else
-typedef void* <name>MTLSharedEvent_id</name>;
-#endif</type>
-        <type category="basetype">#ifdef __OBJC__
-@protocol MTLResource;
-typedef __unsafe_unretained id&lt;MTLResource&gt; MTLResource_id;
-#else
-typedef void* <name>MTLResource_id</name>;
-#endif</type>
-        <type category="basetype">typedef struct __IOSurface* <name>IOSurfaceRef</name>;</type>
-
-        <type category="basetype">typedef <type>uint32_t</type> <name>VkSampleMask</name>;</type>
-        <type category="basetype">typedef <type>uint32_t</type> <name>VkBool32</name>;</type>
-        <type category="basetype">typedef <type>uint32_t</type> <name>VkFlags</name>;</type>
-        <type category="basetype">typedef <type>uint64_t</type> <name>VkFlags64</name>;</type>
-        <type category="basetype">typedef <type>uint64_t</type> <name>VkDeviceSize</name>;</type>
-        <type category="basetype">typedef <type>uint64_t</type> <name>VkDeviceAddress</name>;</type>
-
-            <comment>Basic C types, pulled in via vk_platform.h</comment>
-        <type requires="vk_platform" name="void"/>
-        <type requires="vk_platform" name="char"/>
-        <type requires="vk_platform" name="float"/>
-        <type requires="vk_platform" name="double"/>
-        <type requires="vk_platform" name="int8_t"/>
-        <type requires="vk_platform" name="uint8_t"/>
-        <type requires="vk_platform" name="int16_t"/>
-        <type requires="vk_platform" name="uint16_t"/>
-        <type requires="vk_platform" name="uint32_t"/>
-        <type requires="vk_platform" name="uint64_t"/>
-        <type requires="vk_platform" name="int32_t"/>
-        <type requires="vk_platform" name="int64_t"/>
-        <type requires="vk_platform" name="size_t"/>
-        <type name="int"/>
-
-            <comment>Bitmask types</comment>
-        <type requires="VkFramebufferCreateFlagBits"      category="bitmask">typedef <type>VkFlags</type> <name>VkFramebufferCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkQueryPoolCreateFlags</name>;</type>
-        <type requires="VkRenderPassCreateFlagBits"       category="bitmask">typedef <type>VkFlags</type> <name>VkRenderPassCreateFlags</name>;</type>
-        <type requires="VkSamplerCreateFlagBits"          category="bitmask">typedef <type>VkFlags</type> <name>VkSamplerCreateFlags</name>;</type>
-        <type requires="VkPipelineLayoutCreateFlagBits"   category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineLayoutCreateFlags</name>;</type>
-        <type requires="VkPipelineCacheCreateFlagBits"    category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCacheCreateFlags</name>;</type>
-        <type api="vulkan" requires="VkPipelineDepthStencilStateCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDepthStencilStateCreateFlags</name>;</type>
-        <type api="vulkansc" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDepthStencilStateCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDynamicStateCreateFlags</name>;</type>
-        <type api="vulkan" requires="VkPipelineColorBlendStateCreateFlagBits"   category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineColorBlendStateCreateFlags</name>;</type>
-        <type api="vulkansc" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineColorBlendStateCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineMultisampleStateCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationStateCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineViewportStateCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineTessellationStateCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineInputAssemblyStateCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineVertexInputStateCreateFlags</name>;</type>
-        <type requires="VkPipelineShaderStageCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineShaderStageCreateFlags</name>;</type>
-        <type requires="VkDescriptorSetLayoutCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorSetLayoutCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkBufferViewCreateFlags</name>;</type>
-        <type requires="VkInstanceCreateFlagBits"         category="bitmask">typedef <type>VkFlags</type> <name>VkInstanceCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceCreateFlags</name>;</type>
-        <type requires="VkDeviceQueueCreateFlagBits"      category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceQueueCreateFlags</name>;</type>
-        <type requires="VkQueueFlagBits"                  category="bitmask">typedef <type>VkFlags</type> <name>VkQueueFlags</name>;</type>
-        <type requires="VkMemoryPropertyFlagBits"         category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryPropertyFlags</name>;</type>
-        <type requires="VkMemoryHeapFlagBits"             category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryHeapFlags</name>;</type>
-        <type requires="VkAccessFlagBits"                 category="bitmask">typedef <type>VkFlags</type> <name>VkAccessFlags</name>;</type>
-        <type requires="VkBufferUsageFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkBufferUsageFlags</name>;</type>
-        <type requires="VkBufferCreateFlagBits"           category="bitmask">typedef <type>VkFlags</type> <name>VkBufferCreateFlags</name>;</type>
-        <type requires="VkShaderStageFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkShaderStageFlags</name>;</type>
-        <type requires="VkImageUsageFlagBits"             category="bitmask">typedef <type>VkFlags</type> <name>VkImageUsageFlags</name>;</type>
-        <type requires="VkImageCreateFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkImageCreateFlags</name>;</type>
-        <type requires="VkImageViewCreateFlagBits"        category="bitmask">typedef <type>VkFlags</type> <name>VkImageViewCreateFlags</name>;</type>
-        <type requires="VkPipelineCreateFlagBits"         category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCreateFlags</name>;</type>
-        <type requires="VkColorComponentFlagBits"         category="bitmask">typedef <type>VkFlags</type> <name>VkColorComponentFlags</name>;</type>
-        <type requires="VkFenceCreateFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkFenceCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkSemaphoreCreateFlags</name>;</type>
-        <type requires="VkFormatFeatureFlagBits"          category="bitmask">typedef <type>VkFlags</type> <name>VkFormatFeatureFlags</name>;</type>
-        <type requires="VkQueryControlFlagBits"           category="bitmask">typedef <type>VkFlags</type> <name>VkQueryControlFlags</name>;</type>
-        <type requires="VkQueryResultFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkQueryResultFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkShaderModuleCreateFlags</name>;</type>
-        <type requires="VkEventCreateFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkEventCreateFlags</name>;</type>
-        <type requires="VkCommandPoolCreateFlagBits"      category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolCreateFlags</name>;</type>
-        <type requires="VkCommandPoolResetFlagBits"       category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolResetFlags</name>;</type>
-        <type requires="VkCommandBufferResetFlagBits"     category="bitmask">typedef <type>VkFlags</type> <name>VkCommandBufferResetFlags</name>;</type>
-        <type requires="VkCommandBufferUsageFlagBits"     category="bitmask">typedef <type>VkFlags</type> <name>VkCommandBufferUsageFlags</name>;</type>
-        <type requires="VkQueryPipelineStatisticFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueryPipelineStatisticFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryMapFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryUnmapFlagsKHR</name>;</type>
-        <type requires="VkImageAspectFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkImageAspectFlags</name>;</type>
-        <type requires="VkSparseMemoryBindFlagBits"       category="bitmask">typedef <type>VkFlags</type> <name>VkSparseMemoryBindFlags</name>;</type>
-        <type requires="VkSparseImageFormatFlagBits"      category="bitmask">typedef <type>VkFlags</type> <name>VkSparseImageFormatFlags</name>;</type>
-        <type requires="VkSubpassDescriptionFlagBits"     category="bitmask">typedef <type>VkFlags</type> <name>VkSubpassDescriptionFlags</name>;</type>
-        <type requires="VkPipelineStageFlagBits"          category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineStageFlags</name>;</type>
-        <type requires="VkSampleCountFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkSampleCountFlags</name>;</type>
-        <type requires="VkAttachmentDescriptionFlagBits"  category="bitmask">typedef <type>VkFlags</type> <name>VkAttachmentDescriptionFlags</name>;</type>
-        <type requires="VkStencilFaceFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkStencilFaceFlags</name>;</type>
-        <type requires="VkCullModeFlagBits"               category="bitmask">typedef <type>VkFlags</type> <name>VkCullModeFlags</name>;</type>
-        <type requires="VkDescriptorPoolCreateFlagBits"   category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorPoolCreateFlags</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorPoolResetFlags</name>;</type>
-        <type requires="VkDependencyFlagBits"             category="bitmask">typedef <type>VkFlags</type> <name>VkDependencyFlags</name>;</type>
-        <type requires="VkSubgroupFeatureFlagBits"        category="bitmask">typedef <type>VkFlags</type> <name>VkSubgroupFeatureFlags</name>;</type>
-        <type requires="VkIndirectCommandsLayoutUsageFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkIndirectCommandsLayoutUsageFlagsNV</name>;</type>
-        <type requires="VkIndirectStateFlagBitsNV"        category="bitmask">typedef <type>VkFlags</type> <name>VkIndirectStateFlagsNV</name>;</type>
-        <type requires="VkGeometryFlagBitsKHR"            category="bitmask">typedef <type>VkFlags</type> <name>VkGeometryFlagsKHR</name>;</type>
-        <type                                             category="bitmask" name="VkGeometryFlagsNV" alias="VkGeometryFlagsKHR"/>
-        <type requires="VkGeometryInstanceFlagBitsKHR"    category="bitmask">typedef <type>VkFlags</type> <name>VkGeometryInstanceFlagsKHR</name>;</type>
-        <type                                             category="bitmask" name="VkGeometryInstanceFlagsNV" alias="VkGeometryInstanceFlagsKHR"/>
-        <type requires="VkBuildAccelerationStructureFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkBuildAccelerationStructureFlagsKHR</name>;</type>
-        <type                                             category="bitmask" name="VkBuildAccelerationStructureFlagsNV" alias="VkBuildAccelerationStructureFlagsKHR"/>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPrivateDataSlotCreateFlags</name>;</type>
-        <type                                             category="bitmask" name="VkPrivateDataSlotCreateFlagsEXT" alias="VkPrivateDataSlotCreateFlags"/>
-        <type requires="VkAccelerationStructureCreateFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkAccelerationStructureCreateFlagsKHR</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorUpdateTemplateCreateFlags</name>;</type>
-        <type                                             category="bitmask" name="VkDescriptorUpdateTemplateCreateFlagsKHR" alias="VkDescriptorUpdateTemplateCreateFlags"/>
-        <type requires="VkPipelineCreationFeedbackFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCreationFeedbackFlags</name>;</type>
-        <type                                             category="bitmask" name="VkPipelineCreationFeedbackFlagsEXT" alias="VkPipelineCreationFeedbackFlags"/>
-        <type requires="VkPerformanceCounterDescriptionFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkPerformanceCounterDescriptionFlagsKHR</name>;</type>
-        <type requires="VkAcquireProfilingLockFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkAcquireProfilingLockFlagsKHR</name>;</type>
-        <type requires="VkSemaphoreWaitFlagBits"          category="bitmask">typedef <type>VkFlags</type> <name>VkSemaphoreWaitFlags</name>;</type>
-        <type                                             category="bitmask" name="VkSemaphoreWaitFlagsKHR" alias="VkSemaphoreWaitFlags"/>
-        <type requires="VkPipelineCompilerControlFlagBitsAMD" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCompilerControlFlagsAMD</name>;</type>
-        <type requires="VkShaderCorePropertiesFlagBitsAMD" category="bitmask">typedef <type>VkFlags</type> <name>VkShaderCorePropertiesFlagsAMD</name>;</type>
-        <type requires="VkDeviceDiagnosticsConfigFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceDiagnosticsConfigFlagsNV</name>;</type>
-        <type requires="VkRefreshObjectFlagBitsKHR"       category="bitmask">typedef <type>VkFlags</type> <name>VkRefreshObjectFlagsKHR</name>;</type>
-        <type bitvalues="VkAccessFlagBits2"               category="bitmask">typedef <type>VkFlags64</type> <name>VkAccessFlags2</name>;</type>
-        <type                                             category="bitmask" name="VkAccessFlags2KHR" alias="VkAccessFlags2"/>
-        <type bitvalues="VkPipelineStageFlagBits2"        category="bitmask">typedef <type>VkFlags64</type> <name>VkPipelineStageFlags2</name>;</type>
-        <type                                             category="bitmask" name="VkPipelineStageFlags2KHR" alias="VkPipelineStageFlags2"/>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkAccelerationStructureMotionInfoFlagsNV</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkAccelerationStructureMotionInstanceFlagsNV</name>;</type>
-        <type bitvalues="VkFormatFeatureFlagBits2"        category="bitmask">typedef <type>VkFlags64</type> <name>VkFormatFeatureFlags2</name>;</type>
-        <type                                             category="bitmask" name="VkFormatFeatureFlags2KHR" alias="VkFormatFeatureFlags2"/>
-        <type requires="VkRenderingFlagBits"              category="bitmask">typedef <type>VkFlags</type> <name>VkRenderingFlags</name>;</type>
-        <type bitvalues="VkMemoryDecompressionMethodFlagBitsNV" category="bitmask">typedef <type>VkFlags64</type> <name>VkMemoryDecompressionMethodFlagsNV</name>;</type>
-        <type                                             category="bitmask" name="VkRenderingFlagsKHR" alias="VkRenderingFlags"/>
-        <type requires="VkBuildMicromapFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkBuildMicromapFlagsEXT</name>;</type>
-        <type requires="VkMicromapCreateFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkMicromapCreateFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDirectDriverLoadingFlagsLUNARG</name>;</type>
-        <type bitvalues="VkPipelineCreateFlagBits2KHR"    category="bitmask">typedef <type>VkFlags64</type> <name>VkPipelineCreateFlags2KHR</name>;</type>
-        <type bitvalues="VkBufferUsageFlagBits2KHR"       category="bitmask">typedef <type>VkFlags64</type> <name>VkBufferUsageFlags2KHR</name>;</type>
-
-            <comment>WSI extensions</comment>
-        <type requires="VkCompositeAlphaFlagBitsKHR"      category="bitmask">typedef <type>VkFlags</type> <name>VkCompositeAlphaFlagsKHR</name>;</type>
-        <type requires="VkDisplayPlaneAlphaFlagBitsKHR"   category="bitmask">typedef <type>VkFlags</type> <name>VkDisplayPlaneAlphaFlagsKHR</name>;</type>
-        <type requires="VkSurfaceTransformFlagBitsKHR"    category="bitmask">typedef <type>VkFlags</type> <name>VkSurfaceTransformFlagsKHR</name>;</type>
-        <type requires="VkSwapchainCreateFlagBitsKHR"     category="bitmask">typedef <type>VkFlags</type> <name>VkSwapchainCreateFlagsKHR</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDisplayModeCreateFlagsKHR</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDisplaySurfaceCreateFlagsKHR</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkAndroidSurfaceCreateFlagsKHR</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkViSurfaceCreateFlagsNN</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkWaylandSurfaceCreateFlagsKHR</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkWin32SurfaceCreateFlagsKHR</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkXlibSurfaceCreateFlagsKHR</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkXcbSurfaceCreateFlagsKHR</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDirectFBSurfaceCreateFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkIOSSurfaceCreateFlagsMVK</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkMacOSSurfaceCreateFlagsMVK</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkMetalSurfaceCreateFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkImagePipeSurfaceCreateFlagsFUCHSIA</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkStreamDescriptorSurfaceCreateFlagsGGP</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkHeadlessSurfaceCreateFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkScreenSurfaceCreateFlagsQNX</name>;</type>
-        <type requires="VkPeerMemoryFeatureFlagBits"      category="bitmask">typedef <type>VkFlags</type> <name>VkPeerMemoryFeatureFlags</name>;</type>
-        <type                                             category="bitmask" name="VkPeerMemoryFeatureFlagsKHR"               alias="VkPeerMemoryFeatureFlags"/>
-        <type requires="VkMemoryAllocateFlagBits"         category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryAllocateFlags</name>;</type>
-        <type                                             category="bitmask" name="VkMemoryAllocateFlagsKHR"                  alias="VkMemoryAllocateFlags"/>
-        <type requires="VkDeviceGroupPresentModeFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceGroupPresentModeFlagsKHR</name>;</type>
-
-        <type requires="VkDebugReportFlagBitsEXT"         category="bitmask">typedef <type>VkFlags</type> <name>VkDebugReportFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolTrimFlags</name>;</type>
-        <type                                             category="bitmask" name="VkCommandPoolTrimFlagsKHR"                 alias="VkCommandPoolTrimFlags"/>
-        <type requires="VkExternalMemoryHandleTypeFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryHandleTypeFlagsNV</name>;</type>
-        <type requires="VkExternalMemoryFeatureFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryFeatureFlagsNV</name>;</type>
-        <type requires="VkExternalMemoryHandleTypeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryHandleTypeFlags</name>;</type>
-        <type                                             category="bitmask" name="VkExternalMemoryHandleTypeFlagsKHR"        alias="VkExternalMemoryHandleTypeFlags"/>
-        <type requires="VkExternalMemoryFeatureFlagBits"  category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryFeatureFlags</name>;</type>
-        <type                                             category="bitmask" name="VkExternalMemoryFeatureFlagsKHR"           alias="VkExternalMemoryFeatureFlags"/>
-        <type requires="VkExternalSemaphoreHandleTypeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalSemaphoreHandleTypeFlags</name>;</type>
-        <type                                             category="bitmask" name="VkExternalSemaphoreHandleTypeFlagsKHR"     alias="VkExternalSemaphoreHandleTypeFlags"/>
-        <type requires="VkExternalSemaphoreFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalSemaphoreFeatureFlags</name>;</type>
-        <type                                             category="bitmask" name="VkExternalSemaphoreFeatureFlagsKHR"        alias="VkExternalSemaphoreFeatureFlags"/>
-        <type requires="VkSemaphoreImportFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSemaphoreImportFlags</name>;</type>
-        <type                                             category="bitmask" name="VkSemaphoreImportFlagsKHR"                 alias="VkSemaphoreImportFlags"/>
-        <type requires="VkExternalFenceHandleTypeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalFenceHandleTypeFlags</name>;</type>
-        <type                                             category="bitmask" name="VkExternalFenceHandleTypeFlagsKHR"         alias="VkExternalFenceHandleTypeFlags"/>
-        <type requires="VkExternalFenceFeatureFlagBits"   category="bitmask">typedef <type>VkFlags</type> <name>VkExternalFenceFeatureFlags</name>;</type>
-        <type                                             category="bitmask" name="VkExternalFenceFeatureFlagsKHR"            alias="VkExternalFenceFeatureFlags"/>
-        <type requires="VkFenceImportFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkFenceImportFlags</name>;</type>
-        <type                                             category="bitmask" name="VkFenceImportFlagsKHR"                     alias="VkFenceImportFlags"/>
-        <type requires="VkSurfaceCounterFlagBitsEXT"      category="bitmask">typedef <type>VkFlags</type> <name>VkSurfaceCounterFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineViewportSwizzleStateCreateFlagsNV</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDiscardRectangleStateCreateFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageToColorStateCreateFlagsNV</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageModulationStateCreateFlagsNV</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageReductionStateCreateFlagsNV</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkValidationCacheCreateFlagsEXT</name>;</type>
-        <type requires="VkDebugUtilsMessageSeverityFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessageSeverityFlagsEXT</name>;</type>
-        <type requires="VkDebugUtilsMessageTypeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessageTypeFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessengerCreateFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessengerCallbackDataFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceMemoryReportFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationConservativeStateCreateFlagsEXT</name>;</type>
-        <type requires="VkDescriptorBindingFlagBits"      category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorBindingFlags</name>;</type>
-        <type                                             category="bitmask" name="VkDescriptorBindingFlagsEXT"               alias="VkDescriptorBindingFlags"/>
-        <type requires="VkConditionalRenderingFlagBitsEXT"  category="bitmask">typedef <type>VkFlags</type> <name>VkConditionalRenderingFlagsEXT</name>;</type>
-        <type requires="VkResolveModeFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkResolveModeFlags</name>;</type>
-        <type                                             category="bitmask" name="VkResolveModeFlagsKHR"                     alias="VkResolveModeFlags"/>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationStateStreamCreateFlagsEXT</name>;</type>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationDepthClipStateCreateFlagsEXT</name>;</type>
-        <type requires="VkSwapchainImageUsageFlagBitsANDROID" category="bitmask">typedef <type>VkFlags</type> <name>VkSwapchainImageUsageFlagsANDROID</name>;</type>
-        <type requires="VkToolPurposeFlagBits"            category="bitmask">typedef <type>VkFlags</type> <name>VkToolPurposeFlags</name>;</type>
-        <type                                             category="bitmask" name="VkToolPurposeFlagsEXT"                     alias="VkToolPurposeFlags"/>
-        <type requires="VkSubmitFlagBits"                 category="bitmask">typedef <type>VkFlags</type> <name>VkSubmitFlags</name>;</type>
-        <type                                             category="bitmask" name="VkSubmitFlagsKHR"                          alias="VkSubmitFlags"/>
-        <type                                             category="bitmask">typedef <type>VkFlags</type> <name>VkImageFormatConstraintsFlagsFUCHSIA</name>;</type>
-        <type requires="VkHostImageCopyFlagBitsEXT"       category="bitmask">typedef <type>VkFlags</type> <name>VkHostImageCopyFlagsEXT</name>;</type>
-        <type requires="VkImageConstraintsInfoFlagBitsFUCHSIA"   category="bitmask">typedef <type>VkFlags</type> <name>VkImageConstraintsInfoFlagsFUCHSIA</name>;</type>
-        <type requires="VkGraphicsPipelineLibraryFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkGraphicsPipelineLibraryFlagsEXT</name>;</type>
-        <type requires="VkImageCompressionFlagBitsEXT"          category="bitmask">typedef <type>VkFlags</type> <name>VkImageCompressionFlagsEXT</name>;</type>
-        <type requires="VkImageCompressionFixedRateFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkImageCompressionFixedRateFlagsEXT</name>;</type>
-        <type requires="VkExportMetalObjectTypeFlagBitsEXT"     category="bitmask">typedef <type>VkFlags</type> <name>VkExportMetalObjectTypeFlagsEXT</name>;</type>
-        <type requires="VkDeviceAddressBindingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceAddressBindingFlagsEXT</name>;</type>
-        <type requires="VkOpticalFlowGridSizeFlagBitsNV"        category="bitmask">typedef <type>VkFlags</type>   <name>VkOpticalFlowGridSizeFlagsNV</name>;</type>
-        <type requires="VkOpticalFlowUsageFlagBitsNV"           category="bitmask">typedef <type>VkFlags</type>   <name>VkOpticalFlowUsageFlagsNV</name>;</type>
-        <type requires="VkOpticalFlowSessionCreateFlagBitsNV"   category="bitmask">typedef <type>VkFlags</type>   <name>VkOpticalFlowSessionCreateFlagsNV</name>;</type>
-        <type requires="VkOpticalFlowExecuteFlagBitsNV"         category="bitmask">typedef <type>VkFlags</type>   <name>VkOpticalFlowExecuteFlagsNV</name>;</type>
-        <type requires="VkFrameBoundaryFlagBitsEXT"       category="bitmask">typedef <type>VkFlags</type> <name>VkFrameBoundaryFlagsEXT</name>;</type>
-        <type requires="VkPresentScalingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkPresentScalingFlagsEXT</name>;</type>
-        <type requires="VkPresentGravityFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkPresentGravityFlagsEXT</name>;</type>
-        <type requires="VkShaderCreateFlagBitsEXT"        category="bitmask">typedef <type>VkFlags</type> <name>VkShaderCreateFlagsEXT</name>;</type>
-        <type bitvalues="VkPhysicalDeviceSchedulingControlsFlagBitsARM" category="bitmask">typedef <type>VkFlags64</type> <name>VkPhysicalDeviceSchedulingControlsFlagsARM</name>;</type>
-
-            <comment>Video Core extension</comment>
-        <type requires="VkVideoCodecOperationFlagBitsKHR"           category="bitmask">typedef <type>VkFlags</type> <name>VkVideoCodecOperationFlagsKHR</name>;</type>
-        <type requires="VkVideoCapabilityFlagBitsKHR"               category="bitmask">typedef <type>VkFlags</type> <name>VkVideoCapabilityFlagsKHR</name>;</type>
-        <type requires="VkVideoSessionCreateFlagBitsKHR"            category="bitmask">typedef <type>VkFlags</type> <name>VkVideoSessionCreateFlagsKHR</name>;</type>
-        <type                                                       category="bitmask">typedef <type>VkFlags</type> <name>VkVideoSessionParametersCreateFlagsKHR</name>;</type>
-        <type                                                       category="bitmask">typedef <type>VkFlags</type> <name>VkVideoBeginCodingFlagsKHR</name>;</type>
-        <type                                                       category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEndCodingFlagsKHR</name>;</type>
-        <type requires="VkVideoCodingControlFlagBitsKHR"            category="bitmask">typedef <type>VkFlags</type> <name>VkVideoCodingControlFlagsKHR</name>;</type>
-
-            <comment>Video Decode Core extension</comment>
-        <type requires="VkVideoDecodeUsageFlagBitsKHR"              category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeUsageFlagsKHR</name>;</type>
-        <type requires="VkVideoDecodeCapabilityFlagBitsKHR"         category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeCapabilityFlagsKHR</name>;</type>
-        <type                                                       category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeFlagsKHR</name>;</type>
-
-            <comment>Video Decode H.264 extension</comment>
-        <type requires="VkVideoDecodeH264PictureLayoutFlagBitsKHR"  category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeH264PictureLayoutFlagsKHR</name>;</type>
-
-            <comment>Video Encode Core extension</comment>
-        <type                                                       category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeFlagsKHR</name>;</type>
-        <type requires="VkVideoEncodeUsageFlagBitsKHR"              category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeUsageFlagsKHR</name>;</type>
-        <type requires="VkVideoEncodeContentFlagBitsKHR"            category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeContentFlagsKHR</name>;</type>
-        <type requires="VkVideoEncodeCapabilityFlagBitsKHR"         category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeCapabilityFlagsKHR</name>;</type>
-        <type requires="VkVideoEncodeFeedbackFlagBitsKHR"           category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeFeedbackFlagsKHR</name>;</type>
-        <type                                                       category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeRateControlFlagsKHR</name>;</type>
-        <type requires="VkVideoEncodeRateControlModeFlagBitsKHR"    category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeRateControlModeFlagsKHR</name>;</type>
-        <type requires="VkVideoChromaSubsamplingFlagBitsKHR"        category="bitmask">typedef <type>VkFlags</type> <name>VkVideoChromaSubsamplingFlagsKHR</name>;</type>
-        <type requires="VkVideoComponentBitDepthFlagBitsKHR"        category="bitmask">typedef <type>VkFlags</type> <name>VkVideoComponentBitDepthFlagsKHR</name>;</type>
-
-            <comment>Video Encode H.264 extension</comment>
-        <type requires="VkVideoEncodeH264CapabilityFlagBitsEXT"             category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264CapabilityFlagsEXT</name>;</type>
-        <type requires="VkVideoEncodeH264StdFlagBitsEXT"                    category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264StdFlagsEXT</name>;</type>
-        <type requires="VkVideoEncodeH264RateControlFlagBitsEXT"            category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264RateControlFlagsEXT</name>;</type>
-
-            <comment>Video Encode H.265 extension</comment>
-        <type requires="VkVideoEncodeH265CapabilityFlagBitsEXT"             category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CapabilityFlagsEXT</name>;</type>
-        <type requires="VkVideoEncodeH265StdFlagBitsEXT"                    category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265StdFlagsEXT</name>;</type>
-        <type requires="VkVideoEncodeH265RateControlFlagBitsEXT"            category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265RateControlFlagsEXT</name>;</type>
-        <type requires="VkVideoEncodeH265CtbSizeFlagBitsEXT"                category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CtbSizeFlagsEXT</name>;</type>
-        <type requires="VkVideoEncodeH265TransformBlockSizeFlagBitsEXT"     category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265TransformBlockSizeFlagsEXT</name>;</type>
-
-            <comment>Types which can be void pointers or class pointers, selected at compile time</comment>
-        <type category="handle"                           objtypeenum="VK_OBJECT_TYPE_INSTANCE"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
-        <type category="handle" parent="VkInstance"       objtypeenum="VK_OBJECT_TYPE_PHYSICAL_DEVICE"><type>VK_DEFINE_HANDLE</type>(<name>VkPhysicalDevice</name>)</type>
-        <type category="handle" parent="VkPhysicalDevice" objtypeenum="VK_OBJECT_TYPE_DEVICE"><type>VK_DEFINE_HANDLE</type>(<name>VkDevice</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_QUEUE"><type>VK_DEFINE_HANDLE</type>(<name>VkQueue</name>)</type>
-        <type category="handle" parent="VkCommandPool"    objtypeenum="VK_OBJECT_TYPE_COMMAND_BUFFER"><type>VK_DEFINE_HANDLE</type>(<name>VkCommandBuffer</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_DEVICE_MEMORY"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDeviceMemory</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_COMMAND_POOL"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkCommandPool</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_BUFFER"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkBuffer</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_BUFFER_VIEW"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkBufferView</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_IMAGE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkImage</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_IMAGE_VIEW"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkImageView</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_SHADER_MODULE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkShaderModule</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_PIPELINE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipeline</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_PIPELINE_LAYOUT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipelineLayout</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_SAMPLER"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSampler</name>)</type>
-        <type category="handle" parent="VkDescriptorPool" objtypeenum="VK_OBJECT_TYPE_DESCRIPTOR_SET"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorSet</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorSetLayout</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_DESCRIPTOR_POOL"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorPool</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_FENCE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkFence</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_SEMAPHORE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSemaphore</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_EVENT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkEvent</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_QUERY_POOL"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkQueryPool</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_FRAMEBUFFER"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkFramebuffer</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_RENDER_PASS"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkRenderPass</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_PIPELINE_CACHE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipelineCache</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkIndirectCommandsLayoutNV</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorUpdateTemplate</name>)</type>
-        <type category="handle" name="VkDescriptorUpdateTemplateKHR" alias="VkDescriptorUpdateTemplate"/>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSamplerYcbcrConversion</name>)</type>
-        <type category="handle" name="VkSamplerYcbcrConversionKHR"   alias="VkSamplerYcbcrConversion"/>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkValidationCacheEXT</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkAccelerationStructureKHR</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkAccelerationStructureNV</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPerformanceConfigurationINTEL</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkBufferCollectionFUCHSIA</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDeferredOperationKHR</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_PRIVATE_DATA_SLOT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPrivateDataSlot</name>)</type>
-        <type category="handle" name="VkPrivateDataSlotEXT"          alias="VkPrivateDataSlot"/>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_CU_MODULE_NVX"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkCuModuleNVX</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_CU_FUNCTION_NVX"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkCuFunctionNVX</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkOpticalFlowSessionNV</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_MICROMAP_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkMicromapEXT</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_SHADER_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkShaderEXT</name>)</type>
-
-            <comment>WSI extensions</comment>
-        <type category="handle" parent="VkPhysicalDevice" objtypeenum="VK_OBJECT_TYPE_DISPLAY_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDisplayKHR</name>)</type>
-        <type category="handle" parent="VkDisplayKHR"     objtypeenum="VK_OBJECT_TYPE_DISPLAY_MODE_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDisplayModeKHR</name>)</type>
-        <type category="handle" parent="VkInstance"       objtypeenum="VK_OBJECT_TYPE_SURFACE_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSurfaceKHR</name>)</type>
-        <type category="handle" parent="VkDevice"         objtypeenum="VK_OBJECT_TYPE_SWAPCHAIN_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSwapchainKHR</name>)</type>
-        <type category="handle" parent="VkInstance"       objtypeenum="VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDebugReportCallbackEXT</name>)</type>
-        <type category="handle" parent="VkInstance"       objtypeenum="VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDebugUtilsMessengerEXT</name>)</type>
-
-            <comment>Video extensions</comment>
-        <type category="handle" parent="VkDevice"          objtypeenum="VK_OBJECT_TYPE_VIDEO_SESSION_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkVideoSessionKHR</name>)</type>
-        <type category="handle" parent="VkVideoSessionKHR" objtypeenum="VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkVideoSessionParametersKHR</name>)</type>
-
-            <comment>VK_NV_external_sci_sync2</comment>
-        <type category="handle" parent="VkDevice"          objtypeenum="VK_OBJECT_TYPE_SEMAPHORE_SCI_SYNC_POOL_NV"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSemaphoreSciSyncPoolNV</name>)</type>
-
-            <comment>Types generated from corresponding enums tags below</comment>
-        <type name="VkAttachmentLoadOp" category="enum"/>
-        <type name="VkAttachmentStoreOp" category="enum"/>
-        <type name="VkBlendFactor" category="enum"/>
-        <type name="VkBlendOp" category="enum"/>
-        <type name="VkBorderColor" category="enum"/>
-        <type name="VkFramebufferCreateFlagBits" category="enum"/>
-        <type name="VkQueryPoolCreateFlagBits" category="enum"/>
-        <type name="VkRenderPassCreateFlagBits" category="enum"/>
-        <type name="VkSamplerCreateFlagBits" category="enum"/>
-        <type name="VkPipelineCacheHeaderVersion" category="enum"/>
-        <type name="VkPipelineCacheCreateFlagBits" category="enum"/>
-        <type name="VkPipelineShaderStageCreateFlagBits" category="enum"/>
-        <type name="VkDescriptorSetLayoutCreateFlagBits" category="enum"/>
-        <type name="VkInstanceCreateFlagBits" category="enum"/>
-        <type name="VkDeviceQueueCreateFlagBits" category="enum"/>
-        <type name="VkBufferCreateFlagBits" category="enum"/>
-        <type name="VkBufferUsageFlagBits" category="enum"/>
-        <type name="VkColorComponentFlagBits" category="enum"/>
-        <type name="VkComponentSwizzle" category="enum"/>
-        <type name="VkCommandPoolCreateFlagBits" category="enum"/>
-        <type name="VkCommandPoolResetFlagBits" category="enum"/>
-        <type name="VkCommandBufferResetFlagBits" category="enum"/>
-        <type name="VkCommandBufferLevel" category="enum"/>
-        <type name="VkCommandBufferUsageFlagBits" category="enum"/>
-        <type name="VkCompareOp" category="enum"/>
-        <type name="VkCullModeFlagBits" category="enum"/>
-        <type name="VkDescriptorType" category="enum"/>
-        <type name="VkDeviceCreateFlagBits" category="enum"/>
-        <type name="VkDynamicState" category="enum"/>
-        <type name="VkFenceCreateFlagBits" category="enum"/>
-        <type name="VkPolygonMode" category="enum"/>
-        <type name="VkFormat" category="enum"/>
-        <type name="VkFormatFeatureFlagBits" category="enum"/>
-        <type name="VkFrontFace" category="enum"/>
-        <type name="VkImageAspectFlagBits" category="enum"/>
-        <type name="VkImageCreateFlagBits" category="enum"/>
-        <type name="VkImageLayout" category="enum"/>
-        <type name="VkImageTiling" category="enum"/>
-        <type name="VkImageType" category="enum"/>
-        <type name="VkImageUsageFlagBits" category="enum"/>
-        <type name="VkImageViewCreateFlagBits" category="enum"/>
-        <type name="VkImageViewType" category="enum"/>
-        <type name="VkSharingMode" category="enum"/>
-        <type name="VkIndexType" category="enum"/>
-        <type name="VkLogicOp" category="enum"/>
-        <type name="VkMemoryHeapFlagBits" category="enum"/>
-        <type name="VkAccessFlagBits" category="enum"/>
-        <type name="VkMemoryPropertyFlagBits" category="enum"/>
-        <type name="VkPhysicalDeviceType" category="enum"/>
-        <type name="VkPipelineBindPoint" category="enum"/>
-        <type name="VkPipelineCreateFlagBits" category="enum"/>
-        <type name="VkPrimitiveTopology" category="enum"/>
-        <type name="VkQueryControlFlagBits" category="enum"/>
-        <type name="VkQueryPipelineStatisticFlagBits" category="enum"/>
-        <type name="VkQueryResultFlagBits" category="enum"/>
-        <type name="VkQueryType" category="enum"/>
-        <type name="VkQueueFlagBits" category="enum"/>
-        <type name="VkSubpassContents" category="enum"/>
-        <type name="VkResult" category="enum"/>
-        <type name="VkShaderStageFlagBits" category="enum"/>
-        <type name="VkSparseMemoryBindFlagBits" category="enum"/>
-        <type name="VkStencilFaceFlagBits" category="enum"/>
-        <type name="VkStencilOp" category="enum"/>
-        <type name="VkStructureType" category="enum"/>
-        <type name="VkSystemAllocationScope" category="enum"/>
-        <type name="VkInternalAllocationType" category="enum"/>
-        <type name="VkSamplerAddressMode" category="enum"/>
-        <type name="VkFilter" category="enum"/>
-        <type name="VkSamplerMipmapMode" category="enum"/>
-        <type name="VkVertexInputRate" category="enum"/>
-        <type name="VkPipelineStageFlagBits" category="enum"/>
-        <type name="VkSparseImageFormatFlagBits" category="enum"/>
-        <type name="VkSampleCountFlagBits" category="enum"/>
-        <type name="VkAttachmentDescriptionFlagBits" category="enum"/>
-        <type name="VkDescriptorPoolCreateFlagBits" category="enum"/>
-        <type name="VkDependencyFlagBits" category="enum"/>
-        <type name="VkObjectType" category="enum"/>
-        <type name="VkEventCreateFlagBits" category="enum"/>
-        <type name="VkPipelineLayoutCreateFlagBits" category="enum"/>
-        <type name="VkSemaphoreCreateFlagBits" category="enum"/>
-        <type name="VkRayTracingInvocationReorderModeNV" category="enum"/>
-
-        <comment>Extensions</comment>
-        <type name="VkIndirectCommandsLayoutUsageFlagBitsNV" category="enum"/>
-        <type name="VkIndirectCommandsTokenTypeNV" category="enum"/>
-        <type name="VkIndirectStateFlagBitsNV" category="enum"/>
-        <type name="VkPrivateDataSlotCreateFlagBits" category="enum"/>
-        <type category="enum" name="VkPrivateDataSlotCreateFlagBitsEXT"            alias="VkPrivateDataSlotCreateFlagBits"/>
-        <type name="VkDescriptorUpdateTemplateType" category="enum"/>
-        <type category="enum" name="VkDescriptorUpdateTemplateTypeKHR"             alias="VkDescriptorUpdateTemplateType"/>
-        <type name="VkViewportCoordinateSwizzleNV" category="enum"/>
-        <type name="VkDiscardRectangleModeEXT" category="enum"/>
-        <type name="VkSubpassDescriptionFlagBits" category="enum"/>
-        <type name="VkPointClippingBehavior" category="enum"/>
-        <type category="enum" name="VkPointClippingBehaviorKHR"                    alias="VkPointClippingBehavior"/>
-        <type name="VkCoverageModulationModeNV" category="enum"/>
-        <type name="VkCoverageReductionModeNV" category="enum"/>
-        <type name="VkValidationCacheHeaderVersionEXT" category="enum"/>
-        <type name="VkShaderInfoTypeAMD" category="enum"/>
-        <type name="VkQueueGlobalPriorityKHR" category="enum"/>
-        <type name="VkQueueGlobalPriorityEXT" category="enum"                      alias="VkQueueGlobalPriorityKHR"/>
-        <type name="VkTimeDomainEXT" category="enum"/>
-        <type name="VkConservativeRasterizationModeEXT" category="enum"/>
-        <type name="VkResolveModeFlagBits" category="enum"/>
-        <type category="enum" name="VkResolveModeFlagBitsKHR"                      alias="VkResolveModeFlagBits"/>
-        <type name="VkDescriptorBindingFlagBits" category="enum"/>
-        <type category="enum" name="VkDescriptorBindingFlagBitsEXT"                alias="VkDescriptorBindingFlagBits"/>
-        <type name="VkConditionalRenderingFlagBitsEXT" category="enum"/>
-        <type name="VkSemaphoreType" category="enum"/>
-        <type category="enum" name="VkSemaphoreTypeKHR"                            alias="VkSemaphoreType"/>
-        <type name="VkGeometryFlagBitsKHR" category="enum"/>
-        <type category="enum" name="VkGeometryFlagBitsNV"                          alias="VkGeometryFlagBitsKHR"/>
-        <type name="VkGeometryInstanceFlagBitsKHR" category="enum"/>
-        <type category="enum" name="VkGeometryInstanceFlagBitsNV"                  alias="VkGeometryInstanceFlagBitsKHR"/>
-        <type name="VkBuildAccelerationStructureFlagBitsKHR" category="enum"/>
-        <type category="enum" name="VkBuildAccelerationStructureFlagBitsNV"        alias="VkBuildAccelerationStructureFlagBitsKHR"/>
-        <type name="VkAccelerationStructureCreateFlagBitsKHR" category="enum"/>
-        <type name="VkBuildAccelerationStructureModeKHR" category="enum"/>
-        <type name="VkCopyAccelerationStructureModeKHR" category="enum"/>
-        <type category="enum" name="VkCopyAccelerationStructureModeNV"             alias="VkCopyAccelerationStructureModeKHR"/>
-        <type name="VkAccelerationStructureTypeKHR" category="enum"/>
-        <type category="enum" name="VkAccelerationStructureTypeNV"                 alias="VkAccelerationStructureTypeKHR"/>
-        <type name="VkGeometryTypeKHR" category="enum"/>
-        <type category="enum" name="VkGeometryTypeNV"                              alias="VkGeometryTypeKHR"/>
-        <type name="VkRayTracingShaderGroupTypeKHR" category="enum"/>
-        <type category="enum" name="VkRayTracingShaderGroupTypeNV"                 alias="VkRayTracingShaderGroupTypeKHR"/>
-        <type name="VkAccelerationStructureMemoryRequirementsTypeNV" category="enum"/>
-        <type name="VkAccelerationStructureBuildTypeKHR" category="enum"/>
-        <type name="VkAccelerationStructureCompatibilityKHR" category="enum"/>
-        <type name="VkShaderGroupShaderKHR" category="enum"/>
-        <type name="VkMemoryOverallocationBehaviorAMD" category="enum"/>
-        <type name="VkDeviceDiagnosticsConfigFlagBitsNV" category="enum"/>
-        <type name="VkPipelineCreationFeedbackFlagBits" category="enum"/>
-        <type category="enum" name="VkPipelineCreationFeedbackFlagBitsEXT"         alias="VkPipelineCreationFeedbackFlagBits"/>
-        <type name="VkPerformanceCounterScopeKHR" category="enum"/>
-        <type name="VkPerformanceCounterUnitKHR" category="enum"/>
-        <type name="VkPerformanceCounterStorageKHR" category="enum"/>
-        <type name="VkPerformanceCounterDescriptionFlagBitsKHR" category="enum"/>
-        <type name="VkAcquireProfilingLockFlagBitsKHR" category="enum"/>
-        <type name="VkSemaphoreWaitFlagBits" category="enum"/>
-        <type category="enum" name="VkSemaphoreWaitFlagBitsKHR"                    alias="VkSemaphoreWaitFlagBits"/>
-        <type name="VkPerformanceConfigurationTypeINTEL" category="enum"/>
-        <type name="VkQueryPoolSamplingModeINTEL" category="enum"/>
-        <type name="VkPerformanceOverrideTypeINTEL" category="enum"/>
-        <type name="VkPerformanceParameterTypeINTEL" category="enum"/>
-        <type name="VkPerformanceValueTypeINTEL" category="enum"/>
-        <type name="VkLineRasterizationModeEXT" category="enum"/>
-        <type name="VkShaderModuleCreateFlagBits" category="enum"/>
-        <type name="VkPipelineCompilerControlFlagBitsAMD" category="enum"/>
-        <type name="VkShaderCorePropertiesFlagBitsAMD" category="enum"/>
-        <type name="VkRefreshObjectFlagBitsKHR" category="enum"/>
-        <type name="VkFaultLevel" category="enum"/>
-        <type name="VkFaultType" category="enum"/>
-        <type name="VkFaultQueryBehavior" category="enum"/>
-        <type name="VkPipelineMatchControl" category="enum"/>
-        <type name="VkSciSyncClientTypeNV" category="enum"/>
-        <type name="VkSciSyncPrimitiveTypeNV" category="enum"/>
-        <type name="VkToolPurposeFlagBits" category="enum"/>
-        <type category="enum" name="VkToolPurposeFlagBitsEXT"                      alias="VkToolPurposeFlagBits"/>
-        <type name="VkFragmentShadingRateNV" category="enum"/>
-        <type name="VkFragmentShadingRateTypeNV" category="enum"/>
-        <type name="VkSubpassMergeStatusEXT" category="enum"/>
-        <type name="VkAccessFlagBits2" category="enum"/>
-        <type category="enum" name="VkAccessFlagBits2KHR"                          alias="VkAccessFlagBits2"/>
-        <type name="VkPipelineStageFlagBits2" category="enum"/>
-        <type category="enum" name="VkPipelineStageFlagBits2KHR"                   alias="VkPipelineStageFlagBits2"/>
-        <type name="VkProvokingVertexModeEXT" category="enum"/>
-        <type name="VkPipelineCacheValidationVersion" category="enum"/>
-        <type name="VkImageFormatConstraintsFlagBitsFUCHSIA" category="enum"/>
-        <type name="VkHostImageCopyFlagBitsEXT" category="enum"/>
-        <type name="VkImageConstraintsInfoFlagBitsFUCHSIA" category="enum"/>
-        <type name="VkFormatFeatureFlagBits2" category="enum"/>
-        <type category="enum" name="VkFormatFeatureFlagBits2KHR"                   alias="VkFormatFeatureFlagBits2"/>
-        <type name="VkRenderingFlagBits" category="enum"/>
-        <type category="enum" name="VkRenderingFlagBitsKHR"                        alias="VkRenderingFlagBits"/>
-        <type name="VkPipelineDepthStencilStateCreateFlagBits" category="enum"/>
-        <type name="VkPipelineColorBlendStateCreateFlagBits" category="enum"/>
-        <type name="VkImageCompressionFlagBitsEXT" category="enum"/>
-        <type name="VkImageCompressionFixedRateFlagBitsEXT" category="enum"/>
-        <type name="VkExportMetalObjectTypeFlagBitsEXT" category="enum"/>
-        <type name="VkPipelineRobustnessBufferBehaviorEXT" category="enum"/>
-        <type name="VkPipelineRobustnessImageBehaviorEXT" category="enum"/>
-        <type name="VkDeviceAddressBindingFlagBitsEXT" category="enum"/>
-        <type name="VkDeviceAddressBindingTypeEXT" category="enum"/>
-        <type name="VkMicromapTypeEXT" category="enum"/>
-        <type name="VkBuildMicromapModeEXT" category="enum"/>
-        <type name="VkCopyMicromapModeEXT" category="enum"/>
-        <type name="VkBuildMicromapFlagBitsEXT" category="enum"/>
-        <type name="VkMicromapCreateFlagBitsEXT" category="enum"/>
-        <type name="VkOpacityMicromapFormatEXT" category="enum"/>
-        <type name="VkOpacityMicromapSpecialIndexEXT" category="enum"/>
-        <type name="VkDeviceFaultVendorBinaryHeaderVersionEXT" category="enum"/>
-        <type name="VkFrameBoundaryFlagBitsEXT" category="enum"/>
-        <type name="VkMemoryDecompressionMethodFlagBitsNV" category="enum"/>
-        <type name="VkDepthBiasRepresentationEXT" category="enum"/>
-        <type name="VkDirectDriverLoadingModeLUNARG" category="enum"/>
-        <type name="VkPipelineCreateFlagBits2KHR" category="enum"/>
-        <type name="VkBufferUsageFlagBits2KHR" category="enum"/>
-        <type name="VkDisplacementMicromapFormatNV" category="enum"/>
-        <type name="VkShaderCreateFlagBitsEXT" category="enum"/>
-        <type name="VkShaderCodeTypeEXT" category="enum"/>
-        <type name="VkScopeKHR" category="enum"/>
-        <type name="VkComponentTypeKHR" category="enum"/>
-        <type category="enum" name="VkScopeNV"                                     alias="VkScopeKHR"/>
-        <type category="enum" name="VkComponentTypeNV"                             alias="VkComponentTypeKHR"/>
-        <type name="VkCubicFilterWeightsQCOM" category="enum"/>
-        <type name="VkBlockMatchWindowCompareModeQCOM" category="enum"/>
-        <type name="VkLayeredDriverUnderlyingApiMSFT" category="enum"/>
-
-            <comment>WSI extensions</comment>
-        <type name="VkColorSpaceKHR" category="enum"/>
-        <type name="VkCompositeAlphaFlagBitsKHR" category="enum"/>
-        <type name="VkDisplayPlaneAlphaFlagBitsKHR" category="enum"/>
-        <type name="VkPresentModeKHR" category="enum"/>
-        <type name="VkSurfaceTransformFlagBitsKHR" category="enum"/>
-        <type name="VkDebugReportFlagBitsEXT" category="enum"/>
-        <type name="VkDebugReportObjectTypeEXT" category="enum"/>
-        <type name="VkDeviceMemoryReportEventTypeEXT" category="enum"/>
-        <type name="VkRasterizationOrderAMD" category="enum"/>
-        <type name="VkExternalMemoryHandleTypeFlagBitsNV" category="enum"/>
-        <type name="VkExternalMemoryFeatureFlagBitsNV" category="enum"/>
-        <type name="VkValidationCheckEXT" category="enum"/>
-        <type name="VkValidationFeatureEnableEXT" category="enum"/>
-        <type name="VkValidationFeatureDisableEXT" category="enum"/>
-        <type name="VkExternalMemoryHandleTypeFlagBits" category="enum"/>
-        <type category="enum" name="VkExternalMemoryHandleTypeFlagBitsKHR"         alias="VkExternalMemoryHandleTypeFlagBits"/>
-        <type name="VkExternalMemoryFeatureFlagBits" category="enum"/>
-        <type category="enum" name="VkExternalMemoryFeatureFlagBitsKHR"            alias="VkExternalMemoryFeatureFlagBits"/>
-        <type name="VkExternalSemaphoreHandleTypeFlagBits" category="enum"/>
-        <type category="enum" name="VkExternalSemaphoreHandleTypeFlagBitsKHR"      alias="VkExternalSemaphoreHandleTypeFlagBits"/>
-        <type name="VkExternalSemaphoreFeatureFlagBits" category="enum"/>
-        <type category="enum" name="VkExternalSemaphoreFeatureFlagBitsKHR"         alias="VkExternalSemaphoreFeatureFlagBits"/>
-        <type name="VkSemaphoreImportFlagBits" category="enum"/>
-        <type category="enum" name="VkSemaphoreImportFlagBitsKHR"                  alias="VkSemaphoreImportFlagBits"/>
-        <type name="VkExternalFenceHandleTypeFlagBits" category="enum"/>
-        <type category="enum" name="VkExternalFenceHandleTypeFlagBitsKHR"          alias="VkExternalFenceHandleTypeFlagBits"/>
-        <type name="VkExternalFenceFeatureFlagBits" category="enum"/>
-        <type category="enum" name="VkExternalFenceFeatureFlagBitsKHR"             alias="VkExternalFenceFeatureFlagBits"/>
-        <type name="VkFenceImportFlagBits" category="enum"/>
-        <type category="enum" name="VkFenceImportFlagBitsKHR"                      alias="VkFenceImportFlagBits"/>
-        <type name="VkSurfaceCounterFlagBitsEXT" category="enum"/>
-        <type name="VkDisplayPowerStateEXT" category="enum"/>
-        <type name="VkDeviceEventTypeEXT" category="enum"/>
-        <type name="VkDisplayEventTypeEXT" category="enum"/>
-        <type name="VkPeerMemoryFeatureFlagBits" category="enum"/>
-        <type category="enum" name="VkPeerMemoryFeatureFlagBitsKHR"                alias="VkPeerMemoryFeatureFlagBits"/>
-        <type name="VkMemoryAllocateFlagBits" category="enum"/>
-        <type category="enum" name="VkMemoryAllocateFlagBitsKHR"                   alias="VkMemoryAllocateFlagBits"/>
-        <type name="VkDeviceGroupPresentModeFlagBitsKHR" category="enum"/>
-        <type name="VkSwapchainCreateFlagBitsKHR" category="enum"/>
-        <type name="VkSubgroupFeatureFlagBits" category="enum"/>
-        <type name="VkTessellationDomainOrigin" category="enum"/>
-        <type category="enum" name="VkTessellationDomainOriginKHR"                 alias="VkTessellationDomainOrigin"/>
-        <type name="VkSamplerYcbcrModelConversion" category="enum"/>
-        <type category="enum" name="VkSamplerYcbcrModelConversionKHR"              alias="VkSamplerYcbcrModelConversion"/>
-        <type name="VkSamplerYcbcrRange" category="enum"/>
-        <type category="enum" name="VkSamplerYcbcrRangeKHR"                        alias="VkSamplerYcbcrRange"/>
-        <type name="VkChromaLocation" category="enum"/>
-        <type category="enum" name="VkChromaLocationKHR"                           alias="VkChromaLocation"/>
-        <type name="VkSamplerReductionMode" category="enum"/>
-        <type category="enum" name="VkSamplerReductionModeEXT"                     alias="VkSamplerReductionMode"/>
-        <type name="VkBlendOverlapEXT" category="enum"/>
-        <type name="VkDebugUtilsMessageSeverityFlagBitsEXT" category="enum"/>
-        <type name="VkDebugUtilsMessageTypeFlagBitsEXT" category="enum"/>
-        <type name="VkFullScreenExclusiveEXT" category="enum"/>
-        <type name="VkShaderFloatControlsIndependence" category="enum"/>
-        <type category="enum" name="VkShaderFloatControlsIndependenceKHR"          alias="VkShaderFloatControlsIndependence"/>
-        <type name="VkSwapchainImageUsageFlagBitsANDROID" category="enum"/>
-        <type name="VkFragmentShadingRateCombinerOpKHR" category="enum"/>
-        <type name="VkSubmitFlagBits" category="enum"/>
-        <type category="enum" name="VkSubmitFlagBitsKHR"                           alias="VkSubmitFlagBits"/>
-        <type name="VkGraphicsPipelineLibraryFlagBitsEXT" category="enum"/>
-        <type name="VkOpticalFlowGridSizeFlagBitsNV" category="enum"/>
-        <type name="VkOpticalFlowUsageFlagBitsNV" category="enum"/>
-        <type name="VkOpticalFlowPerformanceLevelNV" category="enum"/>
-        <type name="VkOpticalFlowSessionBindingPointNV" category="enum"/>
-        <type name="VkOpticalFlowSessionCreateFlagBitsNV" category="enum"/>
-        <type name="VkOpticalFlowExecuteFlagBitsNV" category="enum"/>
-        <type name="VkDeviceFaultAddressTypeEXT" category="enum"/>
-        <type name="VkPresentScalingFlagBitsEXT" category="enum"/>
-        <type name="VkPresentGravityFlagBitsEXT" category="enum"/>
-        <type name="VkLatencyMarkerNV" category="enum"/>
-        <type name="VkOutOfBandQueueTypeNV" category="enum"/>
-        <type name="VkPhysicalDeviceSchedulingControlsFlagBitsARM" category="enum"/>
-
-            <comment>Enumerated types in the header, but not used by the API</comment>
-        <type name="VkVendorId" category="enum"/>
-        <type name="VkDriverId" category="enum"/>
-        <type category="enum" name="VkDriverIdKHR"                                 alias="VkDriverId"/>
-        <type name="VkShadingRatePaletteEntryNV" category="enum"/>
-        <type name="VkCoarseSampleOrderTypeNV" category="enum"/>
-        <type name="VkPipelineExecutableStatisticFormatKHR" category="enum"/>
-
-            <comment>Video Core extensions</comment>
-        <type name="VkVideoCodecOperationFlagBitsKHR" category="enum"/>
-        <type name="VkVideoChromaSubsamplingFlagBitsKHR" category="enum"/>
-        <type name="VkVideoComponentBitDepthFlagBitsKHR" category="enum"/>
-        <type name="VkVideoCapabilityFlagBitsKHR" category="enum"/>
-        <type name="VkVideoSessionCreateFlagBitsKHR" category="enum"/>
-        <type name="VkVideoCodingControlFlagBitsKHR" category="enum"/>
-        <type name="VkQueryResultStatusKHR" category="enum"/>
-
-            <comment>Video Decode extensions</comment>
-        <type name="VkVideoDecodeUsageFlagBitsKHR" category="enum"/>
-        <type name="VkVideoDecodeCapabilityFlagBitsKHR" category="enum"/>
-
-            <comment>Video H.264 Decode extensions</comment>
-        <type name="VkVideoDecodeH264PictureLayoutFlagBitsKHR" category="enum"/>
-
-            <comment>Video H.265 Decode extensions</comment>
-
-            <comment>Video Encode extensions</comment>
-        <type name="VkVideoEncodeUsageFlagBitsKHR" category="enum"/>
-        <type name="VkVideoEncodeContentFlagBitsKHR" category="enum"/>
-        <type name="VkVideoEncodeTuningModeKHR" category="enum"/>
-        <type name="VkVideoEncodeCapabilityFlagBitsKHR" category="enum"/>
-        <type name="VkVideoEncodeFeedbackFlagBitsKHR" category="enum"/>
-        <type name="VkVideoEncodeRateControlModeFlagBitsKHR" category="enum"/>
-
-           <comment>Video H.264 Encode extensions</comment>
-        <type name="VkVideoEncodeH264CapabilityFlagBitsEXT"             category="enum"/>
-        <type name="VkVideoEncodeH264StdFlagBitsEXT"                    category="enum"/>
-        <type name="VkVideoEncodeH264RateControlFlagBitsEXT"            category="enum"/>
-
-           <comment>Video H.265 Encode extensions</comment>
-        <type name="VkVideoEncodeH265CapabilityFlagBitsEXT"             category="enum"/>
-        <type name="VkVideoEncodeH265StdFlagBitsEXT"                    category="enum"/>
-        <type name="VkVideoEncodeH265RateControlFlagBitsEXT"            category="enum"/>
-        <type name="VkVideoEncodeH265CtbSizeFlagBitsEXT"                category="enum"/>
-        <type name="VkVideoEncodeH265TransformBlockSizeFlagBitsEXT"     category="enum"/>
-
-        <comment>The PFN_vk*Function types are used by VkAllocationCallbacks below</comment>
-        <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkInternalAllocationNotification</name>)(
-    <type>void</type>*                                       pUserData,
-    <type>size_t</type>                                      size,
-    <type>VkInternalAllocationType</type>                    allocationType,
-    <type>VkSystemAllocationScope</type>                     allocationScope);</type>
-        <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkInternalFreeNotification</name>)(
-    <type>void</type>*                                       pUserData,
-    <type>size_t</type>                                      size,
-    <type>VkInternalAllocationType</type>                    allocationType,
-    <type>VkSystemAllocationScope</type>                     allocationScope);</type>
-        <type category="funcpointer">typedef void* (VKAPI_PTR *<name>PFN_vkReallocationFunction</name>)(
-    <type>void</type>*                                       pUserData,
-    <type>void</type>*                                       pOriginal,
-    <type>size_t</type>                                      size,
-    <type>size_t</type>                                      alignment,
-    <type>VkSystemAllocationScope</type>                     allocationScope);</type>
-        <type category="funcpointer">typedef void* (VKAPI_PTR *<name>PFN_vkAllocationFunction</name>)(
-    <type>void</type>*                                       pUserData,
-    <type>size_t</type>                                      size,
-    <type>size_t</type>                                      alignment,
-    <type>VkSystemAllocationScope</type>                     allocationScope);</type>
-        <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkFreeFunction</name>)(
-    <type>void</type>*                                       pUserData,
-    <type>void</type>*                                       pMemory);</type>
-
-            <comment>The PFN_vkVoidFunction type are used by VkGet*ProcAddr below</comment>
-        <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkVoidFunction</name>)(void);</type>
-
-            <comment>The PFN_vkDebugReportCallbackEXT type are used by the DEBUG_REPORT extension</comment>
-        <type category="funcpointer">typedef VkBool32 (VKAPI_PTR *<name>PFN_vkDebugReportCallbackEXT</name>)(
-    <type>VkDebugReportFlagsEXT</type>                       flags,
-    <type>VkDebugReportObjectTypeEXT</type>                  objectType,
-    <type>uint64_t</type>                                    object,
-    <type>size_t</type>                                      location,
-    <type>int32_t</type>                                     messageCode,
-    const <type>char</type>*                                 pLayerPrefix,
-    const <type>char</type>*                                 pMessage,
-    <type>void</type>*                                       pUserData);</type>
-
-            <comment>The PFN_vkDebugUtilsMessengerCallbackEXT type are used by the VK_EXT_debug_utils extension</comment>
-        <type category="funcpointer" requires="VkDebugUtilsMessengerCallbackDataEXT">typedef VkBool32 (VKAPI_PTR *<name>PFN_vkDebugUtilsMessengerCallbackEXT</name>)(
-    <type>VkDebugUtilsMessageSeverityFlagBitsEXT</type>           messageSeverity,
-    <type>VkDebugUtilsMessageTypeFlagsEXT</type>                  messageTypes,
-    const <type>VkDebugUtilsMessengerCallbackDataEXT</type>*      pCallbackData,
-    <type>void</type>*                                            pUserData);</type>
-
-            <comment>The PFN_vkFaultCallbackFunction type is used by VKSC_VERSION_1_0</comment>
-        <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkFaultCallbackFunction</name>)(
-    <type>VkBool32</type>                                    unrecordedFaults,
-    <type>uint32_t</type>                                    faultCount,
-    const <type>VkFaultData</type>*                          pFaults);</type>
-
-            <comment>The PFN_vkDeviceMemoryReportCallbackEXT type is used by the VK_EXT_device_memory_report extension</comment>
-        <type category="funcpointer" requires="VkDeviceMemoryReportCallbackDataEXT">typedef void (VKAPI_PTR *<name>PFN_vkDeviceMemoryReportCallbackEXT</name>)(
-    const <type>VkDeviceMemoryReportCallbackDataEXT</type>*  pCallbackData,
-    <type>void</type>*                                       pUserData);</type>
-
-            <comment>The PFN_vkGetInstanceProcAddrLUNARG type is used by the
-                     VkDirectDriverLoadingInfoLUNARG structure.
-                     We cannot introduce an explicit dependency on the
-                     equivalent PFN_vkGetInstanceProcAddr type, even though
-                     it is implicitly generated in the C header, because
-                     that results in multiple definitions.</comment>
-        <type category="funcpointer" requires="VkInstance">typedef PFN_vkVoidFunction (VKAPI_PTR *<name>PFN_vkGetInstanceProcAddrLUNARG</name>)(
-    <type>VkInstance</type> instance, const <type>char</type>* pName);</type>
-
-            <comment>Struct types</comment>
-        <type category="struct" name="VkBaseOutStructure">
-            <member><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">struct <type>VkBaseOutStructure</type>* <name>pNext</name></member>
-        </type>
-        <type category="struct" name="VkBaseInStructure">
-            <member><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const struct <type>VkBaseInStructure</type>* <name>pNext</name></member>
-        </type>
-        <type category="struct" name="VkOffset2D">
-            <member><type>int32_t</type>        <name>x</name></member>
-            <member><type>int32_t</type>        <name>y</name></member>
-        </type>
-        <type category="struct" name="VkOffset3D">
-            <member><type>int32_t</type>        <name>x</name></member>
-            <member><type>int32_t</type>        <name>y</name></member>
-            <member><type>int32_t</type>        <name>z</name></member>
-        </type>
-        <type category="struct" name="VkExtent2D">
-            <member><type>uint32_t</type>        <name>width</name></member>
-            <member><type>uint32_t</type>        <name>height</name></member>
-        </type>
-        <type category="struct" name="VkExtent3D">
-            <member><type>uint32_t</type>        <name>width</name></member>
-            <member><type>uint32_t</type>        <name>height</name></member>
-            <member><type>uint32_t</type>        <name>depth</name></member>
-        </type>
-        <type category="struct" name="VkViewport">
-            <member noautovalidity="true"><type>float</type> <name>x</name></member>
-            <member noautovalidity="true"><type>float</type> <name>y</name></member>
-            <member noautovalidity="true"><type>float</type> <name>width</name></member>
-            <member noautovalidity="true"><type>float</type> <name>height</name></member>
-            <member><type>float</type>                       <name>minDepth</name></member>
-            <member><type>float</type>                       <name>maxDepth</name></member>
-        </type>
-        <type category="struct" name="VkRect2D">
-            <member><type>VkOffset2D</type>     <name>offset</name></member>
-            <member><type>VkExtent2D</type>     <name>extent</name></member>
-        </type>
-        <type category="struct" name="VkClearRect">
-            <member><type>VkRect2D</type>       <name>rect</name></member>
-            <member><type>uint32_t</type>       <name>baseArrayLayer</name></member>
-            <member><type>uint32_t</type>       <name>layerCount</name></member>
-        </type>
-        <type category="struct" name="VkComponentMapping">
-            <member><type>VkComponentSwizzle</type> <name>r</name></member>
-            <member><type>VkComponentSwizzle</type> <name>g</name></member>
-            <member><type>VkComponentSwizzle</type> <name>b</name></member>
-            <member><type>VkComponentSwizzle</type> <name>a</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceProperties" returnedonly="true">
-            <member limittype="noauto"><type>uint32_t</type>       <name>apiVersion</name></member>
-            <member limittype="noauto"><type>uint32_t</type>       <name>driverVersion</name></member>
-            <member limittype="noauto"><type>uint32_t</type>       <name>vendorID</name></member>
-            <member limittype="noauto"><type>uint32_t</type>       <name>deviceID</name></member>
-            <member limittype="noauto"><type>VkPhysicalDeviceType</type> <name>deviceType</name></member>
-            <member limittype="noauto"><type>char</type>           <name>deviceName</name>[<enum>VK_MAX_PHYSICAL_DEVICE_NAME_SIZE</enum>]</member>
-            <member limittype="noauto"><type>uint8_t</type>        <name>pipelineCacheUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member limittype="struct"><type>VkPhysicalDeviceLimits</type> <name>limits</name></member>
-            <member limittype="struct"><type>VkPhysicalDeviceSparseProperties</type> <name>sparseProperties</name></member>
-        </type>
-        <type category="struct" name="VkExtensionProperties" returnedonly="true">
-            <member><type>char</type>            <name>extensionName</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]<comment>extension name</comment></member>
-            <member><type>uint32_t</type>        <name>specVersion</name><comment>version of the extension specification implemented</comment></member>
-        </type>
-        <type category="struct" name="VkLayerProperties" returnedonly="true">
-            <member><type>char</type>            <name>layerName</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]<comment>layer name</comment></member>
-            <member><type>uint32_t</type>        <name>specVersion</name><comment>version of the layer specification implemented</comment></member>
-            <member><type>uint32_t</type>        <name>implementationVersion</name><comment>build or release version of the layer's library</comment></member>
-            <member><type>char</type>            <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]<comment>Free-form description of the layer</comment></member>
-        </type>
-        <type category="struct" name="VkApplicationInfo">
-            <member values="VK_STRUCTURE_TYPE_APPLICATION_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*     <name>pNext</name></member>
-            <member optional="true" len="null-terminated">const <type>char</type>*     <name>pApplicationName</name></member>
-            <member><type>uint32_t</type>        <name>applicationVersion</name></member>
-            <member optional="true" len="null-terminated">const <type>char</type>*     <name>pEngineName</name></member>
-            <member><type>uint32_t</type>        <name>engineVersion</name></member>
-            <member><type>uint32_t</type>        <name>apiVersion</name></member>
-        </type>
-        <type category="struct" name="VkAllocationCallbacks">
-            <member optional="true"><type>void</type>*           <name>pUserData</name></member>
-            <member noautovalidity="true"><type>PFN_vkAllocationFunction</type>   <name>pfnAllocation</name></member>
-            <member noautovalidity="true"><type>PFN_vkReallocationFunction</type> <name>pfnReallocation</name></member>
-            <member noautovalidity="true"><type>PFN_vkFreeFunction</type>    <name>pfnFree</name></member>
-            <member optional="true" noautovalidity="true"><type>PFN_vkInternalAllocationNotification</type> <name>pfnInternalAllocation</name></member>
-            <member optional="true" noautovalidity="true"><type>PFN_vkInternalFreeNotification</type> <name>pfnInternalFree</name></member>
-        </type>
-        <type category="struct" name="VkDeviceQueueCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*     <name>pNext</name></member>
-            <member optional="true"><type>VkDeviceQueueCreateFlags</type>    <name>flags</name></member>
-            <member><type>uint32_t</type>        <name>queueFamilyIndex</name></member>
-            <member><type>uint32_t</type>        <name>queueCount</name></member>
-            <member len="queueCount">const <type>float</type>*    <name>pQueuePriorities</name></member>
-        </type>
-        <type category="struct" name="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*     <name>pNext</name></member>
-            <member optional="true"><type>VkDeviceCreateFlags</type>    <name>flags</name></member>
-            <member><type>uint32_t</type>        <name>queueCreateInfoCount</name></member>
-            <member len="queueCreateInfoCount">const <type>VkDeviceQueueCreateInfo</type>* <name>pQueueCreateInfos</name></member>
-            <member optional="true" deprecated="ignored"><type>uint32_t</type>               <name>enabledLayerCount</name></member>
-            <member len="enabledLayerCount,null-terminated" deprecated="ignored">const <type>char</type>* const*      <name>ppEnabledLayerNames</name><comment>Ordered list of layer names to be enabled</comment></member>
-            <member optional="true"><type>uint32_t</type>               <name>enabledExtensionCount</name></member>
-            <member len="enabledExtensionCount,null-terminated">const <type>char</type>* const*      <name>ppEnabledExtensionNames</name></member>
-            <member optional="true">const <type>VkPhysicalDeviceFeatures</type>* <name>pEnabledFeatures</name></member>
-        </type>
-        <type category="struct" name="VkInstanceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*     <name>pNext</name></member>
-            <member optional="true"><type>VkInstanceCreateFlags</type>  <name>flags</name></member>
-            <member optional="true">const <type>VkApplicationInfo</type>* <name>pApplicationInfo</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>enabledLayerCount</name></member>
-            <member len="enabledLayerCount,null-terminated">const <type>char</type>* const*      <name>ppEnabledLayerNames</name><comment>Ordered list of layer names to be enabled</comment></member>
-            <member optional="true"><type>uint32_t</type>               <name>enabledExtensionCount</name></member>
-            <member len="enabledExtensionCount,null-terminated">const <type>char</type>* const*      <name>ppEnabledExtensionNames</name><comment>Extension names to be enabled</comment></member>
-        </type>
-        <type category="struct" name="VkQueueFamilyProperties" returnedonly="true">
-            <member optional="true" limittype="bitmask"><type>VkQueueFlags</type>           <name>queueFlags</name><comment>Queue flags</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>queueCount</name></member>
-            <member limittype="bits"><type>uint32_t</type>               <name>timestampValidBits</name></member>
-            <member limittype="min,mul"><type>VkExtent3D</type>             <name>minImageTransferGranularity</name><comment>Minimum alignment requirement for image transfers</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMemoryProperties" returnedonly="true">
-            <member><type>uint32_t</type>               <name>memoryTypeCount</name></member>
-            <member><type>VkMemoryType</type>           <name>memoryTypes</name>[<enum>VK_MAX_MEMORY_TYPES</enum>]</member>
-            <member><type>uint32_t</type>               <name>memoryHeapCount</name></member>
-            <member><type>VkMemoryHeap</type>           <name>memoryHeaps</name>[<enum>VK_MAX_MEMORY_HEAPS</enum>]</member>
-        </type>
-        <type category="struct" name="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>           <name>allocationSize</name><comment>Size of memory allocation</comment></member>
-            <member><type>uint32_t</type>               <name>memoryTypeIndex</name><comment>Index of the of the memory type to allocate from</comment></member>
-        </type>
-        <type category="struct" name="VkMemoryRequirements" returnedonly="true">
-            <member><type>VkDeviceSize</type>           <name>size</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>           <name>alignment</name><comment>Specified in bytes</comment></member>
-            <member><type>uint32_t</type>               <name>memoryTypeBits</name><comment>Bitmask of the allowed memory type indices into memoryTypes[] for this object</comment></member>
-        </type>
-        <type category="struct" name="VkSparseImageFormatProperties" returnedonly="true">
-            <member limittype="bitmask" optional="true"><type>VkImageAspectFlags</type>       <name>aspectMask</name></member>
-            <member limittype="min,mul"><type>VkExtent3D</type>                                <name>imageGranularity</name></member>
-            <member limittype="bitmask" optional="true"><type>VkSparseImageFormatFlags</type> <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkSparseImageMemoryRequirements" returnedonly="true">
-            <member><type>VkSparseImageFormatProperties</type> <name>formatProperties</name></member>
-            <member><type>uint32_t</type>               <name>imageMipTailFirstLod</name></member>
-            <member><type>VkDeviceSize</type>           <name>imageMipTailSize</name><comment>Specified in bytes, must be a multiple of sparse block size in bytes / alignment</comment></member>
-            <member><type>VkDeviceSize</type>           <name>imageMipTailOffset</name><comment>Specified in bytes, must be a multiple of sparse block size in bytes / alignment</comment></member>
-            <member><type>VkDeviceSize</type>           <name>imageMipTailStride</name><comment>Specified in bytes, must be a multiple of sparse block size in bytes / alignment</comment></member>
-        </type>
-        <type category="struct" name="VkMemoryType" returnedonly="true">
-            <member optional="true"><type>VkMemoryPropertyFlags</type>  <name>propertyFlags</name><comment>Memory properties of this memory type</comment></member>
-            <member><type>uint32_t</type>               <name>heapIndex</name><comment>Index of the memory heap allocations of this memory type are taken from</comment></member>
-        </type>
-        <type category="struct" name="VkMemoryHeap" returnedonly="true">
-            <member><type>VkDeviceSize</type>           <name>size</name><comment>Available memory in the heap</comment></member>
-            <member optional="true"><type>VkMemoryHeapFlags</type>      <name>flags</name><comment>Flags for the heap</comment></member>
-        </type>
-        <type category="struct" name="VkMappedMemoryRange">
-            <member values="VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>         <name>memory</name><comment>Mapped memory object</comment></member>
-            <member><type>VkDeviceSize</type>           <name>offset</name><comment>Offset within the memory object where the range starts</comment></member>
-            <member><type>VkDeviceSize</type>           <name>size</name><comment>Size of the range within the memory object</comment></member>
-        </type>
-        <type category="struct" name="VkFormatProperties" returnedonly="true">
-            <member optional="true" limittype="bitmask"><type>VkFormatFeatureFlags</type>   <name>linearTilingFeatures</name><comment>Format features in case of linear tiling</comment></member>
-            <member optional="true" limittype="bitmask"><type>VkFormatFeatureFlags</type>   <name>optimalTilingFeatures</name><comment>Format features in case of optimal tiling</comment></member>
-            <member optional="true" limittype="bitmask"><type>VkFormatFeatureFlags</type>   <name>bufferFeatures</name><comment>Format features supported by buffers</comment></member>
-        </type>
-        <type category="struct" name="VkImageFormatProperties" returnedonly="true">
-            <member><type>VkExtent3D</type>             <name>maxExtent</name><comment>max image dimensions for this resource type</comment></member>
-            <member><type>uint32_t</type>               <name>maxMipLevels</name><comment>max number of mipmap levels for this resource type</comment></member>
-            <member><type>uint32_t</type>               <name>maxArrayLayers</name><comment>max array size for this resource type</comment></member>
-            <member optional="true"><type>VkSampleCountFlags</type>     <name>sampleCounts</name><comment>supported sample counts for this resource type</comment></member>
-            <member><type>VkDeviceSize</type>           <name>maxResourceSize</name><comment>max size (in bytes) of this resource type</comment></member>
-        </type>
-        <type category="struct" name="VkDescriptorBufferInfo">
-            <member optional="true"><type>VkBuffer</type>               <name>buffer</name><comment>Buffer used for this descriptor slot.</comment></member>
-            <member><type>VkDeviceSize</type>           <name>offset</name><comment>Base offset from buffer start in bytes to update in the descriptor set.</comment></member>
-            <member><type>VkDeviceSize</type>           <name>range</name><comment>Size in bytes of the buffer resource for this descriptor update.</comment></member>
-        </type>
-        <type category="struct" name="VkDescriptorImageInfo">
-            <member noautovalidity="true"><type>VkSampler</type>       <name>sampler</name><comment>Sampler to write to the descriptor in case it is a SAMPLER or COMBINED_IMAGE_SAMPLER descriptor. Ignored otherwise.</comment></member>
-            <member noautovalidity="true"><type>VkImageView</type>     <name>imageView</name><comment>Image view to write to the descriptor in case it is a SAMPLED_IMAGE, STORAGE_IMAGE, COMBINED_IMAGE_SAMPLER, or INPUT_ATTACHMENT descriptor. Ignored otherwise.</comment></member>
-            <member noautovalidity="true"><type>VkImageLayout</type>   <name>imageLayout</name><comment>Layout the image is expected to be in when accessed using this descriptor (only used if imageView is not VK_NULL_HANDLE).</comment></member>
-        </type>
-        <type category="struct" name="VkWriteDescriptorSet">
-            <member values="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkDescriptorSet</type>        <name>dstSet</name><comment>Destination descriptor set</comment></member>
-            <member><type>uint32_t</type>               <name>dstBinding</name><comment>Binding within the destination descriptor set to write</comment></member>
-            <member><type>uint32_t</type>               <name>dstArrayElement</name><comment>Array element within the destination binding to write</comment></member>
-            <member><type>uint32_t</type>               <name>descriptorCount</name><comment>Number of descriptors to write (determines the size of the array pointed by pDescriptors)</comment></member>
-            <member><type>VkDescriptorType</type>       <name>descriptorType</name><comment>Descriptor type to write (determines which members of the array pointed by pDescriptors are going to be used)</comment></member>
-            <member noautovalidity="true" len="descriptorCount">const <type>VkDescriptorImageInfo</type>* <name>pImageInfo</name><comment>Sampler, image view, and layout for SAMPLER, COMBINED_IMAGE_SAMPLER, {SAMPLED,STORAGE}_IMAGE, and INPUT_ATTACHMENT descriptor types.</comment></member>
-            <member noautovalidity="true" len="descriptorCount">const <type>VkDescriptorBufferInfo</type>* <name>pBufferInfo</name><comment>Raw buffer, size, and offset for {UNIFORM,STORAGE}_BUFFER[_DYNAMIC] descriptor types.</comment></member>
-            <member noautovalidity="true" len="descriptorCount">const <type>VkBufferView</type>*    <name>pTexelBufferView</name><comment>Buffer view to write to the descriptor for {UNIFORM,STORAGE}_TEXEL_BUFFER descriptor types.</comment></member>
-        </type>
-        <type category="struct" name="VkCopyDescriptorSet">
-            <member values="VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkDescriptorSet</type>        <name>srcSet</name><comment>Source descriptor set</comment></member>
-            <member><type>uint32_t</type>               <name>srcBinding</name><comment>Binding within the source descriptor set to copy from</comment></member>
-            <member><type>uint32_t</type>               <name>srcArrayElement</name><comment>Array element within the source binding to copy from</comment></member>
-            <member><type>VkDescriptorSet</type>        <name>dstSet</name><comment>Destination descriptor set</comment></member>
-            <member><type>uint32_t</type>               <name>dstBinding</name><comment>Binding within the destination descriptor set to copy to</comment></member>
-            <member><type>uint32_t</type>               <name>dstArrayElement</name><comment>Array element within the destination binding to copy to</comment></member>
-            <member><type>uint32_t</type>               <name>descriptorCount</name><comment>Number of descriptors to write (determines the size of the array pointed by pDescriptors)</comment></member>
-        </type>
-        <type category="struct" name="VkBufferUsageFlags2CreateInfoKHR" structextends="VkBufferViewCreateInfo,VkBufferCreateInfo,VkPhysicalDeviceExternalBufferInfo,VkDescriptorBufferBindingInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBufferUsageFlags2KHR</type>         <name>usage</name></member>
-        </type>
-        <type category="struct" name="VkBufferCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkBufferCreateFlags</type>    <name>flags</name><comment>Buffer creation flags</comment></member>
-            <member><type>VkDeviceSize</type>           <name>size</name><comment>Specified in bytes</comment></member>
-            <member noautovalidity="true"><type>VkBufferUsageFlags</type>     <name>usage</name><comment>Buffer usage flags</comment></member>
-            <member><type>VkSharingMode</type>          <name>sharingMode</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>queueFamilyIndexCount</name></member>
-            <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>*        <name>pQueueFamilyIndices</name></member>
-        </type>
-        <type category="struct" name="VkBufferViewCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkBufferViewCreateFlags</type> <name>flags</name></member>
-            <member><type>VkBuffer</type>               <name>buffer</name></member>
-            <member><type>VkFormat</type>               <name>format</name><comment>Optionally specifies format of elements</comment></member>
-            <member><type>VkDeviceSize</type>           <name>offset</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>           <name>range</name><comment>View size specified in bytes</comment></member>
-        </type>
-        <type category="struct" name="VkImageSubresource">
-            <member><type>VkImageAspectFlags</type>     <name>aspectMask</name></member>
-            <member><type>uint32_t</type>               <name>mipLevel</name></member>
-            <member><type>uint32_t</type>               <name>arrayLayer</name></member>
-        </type>
-        <type category="struct" name="VkImageSubresourceLayers">
-            <member><type>VkImageAspectFlags</type>     <name>aspectMask</name></member>
-            <member><type>uint32_t</type>               <name>mipLevel</name></member>
-            <member><type>uint32_t</type>               <name>baseArrayLayer</name></member>
-            <member><type>uint32_t</type>               <name>layerCount</name></member>
-        </type>
-        <type category="struct" name="VkImageSubresourceRange">
-            <member><type>VkImageAspectFlags</type>     <name>aspectMask</name></member>
-            <member><type>uint32_t</type>               <name>baseMipLevel</name></member>
-            <member><type>uint32_t</type>               <name>levelCount</name></member>
-            <member><type>uint32_t</type>               <name>baseArrayLayer</name></member>
-            <member><type>uint32_t</type>               <name>layerCount</name></member>
-        </type>
-        <type category="struct" name="VkMemoryBarrier">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_BARRIER"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkAccessFlags</type>          <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member>
-            <member optional="true"><type>VkAccessFlags</type>          <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member>
-        </type>
-        <type category="struct" name="VkBufferMemoryBarrier">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkAccessFlags</type>          <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member>
-            <member noautovalidity="true"><type>VkAccessFlags</type>          <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member>
-            <member><type>uint32_t</type>               <name>srcQueueFamilyIndex</name><comment>Queue family to transition ownership from</comment></member>
-            <member><type>uint32_t</type>               <name>dstQueueFamilyIndex</name><comment>Queue family to transition ownership to</comment></member>
-            <member><type>VkBuffer</type>               <name>buffer</name><comment>Buffer to sync</comment></member>
-            <member><type>VkDeviceSize</type>           <name>offset</name><comment>Offset within the buffer to sync</comment></member>
-            <member><type>VkDeviceSize</type>           <name>size</name><comment>Amount of bytes to sync</comment></member>
-        </type>
-        <type category="struct" name="VkImageMemoryBarrier">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkAccessFlags</type>          <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member>
-            <member noautovalidity="true"><type>VkAccessFlags</type>          <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member>
-            <member><type>VkImageLayout</type>          <name>oldLayout</name><comment>Current layout of the image</comment></member>
-            <member><type>VkImageLayout</type>          <name>newLayout</name><comment>New layout to transition the image to</comment></member>
-            <member><type>uint32_t</type>               <name>srcQueueFamilyIndex</name><comment>Queue family to transition ownership from</comment></member>
-            <member><type>uint32_t</type>               <name>dstQueueFamilyIndex</name><comment>Queue family to transition ownership to</comment></member>
-            <member><type>VkImage</type>                <name>image</name><comment>Image to sync</comment></member>
-            <member><type>VkImageSubresourceRange</type> <name>subresourceRange</name><comment>Subresource range to sync</comment></member>
-        </type>
-        <type category="struct" name="VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkImageCreateFlags</type>     <name>flags</name><comment>Image creation flags</comment></member>
-            <member><type>VkImageType</type>            <name>imageType</name></member>
-            <member><type>VkFormat</type>               <name>format</name></member>
-            <member><type>VkExtent3D</type>             <name>extent</name></member>
-            <member><type>uint32_t</type>               <name>mipLevels</name></member>
-            <member><type>uint32_t</type>               <name>arrayLayers</name></member>
-            <member><type>VkSampleCountFlagBits</type>  <name>samples</name></member>
-            <member><type>VkImageTiling</type>          <name>tiling</name></member>
-            <member><type>VkImageUsageFlags</type>      <name>usage</name><comment>Image usage flags</comment></member>
-            <member><type>VkSharingMode</type>          <name>sharingMode</name><comment>Cross-queue-family sharing mode</comment></member>
-            <member optional="true"><type>uint32_t</type>               <name>queueFamilyIndexCount</name><comment>Number of queue families to share across</comment></member>
-            <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>*        <name>pQueueFamilyIndices</name><comment>Array of queue family indices to share across</comment></member>
-            <member><type>VkImageLayout</type>          <name>initialLayout</name><comment>Initial image layout for all subresources</comment></member>
-        </type>
-        <type category="struct" name="VkSubresourceLayout">
-            <member><type>VkDeviceSize</type>           <name>offset</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>           <name>size</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>           <name>rowPitch</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>           <name>arrayPitch</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>           <name>depthPitch</name><comment>Specified in bytes</comment></member>
-        </type>
-        <type category="struct" name="VkImageViewCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkImageViewCreateFlags</type> <name>flags</name></member>
-            <member><type>VkImage</type>                <name>image</name></member>
-            <member><type>VkImageViewType</type>        <name>viewType</name></member>
-            <member><type>VkFormat</type>               <name>format</name></member>
-            <member><type>VkComponentMapping</type>     <name>components</name></member>
-            <member><type>VkImageSubresourceRange</type> <name>subresourceRange</name></member>
-        </type>
-        <type category="struct" name="VkBufferCopy">
-            <member><type>VkDeviceSize</type>                       <name>srcOffset</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>                       <name>dstOffset</name><comment>Specified in bytes</comment></member>
-            <member noautovalidity="true"><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member>
-        </type>
-        <type category="struct" name="VkSparseMemoryBind">
-            <member><type>VkDeviceSize</type>           <name>resourceOffset</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>           <name>size</name><comment>Specified in bytes</comment></member>
-            <member optional="true"><type>VkDeviceMemory</type>         <name>memory</name></member>
-            <member><type>VkDeviceSize</type>           <name>memoryOffset</name><comment>Specified in bytes</comment></member>
-            <member optional="true"><type>VkSparseMemoryBindFlags</type> <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkSparseImageMemoryBind">
-            <member><type>VkImageSubresource</type>     <name>subresource</name></member>
-            <member><type>VkOffset3D</type>             <name>offset</name></member>
-            <member><type>VkExtent3D</type>             <name>extent</name></member>
-            <member optional="true"><type>VkDeviceMemory</type>         <name>memory</name></member>
-            <member><type>VkDeviceSize</type>           <name>memoryOffset</name><comment>Specified in bytes</comment></member>
-            <member optional="true"><type>VkSparseMemoryBindFlags</type> <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkSparseBufferMemoryBindInfo">
-            <member><type>VkBuffer</type> <name>buffer</name></member>
-            <member><type>uint32_t</type>               <name>bindCount</name></member>
-            <member len="bindCount">const <type>VkSparseMemoryBind</type>* <name>pBinds</name></member>
-        </type>
-        <type category="struct" name="VkSparseImageOpaqueMemoryBindInfo">
-            <member><type>VkImage</type> <name>image</name></member>
-            <member><type>uint32_t</type>               <name>bindCount</name></member>
-            <member len="bindCount">const <type>VkSparseMemoryBind</type>* <name>pBinds</name></member>
-        </type>
-        <type category="struct" name="VkSparseImageMemoryBindInfo">
-            <member><type>VkImage</type> <name>image</name></member>
-            <member><type>uint32_t</type>               <name>bindCount</name></member>
-            <member len="bindCount">const <type>VkSparseImageMemoryBind</type>* <name>pBinds</name></member>
-        </type>
-        <type category="struct" name="VkBindSparseInfo">
-            <member values="VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>waitSemaphoreCount</name></member>
-            <member len="waitSemaphoreCount">const <type>VkSemaphore</type>*     <name>pWaitSemaphores</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>bufferBindCount</name></member>
-            <member len="bufferBindCount">const <type>VkSparseBufferMemoryBindInfo</type>* <name>pBufferBinds</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>imageOpaqueBindCount</name></member>
-            <member len="imageOpaqueBindCount">const <type>VkSparseImageOpaqueMemoryBindInfo</type>* <name>pImageOpaqueBinds</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>imageBindCount</name></member>
-            <member len="imageBindCount">const <type>VkSparseImageMemoryBindInfo</type>* <name>pImageBinds</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>signalSemaphoreCount</name></member>
-            <member len="signalSemaphoreCount">const <type>VkSemaphore</type>*     <name>pSignalSemaphores</name></member>
-        </type>
-        <type category="struct" name="VkImageCopy">
-            <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member>
-            <member><type>VkOffset3D</type>             <name>srcOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-            <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member>
-            <member><type>VkOffset3D</type>             <name>dstOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-            <member><type>VkExtent3D</type>             <name>extent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-        </type>
-        <type category="struct" name="VkImageBlit">
-            <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member>
-            <member><type>VkOffset3D</type>             <name>srcOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-            <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member>
-            <member><type>VkOffset3D</type>             <name>dstOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-        </type>
-        <type category="struct" name="VkBufferImageCopy">
-            <member><type>VkDeviceSize</type>           <name>bufferOffset</name><comment>Specified in bytes</comment></member>
-            <member><type>uint32_t</type>               <name>bufferRowLength</name><comment>Specified in texels</comment></member>
-            <member><type>uint32_t</type>               <name>bufferImageHeight</name></member>
-            <member><type>VkImageSubresourceLayers</type> <name>imageSubresource</name></member>
-            <member><type>VkOffset3D</type>             <name>imageOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-            <member><type>VkExtent3D</type>             <name>imageExtent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-        </type>
-        <type category="struct" name="VkCopyMemoryIndirectCommandNV">
-            <member><type>VkDeviceAddress</type>                <name>srcAddress</name></member>
-            <member><type>VkDeviceAddress</type>                <name>dstAddress</name></member>
-            <member><type>VkDeviceSize</type>                   <name>size</name><comment>Specified in bytes</comment></member>
-        </type>
-        <type category="struct" name="VkCopyMemoryToImageIndirectCommandNV">
-            <member><type>VkDeviceAddress</type>                <name>srcAddress</name></member>
-            <member><type>uint32_t</type>                       <name>bufferRowLength</name><comment>Specified in texels</comment></member>
-            <member><type>uint32_t</type>                       <name>bufferImageHeight</name></member>
-            <member><type>VkImageSubresourceLayers</type>       <name>imageSubresource</name></member>
-            <member><type>VkOffset3D</type>                     <name>imageOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-            <member><type>VkExtent3D</type>                     <name>imageExtent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-        </type>
-        <type category="struct" name="VkImageResolve">
-            <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member>
-            <member><type>VkOffset3D</type>             <name>srcOffset</name></member>
-            <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member>
-            <member><type>VkOffset3D</type>             <name>dstOffset</name></member>
-            <member><type>VkExtent3D</type>             <name>extent</name></member>
-        </type>
-        <type category="struct" name="VkShaderModuleCreateInfo" structextends="VkPipelineShaderStageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member noautovalidity="true" optional="true">const <type>void</type>*            <name>pNext</name><comment>noautovalidity because this structure can be either an explicit parameter, or passed in a pNext chain</comment></member>
-            <member optional="true"><type>VkShaderModuleCreateFlags</type> <name>flags</name></member>
-            <member><type>size_t</type>                 <name>codeSize</name><comment>Specified in bytes</comment></member>
-            <member len="latexmath:[\textrm{codeSize} \over 4]" altlen="codeSize / 4">const <type>uint32_t</type>*            <name>pCode</name><comment>Binary code of size codeSize</comment></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetLayoutBinding">
-            <member><type>uint32_t</type>               <name>binding</name><comment>Binding number for this entry</comment></member>
-            <member><type>VkDescriptorType</type>       <name>descriptorType</name><comment>Type of the descriptors in this binding</comment></member>
-            <member optional="true"><type>uint32_t</type> <name>descriptorCount</name><comment>Number of descriptors in this binding</comment></member>
-            <member noautovalidity="true"><type>VkShaderStageFlags</type>     <name>stageFlags</name><comment>Shader stages this binding is visible to</comment></member>
-            <member noautovalidity="true" optional="true" len="descriptorCount">const <type>VkSampler</type>*       <name>pImmutableSamplers</name><comment>Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains count number of elements)</comment></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetLayoutCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkDescriptorSetLayoutCreateFlags</type>    <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>bindingCount</name><comment>Number of bindings in the descriptor set layout</comment></member>
-            <member len="bindingCount">const <type>VkDescriptorSetLayoutBinding</type>* <name>pBindings</name><comment>Array of descriptor set layout bindings</comment></member>
-        </type>
-        <type category="struct" name="VkDescriptorPoolSize">
-            <member><type>VkDescriptorType</type>       <name>type</name></member>
-            <member><type>uint32_t</type>               <name>descriptorCount</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkDescriptorPoolCreateFlags</type>  <name>flags</name></member>
-            <member><type>uint32_t</type>               <name>maxSets</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>poolSizeCount</name></member>
-            <member len="poolSizeCount">const <type>VkDescriptorPoolSize</type>* <name>pPoolSizes</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkDescriptorPool</type>       <name>descriptorPool</name></member>
-            <member><type>uint32_t</type>               <name>descriptorSetCount</name></member>
-            <member len="descriptorSetCount">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name></member>
-        </type>
-        <type category="struct" name="VkSpecializationMapEntry">
-            <member><type>uint32_t</type>                     <name>constantID</name><comment>The SpecConstant ID specified in the BIL</comment></member>
-            <member><type>uint32_t</type>                     <name>offset</name><comment>Offset of the value in the data block</comment></member>
-            <member noautovalidity="true"><type>size_t</type> <name>size</name><comment>Size in bytes of the SpecConstant</comment></member>
-        </type>
-        <type category="struct" name="VkSpecializationInfo">
-            <member optional="true"><type>uint32_t</type>               <name>mapEntryCount</name><comment>Number of entries in the map</comment></member>
-            <member len="mapEntryCount">const <type>VkSpecializationMapEntry</type>* <name>pMapEntries</name><comment>Array of map entries</comment></member>
-            <member optional="true"><type>size_t</type>                 <name>dataSize</name><comment>Size in bytes of pData</comment></member>
-            <member len="dataSize">const <type>void</type>*            <name>pData</name><comment>Pointer to SpecConstant data</comment></member>
-        </type>
-        <type category="struct" name="VkPipelineShaderStageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineShaderStageCreateFlags</type>    <name>flags</name></member>
-            <member><type>VkShaderStageFlagBits</type>  <name>stage</name><comment>Shader stage</comment></member>
-            <member optional="true"><type>VkShaderModule</type> <name>module</name><comment>Module containing entry point</comment></member>
-            <member api="vulkan" len="null-terminated">const <type>char</type>* <name>pName</name><comment>Null-terminated entry point name</comment></member>
-            <member api="vulkansc" optional="true" len="null-terminated">const <type>char</type>* <name>pName</name><comment>Null-terminated entry point name</comment></member>
-            <member optional="true">const <type>VkSpecializationInfo</type>* <name>pSpecializationInfo</name></member>
-        </type>
-        <type category="struct" name="VkComputePipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCreateFlags</type>  <name>flags</name><comment>Pipeline creation flags</comment></member>
-            <member><type>VkPipelineShaderStageCreateInfo</type> <name>stage</name></member>
-            <member><type>VkPipelineLayout</type>       <name>layout</name><comment>Interface layout of the pipeline</comment></member>
-            <member noautovalidity="true" optional="true"><type>VkPipeline</type>      <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member>
-            <member><type>int32_t</type>                <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member>
-        </type>
-        <type category="struct" name="VkComputePipelineIndirectBufferInfoNV">
-            <member values="VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*   <name>pNext</name></member>
-            <member><type>VkDeviceAddress</type>               <name>deviceAddress</name></member>
-            <member><type>VkDeviceSize</type>                  <name>size</name></member>
-            <member><type>VkDeviceAddress</type>               <name>pipelineDeviceAddressCaptureReplay</name></member>
-        </type>
-        <type category="struct" name="VkPipelineCreateFlags2CreateInfoKHR" structextends="VkComputePipelineCreateInfo,VkGraphicsPipelineCreateInfo,VkRayTracingPipelineCreateInfoNV,VkRayTracingPipelineCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>VkPipelineCreateFlags2KHR</type>      <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkVertexInputBindingDescription">
-            <member><type>uint32_t</type>               <name>binding</name><comment>Vertex buffer binding id</comment></member>
-            <member><type>uint32_t</type>               <name>stride</name><comment>Distance between vertices in bytes (0 = no advancement)</comment></member>
-            <member><type>VkVertexInputRate</type>      <name>inputRate</name><comment>The rate at which the vertex data is consumed</comment></member>
-        </type>
-        <type category="struct" name="VkVertexInputAttributeDescription">
-            <member><type>uint32_t</type>               <name>location</name><comment>location of the shader vertex attrib</comment></member>
-            <member><type>uint32_t</type>               <name>binding</name><comment>Vertex buffer binding id</comment></member>
-            <member><type>VkFormat</type>               <name>format</name><comment>format of source data</comment></member>
-            <member><type>uint32_t</type>               <name>offset</name><comment>Offset of first element in bytes from base of vertex</comment></member>
-        </type>
-        <type category="struct" name="VkPipelineVertexInputStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineVertexInputStateCreateFlags</type>    <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>vertexBindingDescriptionCount</name><comment>number of bindings</comment></member>
-            <member len="vertexBindingDescriptionCount">const <type>VkVertexInputBindingDescription</type>* <name>pVertexBindingDescriptions</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>vertexAttributeDescriptionCount</name><comment>number of attributes</comment></member>
-            <member len="vertexAttributeDescriptionCount">const <type>VkVertexInputAttributeDescription</type>* <name>pVertexAttributeDescriptions</name></member>
-        </type>
-        <type category="struct" name="VkPipelineInputAssemblyStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineInputAssemblyStateCreateFlags</type>    <name>flags</name></member>
-            <member><type>VkPrimitiveTopology</type>    <name>topology</name></member>
-            <member><type>VkBool32</type>               <name>primitiveRestartEnable</name></member>
-        </type>
-        <type category="struct" name="VkPipelineTessellationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineTessellationStateCreateFlags</type>    <name>flags</name></member>
-            <member><type>uint32_t</type>               <name>patchControlPoints</name></member>
-        </type>
-        <type category="struct" name="VkPipelineViewportStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineViewportStateCreateFlags</type>    <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>viewportCount</name></member>
-            <member noautovalidity="true" optional="true" len="viewportCount">const <type>VkViewport</type>*      <name>pViewports</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>scissorCount</name></member>
-            <member noautovalidity="true" optional="true" len="scissorCount">const <type>VkRect2D</type>*        <name>pScissors</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRasterizationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineRasterizationStateCreateFlags</type>    <name>flags</name></member>
-            <member><type>VkBool32</type>               <name>depthClampEnable</name></member>
-            <member><type>VkBool32</type>               <name>rasterizerDiscardEnable</name></member>
-            <member><type>VkPolygonMode</type>          <name>polygonMode</name><comment>optional (GL45)</comment></member>
-            <member optional="true"><type>VkCullModeFlags</type>        <name>cullMode</name></member>
-            <member><type>VkFrontFace</type>            <name>frontFace</name></member>
-            <member><type>VkBool32</type>               <name>depthBiasEnable</name></member>
-            <member><type>float</type>                  <name>depthBiasConstantFactor</name></member>
-            <member><type>float</type>                  <name>depthBiasClamp</name></member>
-            <member><type>float</type>                  <name>depthBiasSlopeFactor</name></member>
-            <member><type>float</type>                  <name>lineWidth</name></member>
-        </type>
-        <type category="struct" name="VkPipelineMultisampleStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineMultisampleStateCreateFlags</type>    <name>flags</name></member>
-            <member><type>VkSampleCountFlagBits</type>  <name>rasterizationSamples</name><comment>Number of samples used for rasterization</comment></member>
-            <member><type>VkBool32</type>               <name>sampleShadingEnable</name><comment>optional (GL45)</comment></member>
-            <member><type>float</type>                  <name>minSampleShading</name><comment>optional (GL45)</comment></member>
-            <member optional="true" len="latexmath:[\lceil{\mathit{rasterizationSamples} \over 32}\rceil]" altlen="(rasterizationSamples + 31) / 32">const <type>VkSampleMask</type>*    <name>pSampleMask</name><comment>Array of sampleMask words</comment></member>
-            <member><type>VkBool32</type>               <name>alphaToCoverageEnable</name></member>
-            <member><type>VkBool32</type>               <name>alphaToOneEnable</name></member>
-        </type>
-        <type category="struct" name="VkPipelineColorBlendAttachmentState">
-            <member><type>VkBool32</type>               <name>blendEnable</name></member>
-            <member><type>VkBlendFactor</type>          <name>srcColorBlendFactor</name></member>
-            <member><type>VkBlendFactor</type>          <name>dstColorBlendFactor</name></member>
-            <member><type>VkBlendOp</type>              <name>colorBlendOp</name></member>
-            <member><type>VkBlendFactor</type>          <name>srcAlphaBlendFactor</name></member>
-            <member><type>VkBlendFactor</type>          <name>dstAlphaBlendFactor</name></member>
-            <member><type>VkBlendOp</type>              <name>alphaBlendOp</name></member>
-            <member optional="true"><type>VkColorComponentFlags</type>  <name>colorWriteMask</name></member>
-        </type>
-        <type category="struct" name="VkPipelineColorBlendStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineColorBlendStateCreateFlags</type>    <name>flags</name></member>
-            <member><type>VkBool32</type>               <name>logicOpEnable</name></member>
-            <member noautovalidity="true"><type>VkLogicOp</type>              <name>logicOp</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>attachmentCount</name><comment># of pAttachments</comment></member>
-            <member optional="true" len="attachmentCount">const <type>VkPipelineColorBlendAttachmentState</type>* <name>pAttachments</name></member>
-            <member><type>float</type>                  <name>blendConstants</name>[4]</member>
-        </type>
-        <type category="struct" name="VkPipelineDynamicStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineDynamicStateCreateFlags</type>    <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>dynamicStateCount</name></member>
-            <member len="dynamicStateCount">const <type>VkDynamicState</type>*  <name>pDynamicStates</name></member>
-        </type>
-        <type category="struct" name="VkStencilOpState">
-            <member><type>VkStencilOp</type>            <name>failOp</name></member>
-            <member><type>VkStencilOp</type>            <name>passOp</name></member>
-            <member><type>VkStencilOp</type>            <name>depthFailOp</name></member>
-            <member><type>VkCompareOp</type>            <name>compareOp</name></member>
-            <member><type>uint32_t</type>               <name>compareMask</name></member>
-            <member><type>uint32_t</type>               <name>writeMask</name></member>
-            <member><type>uint32_t</type>               <name>reference</name></member>
-        </type>
-        <type category="struct" name="VkPipelineDepthStencilStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineDepthStencilStateCreateFlags</type>    <name>flags</name></member>
-            <member><type>VkBool32</type>               <name>depthTestEnable</name></member>
-            <member><type>VkBool32</type>               <name>depthWriteEnable</name></member>
-            <member><type>VkCompareOp</type>            <name>depthCompareOp</name></member>
-            <member><type>VkBool32</type>               <name>depthBoundsTestEnable</name><comment>optional (depth_bounds_test)</comment></member>
-            <member><type>VkBool32</type>               <name>stencilTestEnable</name></member>
-            <member><type>VkStencilOpState</type>       <name>front</name></member>
-            <member><type>VkStencilOpState</type>       <name>back</name></member>
-            <member><type>float</type>                  <name>minDepthBounds</name></member>
-            <member><type>float</type>                  <name>maxDepthBounds</name></member>
-        </type>
-        <type category="struct" name="VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCreateFlags</type>  <name>flags</name><comment>Pipeline creation flags</comment></member>
-            <member noautovalidity="true" optional="true"><type>uint32_t</type> <name>stageCount</name></member>
-            <member api="vulkan" noautovalidity="true" len="stageCount" optional="true">const <type>VkPipelineShaderStageCreateInfo</type>* <name>pStages</name><comment>One entry for each active shader stage</comment></member>
-            <member api="vulkansc" noautovalidity="true" len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>* <name>pStages</name><comment>One entry for each active shader stage</comment></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineVertexInputStateCreateInfo</type>* <name>pVertexInputState</name></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineInputAssemblyStateCreateInfo</type>* <name>pInputAssemblyState</name></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineTessellationStateCreateInfo</type>* <name>pTessellationState</name></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineViewportStateCreateInfo</type>* <name>pViewportState</name></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineRasterizationStateCreateInfo</type>* <name>pRasterizationState</name></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineMultisampleStateCreateInfo</type>* <name>pMultisampleState</name></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineDepthStencilStateCreateInfo</type>* <name>pDepthStencilState</name></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineColorBlendStateCreateInfo</type>* <name>pColorBlendState</name></member>
-            <member optional="true">const <type>VkPipelineDynamicStateCreateInfo</type>* <name>pDynamicState</name></member>
-            <member noautovalidity="true" optional="true"><type>VkPipelineLayout</type>       <name>layout</name><comment>Interface layout of the pipeline</comment></member>
-            <member noautovalidity="true" optional="true"><type>VkRenderPass</type>           <name>renderPass</name></member>
-            <member noautovalidity="true"><type>uint32_t</type>               <name>subpass</name></member>
-            <member noautovalidity="true" optional="true"><type>VkPipeline</type>      <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member>
-            <member><type>int32_t</type>                <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member>
-        </type>
-        <type category="struct" name="VkPipelineCacheCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCacheCreateFlags</type>    <name>flags</name></member>
-            <member api="vulkan" optional="true"><type>size_t</type>           <name>initialDataSize</name><comment>Size of initial data to populate cache, in bytes</comment></member>
-            <member api="vulkansc"><type>size_t</type>                         <name>initialDataSize</name><comment>Size of initial data to populate cache, in bytes</comment></member>
-            <member len="initialDataSize">const <type>void</type>*            <name>pInitialData</name><comment>Initial data to populate cache</comment></member>
-        </type>
-        <type category="struct" name="VkPipelineCacheHeaderVersionOne">
-            <comment>The fields in this structure are non-normative since structure packing is implementation-defined in C. The specification defines the normative layout.</comment>
-            <member><type>uint32_t</type>               <name>headerSize</name></member>
-            <member><type>VkPipelineCacheHeaderVersion</type> <name>headerVersion</name></member>
-            <member><type>uint32_t</type>               <name>vendorID</name></member>
-            <member><type>uint32_t</type>               <name>deviceID</name></member>
-            <member><type>uint8_t</type>                <name>pipelineCacheUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-        </type>
-        <type category="struct" name="VkPipelineCacheStageValidationIndexEntry">
-            <comment>The fields in this structure are non-normative since structure packing is implementation-defined in C. The specification defines the normative layout.</comment>
-            <member><type>uint64_t</type>               <name>codeSize</name></member>
-            <member><type>uint64_t</type>               <name>codeOffset</name></member>
-        </type>
-        <type category="struct" name="VkPipelineCacheSafetyCriticalIndexEntry">
-            <comment>The fields in this structure are non-normative since structure packing is implementation-defined in C. The specification defines the normative layout.</comment>
-            <member><type>uint8_t</type>                <name>pipelineIdentifier</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member><type>uint64_t</type>               <name>pipelineMemorySize</name></member>
-            <member><type>uint64_t</type>               <name>jsonSize</name></member>
-            <member><type>uint64_t</type>               <name>jsonOffset</name></member>
-            <member><type>uint32_t</type>               <name>stageIndexCount</name></member>
-            <member><type>uint32_t</type>               <name>stageIndexStride</name></member>
-            <member><type>uint64_t</type>               <name>stageIndexOffset</name></member>
-        </type>
-        <type category="struct" name="VkPipelineCacheHeaderVersionSafetyCriticalOne">
-            <comment>The fields in this structure are non-normative since structure packing is implementation-defined in C. The specification defines the normative layout.</comment>
-            <member><type>VkPipelineCacheHeaderVersionOne</type>        <name>headerVersionOne</name></member>
-            <member><type>VkPipelineCacheValidationVersion</type>       <name>validationVersion</name></member>
-            <member><type>uint32_t</type>                               <name>implementationData</name></member>
-            <member><type>uint32_t</type>                               <name>pipelineIndexCount</name></member>
-            <member><type>uint32_t</type>                               <name>pipelineIndexStride</name></member>
-            <member><type>uint64_t</type>                               <name>pipelineIndexOffset</name></member>
-        </type>
-        <type category="struct" name="VkPushConstantRange">
-            <member><type>VkShaderStageFlags</type>     <name>stageFlags</name><comment>Which stages use the range</comment></member>
-            <member><type>uint32_t</type>               <name>offset</name><comment>Start of the range, in bytes</comment></member>
-            <member><type>uint32_t</type>               <name>size</name><comment>Size of the range, in bytes</comment></member>
-        </type>
-        <type category="struct" name="VkPipelineLayoutCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineLayoutCreateFlags</type>    <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>setLayoutCount</name><comment>Number of descriptor sets interfaced by the pipeline</comment></member>
-            <member optional="false,true" len="setLayoutCount">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name><comment>Array of setCount number of descriptor set layout objects defining the layout of the</comment></member>
-            <member optional="true"><type>uint32_t</type>               <name>pushConstantRangeCount</name><comment>Number of push-constant ranges used by the pipeline</comment></member>
-            <member len="pushConstantRangeCount">const <type>VkPushConstantRange</type>* <name>pPushConstantRanges</name><comment>Array of pushConstantRangeCount number of ranges used by various shader stages</comment></member>
-        </type>
-        <type category="struct" name="VkSamplerCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkSamplerCreateFlags</type>   <name>flags</name></member>
-            <member><type>VkFilter</type>               <name>magFilter</name><comment>Filter mode for magnification</comment></member>
-            <member><type>VkFilter</type>               <name>minFilter</name><comment>Filter mode for minifiation</comment></member>
-            <member><type>VkSamplerMipmapMode</type>    <name>mipmapMode</name><comment>Mipmap selection mode</comment></member>
-            <member><type>VkSamplerAddressMode</type>   <name>addressModeU</name></member>
-            <member><type>VkSamplerAddressMode</type>   <name>addressModeV</name></member>
-            <member><type>VkSamplerAddressMode</type>   <name>addressModeW</name></member>
-            <member><type>float</type>                  <name>mipLodBias</name></member>
-            <member><type>VkBool32</type>               <name>anisotropyEnable</name></member>
-            <member><type>float</type>                  <name>maxAnisotropy</name></member>
-            <member><type>VkBool32</type>               <name>compareEnable</name></member>
-            <member noautovalidity="true"><type>VkCompareOp</type>            <name>compareOp</name></member>
-            <member><type>float</type>                  <name>minLod</name></member>
-            <member><type>float</type>                  <name>maxLod</name></member>
-            <member noautovalidity="true"><type>VkBorderColor</type>          <name>borderColor</name></member>
-            <member><type>VkBool32</type>               <name>unnormalizedCoordinates</name></member>
-        </type>
-        <type category="struct" name="VkCommandPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkCommandPoolCreateFlags</type>   <name>flags</name><comment>Command pool creation flags</comment></member>
-            <member><type>uint32_t</type>               <name>queueFamilyIndex</name></member>
-        </type>
-        <type category="struct" name="VkCommandBufferAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkCommandPool</type>          <name>commandPool</name></member>
-            <member><type>VkCommandBufferLevel</type>   <name>level</name></member>
-            <member><type>uint32_t</type>               <name>commandBufferCount</name></member>
-        </type>
-        <type category="struct" name="VkCommandBufferInheritanceInfo">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true" noautovalidity="true"><type>VkRenderPass</type>    <name>renderPass</name><comment>Render pass for secondary command buffers</comment></member>
-            <member><type>uint32_t</type>               <name>subpass</name></member>
-            <member optional="true" noautovalidity="true"><type>VkFramebuffer</type>   <name>framebuffer</name><comment>Framebuffer for secondary command buffers</comment></member>
-            <member><type>VkBool32</type>               <name>occlusionQueryEnable</name><comment>Whether this secondary command buffer may be executed during an occlusion query</comment></member>
-            <member optional="true" noautovalidity="true"><type>VkQueryControlFlags</type>    <name>queryFlags</name><comment>Query flags used by this secondary command buffer, if executed during an occlusion query</comment></member>
-            <member optional="true" noautovalidity="true"><type>VkQueryPipelineStatisticFlags</type> <name>pipelineStatistics</name><comment>Pipeline statistics that may be counted for this secondary command buffer</comment></member>
-        </type>
-        <type category="struct" name="VkCommandBufferBeginInfo">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkCommandBufferUsageFlags</type>  <name>flags</name><comment>Command buffer usage flags</comment></member>
-            <member optional="true" noautovalidity="true">const <type>VkCommandBufferInheritanceInfo</type>*       <name>pInheritanceInfo</name><comment>Pointer to inheritance info for secondary command buffers</comment></member>
-        </type>
-        <type category="struct" name="VkRenderPassBeginInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkRenderPass</type>           <name>renderPass</name></member>
-            <member><type>VkFramebuffer</type>          <name>framebuffer</name></member>
-            <member><type>VkRect2D</type>               <name>renderArea</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>clearValueCount</name></member>
-            <member len="clearValueCount" noautovalidity="true">const <type>VkClearValue</type>*    <name>pClearValues</name></member>
-        </type>
-        <type category="union" name="VkClearColorValue" comment="// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.">
-            <member><type>float</type>                  <name>float32</name>[4]</member>
-            <member><type>int32_t</type>                <name>int32</name>[4]</member>
-            <member><type>uint32_t</type>               <name>uint32</name>[4]</member>
-        </type>
-        <type category="struct" name="VkClearDepthStencilValue">
-            <member><type>float</type>                  <name>depth</name></member>
-            <member><type>uint32_t</type>               <name>stencil</name></member>
-        </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 noautovalidity="true"><type>VkClearColorValue</type>      <name>color</name></member>
-            <member><type>VkClearDepthStencilValue</type> <name>depthStencil</name></member>
-        </type>
-        <type category="struct" name="VkClearAttachment">
-            <member><type>VkImageAspectFlags</type>     <name>aspectMask</name></member>
-            <member><type>uint32_t</type>               <name>colorAttachment</name></member>
-            <member noautovalidity="true"><type>VkClearValue</type>           <name>clearValue</name></member>
-        </type>
-        <type category="struct" name="VkAttachmentDescription">
-            <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="VkAttachmentReference">
-            <member><type>uint32_t</type>               <name>attachment</name></member>
-            <member><type>VkImageLayout</type>          <name>layout</name></member>
-        </type>
-        <type category="struct" name="VkSubpassDescription">
-            <member optional="true"><type>VkSubpassDescriptionFlags</type> <name>flags</name></member>
-            <member><type>VkPipelineBindPoint</type>    <name>pipelineBindPoint</name><comment>Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now</comment></member>
-            <member optional="true"><type>uint32_t</type>               <name>inputAttachmentCount</name></member>
-            <member len="inputAttachmentCount">const <type>VkAttachmentReference</type>* <name>pInputAttachments</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>colorAttachmentCount</name></member>
-            <member len="colorAttachmentCount">const <type>VkAttachmentReference</type>* <name>pColorAttachments</name></member>
-            <member optional="true" len="colorAttachmentCount">const <type>VkAttachmentReference</type>* <name>pResolveAttachments</name></member>
-            <member optional="true">const <type>VkAttachmentReference</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="VkSubpassDependency">
-            <member><type>uint32_t</type>               <name>srcSubpass</name></member>
-            <member><type>uint32_t</type>               <name>dstSubpass</name></member>
-            <member optional="true"><type>VkPipelineStageFlags</type>   <name>srcStageMask</name></member>
-            <member optional="true"><type>VkPipelineStageFlags</type>   <name>dstStageMask</name></member>
-            <member optional="true"><type>VkAccessFlags</type>          <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member>
-            <member optional="true"><type>VkAccessFlags</type>          <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member>
-            <member optional="true"><type>VkDependencyFlags</type>      <name>dependencyFlags</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">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>VkAttachmentDescription</type>* <name>pAttachments</name></member>
-            <member><type>uint32_t</type>               <name>subpassCount</name></member>
-            <member len="subpassCount">const <type>VkSubpassDescription</type>* <name>pSubpasses</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>dependencyCount</name></member>
-            <member len="dependencyCount">const <type>VkSubpassDependency</type>* <name>pDependencies</name></member>
-        </type>
-        <type category="struct" name="VkEventCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkEventCreateFlags</type>     <name>flags</name><comment>Event creation flags</comment></member>
-        </type>
-        <type category="struct" name="VkFenceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkFenceCreateFlags</type>     <name>flags</name><comment>Fence creation flags</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFeatures">
-            <member><type>VkBool32</type>               <name>robustBufferAccess</name><comment>out of bounds buffer accesses are well defined</comment></member>
-            <member><type>VkBool32</type>               <name>fullDrawIndexUint32</name><comment>full 32-bit range of indices for indexed draw calls</comment></member>
-            <member><type>VkBool32</type>               <name>imageCubeArray</name><comment>image views which are arrays of cube maps</comment></member>
-            <member><type>VkBool32</type>               <name>independentBlend</name><comment>blending operations are controlled per-attachment</comment></member>
-            <member><type>VkBool32</type>               <name>geometryShader</name><comment>geometry stage</comment></member>
-            <member><type>VkBool32</type>               <name>tessellationShader</name><comment>tessellation control and evaluation stage</comment></member>
-            <member><type>VkBool32</type>               <name>sampleRateShading</name><comment>per-sample shading and interpolation</comment></member>
-            <member><type>VkBool32</type>               <name>dualSrcBlend</name><comment>blend operations which take two sources</comment></member>
-            <member><type>VkBool32</type>               <name>logicOp</name><comment>logic operations</comment></member>
-            <member><type>VkBool32</type>               <name>multiDrawIndirect</name><comment>multi draw indirect</comment></member>
-            <member><type>VkBool32</type>               <name>drawIndirectFirstInstance</name><comment>indirect drawing can use non-zero firstInstance</comment></member>
-            <member><type>VkBool32</type>               <name>depthClamp</name><comment>depth clamping</comment></member>
-            <member><type>VkBool32</type>               <name>depthBiasClamp</name><comment>depth bias clamping</comment></member>
-            <member><type>VkBool32</type>               <name>fillModeNonSolid</name><comment>point and wireframe fill modes</comment></member>
-            <member><type>VkBool32</type>               <name>depthBounds</name><comment>depth bounds test</comment></member>
-            <member><type>VkBool32</type>               <name>wideLines</name><comment>lines with width greater than 1</comment></member>
-            <member><type>VkBool32</type>               <name>largePoints</name><comment>points with size greater than 1</comment></member>
-            <member><type>VkBool32</type>               <name>alphaToOne</name><comment>the fragment alpha component can be forced to maximum representable alpha value</comment></member>
-            <member><type>VkBool32</type>               <name>multiViewport</name><comment>viewport arrays</comment></member>
-            <member><type>VkBool32</type>               <name>samplerAnisotropy</name><comment>anisotropic sampler filtering</comment></member>
-            <member><type>VkBool32</type>               <name>textureCompressionETC2</name><comment>ETC texture compression formats</comment></member>
-            <member><type>VkBool32</type>               <name>textureCompressionASTC_LDR</name><comment>ASTC LDR texture compression formats</comment></member>
-            <member><type>VkBool32</type>               <name>textureCompressionBC</name><comment>BC1-7 texture compressed formats</comment></member>
-            <member><type>VkBool32</type>               <name>occlusionQueryPrecise</name><comment>precise occlusion queries returning actual sample counts</comment></member>
-            <member><type>VkBool32</type>               <name>pipelineStatisticsQuery</name><comment>pipeline statistics query</comment></member>
-            <member><type>VkBool32</type>               <name>vertexPipelineStoresAndAtomics</name><comment>stores and atomic ops on storage buffers and images are supported in vertex, tessellation, and geometry stages</comment></member>
-            <member><type>VkBool32</type>               <name>fragmentStoresAndAtomics</name><comment>stores and atomic ops on storage buffers and images are supported in the fragment stage</comment></member>
-            <member><type>VkBool32</type>               <name>shaderTessellationAndGeometryPointSize</name><comment>tessellation and geometry stages can export point size</comment></member>
-            <member><type>VkBool32</type>               <name>shaderImageGatherExtended</name><comment>image gather with run-time values and independent offsets</comment></member>
-            <member><type>VkBool32</type>               <name>shaderStorageImageExtendedFormats</name><comment>the extended set of formats can be used for storage images</comment></member>
-            <member><type>VkBool32</type>               <name>shaderStorageImageMultisample</name><comment>multisample images can be used for storage images</comment></member>
-            <member><type>VkBool32</type>               <name>shaderStorageImageReadWithoutFormat</name><comment>read from storage image does not require format qualifier</comment></member>
-            <member><type>VkBool32</type>               <name>shaderStorageImageWriteWithoutFormat</name><comment>write to storage image does not require format qualifier</comment></member>
-            <member><type>VkBool32</type>               <name>shaderUniformBufferArrayDynamicIndexing</name><comment>arrays of uniform buffers can be accessed with dynamically uniform indices</comment></member>
-            <member><type>VkBool32</type>               <name>shaderSampledImageArrayDynamicIndexing</name><comment>arrays of sampled images can be accessed with dynamically uniform indices</comment></member>
-            <member><type>VkBool32</type>               <name>shaderStorageBufferArrayDynamicIndexing</name><comment>arrays of storage buffers can be accessed with dynamically uniform indices</comment></member>
-            <member><type>VkBool32</type>               <name>shaderStorageImageArrayDynamicIndexing</name><comment>arrays of storage images can be accessed with dynamically uniform indices</comment></member>
-            <member><type>VkBool32</type>               <name>shaderClipDistance</name><comment>clip distance in shaders</comment></member>
-            <member><type>VkBool32</type>               <name>shaderCullDistance</name><comment>cull distance in shaders</comment></member>
-            <member><type>VkBool32</type>               <name>shaderFloat64</name><comment>64-bit floats (doubles) in shaders</comment></member>
-            <member><type>VkBool32</type>               <name>shaderInt64</name><comment>64-bit integers in shaders</comment></member>
-            <member><type>VkBool32</type>               <name>shaderInt16</name><comment>16-bit integers in shaders</comment></member>
-            <member><type>VkBool32</type>               <name>shaderResourceResidency</name><comment>shader can use texture operations that return resource residency information (requires sparseNonResident support)</comment></member>
-            <member><type>VkBool32</type>               <name>shaderResourceMinLod</name><comment>shader can use texture operations that specify minimum resource LOD</comment></member>
-            <member><type>VkBool32</type>               <name>sparseBinding</name><comment>Sparse resources support: Resource memory can be managed at opaque page level rather than object level</comment></member>
-            <member><type>VkBool32</type>               <name>sparseResidencyBuffer</name><comment>Sparse resources support: GPU can access partially resident buffers </comment></member>
-            <member><type>VkBool32</type>               <name>sparseResidencyImage2D</name><comment>Sparse resources support: GPU can access partially resident 2D (non-MSAA non-depth/stencil) images </comment></member>
-            <member><type>VkBool32</type>               <name>sparseResidencyImage3D</name><comment>Sparse resources support: GPU can access partially resident 3D images </comment></member>
-            <member><type>VkBool32</type>               <name>sparseResidency2Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples</comment></member>
-            <member><type>VkBool32</type>               <name>sparseResidency4Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples</comment></member>
-            <member><type>VkBool32</type>               <name>sparseResidency8Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples</comment></member>
-            <member><type>VkBool32</type>               <name>sparseResidency16Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples</comment></member>
-            <member><type>VkBool32</type>               <name>sparseResidencyAliased</name><comment>Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)</comment></member>
-            <member><type>VkBool32</type>               <name>variableMultisampleRate</name><comment>multisample rate must be the same for all pipelines in a subpass</comment></member>
-            <member><type>VkBool32</type>               <name>inheritedQueries</name><comment>Queries may be inherited from primary to secondary command buffers</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSparseProperties" returnedonly="true">
-            <member limittype="bitmask"><type>VkBool32</type>           <name>residencyStandard2DBlockShape</name><comment>Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard sparse image block shapes (based on pixel format)</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>           <name>residencyStandard2DMultisampleBlockShape</name><comment>Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard sparse image block shapes (based on pixel format)</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>           <name>residencyStandard3DBlockShape</name><comment>Sparse resources support: GPU will access all 3D sparse resources using the standard sparse image block shapes (based on pixel format)</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>           <name>residencyAlignedMipSize</name><comment>Sparse resources support: Images with mip level dimensions that are NOT a multiple of the sparse image block dimensions will be placed in the mip tail</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>           <name>residencyNonResidentStrict</name><comment>Sparse resources support: GPU can consistently access non-resident regions of a resource, all reads return as if data is 0, writes are discarded</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceLimits" returnedonly="true">
-                <comment>resource maximum sizes</comment>
-            <member limittype="max"><type>uint32_t</type>               <name>maxImageDimension1D</name><comment>max 1D image dimension</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxImageDimension2D</name><comment>max 2D image dimension</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxImageDimension3D</name><comment>max 3D image dimension</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxImageDimensionCube</name><comment>max cubemap image dimension</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxImageArrayLayers</name><comment>max layers for image arrays</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTexelBufferElements</name><comment>max texel buffer size (fstexels)</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxUniformBufferRange</name><comment>max uniform buffer range (bytes)</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxStorageBufferRange</name><comment>max storage buffer range (bytes)</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPushConstantsSize</name><comment>max size of the push constants pool (bytes)</comment></member>
-                <comment>memory limits</comment>
-            <member limittype="max"><type>uint32_t</type>               <name>maxMemoryAllocationCount</name><comment>max number of device memory allocations supported</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxSamplerAllocationCount</name><comment>max number of samplers that can be allocated on a device</comment></member>
-            <member limittype="min,mul"><type>VkDeviceSize</type>           <name>bufferImageGranularity</name><comment>Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage</comment></member>
-            <member limittype="max"><type>VkDeviceSize</type>           <name>sparseAddressSpaceSize</name><comment>Total address space available for sparse allocations (bytes)</comment></member>
-                <comment>descriptor set limits</comment>
-            <member limittype="max"><type>uint32_t</type>               <name>maxBoundDescriptorSets</name><comment>max number of descriptors sets that can be bound to a pipeline</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorSamplers</name><comment>max number of samplers allowed per-stage in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorUniformBuffers</name><comment>max number of uniform buffers allowed per-stage in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorStorageBuffers</name><comment>max number of storage buffers allowed per-stage in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorSampledImages</name><comment>max number of sampled images allowed per-stage in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorStorageImages</name><comment>max number of storage images allowed per-stage in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorInputAttachments</name><comment>max number of input attachments allowed per-stage in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageResources</name><comment>max number of resources allowed by a single stage</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetSamplers</name><comment>max number of samplers allowed in all stages in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUniformBuffers</name><comment>max number of uniform buffers allowed in all stages in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUniformBuffersDynamic</name><comment>max number of dynamic uniform buffers allowed in all stages in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetStorageBuffers</name><comment>max number of storage buffers allowed in all stages in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetStorageBuffersDynamic</name><comment>max number of dynamic storage buffers allowed in all stages in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetSampledImages</name><comment>max number of sampled images allowed in all stages in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetStorageImages</name><comment>max number of storage images allowed in all stages in a descriptor set</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetInputAttachments</name><comment>max number of input attachments allowed in all stages in a descriptor set</comment></member>
-                <comment>vertex stage limits</comment>
-            <member limittype="max"><type>uint32_t</type>               <name>maxVertexInputAttributes</name><comment>max number of vertex input attribute slots</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxVertexInputBindings</name><comment>max number of vertex input binding slots</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxVertexInputAttributeOffset</name><comment>max vertex input attribute offset added to vertex buffer offset</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxVertexInputBindingStride</name><comment>max vertex input binding stride</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxVertexOutputComponents</name><comment>max number of output components written by vertex shader</comment></member>
-                <comment>tessellation control stage limits</comment>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTessellationGenerationLevel</name><comment>max level supported by tessellation primitive generator</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTessellationPatchSize</name><comment>max patch size (vertices)</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTessellationControlPerVertexInputComponents</name><comment>max number of input components per-vertex in TCS</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTessellationControlPerVertexOutputComponents</name><comment>max number of output components per-vertex in TCS</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTessellationControlPerPatchOutputComponents</name><comment>max number of output components per-patch in TCS</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTessellationControlTotalOutputComponents</name><comment>max total number of per-vertex and per-patch output components in TCS</comment></member>
-                <comment>tessellation evaluation stage limits</comment>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTessellationEvaluationInputComponents</name><comment>max number of input components per vertex in TES</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTessellationEvaluationOutputComponents</name><comment>max number of output components per vertex in TES</comment></member>
-                <comment>geometry stage limits</comment>
-            <member limittype="max"><type>uint32_t</type>               <name>maxGeometryShaderInvocations</name><comment>max invocation count supported in geometry shader</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxGeometryInputComponents</name><comment>max number of input components read in geometry stage</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxGeometryOutputComponents</name><comment>max number of output components written in geometry stage</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxGeometryOutputVertices</name><comment>max number of vertices that can be emitted in geometry stage</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxGeometryTotalOutputComponents</name><comment>max total number of components (all vertices) written in geometry stage</comment></member>
-                <comment>fragment stage limits</comment>
-            <member limittype="max"><type>uint32_t</type>               <name>maxFragmentInputComponents</name><comment>max number of input components read in fragment stage</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxFragmentOutputAttachments</name><comment>max number of output attachments written in fragment stage</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxFragmentDualSrcAttachments</name><comment>max number of output attachments written when using dual source blending</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxFragmentCombinedOutputResources</name><comment>max total number of storage buffers, storage images and output buffers</comment></member>
-                <comment>compute stage limits</comment>
-            <member limittype="max"><type>uint32_t</type>               <name>maxComputeSharedMemorySize</name><comment>max total storage size of work group local storage (bytes)</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxComputeWorkGroupCount</name>[3]<comment>max num of compute work groups that may be dispatched by a single command (x,y,z)</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxComputeWorkGroupInvocations</name><comment>max total compute invocations in a single local work group</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxComputeWorkGroupSize</name>[3]<comment>max local size of a compute work group (x,y,z)</comment></member>
-            <member limittype="bits"><type>uint32_t</type>              <name>subPixelPrecisionBits</name><comment>number bits of subpixel precision in screen x and y</comment></member>
-            <member limittype="bits"><type>uint32_t</type>              <name>subTexelPrecisionBits</name><comment>number bits of precision for selecting texel weights</comment></member>
-            <member limittype="bits"><type>uint32_t</type>              <name>mipmapPrecisionBits</name><comment>number bits of precision for selecting mipmap weights</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDrawIndexedIndexValue</name><comment>max index value for indexed draw calls (for 32-bit indices)</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDrawIndirectCount</name><comment>max draw count for indirect drawing calls</comment></member>
-            <member limittype="max"><type>float</type>                  <name>maxSamplerLodBias</name><comment>max absolute sampler LOD bias</comment></member>
-            <member limittype="max"><type>float</type>                  <name>maxSamplerAnisotropy</name><comment>max degree of sampler anisotropy</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxViewports</name><comment>max number of active viewports</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxViewportDimensions</name>[2]<comment>max viewport dimensions (x,y)</comment></member>
-            <member limittype="range"><type>float</type>                <name>viewportBoundsRange</name>[2]<comment>viewport bounds range (min,max)</comment></member>
-            <member limittype="bits"><type>uint32_t</type>              <name>viewportSubPixelBits</name><comment>number bits of subpixel precision for viewport</comment></member>
-            <member limittype="min,pot"><type>size_t</type>             <name>minMemoryMapAlignment</name><comment>min required alignment of pointers returned by MapMemory (bytes)</comment></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>       <name>minTexelBufferOffsetAlignment</name><comment>min required alignment for texel buffer offsets (bytes) </comment></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>       <name>minUniformBufferOffsetAlignment</name><comment>min required alignment for uniform buffer sizes and offsets (bytes)</comment></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>       <name>minStorageBufferOffsetAlignment</name><comment>min required alignment for storage buffer offsets (bytes)</comment></member>
-            <member limittype="min"><type>int32_t</type>                <name>minTexelOffset</name><comment>min texel offset for OpTextureSampleOffset</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTexelOffset</name><comment>max texel offset for OpTextureSampleOffset</comment></member>
-            <member limittype="min"><type>int32_t</type>                <name>minTexelGatherOffset</name><comment>min texel offset for OpTextureGatherOffset</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTexelGatherOffset</name><comment>max texel offset for OpTextureGatherOffset</comment></member>
-            <member limittype="min"><type>float</type>                  <name>minInterpolationOffset</name><comment>furthest negative offset for interpolateAtOffset</comment></member>
-            <member limittype="max"><type>float</type>                  <name>maxInterpolationOffset</name><comment>furthest positive offset for interpolateAtOffset</comment></member>
-            <member limittype="bits"><type>uint32_t</type>              <name>subPixelInterpolationOffsetBits</name><comment>number of subpixel bits for interpolateAtOffset</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxFramebufferWidth</name><comment>max width for a framebuffer</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxFramebufferHeight</name><comment>max height for a framebuffer</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxFramebufferLayers</name><comment>max layer count for a layered framebuffer</comment></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type>     <name>framebufferColorSampleCounts</name><comment>supported color sample counts for a framebuffer</comment></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type>     <name>framebufferDepthSampleCounts</name><comment>supported depth sample counts for a framebuffer</comment></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type>     <name>framebufferStencilSampleCounts</name><comment>supported stencil sample counts for a framebuffer</comment></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type>     <name>framebufferNoAttachmentsSampleCounts</name><comment>supported sample counts for a subpass which uses no attachments</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxColorAttachments</name><comment>max number of color attachments per subpass</comment></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type>     <name>sampledImageColorSampleCounts</name><comment>supported color sample counts for a non-integer sampled image</comment></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type>     <name>sampledImageIntegerSampleCounts</name><comment>supported sample counts for an integer image</comment></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type>     <name>sampledImageDepthSampleCounts</name><comment>supported depth sample counts for a sampled image</comment></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type>     <name>sampledImageStencilSampleCounts</name><comment>supported stencil sample counts for a sampled image</comment></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type>     <name>storageImageSampleCounts</name><comment>supported sample counts for a storage image</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxSampleMaskWords</name><comment>max number of sample mask words</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>           <name>timestampComputeAndGraphics</name><comment>timestamps on graphics and compute queues</comment></member>
-            <member limittype="min,mul"><type>float</type>              <name>timestampPeriod</name><comment>number of nanoseconds it takes for timestamp query value to increment by 1</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxClipDistances</name><comment>max number of clip distances</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxCullDistances</name><comment>max number of cull distances</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxCombinedClipAndCullDistances</name><comment>max combined number of user clipping</comment></member>
-            <member limittype="max"><type>uint32_t</type>               <name>discreteQueuePriorities</name><comment>distinct queue priorities available </comment></member>
-            <member limittype="range"><type>float</type>                <name>pointSizeRange</name>[2]<comment>range (min,max) of supported point sizes</comment></member>
-            <member limittype="range"><type>float</type>                <name>lineWidthRange</name>[2]<comment>range (min,max) of supported line widths</comment></member>
-            <member limittype="min,mul"><type>float</type>              <name>pointSizeGranularity</name><comment>granularity of supported point sizes</comment></member>
-            <member limittype="min,mul"><type>float</type>              <name>lineWidthGranularity</name><comment>granularity of supported line widths</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>           <name>strictLines</name><comment>line rasterization follows preferred rules</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>           <name>standardSampleLocations</name><comment>supports standard sample locations for all supported sample counts</comment></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>       <name>optimalBufferCopyOffsetAlignment</name><comment>optimal offset of buffer copies</comment></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>       <name>optimalBufferCopyRowPitchAlignment</name><comment>optimal pitch of buffer copies</comment></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>       <name>nonCoherentAtomSize</name><comment>minimum size and alignment for non-coherent host-mapped device memory access</comment></member>
-        </type>
-        <type category="struct" name="VkSemaphoreCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkSemaphoreCreateFlags</type> <name>flags</name><comment>Semaphore creation flags</comment></member>
-        </type>
-        <type category="struct" name="VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkQueryPoolCreateFlags</type> <name>flags</name></member>
-            <member><type>VkQueryType</type>            <name>queryType</name></member>
-            <member><type>uint32_t</type>               <name>queryCount</name></member>
-            <member optional="true" noautovalidity="true"><type>VkQueryPipelineStatisticFlags</type> <name>pipelineStatistics</name><comment>Optional</comment></member>
-        </type>
-        <type category="struct" name="VkFramebufferCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkFramebufferCreateFlags</type>    <name>flags</name></member>
-            <member><type>VkRenderPass</type>                           <name>renderPass</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>attachmentCount</name></member>
-            <member noautovalidity="true" len="attachmentCount">const <type>VkImageView</type>*     <name>pAttachments</name></member>
-            <member><type>uint32_t</type>               <name>width</name></member>
-            <member><type>uint32_t</type>               <name>height</name></member>
-            <member><type>uint32_t</type>               <name>layers</name></member>
-        </type>
-        <type category="struct" name="VkDrawIndirectCommand">
-            <member><type>uint32_t</type>                       <name>vertexCount</name></member>
-            <member><type>uint32_t</type>                       <name>instanceCount</name></member>
-            <member><type>uint32_t</type>                       <name>firstVertex</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>firstInstance</name></member>
-        </type>
-        <type category="struct" name="VkDrawIndexedIndirectCommand">
-            <member><type>uint32_t</type>                       <name>indexCount</name></member>
-            <member><type>uint32_t</type>                       <name>instanceCount</name></member>
-            <member><type>uint32_t</type>                       <name>firstIndex</name></member>
-            <member><type>int32_t</type>                        <name>vertexOffset</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>firstInstance</name></member>
-        </type>
-        <type category="struct" name="VkDispatchIndirectCommand">
-            <member noautovalidity="true"><type>uint32_t</type> <name>x</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>y</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>z</name></member>
-        </type>
-        <type category="struct" name="VkMultiDrawInfoEXT">
-            <member><type>uint32_t</type> <name>firstVertex</name></member>
-            <member><type>uint32_t</type> <name>vertexCount</name></member>
-        </type>
-        <type category="struct" name="VkMultiDrawIndexedInfoEXT">
-            <member><type>uint32_t</type> <name>firstIndex</name></member>
-            <member><type>uint32_t</type> <name>indexCount</name></member>
-            <member><type>int32_t</type> <name>vertexOffset</name></member>
-        </type>
-        <type category="struct" name="VkSubmitInfo">
-            <member values="VK_STRUCTURE_TYPE_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>waitSemaphoreCount</name></member>
-            <member len="waitSemaphoreCount">const <type>VkSemaphore</type>*     <name>pWaitSemaphores</name></member>
-            <member optional="false,true" len="waitSemaphoreCount">const <type>VkPipelineStageFlags</type>*           <name>pWaitDstStageMask</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>commandBufferCount</name></member>
-            <member len="commandBufferCount">const <type>VkCommandBuffer</type>*     <name>pCommandBuffers</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>signalSemaphoreCount</name></member>
-            <member len="signalSemaphoreCount">const <type>VkSemaphore</type>*     <name>pSignalSemaphores</name></member>
-        </type>
-            <comment>WSI extensions</comment>
-        <type category="struct" name="VkDisplayPropertiesKHR" returnedonly="true">
-            <member><type>VkDisplayKHR</type>                     <name>display</name><comment>Handle of the display object</comment></member>
-            <member len="null-terminated">const <type>char</type>*                      <name>displayName</name><comment>Name of the display</comment></member>
-            <member><type>VkExtent2D</type>                       <name>physicalDimensions</name><comment>In millimeters?</comment></member>
-            <member><type>VkExtent2D</type>                       <name>physicalResolution</name><comment>Max resolution for CRT?</comment></member>
-            <member optional="true"><type>VkSurfaceTransformFlagsKHR</type>       <name>supportedTransforms</name><comment>one or more bits from VkSurfaceTransformFlagsKHR</comment></member>
-            <member><type>VkBool32</type>                         <name>planeReorderPossible</name><comment>VK_TRUE if the overlay plane's z-order can be changed on this display.</comment></member>
-            <member><type>VkBool32</type>                         <name>persistentContent</name><comment>VK_TRUE if this is a "smart" display that supports self-refresh/internal buffering.</comment></member>
-        </type>
-        <type category="struct" name="VkDisplayPlanePropertiesKHR" returnedonly="true">
-            <member><type>VkDisplayKHR</type>                     <name>currentDisplay</name><comment>Display the plane is currently associated with.  Will be VK_NULL_HANDLE if the plane is not in use.</comment></member>
-            <member><type>uint32_t</type>                         <name>currentStackIndex</name><comment>Current z-order of the plane.</comment></member>
-        </type>
-        <type category="struct" name="VkDisplayModeParametersKHR">
-            <member><type>VkExtent2D</type>                       <name>visibleRegion</name><comment>Visible scanout region.</comment></member>
-            <member noautovalidity="true"><type>uint32_t</type>   <name>refreshRate</name><comment>Number of times per second the display is updated.</comment></member>
-        </type>
-        <type category="struct" name="VkDisplayModePropertiesKHR" returnedonly="true">
-            <member><type>VkDisplayModeKHR</type>                 <name>displayMode</name><comment>Handle of this display mode.</comment></member>
-            <member><type>VkDisplayModeParametersKHR</type>       <name>parameters</name><comment>The parameters this mode uses.</comment></member>
-        </type>
-        <type category="struct" name="VkDisplayModeCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkDisplayModeCreateFlagsKHR</type>      <name>flags</name></member>
-            <member><type>VkDisplayModeParametersKHR</type>       <name>parameters</name><comment>The parameters this mode uses.</comment></member>
-        </type>
-        <type category="struct" name="VkDisplayPlaneCapabilitiesKHR" returnedonly="true">
-            <member optional="true"><type>VkDisplayPlaneAlphaFlagsKHR</type>      <name>supportedAlpha</name><comment>Types of alpha blending supported, if any.</comment></member>
-            <member><type>VkOffset2D</type>                       <name>minSrcPosition</name><comment>Does the plane have any position and extent restrictions?</comment></member>
-            <member><type>VkOffset2D</type>                       <name>maxSrcPosition</name></member>
-            <member><type>VkExtent2D</type>                       <name>minSrcExtent</name></member>
-            <member><type>VkExtent2D</type>                       <name>maxSrcExtent</name></member>
-            <member><type>VkOffset2D</type>                       <name>minDstPosition</name></member>
-            <member><type>VkOffset2D</type>                       <name>maxDstPosition</name></member>
-            <member><type>VkExtent2D</type>                       <name>minDstExtent</name></member>
-            <member><type>VkExtent2D</type>                       <name>maxDstExtent</name></member>
-        </type>
-        <type category="struct" name="VkDisplaySurfaceCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkDisplaySurfaceCreateFlagsKHR</type>   <name>flags</name></member>
-            <member><type>VkDisplayModeKHR</type>                 <name>displayMode</name><comment>The mode to use when displaying this surface</comment></member>
-            <member><type>uint32_t</type>                         <name>planeIndex</name><comment>The plane on which this surface appears.  Must be between 0 and the value returned by vkGetPhysicalDeviceDisplayPlanePropertiesKHR() in pPropertyCount.</comment></member>
-            <member><type>uint32_t</type>                         <name>planeStackIndex</name><comment>The z-order of the plane.</comment></member>
-            <member><type>VkSurfaceTransformFlagBitsKHR</type>    <name>transform</name><comment>Transform to apply to the images as part of the scanout operation</comment></member>
-            <member><type>float</type>                            <name>globalAlpha</name><comment>Global alpha value.  Must be between 0 and 1, inclusive.  Ignored if alphaMode is not VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR</comment></member>
-            <member><type>VkDisplayPlaneAlphaFlagBitsKHR</type>   <name>alphaMode</name><comment>What type of alpha blending to use.  Must be a bit from vkGetDisplayPlanePropertiesKHR::supportedAlpha.</comment></member>
-            <member><type>VkExtent2D</type>                       <name>imageExtent</name><comment>size of the images to use with this surface</comment></member>
-        </type>
-        <type category="struct" name="VkDisplayPresentInfoKHR" structextends="VkPresentInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkRect2D</type>                         <name>srcRect</name><comment>Rectangle within the presentable image to read pixel data from when presenting to the display.</comment></member>
-            <member><type>VkRect2D</type>                         <name>dstRect</name><comment>Rectangle within the current display mode's visible region to display srcRectangle in.</comment></member>
-            <member><type>VkBool32</type>                         <name>persistent</name><comment>For smart displays, use buffered mode.  If the display properties member "persistentMode" is VK_FALSE, this member must always be VK_FALSE.</comment></member>
-        </type>
-        <type category="struct" name="VkSurfaceCapabilitiesKHR" returnedonly="true">
-            <member><type>uint32_t</type>                         <name>minImageCount</name><comment>Supported minimum number of images for the surface</comment></member>
-            <member><type>uint32_t</type>                         <name>maxImageCount</name><comment>Supported maximum number of images for the surface, 0 for unlimited</comment></member>
-            <member><type>VkExtent2D</type>                       <name>currentExtent</name><comment>Current image width and height for the surface, (0, 0) if undefined</comment></member>
-            <member><type>VkExtent2D</type>                       <name>minImageExtent</name><comment>Supported minimum image width and height for the surface</comment></member>
-            <member><type>VkExtent2D</type>                       <name>maxImageExtent</name><comment>Supported maximum image width and height for the surface</comment></member>
-            <member><type>uint32_t</type>                         <name>maxImageArrayLayers</name><comment>Supported maximum number of image layers for the surface</comment></member>
-            <member><type>VkSurfaceTransformFlagsKHR</type>       <name>supportedTransforms</name><comment>1 or more bits representing the transforms supported</comment></member>
-            <member><type>VkSurfaceTransformFlagBitsKHR</type>    <name>currentTransform</name><comment>The surface's current transform relative to the device's natural orientation</comment></member>
-            <member><type>VkCompositeAlphaFlagsKHR</type>         <name>supportedCompositeAlpha</name><comment>1 or more bits representing the alpha compositing modes supported</comment></member>
-            <member><type>VkImageUsageFlags</type>                <name>supportedUsageFlags</name><comment>Supported image usage flags for the surface</comment></member>
-        </type>
-        <type category="struct" name="VkAndroidSurfaceCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                    <name>pNext</name></member>
-            <member optional="true"><type>VkAndroidSurfaceCreateFlagsKHR</type> <name>flags</name></member>
-            <member noautovalidity="true">struct <type>ANativeWindow</type>*    <name>window</name></member>
-        </type>
-        <type category="struct" name="VkViSurfaceCreateInfoNN">
-            <member values="VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkViSurfaceCreateFlagsNN</type>   <name>flags</name></member>
-            <member noautovalidity="true"><type>void</type>*                            <name>window</name></member>
-        </type>
-        <type category="struct" name="VkWaylandSurfaceCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkWaylandSurfaceCreateFlagsKHR</type>   <name>flags</name></member>
-            <member noautovalidity="true">struct <type>wl_display</type>*               <name>display</name></member>
-            <member noautovalidity="true">struct <type>wl_surface</type>*               <name>surface</name></member>
-        </type>
-        <type category="struct" name="VkWin32SurfaceCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkWin32SurfaceCreateFlagsKHR</type>   <name>flags</name></member>
-            <member><type>HINSTANCE</type>                        <name>hinstance</name></member>
-            <member><type>HWND</type>                             <name>hwnd</name></member>
-        </type>
-        <type category="struct" name="VkXlibSurfaceCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkXlibSurfaceCreateFlagsKHR</type>   <name>flags</name></member>
-            <member noautovalidity="true"><type>Display</type>*                         <name>dpy</name></member>
-            <member><type>Window</type>                           <name>window</name></member>
-        </type>
-        <type category="struct" name="VkXcbSurfaceCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkXcbSurfaceCreateFlagsKHR</type>   <name>flags</name></member>
-            <member noautovalidity="true"><type>xcb_connection_t</type>*                <name>connection</name></member>
-            <member><type>xcb_window_t</type>                     <name>window</name></member>
-        </type>
-        <type category="struct" name="VkDirectFBSurfaceCreateInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkDirectFBSurfaceCreateFlagsEXT</type>   <name>flags</name></member>
-            <member noautovalidity="true"><type>IDirectFB</type>*                       <name>dfb</name></member>
-            <member noautovalidity="true"><type>IDirectFBSurface</type>*                <name>surface</name></member>
-        </type>
-        <type category="struct" name="VkImagePipeSurfaceCreateInfoFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkImagePipeSurfaceCreateFlagsFUCHSIA</type>   <name>flags</name></member>
-            <member><type>zx_handle_t</type>                      <name>imagePipeHandle</name></member>
-        </type>
-        <type category="struct" name="VkStreamDescriptorSurfaceCreateInfoGGP">
-            <member values="VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkStreamDescriptorSurfaceCreateFlagsGGP</type> <name>flags</name></member>
-            <member><type>GgpStreamDescriptor</type>              <name>streamDescriptor</name></member>
-        </type>
-        <type category="struct" name="VkScreenSurfaceCreateInfoQNX">
-            <member values="VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkScreenSurfaceCreateFlagsQNX</type>    <name>flags</name></member>
-            <member noautovalidity="true">struct <type>_screen_context</type>*    <name>context</name></member>
-            <member noautovalidity="true">struct <type>_screen_window</type>*     <name>window</name></member>
-        </type>
-        <type category="struct" name="VkSurfaceFormatKHR" returnedonly="true">
-            <member><type>VkFormat</type>                         <name>format</name><comment>Supported pair of rendering format</comment></member>
-            <member><type>VkColorSpaceKHR</type>                  <name>colorSpace</name><comment>and color space for the surface</comment></member>
-        </type>
-        <type category="struct" name="VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkSwapchainCreateFlagsKHR</type>        <name>flags</name></member>
-            <member><type>VkSurfaceKHR</type>                     <name>surface</name><comment>The swapchain's target surface</comment></member>
-            <member><type>uint32_t</type>                         <name>minImageCount</name><comment>Minimum number of presentation images the application needs</comment></member>
-            <member><type>VkFormat</type>                         <name>imageFormat</name><comment>Format of the presentation images</comment></member>
-            <member><type>VkColorSpaceKHR</type>                  <name>imageColorSpace</name><comment>Colorspace of the presentation images</comment></member>
-            <member><type>VkExtent2D</type>                       <name>imageExtent</name><comment>Dimensions of the presentation images</comment></member>
-            <member><type>uint32_t</type>                         <name>imageArrayLayers</name><comment>Determines the number of views for multiview/stereo presentation</comment></member>
-            <member><type>VkImageUsageFlags</type>                <name>imageUsage</name><comment>Bits indicating how the presentation images will be used</comment></member>
-            <member><type>VkSharingMode</type>                    <name>imageSharingMode</name><comment>Sharing mode used for the presentation images</comment></member>
-            <member optional="true"><type>uint32_t</type>         <name>queueFamilyIndexCount</name><comment>Number of queue families having access to the images in case of concurrent sharing mode</comment></member>
-            <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>*                  <name>pQueueFamilyIndices</name><comment>Array of queue family indices having access to the images in case of concurrent sharing mode</comment></member>
-            <member><type>VkSurfaceTransformFlagBitsKHR</type>    <name>preTransform</name><comment>The transform, relative to the device's natural orientation, applied to the image content prior to presentation</comment></member>
-            <member><type>VkCompositeAlphaFlagBitsKHR</type>      <name>compositeAlpha</name><comment>The alpha blending mode used when compositing this surface with other surfaces in the window system</comment></member>
-            <member><type>VkPresentModeKHR</type>                 <name>presentMode</name><comment>Which presentation mode to use for presents on this swap chain</comment></member>
-            <member><type>VkBool32</type>                         <name>clipped</name><comment>Specifies whether presentable images may be affected by window clip regions</comment></member>
-            <member api="vulkan" optional="true"><type>VkSwapchainKHR</type>                         <name>oldSwapchain</name><comment>Existing swap chain to replace, if any</comment></member>
-            <member api="vulkansc" noautovalidity="true" optional="true"><type>VkSwapchainKHR</type> <name>oldSwapchain</name><comment>Existing swap chain to replace, if any</comment></member>
-        </type>
-        <type category="struct" name="VkPresentInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*  <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>waitSemaphoreCount</name><comment>Number of semaphores to wait for before presenting</comment></member>
-            <member len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name><comment>Semaphores to wait for before presenting</comment></member>
-            <member><type>uint32_t</type>                         <name>swapchainCount</name><comment>Number of swapchains to present in this call</comment></member>
-            <member len="swapchainCount">const <type>VkSwapchainKHR</type>* <name>pSwapchains</name><comment>Swapchains to present an image from</comment></member>
-            <member len="swapchainCount">const <type>uint32_t</type>* <name>pImageIndices</name><comment>Indices of which presentable images to present</comment></member>
-            <member optional="true" len="swapchainCount"><type>VkResult</type>* <name>pResults</name><comment>Optional (i.e. if non-NULL) VkResult for each swapchain</comment></member>
-        </type>
-        <type category="struct" name="VkDebugReportCallbackCreateInfoEXT" structextends="VkInstanceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkDebugReportFlagsEXT</type>            <name>flags</name><comment>Indicates which events call this callback</comment></member>
-            <member><type>PFN_vkDebugReportCallbackEXT</type>     <name>pfnCallback</name><comment>Function pointer of a callback function</comment></member>
-            <member optional="true"><type>void</type>*            <name>pUserData</name><comment>User data provided to callback function</comment></member>
-        </type>
-        <type category="struct" name="VkValidationFlagsEXT" structextends="VkInstanceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"><type>VkStructureType</type>                  <name>sType</name><comment>Must be VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</comment></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>disabledValidationCheckCount</name><comment>Number of validation checks to disable</comment></member>
-            <member len="disabledValidationCheckCount">const <type>VkValidationCheckEXT</type>* <name>pDisabledValidationChecks</name><comment>Validation checks to disable</comment></member>
-        </type>
-        <type category="struct" name="VkValidationFeaturesEXT" structextends="VkInstanceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"><type>VkStructureType</type>  <name>sType</name><comment>Must be VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</comment></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                         <name>enabledValidationFeatureCount</name><comment>Number of validation features to enable</comment></member>
-            <member len="enabledValidationFeatureCount">const <type>VkValidationFeatureEnableEXT</type>* <name>pEnabledValidationFeatures</name><comment>Validation features to enable</comment></member>
-            <member optional="true"><type>uint32_t</type>                         <name>disabledValidationFeatureCount</name><comment>Number of validation features to disable</comment></member>
-            <member len="disabledValidationFeatureCount">const <type>VkValidationFeatureDisableEXT</type>* <name>pDisabledValidationFeatures</name><comment>Validation features to disable</comment></member>
-        </type>
-        <type category="struct" name="VkApplicationParametersEXT" allowduplicate="true" structextends="VkApplicationInfo,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>uint32_t</type>                           <name>vendorID</name></member>
-            <member optional="true"><type>uint32_t</type>           <name>deviceID</name></member>
-            <member><type>uint32_t</type>                           <name>key</name></member>
-            <member><type>uint64_t</type>                           <name>value</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRasterizationStateRasterizationOrderAMD" structextends="VkPipelineRasterizationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkRasterizationOrderAMD</type>          <name>rasterizationOrder</name><comment>Rasterization order to use for the pipeline</comment></member>
-        </type>
-        <type category="struct" name="VkDebugMarkerObjectNameInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDebugReportObjectTypeEXT</type>       <name>objectType</name><comment>The type of the object</comment></member>
-            <member objecttype="objectType"><type>uint64_t</type>                         <name>object</name><comment>The handle of the object, cast to uint64_t</comment></member>
-            <member len="null-terminated">const <type>char</type>* <name>pObjectName</name><comment>Name to apply to the object</comment></member>
-        </type>
-        <type category="struct" name="VkDebugMarkerObjectTagInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDebugReportObjectTypeEXT</type>       <name>objectType</name><comment>The type of the object</comment></member>
-            <member  objecttype="objectType"><type>uint64_t</type>                         <name>object</name><comment>The handle of the object, cast to uint64_t</comment></member>
-            <member><type>uint64_t</type>                         <name>tagName</name><comment>The name of the tag to set on the object</comment></member>
-            <member><type>size_t</type>                           <name>tagSize</name><comment>The length in bytes of the tag data</comment></member>
-            <member len="tagSize">const <type>void</type>*        <name>pTag</name><comment>Tag data to attach to the object</comment></member>
-        </type>
-        <type category="struct" name="VkDebugMarkerMarkerInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member len="null-terminated">const <type>char</type>* <name>pMarkerName</name><comment>Name of the debug marker</comment></member>
-            <member><type>float</type>            <name>color</name>[4]<comment>Optional color for debug marker</comment></member>
-        </type>
-        <type category="struct" name="VkDedicatedAllocationImageCreateInfoNV" structextends="VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>dedicatedAllocation</name><comment>Whether this image uses a dedicated allocation</comment></member>
-        </type>
-        <type category="struct" name="VkDedicatedAllocationBufferCreateInfoNV" structextends="VkBufferCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>dedicatedAllocation</name><comment>Whether this buffer uses a dedicated allocation</comment></member>
-        </type>
-        <type category="struct" name="VkDedicatedAllocationMemoryAllocateInfoNV" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkImage</type>          <name>image</name><comment>Image that this allocation will be bound to</comment></member>
-            <member optional="true"><type>VkBuffer</type>         <name>buffer</name><comment>Buffer that this allocation will be bound to</comment></member>
-        </type>
-        <type category="struct" name="VkExternalImageFormatPropertiesNV" returnedonly="true">
-            <member><type>VkImageFormatProperties</type>          <name>imageFormatProperties</name></member>
-            <member optional="true"><type>VkExternalMemoryFeatureFlagsNV</type>   <name>externalMemoryFeatures</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>exportFromImportedHandleTypes</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>compatibleHandleTypes</name></member>
-        </type>
-        <type category="struct" name="VkExternalMemoryImageCreateInfoNV" structextends="VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleTypes</name></member>
-        </type>
-        <type category="struct" name="VkExportMemoryAllocateInfoNV" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleTypes</name></member>
-        </type>
-        <type category="struct" name="VkImportMemoryWin32HandleInfoNV" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleType</name></member>
-            <member optional="true"><type>HANDLE</type>                           <name>handle</name></member>
-        </type>
-        <type category="struct" name="VkExportMemoryWin32HandleInfoNV" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true">const <type>SECURITY_ATTRIBUTES</type>*       <name>pAttributes</name></member>
-            <member optional="true"><type>DWORD</type>                            <name>dwAccess</name></member>
-        </type>
-        <type category="struct" name="VkExportMemorySciBufInfoNV" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                 <name>pNext</name></member>
-            <member><type>NvSciBufAttrList</type>                            <name>pAttributes</name></member>
-        </type>
-        <type category="struct" name="VkImportMemorySciBufInfoNV" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlagBits</type>     <name>handleType</name></member>
-            <member><type>NvSciBufObj</type>                            <name>handle</name></member>
-        </type>
-        <type category="struct" name="VkMemoryGetSciBufInfoNV">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>                         <name>memory</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlagBits</type>     <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkMemorySciBufPropertiesNV">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>uint32_t</type>                               <name>memoryTypeBits</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalMemorySciBufFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                       <name>pNext</name></member>
-            <member><type>VkBool32</type>                                    <name>sciBufImport</name></member>
-            <member><type>VkBool32</type>                                    <name>sciBufExport</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalSciBufFeaturesNV"  alias="VkPhysicalDeviceExternalMemorySciBufFeaturesNV"/>
-        <type category="struct" name="VkWin32KeyedMutexAcquireReleaseInfoNV" structextends="VkSubmitInfo,VkSubmitInfo2">
-            <member values="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</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>
-        <type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>deviceGeneratedCommands</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*          <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>deviceGeneratedCompute</name></member>
-            <member><type>VkBool32</type>                       <name>deviceGeneratedComputePipelines</name></member>
-            <member><type>VkBool32</type>                       <name>deviceGeneratedComputeCaptureReplay</name></member>
-        </type>
-        <type category="struct" name="VkDevicePrivateDataCreateInfo" allowduplicate="true" structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>uint32_t</type>                               <name>privateDataSlotRequestCount</name></member>
-        </type>
-        <type category="struct" name="VkDevicePrivateDataCreateInfoEXT" alias="VkDevicePrivateDataCreateInfo"/>
-        <type category="struct" name="VkPrivateDataSlotCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkPrivateDataSlotCreateFlags</type>        <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkPrivateDataSlotCreateInfoEXT" alias="VkPrivateDataSlotCreateInfo"/>
-        <type category="struct" name="VkPhysicalDevicePrivateDataFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                  <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>privateData</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePrivateDataFeaturesEXT" alias="VkPhysicalDevicePrivateDataFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>         <name>maxGraphicsShaderGroupCount</name></member>
-            <member limittype="max"><type>uint32_t</type>         <name>maxIndirectSequenceCount</name></member>
-            <member limittype="max"><type>uint32_t</type>         <name>maxIndirectCommandsTokenCount</name></member>
-            <member limittype="max"><type>uint32_t</type>         <name>maxIndirectCommandsStreamCount</name></member>
-            <member limittype="max"><type>uint32_t</type>         <name>maxIndirectCommandsTokenOffset</name></member>
-            <member limittype="max"><type>uint32_t</type>         <name>maxIndirectCommandsStreamStride</name></member>
-            <member limittype="min"><type>uint32_t</type>         <name>minSequencesCountBufferOffsetAlignment</name></member>
-            <member limittype="min"><type>uint32_t</type>         <name>minSequencesIndexBufferOffsetAlignment</name></member>
-            <member limittype="min"><type>uint32_t</type>         <name>minIndirectCommandsBufferOffsetAlignment</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMultiDrawPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>         <name>maxMultiDrawCount</name></member>
-        </type>
-        <type category="struct" name="VkGraphicsShaderGroupCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                   <name>stageCount</name></member>
-            <member len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>*    <name>pStages</name></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineVertexInputStateCreateInfo</type>*                <name>pVertexInputState</name></member>
-            <member noautovalidity="true" optional="true">const <type>VkPipelineTessellationStateCreateInfo</type>*               <name>pTessellationState</name></member>
-        </type>
-        <type category="struct" name="VkGraphicsPipelineShaderGroupsCreateInfoNV" structextends="VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                   <name>groupCount</name></member>
-            <member len="groupCount">const <type>VkGraphicsShaderGroupCreateInfoNV</type>*  <name>pGroups</name></member>
-            <member optional="true"><type>uint32_t</type>                                   <name>pipelineCount</name></member>
-            <member len="pipelineCount">const <type>VkPipeline</type>*                      <name>pPipelines</name></member>
-        </type>
-        <type category="struct" name="VkBindShaderGroupIndirectCommandNV">
-            <member><type>uint32_t</type>         <name>groupIndex</name></member>
-        </type>
-        <type category="struct" name="VkBindIndexBufferIndirectCommandNV">
-            <member><type>VkDeviceAddress</type>  <name>bufferAddress</name></member>
-            <member><type>uint32_t</type>         <name>size</name></member>
-            <member><type>VkIndexType</type>      <name>indexType</name></member>
-        </type>
-        <type category="struct" name="VkBindVertexBufferIndirectCommandNV">
-            <member><type>VkDeviceAddress</type>  <name>bufferAddress</name></member>
-            <member><type>uint32_t</type>         <name>size</name></member>
-            <member><type>uint32_t</type>         <name>stride</name></member>
-        </type>
-        <type category="struct" name="VkSetStateFlagsIndirectCommandNV">
-            <member><type>uint32_t</type>          <name>data</name></member>
-        </type>
-        <type category="struct" name="VkIndirectCommandsStreamNV">
-            <member><type>VkBuffer</type>      <name>buffer</name></member>
-            <member><type>VkDeviceSize</type>  <name>offset</name></member>
-        </type>
-        <type category="struct" name="VkIndirectCommandsLayoutTokenNV">
-            <member values="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member><type>VkIndirectCommandsTokenTypeNV</type>  <name>tokenType</name></member>
-            <member><type>uint32_t</type>                       <name>stream</name></member>
-            <member><type>uint32_t</type>                       <name>offset</name></member>
-            <member><type>uint32_t</type>                                <name>vertexBindingUnit</name></member>
-            <member><type>VkBool32</type>                                <name>vertexDynamicStride</name></member>
-            <member optional="true"><type>VkPipelineLayout</type>        <name>pushconstantPipelineLayout</name></member>
-            <member optional="true"><type>VkShaderStageFlags</type>      <name>pushconstantShaderStageFlags</name></member>
-            <member><type>uint32_t</type>                                <name>pushconstantOffset</name></member>
-            <member><type>uint32_t</type>                                <name>pushconstantSize</name></member>
-            <member optional="true"><type>VkIndirectStateFlagsNV</type>  <name>indirectStateFlags</name></member>
-            <member optional="true"><type>uint32_t</type>                <name>indexTypeCount</name></member>
-            <member len="indexTypeCount">const <type>VkIndexType</type>* <name>pIndexTypes</name></member>
-            <member len="indexTypeCount">const <type>uint32_t</type>*    <name>pIndexTypeValues</name></member>
-        </type>
-        <type category="struct" name="VkIndirectCommandsLayoutCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                             <name>pNext</name></member>
-            <member optional="true"><type>VkIndirectCommandsLayoutUsageFlagsNV</type>    <name>flags</name></member>
-            <member><type>VkPipelineBindPoint</type>                     <name>pipelineBindPoint</name></member>
-            <member><type>uint32_t</type>                                <name>tokenCount</name></member>
-            <member len="tokenCount">const <type>VkIndirectCommandsLayoutTokenNV</type>*  <name>pTokens</name></member>
-            <member><type>uint32_t</type>                                <name>streamCount</name></member>
-            <member len="streamCount">const <type>uint32_t</type>*       <name>pStreamStrides</name></member>
-        </type>
-        <type category="struct" name="VkGeneratedCommandsInfoNV">
-            <member values="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member><type>VkPipelineBindPoint</type>                <name>pipelineBindPoint</name></member>
-            <member><type>VkPipeline</type>                         <name>pipeline</name></member>
-            <member><type>VkIndirectCommandsLayoutNV</type>         <name>indirectCommandsLayout</name></member>
-            <member><type>uint32_t</type>                           <name>streamCount</name></member>
-            <member len="streamCount">const <type>VkIndirectCommandsStreamNV</type>*  <name>pStreams</name></member>
-            <member><type>uint32_t</type>                           <name>sequencesCount</name></member>
-            <member><type>VkBuffer</type>                           <name>preprocessBuffer</name></member>
-            <member><type>VkDeviceSize</type>                       <name>preprocessOffset</name></member>
-            <member><type>VkDeviceSize</type>                       <name>preprocessSize</name></member>
-            <member optional="true"><type>VkBuffer</type>           <name>sequencesCountBuffer</name></member>
-            <member><type>VkDeviceSize</type>                       <name>sequencesCountOffset</name></member>
-            <member optional="true"><type>VkBuffer</type>           <name>sequencesIndexBuffer</name></member>
-            <member><type>VkDeviceSize</type>                       <name>sequencesIndexOffset</name></member>
-        </type>
-        <type category="struct" name="VkGeneratedCommandsMemoryRequirementsInfoNV">
-            <member values="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                 <name>pNext</name></member>
-            <member><type>VkPipelineBindPoint</type>         <name>pipelineBindPoint</name></member>
-            <member optional="true"><type>VkPipeline</type>  <name>pipeline</name></member>
-            <member><type>VkIndirectCommandsLayoutNV</type>  <name>indirectCommandsLayout</name></member>
-            <member><type>uint32_t</type>                    <name>maxSequencesCount</name></member>
-        </type>
-        <type category="struct" name="VkPipelineIndirectDeviceAddressInfoNV">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*   <name>pNext</name></member>
-            <member><type>VkPipelineBindPoint</type>           <name>pipelineBindPoint</name></member>
-            <member><type>VkPipeline</type>                    <name>pipeline</name></member>
-        </type>
-        <type category="struct" name="VkBindPipelineIndirectCommandNV">
-            <member><type>VkDeviceAddress</type>               <name>pipelineAddress</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFeatures2" structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkPhysicalDeviceFeatures</type>         <name>features</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFeatures2KHR"                            alias="VkPhysicalDeviceFeatures2"/>
-        <type category="struct" name="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="struct"><type>VkPhysicalDeviceProperties</type>       <name>properties</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceProperties2KHR"                          alias="VkPhysicalDeviceProperties2"/>
-        <type category="struct" name="VkFormatProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkFormatProperties</type>               <name>formatProperties</name></member>
-        </type>
-        <type category="struct" name="VkFormatProperties2KHR"                                  alias="VkFormatProperties2"/>
-        <type category="struct" name="VkImageFormatProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkImageFormatProperties</type>          <name>imageFormatProperties</name></member>
-        </type>
-        <type category="struct" name="VkImageFormatProperties2KHR"                             alias="VkImageFormatProperties2"/>
-        <type category="struct" name="VkPhysicalDeviceImageFormatInfo2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkFormat</type>                         <name>format</name></member>
-            <member><type>VkImageType</type>                      <name>type</name></member>
-            <member><type>VkImageTiling</type>                    <name>tiling</name></member>
-            <member><type>VkImageUsageFlags</type>                <name>usage</name></member>
-            <member optional="true"><type>VkImageCreateFlags</type> <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageFormatInfo2KHR"                     alias="VkPhysicalDeviceImageFormatInfo2"/>
-        <type category="struct" name="VkQueueFamilyProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="struct"><type>VkQueueFamilyProperties</type>       <name>queueFamilyProperties</name></member>
-        </type>
-        <type category="struct" name="VkQueueFamilyProperties2KHR"                             alias="VkQueueFamilyProperties2"/>
-        <type category="struct" name="VkPhysicalDeviceMemoryProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkPhysicalDeviceMemoryProperties</type> <name>memoryProperties</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMemoryProperties2KHR"                    alias="VkPhysicalDeviceMemoryProperties2"/>
-        <type category="struct" name="VkSparseImageFormatProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="struct"><type>VkSparseImageFormatProperties</type> <name>properties</name></member>
-        </type>
-        <type category="struct" name="VkSparseImageFormatProperties2KHR"                       alias="VkSparseImageFormatProperties2"/>
-        <type category="struct" name="VkPhysicalDeviceSparseImageFormatInfo2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkFormat</type>                         <name>format</name></member>
-            <member><type>VkImageType</type>                      <name>type</name></member>
-            <member><type>VkSampleCountFlagBits</type>            <name>samples</name></member>
-            <member><type>VkImageUsageFlags</type>                <name>usage</name></member>
-            <member><type>VkImageTiling</type>                    <name>tiling</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSparseImageFormatInfo2KHR"               alias="VkPhysicalDeviceSparseImageFormatInfo2"/>
-        <type category="struct" name="VkPhysicalDevicePushDescriptorPropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPushDescriptors</name></member>
-        </type>
-        <type category="struct" name="VkConformanceVersion">
-            <member><type>uint8_t</type>                          <name>major</name></member>
-            <member><type>uint8_t</type>                          <name>minor</name></member>
-            <member><type>uint8_t</type>                          <name>subminor</name></member>
-            <member><type>uint8_t</type>                          <name>patch</name></member>
-        </type>
-        <type category="struct" name="VkConformanceVersionKHR"                                 alias="VkConformanceVersion"/>
-        <type category="struct" name="VkPhysicalDeviceDriverProperties" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="exact"><type>VkDriverId</type>                  <name>driverID</name></member>
-            <member limittype="exact"><type>char</type>                        <name>driverName</name>[<enum>VK_MAX_DRIVER_NAME_SIZE</enum>]</member>
-            <member limittype="exact"><type>char</type>                        <name>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE</enum>]</member>
-            <member limittype="exact"><type>VkConformanceVersion</type>        <name>conformanceVersion</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDriverPropertiesKHR"                     alias="VkPhysicalDeviceDriverProperties"/>
-        <type category="struct" name="VkPresentRegionsKHR" structextends="VkPresentInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
-            <member len="swapchainCount" optional="true">const <type>VkPresentRegionKHR</type>*   <name>pRegions</name><comment>The regions that have changed</comment></member>
-        </type>
-        <type category="struct" name="VkPresentRegionKHR">
-            <member optional="true"><type>uint32_t</type>         <name>rectangleCount</name><comment>Number of rectangles in pRectangles</comment></member>
-            <member optional="true" len="rectangleCount">const <type>VkRectLayerKHR</type>*   <name>pRectangles</name><comment>Array of rectangles that have changed in a swapchain's image(s)</comment></member>
-        </type>
-        <type category="struct" name="VkRectLayerKHR">
-            <member><type>VkOffset2D</type>                       <name>offset</name><comment>upper-left corner of a rectangle that has not changed, in pixels of a presentation images</comment></member>
-            <member noautovalidity="true"><type>VkExtent2D</type> <name>extent</name><comment>Dimensions of a rectangle that has not changed, in pixels of a presentation images</comment></member>
-            <member><type>uint32_t</type>                         <name>layer</name><comment>Layer of a swapchain's image(s), for stereoscopic-3D images</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVariablePointersFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>variablePointersStorageBuffer</name></member>
-            <member><type>VkBool32</type>                         <name>variablePointers</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVariablePointersFeaturesKHR"             alias="VkPhysicalDeviceVariablePointersFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceVariablePointerFeaturesKHR"              alias="VkPhysicalDeviceVariablePointersFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceVariablePointerFeatures"                 alias="VkPhysicalDeviceVariablePointersFeatures"/>
-        <type category="struct" name="VkExternalMemoryProperties" returnedonly="true">
-            <member><type>VkExternalMemoryFeatureFlags</type>  <name>externalMemoryFeatures</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlags</type> <name>compatibleHandleTypes</name></member>
-        </type>
-        <type category="struct" name="VkExternalMemoryPropertiesKHR"                           alias="VkExternalMemoryProperties"/>
-        <type category="struct" name="VkPhysicalDeviceExternalImageFormatInfo"  structextends="VkPhysicalDeviceImageFormatInfo2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalImageFormatInfoKHR"              alias="VkPhysicalDeviceExternalImageFormatInfo"/>
-        <type category="struct" name="VkExternalImageFormatProperties" returnedonly="true" structextends="VkImageFormatProperties2">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkExternalMemoryProperties</type> <name>externalMemoryProperties</name></member>
-        </type>
-        <type category="struct" name="VkExternalImageFormatPropertiesKHR"                      alias="VkExternalImageFormatProperties"/>
-        <type category="struct" name="VkPhysicalDeviceExternalBufferInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkBufferCreateFlags</type> <name>flags</name></member>
-            <member><type>VkBufferUsageFlags</type>               <name>usage</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalBufferInfoKHR"                   alias="VkPhysicalDeviceExternalBufferInfo"/>
-        <type category="struct" name="VkExternalBufferProperties" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkExternalMemoryProperties</type>    <name>externalMemoryProperties</name></member>
-        </type>
-        <type category="struct" name="VkExternalBufferPropertiesKHR"                           alias="VkExternalBufferProperties"/>
-        <type category="struct" name="VkPhysicalDeviceIDProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="noauto"><type>uint8_t</type>                     <name>deviceUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member limittype="noauto"><type>uint8_t</type>                     <name>driverUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member limittype="noauto"><type>uint8_t</type>                     <name>deviceLUID</name>[<enum>VK_LUID_SIZE</enum>]</member>
-            <member limittype="noauto"><type>uint32_t</type>                    <name>deviceNodeMask</name></member>
-            <member limittype="noauto"><type>VkBool32</type>                    <name>deviceLUIDValid</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceIDPropertiesKHR"                         alias="VkPhysicalDeviceIDProperties"/>
-        <type category="struct" name="VkExternalMemoryImageCreateInfo" structextends="VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>handleTypes</name></member>
-        </type>
-        <type category="struct" name="VkExternalMemoryImageCreateInfoKHR"                      alias="VkExternalMemoryImageCreateInfo"/>
-        <type category="struct" name="VkExternalMemoryBufferCreateInfo" structextends="VkBufferCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>handleTypes</name></member>
-        </type>
-        <type category="struct" name="VkExternalMemoryBufferCreateInfoKHR"                     alias="VkExternalMemoryBufferCreateInfo"/>
-        <type category="struct" name="VkExportMemoryAllocateInfo" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>handleTypes</name></member>
-        </type>
-        <type category="struct" name="VkExportMemoryAllocateInfoKHR"                           alias="VkExportMemoryAllocateInfo"/>
-        <type category="struct" name="VkImportMemoryWin32HandleInfoKHR" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-            <member optional="true"><type>HANDLE</type>           <name>handle</name></member>
-            <member optional="true"><type>LPCWSTR</type>          <name>name</name></member>
-        </type>
-        <type category="struct" name="VkExportMemoryWin32HandleInfoKHR" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member>
-            <member><type>DWORD</type>                            <name>dwAccess</name></member>
-            <member><type>LPCWSTR</type>                          <name>name</name></member>
-        </type>
-        <type category="struct" name="VkImportMemoryZirconHandleInfoFUCHSIA" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-            <member optional="true"><type>zx_handle_t</type>           <name>handle</name></member>
-        </type>
-        <type category="struct" name="VkMemoryZirconHandlePropertiesFUCHSIA" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>memoryTypeBits</name></member>
-        </type>
-        <type category="struct" name="VkMemoryGetZirconHandleInfoFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>                   <name>memory</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkMemoryWin32HandlePropertiesKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>memoryTypeBits</name></member>
-        </type>
-        <type category="struct" name="VkMemoryGetWin32HandleInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>                   <name>memory</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkImportMemoryFdInfoKHR" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-            <member><type>int</type>                              <name>fd</name></member>
-        </type>
-        <type category="struct" name="VkMemoryFdPropertiesKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>memoryTypeBits</name></member>
-        </type>
-        <type category="struct" name="VkMemoryGetFdInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>                   <name>memory</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkWin32KeyedMutexAcquireReleaseInfoKHR" structextends="VkSubmitInfo,VkSubmitInfo2">
-            <member values="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</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>pAcquireTimeouts</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>
-        <type category="struct" name="VkImportMemoryMetalHandleInfoEXT" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-            <member optional="true"><type>MTLResource_id</type>           <name>handle</name></member>
-        </type>
-        <type category="struct" name="VkMemoryMetalHandlePropertiesEXT" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>memoryTypeBits</name></member>
-        </type>
-        <type category="struct" name="VkMemoryGetMetalHandleInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>                   <name>memory</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalSemaphoreInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalSemaphoreInfoKHR"                alias="VkPhysicalDeviceExternalSemaphoreInfo"/>
-        <type category="struct" name="VkExternalSemaphoreProperties" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlags</type> <name>compatibleHandleTypes</name></member>
-            <member optional="true"><type>VkExternalSemaphoreFeatureFlags</type> <name>externalSemaphoreFeatures</name></member>
-        </type>
-        <type category="struct" name="VkExternalSemaphorePropertiesKHR"                        alias="VkExternalSemaphoreProperties"/>
-        <type category="struct" name="VkExportSemaphoreCreateInfo" structextends="VkSemaphoreCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalSemaphoreHandleTypeFlags</type> <name>handleTypes</name></member>
-        </type>
-        <type category="struct" name="VkExportSemaphoreCreateInfoKHR"                          alias="VkExportSemaphoreCreateInfo"/>
-        <type category="struct" name="VkImportSemaphoreWin32HandleInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member externsync="true"><type>VkSemaphore</type>    <name>semaphore</name></member>
-            <member optional="true"><type>VkSemaphoreImportFlags</type> <name>flags</name></member>
-            <member noautovalidity="true"><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
-            <member optional="true"><type>HANDLE</type>           <name>handle</name></member>
-            <member optional="true"><type>LPCWSTR</type>          <name>name</name></member>
-        </type>
-        <type category="struct" name="VkExportSemaphoreWin32HandleInfoKHR" structextends="VkSemaphoreCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true">const <type>SECURITY_ATTRIBUTES</type>*       <name>pAttributes</name></member>
-            <member><type>DWORD</type>                            <name>dwAccess</name></member>
-            <member><type>LPCWSTR</type>                          <name>name</name></member>
-        </type>
-        <type category="struct" name="VkD3D12FenceSubmitInfoKHR" structextends="VkSubmitInfo">
-            <member values="VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>waitSemaphoreValuesCount</name></member>
-            <member optional="true" len="waitSemaphoreValuesCount">const <type>uint64_t</type>* <name>pWaitSemaphoreValues</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>signalSemaphoreValuesCount</name></member>
-            <member optional="true" len="signalSemaphoreValuesCount">const <type>uint64_t</type>* <name>pSignalSemaphoreValues</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreGetWin32HandleInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkSemaphore</type>                      <name>semaphore</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkImportSemaphoreFdInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member externsync="true"><type>VkSemaphore</type>    <name>semaphore</name></member>
-            <member optional="true"><type>VkSemaphoreImportFlags</type> <name>flags</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
-            <member><type>int</type>                              <name>fd</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreGetFdInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkSemaphore</type>                      <name>semaphore</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkImportSemaphoreZirconHandleInfoFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member externsync="true"><type>VkSemaphore</type>    <name>semaphore</name></member>
-            <member optional="true"><type>VkSemaphoreImportFlags</type> <name>flags</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
-            <member><type>zx_handle_t</type>                              <name>zirconHandle</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreGetZirconHandleInfoFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkSemaphore</type>                      <name>semaphore</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalFenceInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalFenceInfoKHR"                    alias="VkPhysicalDeviceExternalFenceInfo"/>
-        <type category="struct" name="VkExternalFenceProperties" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkExternalFenceHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member>
-            <member><type>VkExternalFenceHandleTypeFlags</type> <name>compatibleHandleTypes</name></member>
-            <member optional="true"><type>VkExternalFenceFeatureFlags</type> <name>externalFenceFeatures</name></member>
-        </type>
-        <type category="struct" name="VkExternalFencePropertiesKHR"                            alias="VkExternalFenceProperties"/>
-        <type category="struct" name="VkExportFenceCreateInfo" structextends="VkFenceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkExternalFenceHandleTypeFlags</type> <name>handleTypes</name></member>
-        </type>
-        <type category="struct" name="VkExportFenceCreateInfoKHR"                              alias="VkExportFenceCreateInfo"/>
-        <type category="struct" name="VkImportFenceWin32HandleInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                        <name>pNext</name></member>
-            <member externsync="true"><type>VkFence</type>                          <name>fence</name></member>
-            <member optional="true"><type>VkFenceImportFlags</type>              <name>flags</name></member>
-            <member noautovalidity="true"><type>VkExternalFenceHandleTypeFlagBits</type>  <name>handleType</name></member>
-            <member optional="true"><type>HANDLE</type>                             <name>handle</name></member>
-            <member optional="true"><type>LPCWSTR</type>                            <name>name</name></member>
-        </type>
-        <type category="struct" name="VkExportFenceWin32HandleInfoKHR" structextends="VkFenceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                <name>pNext</name></member>
-            <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member>
-            <member><type>DWORD</type>                                      <name>dwAccess</name></member>
-            <member><type>LPCWSTR</type>                                    <name>name</name></member>
-        </type>
-        <type category="struct" name="VkFenceGetWin32HandleInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkFence</type>                                <name>fence</name></member>
-            <member><type>VkExternalFenceHandleTypeFlagBits</type>   <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkImportFenceFdInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member externsync="true"><type>VkFence</type>              <name>fence</name></member>
-            <member optional="true"><type>VkFenceImportFlags</type>  <name>flags</name></member>
-            <member><type>VkExternalFenceHandleTypeFlagBits</type>   <name>handleType</name></member>
-            <member><type>int</type>                                    <name>fd</name></member>
-        </type>
-        <type category="struct" name="VkFenceGetFdInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkFence</type>                                <name>fence</name></member>
-            <member><type>VkExternalFenceHandleTypeFlagBits</type>   <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkExportFenceSciSyncInfoNV" structextends="VkFenceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>NvSciSyncAttrList</type>                      <name>pAttributes</name></member>
-        </type>
-        <type category="struct" name="VkImportFenceSciSyncInfoNV">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member externsync="true"><type>VkFence</type>              <name>fence</name></member>
-            <member><type>VkExternalFenceHandleTypeFlagBits</type>      <name>handleType</name></member>
-            <member><type>void</type>*                                  <name>handle</name></member>
-        </type>
-        <type category="struct" name="VkFenceGetSciSyncInfoNV">
-            <member values="VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkFence</type>                                <name>fence</name></member>
-            <member><type>VkExternalFenceHandleTypeFlagBits</type>      <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkExportSemaphoreSciSyncInfoNV" structextends="VkSemaphoreCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>NvSciSyncAttrList</type>                      <name>pAttributes</name></member>
-        </type>
-        <type category="struct" name="VkImportSemaphoreSciSyncInfoNV">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member externsync="true"><type>VkSemaphore</type>          <name>semaphore</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlagBits</type>  <name>handleType</name></member>
-            <member><type>void</type>*                                  <name>handle</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreGetSciSyncInfoNV">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkSemaphore</type>                            <name>semaphore</name></member>
-            <member><type>VkExternalSemaphoreHandleTypeFlagBits</type>  <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkSciSyncAttributesInfoNV">
-            <member values="VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkSciSyncClientTypeNV</type>                  <name>clientType</name></member>
-            <member><type>VkSciSyncPrimitiveTypeNV</type>               <name>primitiveType</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalSciSyncFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>sciSyncFence</name></member>
-            <member><type>VkBool32</type>                               <name>sciSyncSemaphore</name></member>
-            <member><type>VkBool32</type>                               <name>sciSyncImport</name></member>
-            <member><type>VkBool32</type>                               <name>sciSyncExport</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalSciSync2FeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>sciSyncFence</name></member>
-            <member><type>VkBool32</type>                               <name>sciSyncSemaphore2</name></member>
-            <member><type>VkBool32</type>                               <name>sciSyncImport</name></member>
-            <member><type>VkBool32</type>                               <name>sciSyncExport</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreSciSyncPoolCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>NvSciSyncObj</type>                           <name>handle</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreSciSyncCreateInfoNV" structextends="VkSemaphoreCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkSemaphoreSciSyncPoolNV</type>               <name>semaphorePool</name></member>
-            <member>const <type>NvSciSyncFence</type>*                  <name>pFence</name></member>
-        </type>
-        <type category="struct" name="VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV" allowduplicate="true" structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>uint32_t</type>                               <name>semaphoreSciSyncPoolRequestCount</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMultiviewFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>multiview</name><comment>Multiple views in a renderpass</comment></member>
-            <member><type>VkBool32</type>                         <name>multiviewGeometryShader</name><comment>Multiple views in a renderpass w/ geometry shader</comment></member>
-            <member><type>VkBool32</type>                         <name>multiviewTessellationShader</name><comment>Multiple views in a renderpass w/ tessellation shader</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMultiviewFeaturesKHR"                    alias="VkPhysicalDeviceMultiviewFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceMultiviewProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxMultiviewViewCount</name><comment>max number of views in a subpass</comment></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxMultiviewInstanceIndex</name><comment>max instance index for a draw in a multiview subpass</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMultiviewPropertiesKHR"                  alias="VkPhysicalDeviceMultiviewProperties"/>
-        <type category="struct" name="VkRenderPassMultiviewCreateInfo" structextends="VkRenderPassCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"><type>VkStructureType</type>        <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>subpassCount</name></member>
-            <member len="subpassCount">const <type>uint32_t</type>*     <name>pViewMasks</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>dependencyCount</name></member>
-            <member len="dependencyCount">const <type>int32_t</type>*   <name>pViewOffsets</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>correlationMaskCount</name></member>
-            <member len="correlationMaskCount">const <type>uint32_t</type>* <name>pCorrelationMasks</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassMultiviewCreateInfoKHR"                      alias="VkRenderPassMultiviewCreateInfo"/>
-        <type category="struct" name="VkSurfaceCapabilities2EXT" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>minImageCount</name><comment>Supported minimum number of images for the surface</comment></member>
-            <member><type>uint32_t</type>                         <name>maxImageCount</name><comment>Supported maximum number of images for the surface, 0 for unlimited</comment></member>
-            <member><type>VkExtent2D</type>                       <name>currentExtent</name><comment>Current image width and height for the surface, (0, 0) if undefined</comment></member>
-            <member><type>VkExtent2D</type>                       <name>minImageExtent</name><comment>Supported minimum image width and height for the surface</comment></member>
-            <member><type>VkExtent2D</type>                       <name>maxImageExtent</name><comment>Supported maximum image width and height for the surface</comment></member>
-            <member><type>uint32_t</type>                         <name>maxImageArrayLayers</name><comment>Supported maximum number of image layers for the surface</comment></member>
-            <member><type>VkSurfaceTransformFlagsKHR</type>       <name>supportedTransforms</name><comment>1 or more bits representing the transforms supported</comment></member>
-            <member><type>VkSurfaceTransformFlagBitsKHR</type>    <name>currentTransform</name><comment>The surface's current transform relative to the device's natural orientation</comment></member>
-            <member><type>VkCompositeAlphaFlagsKHR</type>         <name>supportedCompositeAlpha</name><comment>1 or more bits representing the alpha compositing modes supported</comment></member>
-            <member><type>VkImageUsageFlags</type>                <name>supportedUsageFlags</name><comment>Supported image usage flags for the surface</comment></member>
-            <member optional="true"><type>VkSurfaceCounterFlagsEXT</type> <name>supportedSurfaceCounters</name></member>
-        </type>
-        <type category="struct" name="VkDisplayPowerInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDisplayPowerStateEXT</type>           <name>powerState</name></member>
-        </type>
-        <type category="struct" name="VkDeviceEventInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDeviceEventTypeEXT</type>             <name>deviceEvent</name></member>
-        </type>
-        <type category="struct" name="VkDisplayEventInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDisplayEventTypeEXT</type>            <name>displayEvent</name></member>
-        </type>
-        <type category="struct" name="VkSwapchainCounterCreateInfoEXT" structextends="VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkSurfaceCounterFlagsEXT</type>         <name>surfaceCounters</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceGroupProperties" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>physicalDeviceCount</name></member>
-            <member><type>VkPhysicalDevice</type>                 <name>physicalDevices</name>[<enum>VK_MAX_DEVICE_GROUP_SIZE</enum>]</member>
-            <member><type>VkBool32</type>                         <name>subsetAllocation</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceGroupPropertiesKHR"                      alias="VkPhysicalDeviceGroupProperties"/>
-        <type category="struct" name="VkMemoryAllocateFlagsInfo" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkMemoryAllocateFlags</type> <name>flags</name></member>
-            <member><type>uint32_t</type>                         <name>deviceMask</name></member>
-        </type>
-        <type category="struct" name="VkMemoryAllocateFlagsInfoKHR"                            alias="VkMemoryAllocateFlagsInfo"/>
-        <type category="struct" name="VkBindBufferMemoryInfo">
-            <member values="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkBuffer</type>                         <name>buffer</name></member>
-            <member><type>VkDeviceMemory</type>                   <name>memory</name></member>
-            <member><type>VkDeviceSize</type>                     <name>memoryOffset</name></member>
-        </type>
-        <type category="struct" name="VkBindBufferMemoryInfoKHR"                               alias="VkBindBufferMemoryInfo"/>
-        <type category="struct" name="VkBindBufferMemoryDeviceGroupInfo" structextends="VkBindBufferMemoryInfo">
-            <member values="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>deviceIndexCount</name></member>
-            <member len="deviceIndexCount">const <type>uint32_t</type>*  <name>pDeviceIndices</name></member>
-        </type>
-        <type category="struct" name="VkBindBufferMemoryDeviceGroupInfoKHR"                    alias="VkBindBufferMemoryDeviceGroupInfo"/>
-        <type category="struct" name="VkBindImageMemoryInfo">
-            <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkImage</type>                          <name>image</name></member>
-            <member noautovalidity="true"><type>VkDeviceMemory</type>                   <name>memory</name></member>
-            <member><type>VkDeviceSize</type>                     <name>memoryOffset</name></member>
-        </type>
-        <type category="struct" name="VkBindImageMemoryInfoKHR"                                alias="VkBindImageMemoryInfo"/>
-        <type category="struct" name="VkBindImageMemoryDeviceGroupInfo" structextends="VkBindImageMemoryInfo">
-            <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>deviceIndexCount</name></member>
-            <member len="deviceIndexCount">const <type>uint32_t</type>*  <name>pDeviceIndices</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>splitInstanceBindRegionCount</name></member>
-            <member len="splitInstanceBindRegionCount">const <type>VkRect2D</type>*  <name>pSplitInstanceBindRegions</name></member>
-        </type>
-        <type category="struct" name="VkBindImageMemoryDeviceGroupInfoKHR"                     alias="VkBindImageMemoryDeviceGroupInfo"/>
-        <type category="struct" name="VkDeviceGroupRenderPassBeginInfo" structextends="VkRenderPassBeginInfo,VkRenderingInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>deviceMask</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>deviceRenderAreaCount</name></member>
-            <member len="deviceRenderAreaCount">const <type>VkRect2D</type>*  <name>pDeviceRenderAreas</name></member>
-        </type>
-        <type category="struct" name="VkDeviceGroupRenderPassBeginInfoKHR"                     alias="VkDeviceGroupRenderPassBeginInfo"/>
-        <type category="struct" name="VkDeviceGroupCommandBufferBeginInfo" structextends="VkCommandBufferBeginInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>deviceMask</name></member>
-        </type>
-        <type category="struct" name="VkDeviceGroupCommandBufferBeginInfoKHR"                  alias="VkDeviceGroupCommandBufferBeginInfo"/>
-        <type category="struct" name="VkDeviceGroupSubmitInfo" structextends="VkSubmitInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>waitSemaphoreCount</name></member>
-            <member len="waitSemaphoreCount">const <type>uint32_t</type>*    <name>pWaitSemaphoreDeviceIndices</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>commandBufferCount</name></member>
-            <member len="commandBufferCount">const <type>uint32_t</type>*    <name>pCommandBufferDeviceMasks</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>signalSemaphoreCount</name></member>
-            <member len="signalSemaphoreCount">const <type>uint32_t</type>*  <name>pSignalSemaphoreDeviceIndices</name></member>
-        </type>
-        <type category="struct" name="VkDeviceGroupSubmitInfoKHR"                              alias="VkDeviceGroupSubmitInfo"/>
-        <type category="struct" name="VkDeviceGroupBindSparseInfo" structextends="VkBindSparseInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>resourceDeviceIndex</name></member>
-            <member><type>uint32_t</type>                         <name>memoryDeviceIndex</name></member>
-        </type>
-        <type category="struct" name="VkDeviceGroupBindSparseInfoKHR"                          alias="VkDeviceGroupBindSparseInfo"/>
-        <type category="struct" name="VkDeviceGroupPresentCapabilitiesKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>presentMask</name>[<enum>VK_MAX_DEVICE_GROUP_SIZE</enum>]</member>
-            <member><type>VkDeviceGroupPresentModeFlagsKHR</type> <name>modes</name></member>
-        </type>
-        <type category="struct" name="VkImageSwapchainCreateInfoKHR" structextends="VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkSwapchainKHR</type>   <name>swapchain</name></member>
-        </type>
-        <type category="struct" name="VkBindImageMemorySwapchainInfoKHR" structextends="VkBindImageMemoryInfo">
-            <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member>
-            <member><type>uint32_t</type>                         <name>imageIndex</name></member>
-        </type>
-        <type category="struct" name="VkAcquireNextImageInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member>
-            <member><type>uint64_t</type>                         <name>timeout</name></member>
-            <member optional="true" externsync="true"><type>VkSemaphore</type> <name>semaphore</name></member>
-            <member optional="true" externsync="true"><type>VkFence</type> <name>fence</name></member>
-            <member><type>uint32_t</type>                         <name>deviceMask</name></member>
-        </type>
-        <type category="struct" name="VkDeviceGroupPresentInfoKHR" structextends="VkPresentInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>swapchainCount</name></member>
-            <member len="swapchainCount">const <type>uint32_t</type>* <name>pDeviceMasks</name></member>
-            <member><type>VkDeviceGroupPresentModeFlagBitsKHR</type> <name>mode</name></member>
-        </type>
-        <type category="struct" name="VkDeviceGroupDeviceCreateInfo" structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                         <name>physicalDeviceCount</name></member>
-            <member len="physicalDeviceCount">const <type>VkPhysicalDevice</type>*  <name>pPhysicalDevices</name></member>
-        </type>
-        <type category="struct" name="VkDeviceGroupDeviceCreateInfoKHR"                        alias="VkDeviceGroupDeviceCreateInfo"/>
-        <type category="struct" name="VkDeviceGroupSwapchainCreateInfoKHR" structextends="VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDeviceGroupPresentModeFlagsKHR</type>                         <name>modes</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorUpdateTemplateEntry">
-            <member><type>uint32_t</type>                         <name>dstBinding</name><comment>Binding within the destination descriptor set to write</comment></member>
-            <member><type>uint32_t</type>                         <name>dstArrayElement</name><comment>Array element within the destination binding to write</comment></member>
-            <member><type>uint32_t</type>                         <name>descriptorCount</name><comment>Number of descriptors to write</comment></member>
-            <member><type>VkDescriptorType</type>                 <name>descriptorType</name><comment>Descriptor type to write</comment></member>
-            <member><type>size_t</type>                           <name>offset</name><comment>Offset into pData where the descriptors to update are stored</comment></member>
-            <member><type>size_t</type>                           <name>stride</name><comment>Stride between two descriptors in pData when writing more than one descriptor</comment></member>
-        </type>
-        <type category="struct" name="VkDescriptorUpdateTemplateEntryKHR"                      alias="VkDescriptorUpdateTemplateEntry"/>
-        <type category="struct" name="VkDescriptorUpdateTemplateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                               <name>pNext</name></member>
-            <member optional="true"><type>VkDescriptorUpdateTemplateCreateFlags</type>    <name>flags</name></member>
-            <member><type>uint32_t</type>                 <name>descriptorUpdateEntryCount</name><comment>Number of descriptor update entries to use for the update template</comment></member>
-            <member len="descriptorUpdateEntryCount">const <type>VkDescriptorUpdateTemplateEntry</type>* <name>pDescriptorUpdateEntries</name><comment>Descriptor update entries for the template</comment></member>
-            <member><type>VkDescriptorUpdateTemplateType</type> <name>templateType</name></member>
-            <member noautovalidity="true"><type>VkDescriptorSetLayout</type> <name>descriptorSetLayout</name></member>
-            <member noautovalidity="true"><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member>
-            <member noautovalidity="true"><type>VkPipelineLayout</type> <name>pipelineLayout</name><comment>If used for push descriptors, this is the only allowed layout</comment></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>set</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorUpdateTemplateCreateInfoKHR"                 alias="VkDescriptorUpdateTemplateCreateInfo"/>
-        <type category="struct" name="VkXYColorEXT" comment="Chromaticity coordinate">
-            <member><type>float</type>   <name>x</name></member>
-            <member><type>float</type>   <name>y</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePresentIdFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>presentId</name><comment>Present ID in VkPresentInfoKHR</comment></member>
-        </type>
-        <type category="struct" name="VkPresentIdKHR" structextends="VkPresentInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PRESENT_ID_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
-            <member len="swapchainCount" optional="true">const <type>uint64_t</type>* <name>pPresentIds</name><comment>Present ID values for each swapchain</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePresentWaitFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>presentWait</name><comment>vkWaitForPresentKHR is supported</comment></member>
-        </type>
-        <type category="struct" name="VkHdrMetadataEXT">
-                <comment>Display primary in chromaticity coordinates</comment>
-            <member values="VK_STRUCTURE_TYPE_HDR_METADATA_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-                <comment> From SMPTE 2086</comment>
-            <member noautovalidity="true"><type>VkXYColorEXT</type>   <name>displayPrimaryRed</name><comment>Display primary's Red</comment></member>
-            <member noautovalidity="true"><type>VkXYColorEXT</type>   <name>displayPrimaryGreen</name><comment>Display primary's Green</comment></member>
-            <member noautovalidity="true"><type>VkXYColorEXT</type>   <name>displayPrimaryBlue</name><comment>Display primary's Blue</comment></member>
-            <member noautovalidity="true"><type>VkXYColorEXT</type>   <name>whitePoint</name><comment>Display primary's Blue</comment></member>
-            <member noautovalidity="true"><type>float</type>          <name>maxLuminance</name><comment>Display maximum luminance</comment></member>
-            <member noautovalidity="true"><type>float</type>          <name>minLuminance</name><comment>Display minimum luminance</comment></member>
-                <comment> From CTA 861.3</comment>
-            <member noautovalidity="true"><type>float</type>          <name>maxContentLightLevel</name><comment>Content maximum luminance</comment></member>
-            <member noautovalidity="true"><type>float</type>          <name>maxFrameAverageLightLevel</name></member>
-        </type>
-        <type category="struct" name="VkDisplayNativeHdrSurfaceCapabilitiesAMD" returnedonly="true" structextends="VkSurfaceCapabilities2KHR">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*          <name>pNext</name></member>
-            <member><type>VkBool32</type>       <name>localDimmingSupport</name></member>
-        </type>
-        <type category="struct" name="VkSwapchainDisplayNativeHdrCreateInfoAMD" structextends="VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>       <name>localDimmingEnable</name></member>
-        </type>
-        <type category="struct" name="VkRefreshCycleDurationGOOGLE" returnedonly="true">
-            <member><type>uint64_t</type>                         <name>refreshDuration</name><comment>Number of nanoseconds from the start of one refresh cycle to the next</comment></member>
-        </type>
-        <type category="struct" name="VkPastPresentationTimingGOOGLE" returnedonly="true">
-            <member><type>uint32_t</type>                         <name>presentID</name><comment>Application-provided identifier, previously given to vkQueuePresentKHR</comment></member>
-            <member><type>uint64_t</type>                         <name>desiredPresentTime</name><comment>Earliest time an image should have been presented, previously given to vkQueuePresentKHR</comment></member>
-            <member><type>uint64_t</type>                         <name>actualPresentTime</name><comment>Time the image was actually displayed</comment></member>
-            <member><type>uint64_t</type>                         <name>earliestPresentTime</name><comment>Earliest time the image could have been displayed</comment></member>
-            <member><type>uint64_t</type>                         <name>presentMargin</name><comment>How early vkQueuePresentKHR was processed vs. how soon it needed to be and make earliestPresentTime</comment></member>
-        </type>
-        <type category="struct" name="VkPresentTimesInfoGOOGLE" structextends="VkPresentInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
-            <member len="swapchainCount" optional="true">const <type>VkPresentTimeGOOGLE</type>*   <name>pTimes</name><comment>The earliest times to present images</comment></member>
-        </type>
-        <type category="struct" name="VkPresentTimeGOOGLE">
-            <member><type>uint32_t</type>                         <name>presentID</name><comment>Application-provided identifier</comment></member>
-            <member><type>uint64_t</type>                         <name>desiredPresentTime</name><comment>Earliest time an image should be presented</comment></member>
-        </type>
-        <type category="struct" name="VkIOSSurfaceCreateInfoMVK">
-            <member values="VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                    <name>pNext</name></member>
-            <member optional="true"><type>VkIOSSurfaceCreateFlagsMVK</type>     <name>flags</name></member>
-            <member noautovalidity="true">const <type>void</type>*                                    <name>pView</name></member>
-        </type>
-        <type category="struct" name="VkMacOSSurfaceCreateInfoMVK">
-            <member values="VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                    <name>pNext</name></member>
-            <member optional="true"><type>VkMacOSSurfaceCreateFlagsMVK</type>   <name>flags</name></member>
-            <member noautovalidity="true">const <type>void</type>*                                    <name>pView</name></member>
-        </type>
-        <type category="struct" name="VkMetalSurfaceCreateInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                    <name>pNext</name></member>
-            <member optional="true"><type>VkMetalSurfaceCreateFlagsEXT</type>   <name>flags</name></member>
-            <member noautovalidity="true">const <type>CAMetalLayer</type>*      <name>pLayer</name></member>
-        </type>
-        <type category="struct" name="VkViewportWScalingNV">
-            <member><type>float</type>          <name>xcoeff</name></member>
-            <member><type>float</type>          <name>ycoeff</name></member>
-        </type>
-        <type category="struct" name="VkPipelineViewportWScalingStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>viewportWScalingEnable</name></member>
-            <member><type>uint32_t</type>               <name>viewportCount</name></member>
-            <member noautovalidity="true" optional="true" len="viewportCount">const <type>VkViewportWScalingNV</type>*      <name>pViewportWScalings</name></member>
-        </type>
-        <type category="struct" name="VkViewportSwizzleNV">
-            <member><type>VkViewportCoordinateSwizzleNV</type>          <name>x</name></member>
-            <member><type>VkViewportCoordinateSwizzleNV</type>          <name>y</name></member>
-            <member><type>VkViewportCoordinateSwizzleNV</type>          <name>z</name></member>
-            <member><type>VkViewportCoordinateSwizzleNV</type>          <name>w</name></member>
-        </type>
-        <type category="struct" name="VkPipelineViewportSwizzleStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineViewportSwizzleStateCreateFlagsNV</type>    <name>flags</name></member>
-            <member><type>uint32_t</type>               <name>viewportCount</name></member>
-            <member len="viewportCount">const <type>VkViewportSwizzleNV</type>*      <name>pViewportSwizzles</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDiscardRectanglePropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDiscardRectangles</name><comment>max number of active discard rectangles</comment></member>
-        </type>
-        <type category="struct" name="VkPipelineDiscardRectangleStateCreateInfoEXT" structextends="VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                       <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineDiscardRectangleStateCreateFlagsEXT</type>     <name>flags</name></member>
-            <member><type>VkDiscardRectangleModeEXT</type>                                         <name>discardRectangleMode</name></member>
-            <member optional="true"><type>uint32_t</type>                                          <name>discardRectangleCount</name></member>
-            <member noautovalidity="true" len="discardRectangleCount">const <type>VkRect2D</type>* <name>pDiscardRectangles</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>perViewPositionAllComponents</name></member>
-        </type>
-        <type category="struct" name="VkInputAttachmentAspectReference">
-            <member><type>uint32_t</type>                        <name>subpass</name></member>
-            <member><type>uint32_t</type>                        <name>inputAttachmentIndex</name></member>
-            <member><type>VkImageAspectFlags</type>              <name>aspectMask</name></member>
-        </type>
-        <type category="struct" name="VkInputAttachmentAspectReferenceKHR"                     alias="VkInputAttachmentAspectReference"/>
-        <type category="struct" name="VkRenderPassInputAttachmentAspectCreateInfo" structextends="VkRenderPassCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                     <name>pNext</name></member>
-            <member><type>uint32_t</type>                        <name>aspectReferenceCount</name></member>
-            <member len="aspectReferenceCount">const <type>VkInputAttachmentAspectReference</type>* <name>pAspectReferences</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassInputAttachmentAspectCreateInfoKHR"          alias="VkRenderPassInputAttachmentAspectCreateInfo"/>
-        <type category="struct" name="VkPhysicalDeviceSurfaceInfo2KHR">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member optional="true"><type>VkSurfaceKHR</type> <name>surface</name></member>
-        </type>
-        <type category="struct" name="VkSurfaceCapabilities2KHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*   <name>pNext</name></member>
-            <member><type>VkSurfaceCapabilitiesKHR</type> <name>surfaceCapabilities</name></member>
-        </type>
-        <type category="struct" name="VkSurfaceFormat2KHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkSurfaceFormatKHR</type> <name>surfaceFormat</name></member>
-        </type>
-        <type category="struct" name="VkDisplayProperties2KHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkDisplayPropertiesKHR</type> <name>displayProperties</name></member>
-        </type>
-        <type category="struct" name="VkDisplayPlaneProperties2KHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkDisplayPlanePropertiesKHR</type> <name>displayPlaneProperties</name></member>
-        </type>
-        <type category="struct" name="VkDisplayModeProperties2KHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkDisplayModePropertiesKHR</type> <name>displayModeProperties</name></member>
-        </type>
-        <type category="struct" name="VkDisplayPlaneInfo2KHR">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member externsync="true"><type>VkDisplayModeKHR</type> <name>mode</name></member>
-            <member><type>uint32_t</type> <name>planeIndex</name></member>
-        </type>
-        <type category="struct" name="VkDisplayPlaneCapabilities2KHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkDisplayPlaneCapabilitiesKHR</type> <name>capabilities</name></member>
-        </type>
-        <type category="struct" name="VkSharedPresentSurfaceCapabilitiesKHR" returnedonly="true" structextends="VkSurfaceCapabilities2KHR">
-            <member values="VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member optional="true"><type>VkImageUsageFlags</type> <name>sharedPresentSupportedUsageFlags</name><comment>Supported image usage flags if swapchain created using a shared present mode</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevice16BitStorageFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>storageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock</comment></member>
-            <member><type>VkBool32</type>                         <name>uniformAndStorageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock and Block</comment></member>
-            <member><type>VkBool32</type>                         <name>storagePushConstant16</name><comment>16-bit integer/floating-point variables supported in PushConstant</comment></member>
-            <member><type>VkBool32</type>                         <name>storageInputOutput16</name><comment>16-bit integer/floating-point variables supported in shader inputs and outputs</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevice16BitStorageFeaturesKHR"                 alias="VkPhysicalDevice16BitStorageFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceSubgroupProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                   <name>pNext</name></member>
-            <member limittype="max,pot" noautovalidity="true"><type>uint32_t</type>                     <name>subgroupSize</name><comment>The size of a subgroup for this queue.</comment></member>
-            <member limittype="bitmask" noautovalidity="true"><type>VkShaderStageFlags</type>            <name>supportedStages</name><comment>Bitfield of what shader stages support subgroup operations</comment></member>
-            <member limittype="bitmask" noautovalidity="true"><type>VkSubgroupFeatureFlags</type>        <name>supportedOperations</name><comment>Bitfield of what subgroup operations are supported.</comment></member>
-            <member limittype="bitmask" noautovalidity="true"><type>VkBool32</type> <name>quadOperationsInAllStages</name><comment>Flag to specify whether quad operations are available in all stages.</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                          <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkBool32</type> <name>shaderSubgroupExtendedTypes</name><comment>Flag to specify whether subgroup operations with extended types are supported</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR"  alias="VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures"/>
-        <type category="struct" name="VkBufferMemoryRequirementsInfo2">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                          <name>pNext</name></member>
-            <member><type>VkBuffer</type>                                                             <name>buffer</name></member>
-        </type>
-        <type category="struct" name="VkBufferMemoryRequirementsInfo2KHR"                      alias="VkBufferMemoryRequirementsInfo2"/>
-        <type category="struct" name="VkDeviceBufferMemoryRequirements">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                           <name>pNext</name></member>
-            <member>const <type>VkBufferCreateInfo</type>*                                                             <name>pCreateInfo</name></member>
-        </type>
-        <type category="struct" name="VkDeviceBufferMemoryRequirementsKHR" alias="VkDeviceBufferMemoryRequirements"/>
-        <type category="struct" name="VkImageMemoryRequirementsInfo2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                          <name>pNext</name></member>
-            <member><type>VkImage</type>                                                              <name>image</name></member>
-        </type>
-        <type category="struct" name="VkImageMemoryRequirementsInfo2KHR"                       alias="VkImageMemoryRequirementsInfo2"/>
-        <type category="struct" name="VkImageSparseMemoryRequirementsInfo2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                          <name>pNext</name></member>
-            <member><type>VkImage</type>                                                              <name>image</name></member>
-        </type>
-        <type category="struct" name="VkImageSparseMemoryRequirementsInfo2KHR"                 alias="VkImageSparseMemoryRequirementsInfo2"/>
-        <type category="struct" name="VkDeviceImageMemoryRequirements">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                          <name>pNext</name></member>
-            <member>const <type>VkImageCreateInfo</type>*                                                             <name>pCreateInfo</name></member>
-            <member optional="true"><type>VkImageAspectFlagBits</type>                                                <name>planeAspect</name></member>
-        </type>
-        <type category="struct" name="VkDeviceImageMemoryRequirementsKHR" alias="VkDeviceImageMemoryRequirements"/>
-        <type category="struct" name="VkMemoryRequirements2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkMemoryRequirements</type>                                                 <name>memoryRequirements</name></member>
-        </type>
-        <type category="struct" name="VkMemoryRequirements2KHR"                                alias="VkMemoryRequirements2"/>
-        <type category="struct" name="VkSparseImageMemoryRequirements2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                       <name>pNext</name></member>
-            <member><type>VkSparseImageMemoryRequirements</type>                                      <name>memoryRequirements</name></member>
-        </type>
-        <type category="struct" name="VkSparseImageMemoryRequirements2KHR"                     alias="VkSparseImageMemoryRequirements2"/>
-        <type category="struct" name="VkPhysicalDevicePointClippingProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="exact"><type>VkPointClippingBehavior</type>     <name>pointClippingBehavior</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePointClippingPropertiesKHR"              alias="VkPhysicalDevicePointClippingProperties"/>
-        <type category="struct" name="VkMemoryDedicatedRequirements" returnedonly="true" structextends="VkMemoryRequirements2">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>prefersDedicatedAllocation</name></member>
-            <member><type>VkBool32</type>                         <name>requiresDedicatedAllocation</name></member>
-        </type>
-        <type category="struct" name="VkMemoryDedicatedRequirementsKHR"                        alias="VkMemoryDedicatedRequirements"/>
-        <type category="struct" name="VkMemoryDedicatedAllocateInfo" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>VkImage</type>          <name>image</name><comment>Image that this allocation will be bound to</comment></member>
-            <member optional="true"><type>VkBuffer</type>         <name>buffer</name><comment>Buffer that this allocation will be bound to</comment></member>
-        </type>
-        <type category="struct" name="VkMemoryDedicatedAllocateInfoKHR"                        alias="VkMemoryDedicatedAllocateInfo"/>
-        <type category="struct" name="VkImageViewUsageCreateInfo" structextends="VkImageViewCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkImageUsageFlags</type> <name>usage</name></member>
-        </type>
-        <type category="struct" name="VkImageViewSlicedCreateInfoEXT" structextends="VkImageViewCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>uint32_t</type> <name>sliceOffset</name></member>
-            <member><type>uint32_t</type> <name>sliceCount</name></member>
-        </type>
-        <type category="struct" name="VkImageViewUsageCreateInfoKHR"                           alias="VkImageViewUsageCreateInfo"/>
-        <type category="struct" name="VkPipelineTessellationDomainOriginStateCreateInfo" structextends="VkPipelineTessellationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkTessellationDomainOrigin</type>    <name>domainOrigin</name></member>
-        </type>
-        <type category="struct" name="VkPipelineTessellationDomainOriginStateCreateInfoKHR"    alias="VkPipelineTessellationDomainOriginStateCreateInfo"/>
-        <type category="struct" name="VkSamplerYcbcrConversionInfo" structextends="VkSamplerCreateInfo,VkImageViewCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkSamplerYcbcrConversion</type>      <name>conversion</name></member>
-        </type>
-        <type category="struct" name="VkSamplerYcbcrConversionInfoKHR"                         alias="VkSamplerYcbcrConversionInfo"/>
-        <type category="struct" name="VkSamplerYcbcrConversionCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkFormat</type>                         <name>format</name></member>
-            <member><type>VkSamplerYcbcrModelConversion</type> <name>ycbcrModel</name></member>
-            <member><type>VkSamplerYcbcrRange</type>           <name>ycbcrRange</name></member>
-            <member><type>VkComponentMapping</type>               <name>components</name></member>
-            <member><type>VkChromaLocation</type>              <name>xChromaOffset</name></member>
-            <member><type>VkChromaLocation</type>              <name>yChromaOffset</name></member>
-            <member><type>VkFilter</type>                         <name>chromaFilter</name></member>
-            <member><type>VkBool32</type>                         <name>forceExplicitReconstruction</name></member>
-        </type>
-        <type category="struct" name="VkSamplerYcbcrConversionCreateInfoKHR"                   alias="VkSamplerYcbcrConversionCreateInfo"/>
-        <type category="struct" name="VkBindImagePlaneMemoryInfo" structextends="VkBindImageMemoryInfo">
-            <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkImageAspectFlagBits</type>            <name>planeAspect</name></member>
-        </type>
-        <type category="struct" name="VkBindImagePlaneMemoryInfoKHR"                           alias="VkBindImagePlaneMemoryInfo"/>
-        <type category="struct" name="VkImagePlaneMemoryRequirementsInfo" structextends="VkImageMemoryRequirementsInfo2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkImageAspectFlagBits</type>            <name>planeAspect</name></member>
-        </type>
-        <type category="struct" name="VkImagePlaneMemoryRequirementsInfoKHR"                   alias="VkImagePlaneMemoryRequirementsInfo"/>
-        <type category="struct" name="VkPhysicalDeviceSamplerYcbcrConversionFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>samplerYcbcrConversion</name><comment>Sampler color conversion supported</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"       alias="VkPhysicalDeviceSamplerYcbcrConversionFeatures"/>
-        <type category="struct" name="VkSamplerYcbcrConversionImageFormatProperties" returnedonly="true" structextends="VkImageFormatProperties2">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>combinedImageSamplerDescriptorCount</name></member>
-        </type>
-        <type category="struct" name="VkSamplerYcbcrConversionImageFormatPropertiesKHR"        alias="VkSamplerYcbcrConversionImageFormatProperties"/>
-        <type category="struct" name="VkTextureLODGatherFormatPropertiesAMD" returnedonly="true" structextends="VkImageFormatProperties2">
-            <member values="VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><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 optional="true">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 optional="true">const <type>void</type>*                     <name>pNext</name></member>
-            <member><type>VkBool32</type>                        <name>protectedSubmit</name><comment>Submit protected command buffers</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceProtectedMemoryFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>protectedMemory</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceProtectedMemoryProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="exact"><type>VkBool32</type>                            <name>protectedNoFault</name></member>
-        </type>
-        <type category="struct" name="VkDeviceQueueInfo2">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                         <name>pNext</name></member>
-            <member optional="true"><type>VkDeviceQueueCreateFlags</type>            <name>flags</name></member>
-            <member><type>uint32_t</type>                            <name>queueFamilyIndex</name></member>
-            <member><type>uint32_t</type>                            <name>queueIndex</name></member>
-        </type>
-        <type category="struct" name="VkPipelineCoverageToColorStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                      <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCoverageToColorStateCreateFlagsNV</type>                    <name>flags</name></member>
-            <member><type>VkBool32</type>                         <name>coverageToColorEnable</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>coverageToColorLocation</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSamplerFilterMinmaxProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>filterMinmaxSingleComponentFormats</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>filterMinmaxImageComponentMapping</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" alias="VkPhysicalDeviceSamplerFilterMinmaxProperties"/>
-        <type category="struct" name="VkSampleLocationEXT">
-            <member><type>float</type>                            <name>x</name></member>
-            <member><type>float</type>                            <name>y</name></member>
-        </type>
-        <type category="struct" name="VkSampleLocationsInfoEXT" structextends="VkImageMemoryBarrier,VkImageMemoryBarrier2">
-            <member values="VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkSampleCountFlagBits</type>  <name>sampleLocationsPerPixel</name></member>
-            <member><type>VkExtent2D</type>                             <name>sampleLocationGridSize</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>sampleLocationsCount</name></member>
-            <member len="sampleLocationsCount">const <type>VkSampleLocationEXT</type>* <name>pSampleLocations</name></member>
-        </type>
-        <type category="struct" name="VkAttachmentSampleLocationsEXT">
-            <member><type>uint32_t</type>                         <name>attachmentIndex</name></member>
-            <member><type>VkSampleLocationsInfoEXT</type>         <name>sampleLocationsInfo</name></member>
-        </type>
-        <type category="struct" name="VkSubpassSampleLocationsEXT">
-            <member><type>uint32_t</type>                         <name>subpassIndex</name></member>
-            <member><type>VkSampleLocationsInfoEXT</type>         <name>sampleLocationsInfo</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassSampleLocationsBeginInfoEXT" structextends="VkRenderPassBeginInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>attachmentInitialSampleLocationsCount</name></member>
-            <member len="attachmentInitialSampleLocationsCount">const <type>VkAttachmentSampleLocationsEXT</type>* <name>pAttachmentInitialSampleLocations</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>postSubpassSampleLocationsCount</name></member>
-            <member len="postSubpassSampleLocationsCount">const <type>VkSubpassSampleLocationsEXT</type>* <name>pPostSubpassSampleLocations</name></member>
-        </type>
-        <type category="struct" name="VkPipelineSampleLocationsStateCreateInfoEXT" structextends="VkPipelineMultisampleStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>sampleLocationsEnable</name></member>
-            <member><type>VkSampleLocationsInfoEXT</type>         <name>sampleLocationsInfo</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSampleLocationsPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkSampleCountFlags</type>               <name>sampleLocationSampleCounts</name></member>
-            <member limittype="max"><type>VkExtent2D</type>                       <name>maxSampleLocationGridSize</name></member>
-            <member limittype="range"><type>float</type>                            <name>sampleLocationCoordinateRange</name>[2]</member>
-            <member limittype="bits"><type>uint32_t</type>                         <name>sampleLocationSubPixelBits</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>variableSampleLocations</name></member>
-        </type>
-        <type category="struct" name="VkMultisamplePropertiesEXT" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkExtent2D</type>                       <name>maxSampleLocationGridSize</name></member>
-        </type>
-        <type category="struct" name="VkSamplerReductionModeCreateInfo" structextends="VkSamplerCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkSamplerReductionMode</type>           <name>reductionMode</name></member>
-        </type>
-        <type category="struct" name="VkSamplerReductionModeCreateInfoEXT" alias="VkSamplerReductionModeCreateInfo"/>
-        <type category="struct" name="VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>advancedBlendCoherentOperations</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMultiDrawFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>multiDraw</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>advancedBlendMaxColorAttachments</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>advancedBlendIndependentBlend</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>advancedBlendNonPremultipliedSrcColor</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>advancedBlendNonPremultipliedDstColor</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>advancedBlendCorrelatedOverlap</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>advancedBlendAllOperations</name></member>
-        </type>
-        <type category="struct" name="VkPipelineColorBlendAdvancedStateCreateInfoEXT" structextends="VkPipelineColorBlendStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>srcPremultiplied</name></member>
-            <member><type>VkBool32</type>               <name>dstPremultiplied</name></member>
-            <member><type>VkBlendOverlapEXT</type>      <name>blendOverlap</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceInlineUniformBlockFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>inlineUniformBlock</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingInlineUniformBlockUpdateAfterBind</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceInlineUniformBlockFeaturesEXT" alias="VkPhysicalDeviceInlineUniformBlockFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceInlineUniformBlockProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxInlineUniformBlockSize</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorInlineUniformBlocks</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetInlineUniformBlocks</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUpdateAfterBindInlineUniformBlocks</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceInlineUniformBlockPropertiesEXT" alias="VkPhysicalDeviceInlineUniformBlockProperties"/>
-        <type category="struct" name="VkWriteDescriptorSetInlineUniformBlock" structextends="VkWriteDescriptorSet">
-            <member values="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>uint32_t</type>                    <name>dataSize</name></member>
-            <member len="dataSize">const <type>void</type>*  <name>pData</name></member>
-        </type>
-        <type category="struct" name="VkWriteDescriptorSetInlineUniformBlockEXT" alias="VkWriteDescriptorSetInlineUniformBlock"/>
-        <type category="struct" name="VkDescriptorPoolInlineUniformBlockCreateInfo" structextends="VkDescriptorPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>uint32_t</type>                    <name>maxInlineUniformBlockBindings</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorPoolInlineUniformBlockCreateInfoEXT" alias="VkDescriptorPoolInlineUniformBlockCreateInfo"/>
-        <type category="struct" name="VkPipelineCoverageModulationStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                      <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCoverageModulationStateCreateFlagsNV</type>                   <name>flags</name></member>
-            <member><type>VkCoverageModulationModeNV</type>                                                       <name>coverageModulationMode</name></member>
-            <member><type>VkBool32</type>                                                                         <name>coverageModulationTableEnable</name></member>
-            <member optional="true"><type>uint32_t</type>                                                         <name>coverageModulationTableCount</name></member>
-            <member noautovalidity="true" optional="true" len="coverageModulationTableCount">const <type>float</type>* <name>pCoverageModulationTable</name></member>
-        </type>
-        <type category="struct" name="VkImageFormatListCreateInfo" structextends="VkImageCreateInfo,VkSwapchainCreateInfoKHR,VkPhysicalDeviceImageFormatInfo2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>viewFormatCount</name></member>
-            <member len="viewFormatCount">const <type>VkFormat</type>*  <name>pViewFormats</name></member>
-        </type>
-        <type category="struct" name="VkImageFormatListCreateInfoKHR"                          alias="VkImageFormatListCreateInfo"/>
-        <type category="struct" name="VkValidationCacheCreateInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkValidationCacheCreateFlagsEXT</type>    <name>flags</name></member>
-            <member optional="true"><type>size_t</type>                 <name>initialDataSize</name></member>
-            <member len="initialDataSize">const <type>void</type>*            <name>pInitialData</name></member>
-        </type>
-        <type category="struct" name="VkShaderModuleValidationCacheCreateInfoEXT" structextends="VkShaderModuleCreateInfo,VkPipelineShaderStageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkValidationCacheEXT</type>    <name>validationCache</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMaintenance3Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerSetDescriptors</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                     <name>maxMemoryAllocationSize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMaintenance3PropertiesKHR"               alias="VkPhysicalDeviceMaintenance3Properties"/>
-        <type category="struct" name="VkPhysicalDeviceMaintenance4Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                                         <name>maintenance4</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMaintenance4FeaturesKHR" alias="VkPhysicalDeviceMaintenance4Features"/>
-        <type category="struct" name="VkPhysicalDeviceMaintenance4Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                     <name>maxBufferSize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMaintenance4PropertiesKHR" alias="VkPhysicalDeviceMaintenance4Properties"/>
-        <type category="struct" name="VkPhysicalDeviceMaintenance5FeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                                         <name>maintenance5</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMaintenance5PropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                     <name>earlyFragmentMultisampleCoverageAfterSampleCounting</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                     <name>earlyFragmentSampleMaskTestBeforeSampleCounting</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                     <name>depthStencilSwizzleOneSupport</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                     <name>polygonModePointSize</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                     <name>nonStrictSinglePixelWideLinesUseParallelogram</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                     <name>nonStrictWideLinesUseParallelogram</name></member>
-        </type>
-        <type category="struct" name="VkRenderingAreaInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                                   <name>viewMask</name></member>
-            <member optional="true"><type>uint32_t</type>                                                   <name>colorAttachmentCount</name></member>
-            <member noautovalidity="true" len="colorAttachmentCount">const <type>VkFormat</type>*           <name>pColorAttachmentFormats</name></member>
-            <member noautovalidity="true"><type>VkFormat</type>                                             <name>depthAttachmentFormat</name></member>
-            <member noautovalidity="true"><type>VkFormat</type>                                             <name>stencilAttachmentFormat</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetLayoutSupport" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>         <name>supported</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetLayoutSupportKHR"                         alias="VkDescriptorSetLayoutSupport"/>
-        <type category="struct" name="VkPhysicalDeviceShaderDrawParametersFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>shaderDrawParameters</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderDrawParameterFeatures"             alias="VkPhysicalDeviceShaderDrawParametersFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceShaderFloat16Int8Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>shaderFloat16</name><comment>16-bit floats (halfs) in shaders</comment></member>
-            <member><type>VkBool32</type>                         <name>shaderInt8</name><comment>8-bit integers in shaders</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderFloat16Int8FeaturesKHR"            alias="VkPhysicalDeviceShaderFloat16Int8Features"/>
-        <type category="struct" name="VkPhysicalDeviceFloat16Int8FeaturesKHR"                  alias="VkPhysicalDeviceShaderFloat16Int8Features"/>
-        <type category="struct" name="VkPhysicalDeviceFloatControlsProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="exact"><type>VkShaderFloatControlsIndependence</type> <name>denormBehaviorIndependence</name></member>
-            <member limittype="exact"><type>VkShaderFloatControlsIndependence</type> <name>roundingModeIndependence</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderSignedZeroInfNanPreserveFloat16</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderSignedZeroInfNanPreserveFloat32</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderSignedZeroInfNanPreserveFloat64</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormPreserveFloat16</name><comment>An implementation can preserve  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormPreserveFloat32</name><comment>An implementation can preserve  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormPreserveFloat64</name><comment>An implementation can preserve  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormFlushToZeroFloat16</name><comment>An implementation can flush to zero  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormFlushToZeroFloat32</name><comment>An implementation can flush to zero  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormFlushToZeroFloat64</name><comment>An implementation can flush to zero  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTEFloat16</name><comment>An implementation can support RTE</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTEFloat32</name><comment>An implementation can support RTE</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTEFloat64</name><comment>An implementation can support RTE</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTZFloat16</name><comment>An implementation can support RTZ</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTZFloat32</name><comment>An implementation can support RTZ</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTZFloat64</name><comment>An implementation can support RTZ</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFloatControlsPropertiesKHR"              alias="VkPhysicalDeviceFloatControlsProperties"/>
-        <type category="struct" name="VkPhysicalDeviceHostQueryResetFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>hostQueryReset</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceHostQueryResetFeaturesEXT"               alias="VkPhysicalDeviceHostQueryResetFeatures"/>
-        <type category="struct" name="VkNativeBufferUsage2ANDROID">
-            <member><type>uint64_t</type> <name>consumer</name></member>
-            <member><type>uint64_t</type> <name>producer</name></member>
-        </type>
-        <type category="struct" name="VkNativeBufferANDROID">
-            <member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member>const <type>void</type>* <name>handle</name></member>
-            <member><type>int</type> <name>stride</name></member>
-            <member><type>int</type> <name>format</name></member>
-            <member><type>int</type> <name>usage</name></member>
-            <member><type>VkNativeBufferUsage2ANDROID</type> <name>usage2</name></member>
-        </type>
-        <type category="struct" name="VkSwapchainImageCreateInfoANDROID">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkSwapchainImageUsageFlagsANDROID</type> <name>usage</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePresentationPropertiesANDROID">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type> <name>sharedImage</name></member>
-        </type>
-        <type category="struct" name="VkShaderResourceUsageAMD" returnedonly="true">
-            <member><type>uint32_t</type> <name>numUsedVgprs</name></member>
-            <member><type>uint32_t</type> <name>numUsedSgprs</name></member>
-            <member><type>uint32_t</type> <name>ldsSizePerLocalWorkGroup</name></member>
-            <member><type>size_t</type> <name>ldsUsageSizeInBytes</name></member>
-            <member><type>size_t</type> <name>scratchMemUsageInBytes</name></member>
-        </type>
-        <type category="struct" name="VkShaderStatisticsInfoAMD" returnedonly="true">
-            <member><type>VkShaderStageFlags</type> <name>shaderStageMask</name></member>
-            <member><type>VkShaderResourceUsageAMD</type> <name>resourceUsage</name></member>
-            <member><type>uint32_t</type> <name>numPhysicalVgprs</name></member>
-            <member><type>uint32_t</type> <name>numPhysicalSgprs</name></member>
-            <member><type>uint32_t</type> <name>numAvailableVgprs</name></member>
-            <member><type>uint32_t</type> <name>numAvailableSgprs</name></member>
-            <member><type>uint32_t</type> <name>computeWorkGroupSize</name>[3]</member>
-        </type>
-        <type category="struct" name="VkDeviceQueueGlobalPriorityCreateInfoKHR" structextends="VkDeviceQueueCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member><type>VkQueueGlobalPriorityKHR</type>       <name>globalPriority</name></member>
-        </type>
-        <type category="struct" name="VkDeviceQueueGlobalPriorityCreateInfoEXT" alias="VkDeviceQueueGlobalPriorityCreateInfoKHR"/>
-        <type category="struct" name="VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type>                    <name>globalPriorityQuery</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT" alias="VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR"/>
-        <type category="struct" name="VkQueueFamilyGlobalPriorityPropertiesKHR" structextends="VkQueueFamilyProperties2">
-            <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                     <name>priorityCount</name></member>
-            <member limittype="bitmask"><type>VkQueueGlobalPriorityKHR</type> <name>priorities</name>[<enum>VK_MAX_GLOBAL_PRIORITY_SIZE_KHR</enum>]</member>
-        </type>
-        <type category="struct" name="VkQueueFamilyGlobalPriorityPropertiesEXT" alias="VkQueueFamilyGlobalPriorityPropertiesKHR"/>
-        <type category="struct" name="VkDebugUtilsObjectNameInfoEXT" structextends="VkPipelineShaderStageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member><type>VkObjectType</type>                                           <name>objectType</name></member>
-            <member objecttype="objectType"><type>uint64_t</type>                                               <name>objectHandle</name></member>
-            <member optional="true" len="null-terminated">const <type>char</type>*      <name>pObjectName</name></member>
-        </type>
-        <type category="struct" name="VkDebugUtilsObjectTagInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkObjectType</type>                           <name>objectType</name></member>
-            <member objecttype="objectType"><type>uint64_t</type>                               <name>objectHandle</name></member>
-            <member><type>uint64_t</type>                               <name>tagName</name></member>
-            <member><type>size_t</type>                                 <name>tagSize</name></member>
-            <member len="tagSize">const <type>void</type>*              <name>pTag</name></member>
-        </type>
-        <type category="struct" name="VkDebugUtilsLabelEXT">
-            <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member len="null-terminated">const <type>char</type>*      <name>pLabelName</name></member>
-            <member><type>float</type>                  <name>color</name>[4]</member>
-        </type>
-        <type category="struct" name="VkDebugUtilsMessengerCreateInfoEXT" allowduplicate="true" structextends="VkInstanceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                          <name>pNext</name></member>
-            <member optional="true"><type>VkDebugUtilsMessengerCreateFlagsEXT</type>  <name>flags</name></member>
-            <member><type>VkDebugUtilsMessageSeverityFlagsEXT</type>                  <name>messageSeverity</name></member>
-            <member><type>VkDebugUtilsMessageTypeFlagsEXT</type>                      <name>messageType</name></member>
-            <member><type>PFN_vkDebugUtilsMessengerCallbackEXT</type>                 <name>pfnUserCallback</name></member>
-            <member optional="true"><type>void</type>*                                <name>pUserData</name></member>
-        </type>
-        <type category="struct" name="VkDebugUtilsMessengerCallbackDataEXT">
-            <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                        <name>pNext</name></member>
-            <member optional="true"><type>VkDebugUtilsMessengerCallbackDataFlagsEXT</type>                          <name>flags</name></member>
-            <member optional="true" len="null-terminated">const <type>char</type>*                                  <name>pMessageIdName</name></member>
-            <member><type>int32_t</type>                                                            <name>messageIdNumber</name></member>
-            <member len="null-terminated">const <type>char</type>*                                                  <name>pMessage</name></member>
-            <member optional="true"><type>uint32_t</type>                                                           <name>queueLabelCount</name></member>
-            <member len="queueLabelCount">const <type>VkDebugUtilsLabelEXT</type>*                  <name>pQueueLabels</name></member>
-            <member optional="true"><type>uint32_t</type>                                                           <name>cmdBufLabelCount</name></member>
-            <member len="cmdBufLabelCount">const <type>VkDebugUtilsLabelEXT</type>*                 <name>pCmdBufLabels</name></member>
-            <member optional="true"><type>uint32_t</type>                                                           <name>objectCount</name></member>
-            <member len="objectCount">const <type>VkDebugUtilsObjectNameInfoEXT</type>*             <name>pObjects</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDeviceMemoryReportFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type>                    <name>deviceMemoryReport</name></member>
-        </type>
-        <type category="struct" name="VkDeviceDeviceMemoryReportCreateInfoEXT" allowduplicate="true" structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*         <name>pNext</name></member>
-            <member><type>VkDeviceMemoryReportFlagsEXT</type>        <name>flags</name></member>
-            <member><type>PFN_vkDeviceMemoryReportCallbackEXT</type> <name>pfnUserCallback</name></member>
-            <member><type>void</type>*                               <name>pUserData</name></member>
-        </type>
-        <type category="struct" name="VkDeviceMemoryReportCallbackDataEXT" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkDeviceMemoryReportFlagsEXT</type>     <name>flags</name></member>
-            <member><type>VkDeviceMemoryReportEventTypeEXT</type> <name>type</name></member>
-            <member><type>uint64_t</type>                         <name>memoryObjectId</name></member>
-            <member><type>VkDeviceSize</type>                     <name>size</name></member>
-            <member><type>VkObjectType</type>                     <name>objectType</name></member>
-            <member objecttype="objectType"><type>uint64_t</type> <name>objectHandle</name></member>
-            <member><type>uint32_t</type>                         <name>heapIndex</name></member>
-        </type>
-        <type category="struct" name="VkImportMemoryHostPointerInfoEXT" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-            <member><type>void</type>* <name>pHostPointer</name></member>
-        </type>
-        <type category="struct" name="VkMemoryHostPointerPropertiesEXT" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>uint32_t</type> <name>memoryTypeBits</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalMemoryHostPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type> <name>minImportedHostPointerAlignment</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceConservativeRasterizationPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="exact"><type>float</type>                 <name>primitiveOverestimationSize</name><comment>The size in pixels the primitive is enlarged at each edge during conservative rasterization</comment></member>
-            <member limittype="max"><type>float</type>                      <name>maxExtraPrimitiveOverestimationSize</name><comment>The maximum additional overestimation the client can specify in the pipeline state</comment></member>
-            <member limittype="min,mul"><type>float</type>                   <name>extraPrimitiveOverestimationSizeGranularity</name><comment>The granularity of extra overestimation sizes the implementations supports between 0 and maxExtraOverestimationSize</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>primitiveUnderestimation</name><comment>true if the implementation supports conservative rasterization underestimation mode</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>conservativePointAndLineRasterization</name><comment>true if conservative rasterization also applies to points and lines</comment></member>
-            <member limittype="exact"><type>VkBool32</type>              <name>degenerateTrianglesRasterized</name><comment>true if degenerate triangles (those with zero area after snap) are rasterized</comment></member>
-            <member limittype="exact"><type>VkBool32</type>              <name>degenerateLinesRasterized</name><comment>true if degenerate lines (those with zero length after snap) are rasterized</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>fullyCoveredFragmentShaderInputVariable</name><comment>true if the implementation supports the FullyCoveredEXT SPIR-V builtin fragment shader input variable</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>conservativeRasterizationPostDepthCoverage</name><comment>true if the implementation supports both conservative rasterization and post depth coverage sample coverage mask</comment></member>
-        </type>
-        <type category="struct" name="VkCalibratedTimestampInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkTimeDomainEXT</type>        <name>timeDomain</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderCorePropertiesAMD" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member limittype="exact"><type>uint32_t</type> <name>shaderEngineCount</name><comment>number of shader engines</comment></member>
-            <member limittype="exact"><type>uint32_t</type> <name>shaderArraysPerEngineCount</name><comment>number of shader arrays</comment></member>
-            <member limittype="exact"><type>uint32_t</type> <name>computeUnitsPerShaderArray</name><comment>number of physical CUs per shader array</comment></member>
-            <member limittype="exact"><type>uint32_t</type> <name>simdPerComputeUnit</name><comment>number of SIMDs per compute unit</comment></member>
-            <member limittype="exact"><type>uint32_t</type> <name>wavefrontsPerSimd</name><comment>number of wavefront slots in each SIMD</comment></member>
-            <member limittype="max"><type>uint32_t</type>      <name>wavefrontSize</name><comment>maximum number of threads per wavefront</comment></member>
-            <member limittype="exact"><type>uint32_t</type> <name>sgprsPerSimd</name><comment>number of physical SGPRs per SIMD</comment></member>
-            <member limittype="min"><type>uint32_t</type>      <name>minSgprAllocation</name><comment>minimum number of SGPRs that can be allocated by a wave</comment></member>
-            <member limittype="max"><type>uint32_t</type>      <name>maxSgprAllocation</name><comment>number of available SGPRs</comment></member>
-            <member limittype="min,mul"><type>uint32_t</type>   <name>sgprAllocationGranularity</name><comment>SGPRs are allocated in groups of this size</comment></member>
-            <member limittype="exact"><type>uint32_t</type> <name>vgprsPerSimd</name><comment>number of physical VGPRs per SIMD</comment></member>
-            <member limittype="min"><type>uint32_t</type>      <name>minVgprAllocation</name><comment>minimum number of VGPRs that can be allocated by a wave</comment></member>
-            <member limittype="max"><type>uint32_t</type>      <name>maxVgprAllocation</name><comment>number of available VGPRs</comment></member>
-            <member limittype="min,mul"><type>uint32_t</type>   <name>vgprAllocationGranularity</name><comment>VGPRs are allocated in groups of this size</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderCoreProperties2AMD" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name><comment>Pointer to next structure</comment></member>
-            <member limittype="bitmask"><type>VkShaderCorePropertiesFlagsAMD</type> <name>shaderCoreFeatures</name><comment>features supported by the shader core</comment></member>
-            <member limittype="max"><type>uint32_t</type> <name>activeComputeUnitCount</name><comment>number of active compute units across all shader engines/arrays</comment></member>
-        </type>
-        <type category="struct" name="VkPipelineRasterizationConservativeStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                      <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineRasterizationConservativeStateCreateFlagsEXT</type>           <name>flags</name><comment>Reserved</comment></member>
-            <member><type>VkConservativeRasterizationModeEXT</type>                                               <name>conservativeRasterizationMode</name><comment>Conservative rasterization mode</comment></member>
-            <member><type>float</type>                                                                            <name>extraPrimitiveOverestimationSize</name><comment>Extra overestimation to add to the primitive</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>shaderInputAttachmentArrayDynamicIndexing</name></member>
-            <member><type>VkBool32</type>               <name>shaderUniformTexelBufferArrayDynamicIndexing</name></member>
-            <member><type>VkBool32</type>               <name>shaderStorageTexelBufferArrayDynamicIndexing</name></member>
-            <member><type>VkBool32</type>               <name>shaderUniformBufferArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>               <name>shaderSampledImageArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>               <name>shaderStorageBufferArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>               <name>shaderStorageImageArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>               <name>shaderInputAttachmentArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>               <name>shaderUniformTexelBufferArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>               <name>shaderStorageTexelBufferArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingUniformBufferUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingSampledImageUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingStorageImageUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingStorageBufferUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingUniformTexelBufferUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingStorageTexelBufferUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingUpdateUnusedWhilePending</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingPartiallyBound</name></member>
-            <member><type>VkBool32</type>               <name>descriptorBindingVariableDescriptorCount</name></member>
-            <member><type>VkBool32</type>               <name>runtimeDescriptorArray</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"           alias="VkPhysicalDeviceDescriptorIndexingFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceDescriptorIndexingProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxUpdateAfterBindDescriptorsInAllPools</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>shaderUniformBufferArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>shaderSampledImageArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>shaderStorageBufferArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>shaderStorageImageArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>shaderInputAttachmentArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>robustBufferAccessUpdateAfterBind</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>quadDivergentImplicitLod</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorUpdateAfterBindSamplers</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorUpdateAfterBindUniformBuffers</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorUpdateAfterBindStorageBuffers</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorUpdateAfterBindSampledImages</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorUpdateAfterBindStorageImages</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageDescriptorUpdateAfterBindInputAttachments</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxPerStageUpdateAfterBindResources</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUpdateAfterBindSamplers</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUpdateAfterBindUniformBuffers</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUpdateAfterBindStorageBuffers</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUpdateAfterBindSampledImages</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUpdateAfterBindStorageImages</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxDescriptorSetUpdateAfterBindInputAttachments</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT"         alias="VkPhysicalDeviceDescriptorIndexingProperties"/>
-        <type category="struct" name="VkDescriptorSetLayoutBindingFlagsCreateInfo" structextends="VkDescriptorSetLayoutCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                        <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                           <name>bindingCount</name></member>
-            <member len="bindingCount" optional="false,true">const <type>VkDescriptorBindingFlags</type>* <name>pBindingFlags</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetLayoutBindingFlagsCreateInfoEXT"          alias="VkDescriptorSetLayoutBindingFlagsCreateInfo"/>
-        <type category="struct" name="VkDescriptorSetVariableDescriptorCountAllocateInfo" structextends="VkDescriptorSetAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>descriptorSetCount</name></member>
-            <member len="descriptorSetCount">const <type>uint32_t</type>* <name>pDescriptorCounts</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetVariableDescriptorCountAllocateInfoEXT"   alias="VkDescriptorSetVariableDescriptorCountAllocateInfo"/>
-        <type category="struct" name="VkDescriptorSetVariableDescriptorCountLayoutSupport" structextends="VkDescriptorSetLayoutSupport" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>uint32_t</type>         <name>maxVariableDescriptorCount</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT"  alias="VkDescriptorSetVariableDescriptorCountLayoutSupport"/>
-        <type category="struct" name="VkAttachmentDescription2">
-            <member values="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="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="VkAttachmentDescription2KHR"                             alias="VkAttachmentDescription2"/>
-        <type category="struct" name="VkAttachmentReference2">
-            <member values="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="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="VkAttachmentReference2KHR"                               alias="VkAttachmentReference2"/>
-        <type category="struct" name="VkSubpassDescription2">
-            <member values="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="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>VkAttachmentReference2</type>*    <name>pInputAttachments</name></member>
-            <member optional="true"><type>uint32_t</type>                                    <name>colorAttachmentCount</name></member>
-            <member len="colorAttachmentCount">const <type>VkAttachmentReference2</type>*    <name>pColorAttachments</name></member>
-            <member optional="true" len="colorAttachmentCount">const <type>VkAttachmentReference2</type>* <name>pResolveAttachments</name></member>
-            <member optional="true">const <type>VkAttachmentReference2</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="VkSubpassDescription2KHR"                                alias="VkSubpassDescription2"/>
-        <type category="struct" name="VkSubpassDependency2">
-            <member values="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="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 optional="true"><type>VkPipelineStageFlags</type> <name>srcStageMask</name></member>
-            <member optional="true"><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><type>int32_t</type>                           <name>viewOffset</name></member>
-        </type>
-        <type category="struct" name="VkSubpassDependency2KHR"                                 alias="VkSubpassDependency2"/>
-        <type category="struct" name="VkRenderPassCreateInfo2">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">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>VkAttachmentDescription2</type>*    <name>pAttachments</name></member>
-            <member><type>uint32_t</type>                                                 <name>subpassCount</name></member>
-            <member len="subpassCount">const <type>VkSubpassDescription2</type>*          <name>pSubpasses</name></member>
-            <member optional="true"><type>uint32_t</type>                                 <name>dependencyCount</name></member>
-            <member len="dependencyCount">const <type>VkSubpassDependency2</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="VkRenderPassCreateInfo2KHR"                              alias="VkRenderPassCreateInfo2"/>
-        <type category="struct" name="VkSubpassBeginInfo">
-            <member values="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkSubpassContents</type>      <name>contents</name></member>
-        </type>
-        <type category="struct" name="VkSubpassBeginInfoKHR"                                   alias="VkSubpassBeginInfo"/>
-        <type category="struct" name="VkSubpassEndInfo">
-            <member values="VK_STRUCTURE_TYPE_SUBPASS_END_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-        </type>
-        <type category="struct" name="VkSubpassEndInfoKHR"                                     alias="VkSubpassEndInfo"/>
-        <type category="struct" name="VkPhysicalDeviceTimelineSemaphoreFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>timelineSemaphore</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceTimelineSemaphoreFeaturesKHR"            alias="VkPhysicalDeviceTimelineSemaphoreFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceTimelineSemaphoreProperties" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="max"><type>uint64_t</type>               <name>maxTimelineSemaphoreValueDifference</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceTimelineSemaphorePropertiesKHR"          alias="VkPhysicalDeviceTimelineSemaphoreProperties"/>
-        <type category="struct" name="VkSemaphoreTypeCreateInfo" structextends="VkSemaphoreCreateInfo,VkPhysicalDeviceExternalSemaphoreInfo">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkSemaphoreType</type>        <name>semaphoreType</name></member>
-            <member><type>uint64_t</type>               <name>initialValue</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreTypeCreateInfoKHR"                            alias="VkSemaphoreTypeCreateInfo"/>
-        <type category="struct" name="VkTimelineSemaphoreSubmitInfo" structextends="VkSubmitInfo,VkBindSparseInfo">
-            <member values="VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>waitSemaphoreValueCount</name></member>
-            <member optional="true" len="waitSemaphoreValueCount">const <type>uint64_t</type>* <name>pWaitSemaphoreValues</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>signalSemaphoreValueCount</name></member>
-            <member optional="true" len="signalSemaphoreValueCount">const <type>uint64_t</type>* <name>pSignalSemaphoreValues</name></member>
-        </type>
-        <type category="struct" name="VkTimelineSemaphoreSubmitInfoKHR"                        alias="VkTimelineSemaphoreSubmitInfo"/>
-        <type category="struct" name="VkSemaphoreWaitInfo">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkSemaphoreWaitFlags</type> <name>flags</name></member>
-            <member><type>uint32_t</type>               <name>semaphoreCount</name></member>
-            <member len="semaphoreCount">const <type>VkSemaphore</type>* <name>pSemaphores</name></member>
-            <member len="semaphoreCount">const <type>uint64_t</type>*    <name>pValues</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreWaitInfoKHR"                                  alias="VkSemaphoreWaitInfo"/>
-        <type category="struct" name="VkSemaphoreSignalInfo">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkSemaphore</type>            <name>semaphore</name></member>
-            <member><type>uint64_t</type>               <name>value</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreSignalInfoKHR"                                alias="VkSemaphoreSignalInfo"/>
-        <type category="struct" name="VkVertexInputBindingDivisorDescriptionEXT">
-            <member><type>uint32_t</type>          <name>binding</name></member>
-            <member><type>uint32_t</type>          <name>divisor</name></member>
-        </type>
-        <type category="struct" name="VkPipelineVertexInputDivisorStateCreateInfoEXT" structextends="VkPipelineVertexInputStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                         <name>pNext</name></member>
-            <member><type>uint32_t</type>                            <name>vertexBindingDivisorCount</name></member>
-            <member len="vertexBindingDivisorCount">const <type>VkVertexInputBindingDivisorDescriptionEXT</type>*      <name>pVertexBindingDivisors</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxVertexAttribDivisor</name><comment>max value of vertex attribute divisor</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePCIBusInfoPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="noauto"><type>uint32_t</type>               <name>pciDomain</name></member>
-            <member limittype="noauto"><type>uint32_t</type>               <name>pciBus</name></member>
-            <member limittype="noauto"><type>uint32_t</type>               <name>pciDevice</name></member>
-            <member limittype="noauto"><type>uint32_t</type>               <name>pciFunction</name></member>
-        </type>
-        <type category="struct" name="VkImportAndroidHardwareBufferInfoANDROID" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member>struct <type>AHardwareBuffer</type>*            <name>buffer</name></member>
-        </type>
-        <type category="struct" name="VkAndroidHardwareBufferUsageANDROID" structextends="VkImageFormatProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>uint64_t</type>                           <name>androidHardwareBufferUsage</name></member>
-        </type>
-        <type category="struct" name="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                       <name>allocationSize</name></member>
-            <member><type>uint32_t</type>                           <name>memoryTypeBits</name></member>
-        </type>
-        <type category="struct" name="VkMemoryGetAndroidHardwareBufferInfoANDROID">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>                     <name>memory</name></member>
-        </type>
-        <type category="struct" name="VkAndroidHardwareBufferFormatPropertiesANDROID" structextends="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>VkFormat</type>                           <name>format</name></member>
-            <member><type>uint64_t</type>                           <name>externalFormat</name></member>
-            <member><type>VkFormatFeatureFlags</type>               <name>formatFeatures</name></member>
-            <member><type>VkComponentMapping</type>                 <name>samplerYcbcrConversionComponents</name></member>
-            <member><type>VkSamplerYcbcrModelConversion</type>      <name>suggestedYcbcrModel</name></member>
-            <member><type>VkSamplerYcbcrRange</type>                <name>suggestedYcbcrRange</name></member>
-            <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 optional="true">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,VkAttachmentDescription2,VkGraphicsPipelineCreateInfo,VkCommandBufferInheritanceInfo">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>uint64_t</type>                           <name>externalFormat</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevice8BitStorageFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="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="VkPhysicalDevice8BitStorageFeaturesKHR"                  alias="VkPhysicalDevice8BitStorageFeatures"/>
-        <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 optional="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>
-        <type category="struct" name="VkPhysicalDeviceVulkanMemoryModelFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>vulkanMemoryModel</name></member>
-            <member><type>VkBool32</type>                         <name>vulkanMemoryModelDeviceScope</name></member>
-            <member><type>VkBool32</type>                         <name>vulkanMemoryModelAvailabilityVisibilityChains</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVulkanMemoryModelFeaturesKHR"            alias="VkPhysicalDeviceVulkanMemoryModelFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceShaderAtomicInt64Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferInt64Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedInt64Atomics</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderAtomicInt64FeaturesKHR"            alias="VkPhysicalDeviceShaderAtomicInt64Features"/>
-        <type category="struct" name="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferFloat32Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferFloat32AtomicAdd</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferFloat64Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferFloat64AtomicAdd</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedFloat32Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedFloat32AtomicAdd</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedFloat64Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedFloat64AtomicAdd</name></member>
-            <member><type>VkBool32</type>                            <name>shaderImageFloat32Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>shaderImageFloat32AtomicAdd</name></member>
-            <member><type>VkBool32</type>                            <name>sparseImageFloat32Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>sparseImageFloat32AtomicAdd</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferFloat16Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferFloat16AtomicAdd</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferFloat16AtomicMinMax</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferFloat32AtomicMinMax</name></member>
-            <member><type>VkBool32</type>                            <name>shaderBufferFloat64AtomicMinMax</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedFloat16Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedFloat16AtomicAdd</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedFloat16AtomicMinMax</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedFloat32AtomicMinMax</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSharedFloat64AtomicMinMax</name></member>
-            <member><type>VkBool32</type>                            <name>shaderImageFloat32AtomicMinMax</name></member>
-            <member><type>VkBool32</type>                            <name>sparseImageFloat32AtomicMinMax</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>vertexAttributeInstanceRateDivisor</name></member>
-            <member><type>VkBool32</type>                           <name>vertexAttributeInstanceRateZeroDivisor</name></member>
-        </type>
-        <type category="struct" name="VkQueueFamilyCheckpointPropertiesNV" structextends="VkQueueFamilyProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*           <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkPipelineStageFlags</type> <name>checkpointExecutionStageMask</name></member>
-        </type>
-        <type category="struct" name="VkCheckpointDataNV" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkPipelineStageFlagBits</type>   <name>stage</name></member>
-            <member noautovalidity="true"><type>void</type>* <name>pCheckpointMarker</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDepthStencilResolveProperties" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkResolveModeFlags</type>                   <name>supportedDepthResolveModes</name><comment>supported depth resolve modes</comment></member>
-            <member limittype="bitmask"><type>VkResolveModeFlags</type>                   <name>supportedStencilResolveModes</name><comment>supported stencil resolve modes</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                             <name>independentResolveNone</name><comment>depth and stencil resolve modes can be set independently if one of them is none</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                             <name>independentResolve</name><comment>depth and stencil resolve modes can be set independently</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDepthStencilResolvePropertiesKHR"        alias="VkPhysicalDeviceDepthStencilResolveProperties"/>
-        <type category="struct" name="VkSubpassDescriptionDepthStencilResolve" structextends="VkSubpassDescription2">
-            <member values="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                              <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkResolveModeFlagBits</type>              <name>depthResolveMode</name><comment>depth resolve mode</comment></member>
-            <member noautovalidity="true"><type>VkResolveModeFlagBits</type>              <name>stencilResolveMode</name><comment>stencil resolve mode</comment></member>
-            <member optional="true">const <type>VkAttachmentReference2</type>*            <name>pDepthStencilResolveAttachment</name><comment>depth/stencil resolve attachment</comment></member>
-        </type>
-        <type category="struct" name="VkSubpassDescriptionDepthStencilResolveKHR"              alias="VkSubpassDescriptionDepthStencilResolve"/>
-        <type category="struct" name="VkImageViewASTCDecodeModeEXT" structextends="VkImageViewCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkFormat</type>                         <name>decodeMode</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceASTCDecodeFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>decodeModeSharedExponent</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceTransformFeedbackFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>transformFeedback</name></member>
-            <member><type>VkBool32</type>               <name>geometryStreams</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceTransformFeedbackPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTransformFeedbackStreams</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTransformFeedbackBuffers</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>           <name>maxTransformFeedbackBufferSize</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTransformFeedbackStreamDataSize</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTransformFeedbackBufferDataSize</name></member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxTransformFeedbackBufferDataStride</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>transformFeedbackQueries</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>transformFeedbackStreamsLinesTriangles</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>transformFeedbackRasterizationStreamSelect</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>transformFeedbackDraw</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRasterizationStateStreamCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                      <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineRasterizationStateStreamCreateFlagsEXT</type>                 <name>flags</name></member>
-            <member><type>uint32_t</type>                                                                         <name>rasterizationStream</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>representativeFragmentTest</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRepresentativeFragmentTestStateCreateInfoNV" structextends="VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>       <name>representativeFragmentTestEnable</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExclusiveScissorFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>exclusiveScissor</name></member>
-        </type>
-        <type category="struct" name="VkPipelineViewportExclusiveScissorStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                       <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                          <name>exclusiveScissorCount</name></member>
-            <member noautovalidity="true" len="exclusiveScissorCount">const <type>VkRect2D</type>* <name>pExclusiveScissors</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCornerSampledImageFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>cornerSampledImage</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>computeDerivativeGroupQuads</name></member>
-            <member><type>VkBool32</type>                         <name>computeDerivativeGroupLinear</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV"   alias="VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR"/>
-        <type category="struct" name="VkPhysicalDeviceShaderImageFootprintFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>imageFootprint</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>dedicatedAllocationImageAliasing</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCopyMemoryIndirectFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>indirectCopy</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCopyMemoryIndirectPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*     <name>pNext</name></member>
-            <member limittype="bitmask" noautovalidity="true"><type>VkQueueFlags</type>        <name>supportedQueues</name><comment>Bitfield of which queues are supported for indirect copy</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMemoryDecompressionFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*       <name>pNext</name></member>
-            <member><type>VkBool32</type>                    <name>memoryDecompression</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMemoryDecompressionPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*     <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkMemoryDecompressionMethodFlagsNV</type>    <name>decompressionMethods</name></member>
-            <member limittype="max"><type>uint64_t</type>             <name>maxDecompressionIndirectCount</name></member>
-        </type>
-        <type category="struct" name="VkShadingRatePaletteNV">
-            <member><type>uint32_t</type>                                                               <name>shadingRatePaletteEntryCount</name></member>
-            <member len="shadingRatePaletteEntryCount">const <type>VkShadingRatePaletteEntryNV</type>*  <name>pShadingRatePaletteEntries</name></member>
-        </type>
-        <type category="struct" name="VkPipelineViewportShadingRateImageStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                             <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                <name>shadingRateImageEnable</name></member>
-            <member optional="true"><type>uint32_t</type>                                                <name>viewportCount</name></member>
-            <member noautovalidity="true" len="viewportCount">const <type>VkShadingRatePaletteNV</type>* <name>pShadingRatePalettes</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShadingRateImageFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>shadingRateImage</name></member>
-            <member><type>VkBool32</type>                            <name>shadingRateCoarseSampleOrder</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShadingRateImagePropertiesNV" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="exact"><type>VkExtent2D</type>                     <name>shadingRateTexelSize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>shadingRatePaletteSize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>shadingRateMaxCoarseSamples</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceInvocationMaskFeaturesHUAWEI" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>invocationMask</name></member>
-        </type>
-        <type category="struct" name="VkCoarseSampleLocationNV">
-            <member><type>uint32_t</type>                            <name>pixelX</name></member>
-            <member><type>uint32_t</type>                            <name>pixelY</name></member>
-            <member><type>uint32_t</type>                            <name>sample</name></member>
-        </type>
-        <type category="struct" name="VkCoarseSampleOrderCustomNV">
-            <member><type>VkShadingRatePaletteEntryNV</type>         <name>shadingRate</name></member>
-            <member><type>uint32_t</type>                            <name>sampleCount</name></member>
-            <member><type>uint32_t</type>                            <name>sampleLocationCount</name></member>
-            <member len="sampleLocationCount">const <type>VkCoarseSampleLocationNV</type>* <name>pSampleLocations</name></member>
-        </type>
-        <type category="struct" name="VkPipelineViewportCoarseSampleOrderStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                            <name>pNext</name></member>
-            <member><type>VkCoarseSampleOrderTypeNV</type>                                              <name>sampleOrderType</name></member>
-            <member optional="true"><type>uint32_t</type>                                               <name>customSampleOrderCount</name></member>
-            <member len="customSampleOrderCount">const <type>VkCoarseSampleOrderCustomNV</type>*        <name>pCustomSampleOrders</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMeshShaderFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>taskShader</name></member>
-            <member><type>VkBool32</type>                            <name>meshShader</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMeshShaderPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxDrawMeshTasksCount</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskWorkGroupInvocations</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskWorkGroupSize</name>[3]</member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskTotalMemorySize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskOutputCount</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshWorkGroupInvocations</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshWorkGroupSize</name>[3]</member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshTotalMemorySize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshOutputVertices</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshOutputPrimitives</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshMultiviewViewCount</name></member>
-            <member limittype="min,mul"><type>uint32_t</type>                         <name>meshOutputPerVertexGranularity</name></member>
-            <member limittype="min,mul"><type>uint32_t</type>                         <name>meshOutputPerPrimitiveGranularity</name></member>
-        </type>
-        <type category="struct" name="VkDrawMeshTasksIndirectCommandNV">
-            <member><type>uint32_t</type>               <name>taskCount</name></member>
-            <member><type>uint32_t</type>               <name>firstTask</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMeshShaderFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>taskShader</name></member>
-            <member><type>VkBool32</type>                            <name>meshShader</name></member>
-            <member><type>VkBool32</type>                            <name>multiviewMeshShader</name></member>
-            <member><type>VkBool32</type>                            <name>primitiveFragmentShadingRateMeshShader</name></member>
-            <member><type>VkBool32</type>                            <name>meshShaderQueries</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMeshShaderPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskWorkGroupTotalCount</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskWorkGroupCount</name>[3]</member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskWorkGroupInvocations</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskWorkGroupSize</name>[3]</member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskPayloadSize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskSharedMemorySize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxTaskPayloadAndSharedMemorySize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshWorkGroupTotalCount</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshWorkGroupCount</name>[3]</member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshWorkGroupInvocations</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshWorkGroupSize</name>[3]</member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshSharedMemorySize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshPayloadAndSharedMemorySize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshOutputMemorySize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshPayloadAndOutputMemorySize</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshOutputComponents</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshOutputVertices</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshOutputPrimitives</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshOutputLayers</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxMeshMultiviewViewCount</name></member>
-            <member limittype="noauto"><type>uint32_t</type>                         <name>meshOutputPerVertexGranularity</name></member>
-            <member limittype="noauto"><type>uint32_t</type>                         <name>meshOutputPerPrimitiveGranularity</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxPreferredTaskWorkGroupInvocations</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxPreferredMeshWorkGroupInvocations</name></member>
-            <member limittype="noauto"><type>VkBool32</type>                         <name>prefersLocalInvocationVertexOutput</name></member>
-            <member limittype="noauto"><type>VkBool32</type>                         <name>prefersLocalInvocationPrimitiveOutput</name></member>
-            <member limittype="noauto"><type>VkBool32</type>                         <name>prefersCompactVertexOutput</name></member>
-            <member limittype="noauto"><type>VkBool32</type>                         <name>prefersCompactPrimitiveOutput</name></member>
-        </type>
-        <type category="struct" name="VkDrawMeshTasksIndirectCommandEXT">
-            <member noautovalidity="true"><type>uint32_t</type> <name>groupCountX</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>groupCountY</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>groupCountZ</name></member>
-        </type>
-        <type category="struct" name="VkRayTracingShaderGroupCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkRayTracingShaderGroupTypeKHR</type> <name>type</name></member>
-            <member><type>uint32_t</type>               <name>generalShader</name></member>
-            <member><type>uint32_t</type>               <name>closestHitShader</name></member>
-            <member><type>uint32_t</type>               <name>anyHitShader</name></member>
-            <member><type>uint32_t</type>               <name>intersectionShader</name></member>
-        </type>
-        <type category="struct" name="VkRayTracingShaderGroupCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkRayTracingShaderGroupTypeKHR</type> <name>type</name></member>
-            <member><type>uint32_t</type>               <name>generalShader</name></member>
-            <member><type>uint32_t</type>               <name>closestHitShader</name></member>
-            <member><type>uint32_t</type>               <name>anyHitShader</name></member>
-            <member><type>uint32_t</type>               <name>intersectionShader</name></member>
-            <member optional="true">const <type>void</type>* <name>pShaderGroupCaptureReplayHandle</name></member>
-        </type>
-        <type category="struct" name="VkRayTracingPipelineCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCreateFlags</type>  <name>flags</name><comment>Pipeline creation flags</comment></member>
-            <member><type>uint32_t</type>               <name>stageCount</name></member>
-            <member len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>* <name>pStages</name><comment>One entry for each active shader stage</comment></member>
-            <member><type>uint32_t</type>               <name>groupCount</name></member>
-            <member len="groupCount">const <type>VkRayTracingShaderGroupCreateInfoNV</type>* <name>pGroups</name></member>
-            <member><type>uint32_t</type>               <name>maxRecursionDepth</name></member>
-            <member><type>VkPipelineLayout</type>       <name>layout</name><comment>Interface layout of the pipeline</comment></member>
-            <member noautovalidity="true" optional="true"><type>VkPipeline</type>      <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member>
-            <member><type>int32_t</type>                <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member>
-        </type>
-        <type category="struct" name="VkRayTracingPipelineCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCreateFlags</type>  <name>flags</name><comment>Pipeline creation flags</comment></member>
-            <member optional="true"><type>uint32_t</type> <name>stageCount</name></member>
-            <member len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>* <name>pStages</name><comment>One entry for each active shader stage</comment></member>
-            <member optional="true"><type>uint32_t</type> <name>groupCount</name></member>
-            <member len="groupCount">const <type>VkRayTracingShaderGroupCreateInfoKHR</type>* <name>pGroups</name></member>
-            <member><type>uint32_t</type>               <name>maxPipelineRayRecursionDepth</name></member>
-            <member optional="true">const <type>VkPipelineLibraryCreateInfoKHR</type>* <name>pLibraryInfo</name></member>
-            <member optional="true">const <type>VkRayTracingPipelineInterfaceCreateInfoKHR</type>* <name>pLibraryInterface</name></member>
-            <member optional="true">const <type>VkPipelineDynamicStateCreateInfo</type>* <name>pDynamicState</name></member>
-            <member><type>VkPipelineLayout</type>       <name>layout</name><comment>Interface layout of the pipeline</comment></member>
-            <member noautovalidity="true" optional="true"><type>VkPipeline</type>      <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member>
-            <member><type>int32_t</type>                <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member>
-        </type>
-        <type category="struct" name="VkGeometryTrianglesNV">
-            <member values="VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>VkBuffer</type>   <name>vertexData</name></member>
-            <member><type>VkDeviceSize</type>               <name>vertexOffset</name></member>
-            <member><type>uint32_t</type>                   <name>vertexCount</name></member>
-            <member><type>VkDeviceSize</type>               <name>vertexStride</name></member>
-            <member><type>VkFormat</type>                   <name>vertexFormat</name></member>
-            <member optional="true"><type>VkBuffer</type>   <name>indexData</name></member>
-            <member><type>VkDeviceSize</type>               <name>indexOffset</name></member>
-            <member><type>uint32_t</type>                   <name>indexCount</name></member>
-            <member><type>VkIndexType</type>                <name>indexType</name></member>
-            <member optional="true"><type>VkBuffer</type>   <name>transformData</name><comment>Optional reference to array of floats representing a 3x4 row major affine transformation matrix.</comment></member>
-            <member><type>VkDeviceSize</type>               <name>transformOffset</name></member>
-        </type>
-        <type category="struct" name="VkGeometryAABBNV">
-            <member values="VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>VkBuffer</type>   <name>aabbData</name></member>
-            <member><type>uint32_t</type>                   <name>numAABBs</name></member>
-            <member><type>uint32_t</type>                   <name>stride</name><comment>Stride in bytes between AABBs</comment></member>
-            <member><type>VkDeviceSize</type>               <name>offset</name><comment>Offset in bytes of the first AABB in aabbData</comment></member>
-        </type>
-        <type category="struct" name="VkGeometryDataNV">
-            <member><type>VkGeometryTrianglesNV</type>                  <name>triangles</name></member>
-            <member><type>VkGeometryAABBNV</type>                       <name>aabbs</name></member>
-        </type>
-        <type category="struct" name="VkGeometryNV">
-            <member values="VK_STRUCTURE_TYPE_GEOMETRY_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                   <name>pNext</name></member>
-            <member><type>VkGeometryTypeKHR</type>                  <name>geometryType</name></member>
-            <member><type>VkGeometryDataNV</type>                              <name>geometry</name></member>
-            <member optional="true"><type>VkGeometryFlagsKHR</type> <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureInfoNV">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkAccelerationStructureTypeNV</type>         <name>type</name></member>
-            <member optional="true"><type>VkBuildAccelerationStructureFlagsNV</type> <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>instanceCount</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>geometryCount</name></member>
-            <member len="geometryCount">const <type>VkGeometryNV</type>* <name>pGeometries</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                           <name>compactedSize</name></member>
-            <member><type>VkAccelerationStructureInfoNV</type>          <name>info</name></member>
-        </type>
-        <type category="struct" name="VkBindAccelerationStructureMemoryInfoNV">
-            <member values="VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*     <name>pNext</name></member>
-            <member><type>VkAccelerationStructureNV</type>       <name>accelerationStructure</name></member>
-            <member><type>VkDeviceMemory</type>                   <name>memory</name></member>
-            <member><type>VkDeviceSize</type>                     <name>memoryOffset</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>deviceIndexCount</name></member>
-            <member len="deviceIndexCount">const <type>uint32_t</type>*  <name>pDeviceIndices</name></member>
-        </type>
-        <type category="struct" name="VkWriteDescriptorSetAccelerationStructureKHR" structextends="VkWriteDescriptorSet">
-            <member values="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>accelerationStructureCount</name></member>
-            <member optional="false,true" len="accelerationStructureCount">const <type>VkAccelerationStructureKHR</type>* <name>pAccelerationStructures</name></member>
-        </type>
-        <type category="struct" name="VkWriteDescriptorSetAccelerationStructureNV" structextends="VkWriteDescriptorSet">
-            <member values="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>accelerationStructureCount</name></member>
-            <member optional="false,true" len="accelerationStructureCount">const <type>VkAccelerationStructureNV</type>* <name>pAccelerationStructures</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureMemoryRequirementsInfoNV">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                          <name>pNext</name></member>
-            <member><type>VkAccelerationStructureMemoryRequirementsTypeNV</type>                     <name>type</name></member>
-            <member><type>VkAccelerationStructureNV</type>                                           <name>accelerationStructure</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceAccelerationStructureFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>accelerationStructure</name></member>
-            <member><type>VkBool32</type>                         <name>accelerationStructureCaptureReplay</name></member>
-            <member><type>VkBool32</type>                         <name>accelerationStructureIndirectBuild</name></member>
-            <member><type>VkBool32</type>                         <name>accelerationStructureHostCommands</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingAccelerationStructureUpdateAfterBind</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRayTracingPipelineFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>rayTracingPipeline</name></member>
-            <member><type>VkBool32</type>                         <name>rayTracingPipelineShaderGroupHandleCaptureReplay</name></member>
-            <member><type>VkBool32</type>                         <name>rayTracingPipelineShaderGroupHandleCaptureReplayMixed</name></member>
-            <member><type>VkBool32</type>                         <name>rayTracingPipelineTraceRaysIndirect</name></member>
-            <member><type>VkBool32</type>                         <name>rayTraversalPrimitiveCulling</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRayQueryFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>rayQuery</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceAccelerationStructurePropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member limittype="max"><type>uint64_t</type>                         <name>maxGeometryCount</name></member>
-            <member limittype="max"><type>uint64_t</type>                         <name>maxInstanceCount</name></member>
-            <member limittype="max"><type>uint64_t</type>                         <name>maxPrimitiveCount</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerStageDescriptorAccelerationStructures</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerStageDescriptorUpdateAfterBindAccelerationStructures</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetAccelerationStructures</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetUpdateAfterBindAccelerationStructures</name></member>
-            <member limittype="min"><type>uint32_t</type>                         <name>minAccelerationStructureScratchOffsetAlignment</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRayTracingPipelinePropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member limittype="exact"><type>uint32_t</type>                    <name>shaderGroupHandleSize</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxRayRecursionDepth</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxShaderGroupStride</name></member>
-            <member limittype="exact"><type>uint32_t</type>                    <name>shaderGroupBaseAlignment</name></member>
-            <member limittype="exact"><type>uint32_t</type>                    <name>shaderGroupHandleCaptureReplaySize</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxRayDispatchInvocationCount</name></member>
-            <member limittype="min,pot"><type>uint32_t</type>                      <name>shaderGroupHandleAlignment</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxRayHitAttributeSize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRayTracingPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="exact"><type>uint32_t</type>                    <name>shaderGroupHandleSize</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxRecursionDepth</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxShaderGroupStride</name></member>
-            <member limittype="exact"><type>uint32_t</type>                    <name>shaderGroupBaseAlignment</name></member>
-            <member limittype="max"><type>uint64_t</type>                         <name>maxGeometryCount</name></member>
-            <member limittype="max"><type>uint64_t</type>                         <name>maxInstanceCount</name></member>
-            <member limittype="max"><type>uint64_t</type>                         <name>maxTriangleCount</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetAccelerationStructures</name></member>
-        </type>
-        <type category="struct" name="VkStridedDeviceAddressRegionKHR">
-            <member optional="true"><type>VkDeviceAddress</type>  <name>deviceAddress</name></member>
-            <member><type>VkDeviceSize</type>                     <name>stride</name></member>
-            <member><type>VkDeviceSize</type>                     <name>size</name></member>
-        </type>
-        <type category="struct" name="VkTraceRaysIndirectCommandKHR">
-            <member><type>uint32_t</type>               <name>width</name></member>
-            <member><type>uint32_t</type>               <name>height</name></member>
-            <member><type>uint32_t</type>               <name>depth</name></member>
-        </type>
-        <type category="struct" name="VkTraceRaysIndirectCommand2KHR">
-            <member><type>VkDeviceAddress</type>        <name>raygenShaderRecordAddress</name></member>
-            <member><type>VkDeviceSize</type>           <name>raygenShaderRecordSize</name></member>
-            <member><type>VkDeviceAddress</type>        <name>missShaderBindingTableAddress</name></member>
-            <member><type>VkDeviceSize</type>           <name>missShaderBindingTableSize</name></member>
-            <member><type>VkDeviceSize</type>           <name>missShaderBindingTableStride</name></member>
-            <member><type>VkDeviceAddress</type>        <name>hitShaderBindingTableAddress</name></member>
-            <member><type>VkDeviceSize</type>           <name>hitShaderBindingTableSize</name></member>
-            <member><type>VkDeviceSize</type>           <name>hitShaderBindingTableStride</name></member>
-            <member><type>VkDeviceAddress</type>        <name>callableShaderBindingTableAddress</name></member>
-            <member><type>VkDeviceSize</type>           <name>callableShaderBindingTableSize</name></member>
-            <member><type>VkDeviceSize</type>           <name>callableShaderBindingTableStride</name></member>
-            <member><type>uint32_t</type>               <name>width</name></member>
-            <member><type>uint32_t</type>               <name>height</name></member>
-            <member><type>uint32_t</type>               <name>depth</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>rayTracingMaintenance1</name></member>
-            <member><type>VkBool32</type>                         <name>rayTracingPipelineTraceRaysIndirect2</name></member>
-        </type>
-        <type category="struct" name="VkDrmFormatModifierPropertiesListEXT" returnedonly="true" structextends="VkFormatProperties2">
-            <member values="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type> <name>drmFormatModifierCount</name></member>
-            <member optional="true" len="drmFormatModifierCount"><type>VkDrmFormatModifierPropertiesEXT</type>* <name>pDrmFormatModifierProperties</name></member>
-        </type>
-        <type category="struct" name="VkDrmFormatModifierPropertiesEXT" returnedonly="true">
-            <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
-            <member><type>uint32_t</type> <name>drmFormatModifierPlaneCount</name></member>
-            <member><type>VkFormatFeatureFlags</type> <name>drmFormatModifierTilingFeatures</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageDrmFormatModifierInfoEXT" structextends="VkPhysicalDeviceImageFormatInfo2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
-            <member><type>VkSharingMode</type> <name>sharingMode</name></member>
-            <member optional="true"><type>uint32_t</type> <name>queueFamilyIndexCount</name></member>
-            <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>* <name>pQueueFamilyIndices</name></member>
-        </type>
-        <type category="struct" name="VkImageDrmFormatModifierListCreateInfoEXT" structextends="VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>uint32_t</type> <name>drmFormatModifierCount</name></member>
-            <member len="drmFormatModifierCount">const <type>uint64_t</type>* <name>pDrmFormatModifiers</name></member>
-        </type>
-        <type category="struct" name="VkImageDrmFormatModifierExplicitCreateInfoEXT" structextends="VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
-            <member><type>uint32_t</type> <name>drmFormatModifierPlaneCount</name></member>
-            <member len="drmFormatModifierPlaneCount">const <type>VkSubresourceLayout</type>* <name>pPlaneLayouts</name></member>
-        </type>
-        <type category="struct" name="VkImageDrmFormatModifierPropertiesEXT" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
-        </type>
-        <type category="struct" name="VkImageStencilUsageCreateInfo" structextends="VkImageCreateInfo,VkPhysicalDeviceImageFormatInfo2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkImageUsageFlags</type> <name>stencilUsage</name></member>
-        </type>
-        <type category="struct" name="VkImageStencilUsageCreateInfoEXT"                        alias="VkImageStencilUsageCreateInfo"/>
-        <type category="struct" name="VkDeviceMemoryOverallocationCreateInfoAMD"  structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkMemoryOverallocationBehaviorAMD</type> <name>overallocationBehavior</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentDensityMapFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>fragmentDensityMap</name></member>
-            <member><type>VkBool32</type>                         <name>fragmentDensityMapDynamic</name></member>
-            <member><type>VkBool32</type>                         <name>fragmentDensityMapNonSubsampledImages</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentDensityMap2FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>fragmentDensityMapDeferred</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>fragmentDensityMapOffset</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentDensityMapPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="min"><type>VkExtent2D</type>                       <name>minFragmentDensityTexelSize</name></member>
-            <member limittype="max"><type>VkExtent2D</type>                       <name>maxFragmentDensityTexelSize</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                     <name>fragmentDensityInvocations</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentDensityMap2PropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                          <name>pNext</name></member>
-            <member limittype="exact"><type>VkBool32</type>                  <name>subsampledLoads</name></member>
-            <member limittype="exact"><type>VkBool32</type>                  <name>subsampledCoarseReconstructionEarlyAccess</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>maxSubsampledArrayLayers</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>maxDescriptorSetSubsampledSamplers</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="min,mul"><type>VkExtent2D</type>                       <name>fragmentDensityOffsetGranularity</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassFragmentDensityMapCreateInfoEXT" structextends="VkRenderPassCreateInfo,VkRenderPassCreateInfo2">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkAttachmentReference</type>            <name>fragmentDensityMapAttachment</name></member>
-        </type>
-        <type category="struct" name="VkSubpassFragmentDensityMapOffsetEndInfoQCOM" structextends="VkSubpassEndInfo">
-            <member values="VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                           <name>fragmentDensityOffsetCount</name></member>
-            <member len="fragmentDensityOffsetCount">const <type>VkOffset2D</type>* <name>pFragmentDensityOffsets</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceScalarBlockLayoutFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>scalarBlockLayout</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceScalarBlockLayoutFeaturesEXT"            alias="VkPhysicalDeviceScalarBlockLayoutFeatures"/>
-        <type category="struct" name="VkSurfaceProtectedCapabilitiesKHR" structextends="VkSurfaceCapabilities2KHR">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type> <name>supportsProtected</name><comment>Represents if surface can be protected</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceUniformBufferStandardLayoutFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>uniformBufferStandardLayout</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR"  alias="VkPhysicalDeviceUniformBufferStandardLayoutFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceDepthClipEnableFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>depthClipEnable</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRasterizationDepthClipStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                 <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineRasterizationDepthClipStateCreateFlagsEXT</type>         <name>flags</name><comment>Reserved</comment></member>
-            <member><type>VkBool32</type>                                                                    <name>depthClipEnable</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMemoryBudgetPropertiesEXT" structextends="VkPhysicalDeviceMemoryProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                       <name>heapBudget</name>[<enum>VK_MAX_MEMORY_HEAPS</enum>]</member>
-            <member><type>VkDeviceSize</type>                       <name>heapUsage</name>[<enum>VK_MAX_MEMORY_HEAPS</enum>]</member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMemoryPriorityFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>memoryPriority</name></member>
-        </type>
-        <type category="struct" name="VkMemoryPriorityAllocateInfoEXT" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member><type>float</type>                              <name>priority</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>pageableDeviceLocalMemory</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>bufferDeviceAddress</name></member>
-            <member><type>VkBool32</type>                           <name>bufferDeviceAddressCaptureReplay</name></member>
-            <member><type>VkBool32</type>                           <name>bufferDeviceAddressMultiDevice</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeaturesKHR"          alias="VkPhysicalDeviceBufferDeviceAddressFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>bufferDeviceAddress</name></member>
-            <member><type>VkBool32</type>                           <name>bufferDeviceAddressCaptureReplay</name></member>
-            <member><type>VkBool32</type>                           <name>bufferDeviceAddressMultiDevice</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceBufferAddressFeaturesEXT"                alias="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT"/>
-        <type category="struct" name="VkBufferDeviceAddressInfo">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member><type>VkBuffer</type>                                               <name>buffer</name></member>
-        </type>
-        <type category="struct" name="VkBufferDeviceAddressInfoKHR"                            alias="VkBufferDeviceAddressInfo"/>
-        <type category="struct" name="VkBufferDeviceAddressInfoEXT"                            alias="VkBufferDeviceAddressInfo"/>
-        <type category="struct" name="VkBufferOpaqueCaptureAddressCreateInfo" structextends="VkBufferCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>uint64_t</type>                         <name>opaqueCaptureAddress</name></member>
-        </type>
-        <type category="struct" name="VkBufferOpaqueCaptureAddressCreateInfoKHR"               alias="VkBufferOpaqueCaptureAddressCreateInfo"/>
-        <type category="struct" name="VkBufferDeviceAddressCreateInfoEXT" structextends="VkBufferCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDeviceAddress</type>                  <name>deviceAddress</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageViewImageFormatInfoEXT" structextends="VkPhysicalDeviceImageFormatInfo2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkImageViewType</type>                  <name>imageViewType</name></member>
-        </type>
-        <type category="struct" name="VkFilterCubicImageViewImageFormatPropertiesEXT" returnedonly="true" structextends="VkImageFormatProperties2">
-            <member values="VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>filterCubic</name><comment>The combinations of format, image type (and image view type if provided) can be filtered with VK_FILTER_CUBIC_EXT</comment></member>
-            <member><type>VkBool32</type>                         <name>filterCubicMinmax</name><comment>The combination of format, image type (and image view type if provided) can be filtered with VK_FILTER_CUBIC_EXT and ReductionMode of Min or Max</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImagelessFramebufferFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                    <name>pNext</name></member>
-            <member><type>VkBool32</type>                                 <name>imagelessFramebuffer</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImagelessFramebufferFeaturesKHR"         alias="VkPhysicalDeviceImagelessFramebufferFeatures"/>
-        <type category="struct" name="VkFramebufferAttachmentsCreateInfo" structextends="VkFramebufferCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                              <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                 <name>attachmentImageInfoCount</name></member>
-            <member len="attachmentImageInfoCount">const <type>VkFramebufferAttachmentImageInfo</type>* <name>pAttachmentImageInfos</name></member>
-        </type>
-        <type category="struct" name="VkFramebufferAttachmentsCreateInfoKHR"                   alias="VkFramebufferAttachmentsCreateInfo"/>
-        <type category="struct" name="VkFramebufferAttachmentImageInfo">
-            <member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                              <name>pNext</name></member>
-            <member optional="true"><type>VkImageCreateFlags</type>       <name>flags</name><comment>Image creation flags</comment></member>
-            <member><type>VkImageUsageFlags</type>                        <name>usage</name><comment>Image usage flags</comment></member>
-            <member><type>uint32_t</type>                                 <name>width</name></member>
-            <member><type>uint32_t</type>                                 <name>height</name></member>
-            <member><type>uint32_t</type>                                 <name>layerCount</name></member>
-            <member optional="true"><type>uint32_t</type>                 <name>viewFormatCount</name></member>
-            <member len="viewFormatCount">const <type>VkFormat</type>*    <name>pViewFormats</name></member>
-        </type>
-        <type category="struct" name="VkFramebufferAttachmentImageInfoKHR"                     alias="VkFramebufferAttachmentImageInfo"/>
-        <type category="struct" name="VkRenderPassAttachmentBeginInfo" structextends="VkRenderPassBeginInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                              <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                 <name>attachmentCount</name></member>
-            <member len="attachmentCount">const <type>VkImageView</type>* <name>pAttachments</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassAttachmentBeginInfoKHR"                      alias="VkRenderPassAttachmentBeginInfo"/>
-        <type category="struct" name="VkPhysicalDeviceTextureCompressionASTCHDRFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>textureCompressionASTC_HDR</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT" alias="VkPhysicalDeviceTextureCompressionASTCHDRFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceCooperativeMatrixFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>cooperativeMatrix</name></member>
-            <member><type>VkBool32</type>                            <name>cooperativeMatrixRobustBufferAccess</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCooperativeMatrixPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkShaderStageFlags</type>                  <name>cooperativeMatrixSupportedStages</name></member>
-        </type>
-        <type category="struct" name="VkCooperativeMatrixPropertiesNV">
-            <member values="VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>uint32_t</type>                            <name>MSize</name></member>
-            <member><type>uint32_t</type>                            <name>NSize</name></member>
-            <member><type>uint32_t</type>                            <name>KSize</name></member>
-            <member><type>VkComponentTypeNV</type>                   <name>AType</name></member>
-            <member><type>VkComponentTypeNV</type>                   <name>BType</name></member>
-            <member><type>VkComponentTypeNV</type>                   <name>CType</name></member>
-            <member><type>VkComponentTypeNV</type>                   <name>DType</name></member>
-            <member><type>VkScopeNV</type>                           <name>scope</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceYcbcrImageArraysFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>ycbcrImageArrays</name></member>
-        </type>
-        <type category="struct" name="VkImageViewHandleInfoNVX">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkImageView</type>                         <name>imageView</name></member>
-            <member><type>VkDescriptorType</type>                    <name>descriptorType</name></member>
-            <member optional="true"><type>VkSampler</type>           <name>sampler</name></member>
-        </type>
-        <type category="struct" name="VkImageViewAddressPropertiesNVX" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkDeviceAddress</type>    <name>deviceAddress</name></member>
-            <member><type>VkDeviceSize</type>       <name>size</name></member>
-        </type>
-        <type category="struct" name="VkPresentFrameTokenGGP" structextends="VkPresentInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>GgpFrameToken</type>                    <name>frameToken</name></member>
-        </type>
-        <type category="struct" name="VkPipelineCreationFeedback" returnedonly="true">
-            <member><type>VkPipelineCreationFeedbackFlags</type>     <name>flags</name></member>
-            <member><type>uint64_t</type>                            <name>duration</name></member>
-        </type>
-        <type category="struct" name="VkPipelineCreationFeedbackEXT" alias="VkPipelineCreationFeedback"/>
-        <type category="struct" name="VkPipelineCreationFeedbackCreateInfo" structextends="VkGraphicsPipelineCreateInfo,VkComputePipelineCreateInfo,VkRayTracingPipelineCreateInfoNV,VkRayTracingPipelineCreateInfoKHR,VkExecutionGraphPipelineCreateInfoAMDX">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*         <name>pNext</name></member>
-            <member><type>VkPipelineCreationFeedback</type>*         <name>pPipelineCreationFeedback</name><comment>Output pipeline creation feedback.</comment></member>
-            <member optional="true"><type>uint32_t</type>            <name>pipelineStageCreationFeedbackCount</name></member>
-            <member len="pipelineStageCreationFeedbackCount"><type>VkPipelineCreationFeedback</type>* <name>pPipelineStageCreationFeedbacks</name><comment>One entry for each shader stage specified in the parent Vk*PipelineCreateInfo struct</comment></member>
-        </type>
-        <type category="struct" name="VkPipelineCreationFeedbackCreateInfoEXT" alias="VkPipelineCreationFeedbackCreateInfo"/>
-        <type category="struct" name="VkSurfaceFullScreenExclusiveInfoEXT" structextends="VkPhysicalDeviceSurfaceInfo2KHR,VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkFullScreenExclusiveEXT</type>         <name>fullScreenExclusive</name></member>
-        </type>
-        <type category="struct" name="VkSurfaceFullScreenExclusiveWin32InfoEXT" structextends="VkPhysicalDeviceSurfaceInfo2KHR,VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>HMONITOR</type>         <name>hmonitor</name></member>
-        </type>
-        <type category="struct" name="VkSurfaceCapabilitiesFullScreenExclusiveEXT" structextends="VkSurfaceCapabilities2KHR">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>         <name>fullScreenExclusiveSupported</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePresentBarrierFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>presentBarrier</name></member>
-        </type>
-        <type category="struct" name="VkSurfaceCapabilitiesPresentBarrierNV" structextends="VkSurfaceCapabilities2KHR">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>       <name>presentBarrierSupported</name></member>
-        </type>
-        <type category="struct" name="VkSwapchainPresentBarrierCreateInfoNV" structextends="VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>    <name>presentBarrierEnable</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePerformanceQueryFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>performanceCounterQueryPools</name><comment>performance counters supported in query pools</comment></member>
-            <member><type>VkBool32</type>                         <name>performanceCounterMultipleQueryPools</name><comment>performance counters from multiple query pools can be accessed in the same primary command buffer</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePerformanceQueryPropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member limittype="bitmask" noautovalidity="true"><type>VkBool32</type> <name>allowCommandBufferQueryCopies</name><comment>Flag to specify whether performance queries are allowed to be used in vkCmdCopyQueryPoolResults</comment></member>
-        </type>
-        <type category="struct" name="VkPerformanceCounterKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkPerformanceCounterUnitKHR</type>        <name>unit</name></member>
-            <member><type>VkPerformanceCounterScopeKHR</type>       <name>scope</name></member>
-            <member><type>VkPerformanceCounterStorageKHR</type>     <name>storage</name></member>
-            <member><type>uint8_t</type> <name>uuid</name>[<enum>VK_UUID_SIZE</enum>]</member>
-        </type>
-        <type category="struct" name="VkPerformanceCounterDescriptionKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                   <name>pNext</name></member>
-            <member optional="true"><type>VkPerformanceCounterDescriptionFlagsKHR</type> <name>flags</name></member>
-            <member><type>char</type>                                    <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>char</type>                                    <name>category</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>char</type>                                    <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-        </type>
-        <type category="struct" name="VkQueryPoolPerformanceCreateInfoKHR" structextends="VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                             <name>pNext</name></member>
-            <member><type>uint32_t</type>                                <name>queueFamilyIndex</name></member>
-            <member><type>uint32_t</type>                                <name>counterIndexCount</name></member>
-            <member len="counterIndexCount">const <type>uint32_t</type>* <name>pCounterIndices</name></member>
-        </type>
-        <type category="union" name="VkPerformanceCounterResultKHR" comment="// Union of all the possible return types a counter result could return">
-            <member><type>int32_t</type>  <name>int32</name></member>
-            <member><type>int64_t</type>  <name>int64</name></member>
-            <member><type>uint32_t</type> <name>uint32</name></member>
-            <member><type>uint64_t</type> <name>uint64</name></member>
-            <member><type>float</type>    <name>float32</name></member>
-            <member><type>double</type>   <name>float64</name></member>
-        </type>
-        <type category="struct" name="VkAcquireProfilingLockInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkAcquireProfilingLockFlagsKHR</type> <name>flags</name><comment>Acquire profiling lock flags</comment></member>
-            <member><type>uint64_t</type> <name>timeout</name></member>
-        </type>
-        <type category="struct" name="VkPerformanceQuerySubmitInfoKHR" structextends="VkSubmitInfo,VkSubmitInfo2">
-            <member values="VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*         <name>pNext</name></member>
-            <member><type>uint32_t</type>            <name>counterPassIndex</name><comment>Index for which counter pass to submit</comment></member>
-        </type>
-        <type category="struct" name="VkPerformanceQueryReservationInfoKHR" allowduplicate="true" structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*         <name>pNext</name></member>
-            <member><type>uint32_t</type>            <name>maxPerformanceQueriesPerPool</name><comment>Maximum number of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR queries in a query pool</comment></member>
-        </type>
-        <type category="struct" name="VkHeadlessSurfaceCreateInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkHeadlessSurfaceCreateFlagsEXT</type>   <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCoverageReductionModeFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>coverageReductionMode</name></member>
-        </type>
-        <type category="struct" name="VkPipelineCoverageReductionStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                        <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCoverageReductionStateCreateFlagsNV</type>      <name>flags</name></member>
-            <member><type>VkCoverageReductionModeNV</type>                                          <name>coverageReductionMode</name></member>
-        </type>
-        <type category="struct" name="VkFramebufferMixedSamplesCombinationNV" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkCoverageReductionModeNV</type>  <name>coverageReductionMode</name></member>
-            <member><type>VkSampleCountFlagBits</type>      <name>rasterizationSamples</name></member>
-            <member><type>VkSampleCountFlags</type>         <name>depthStencilSamples</name></member>
-            <member><type>VkSampleCountFlags</type>         <name>colorSamples</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>shaderIntegerFunctions2</name></member>
-        </type>
-        <type category="union" name="VkPerformanceValueDataINTEL">
-            <member selection="VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL"><type>uint32_t</type>                           <name>value32</name></member>
-            <member selection="VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL"><type>uint64_t</type>                           <name>value64</name></member>
-            <member selection="VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"><type>float</type>                               <name>valueFloat</name></member>
-            <member selection="VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL"><type>VkBool32</type>                             <name>valueBool</name></member>
-            <member selection="VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL" len="null-terminated">const <type>char</type>*  <name>valueString</name></member>
-        </type>
-        <type category="struct" name="VkPerformanceValueINTEL">
-            <member><type>VkPerformanceValueTypeINTEL</type>        <name>type</name></member>
-            <member selector="type" noautovalidity="true"><type>VkPerformanceValueDataINTEL</type>        <name>data</name></member>
-        </type>
-        <type category="struct" name="VkInitializePerformanceApiInfoINTEL" >
-            <member values="VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                         <name>pNext</name></member>
-            <member optional="true"><type>void</type>*               <name>pUserData</name></member>
-        </type>
-        <type category="struct" name="VkQueryPoolPerformanceQueryCreateInfoINTEL" structextends="VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                         <name>pNext</name></member>
-            <member><type>VkQueryPoolSamplingModeINTEL</type>        <name>performanceCountersSampling</name></member>
-        </type>
-        <type category="struct" name="VkQueryPoolCreateInfoINTEL"                              alias="VkQueryPoolPerformanceQueryCreateInfoINTEL"/>
-        <type category="struct" name="VkPerformanceMarkerInfoINTEL">
-            <member values="VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                         <name>pNext</name></member>
-            <member><type>uint64_t</type>                            <name>marker</name></member>
-        </type>
-        <type category="struct" name="VkPerformanceStreamMarkerInfoINTEL">
-            <member values="VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                         <name>pNext</name></member>
-            <member><type>uint32_t</type>                            <name>marker</name></member>
-        </type>
-        <type category="struct" name="VkPerformanceOverrideInfoINTEL">
-            <member values="VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                         <name>pNext</name></member>
-            <member><type>VkPerformanceOverrideTypeINTEL</type>      <name>type</name></member>
-            <member><type>VkBool32</type>                            <name>enable</name></member>
-            <member><type>uint64_t</type>                            <name>parameter</name></member>
-        </type>
-        <type category="struct" name="VkPerformanceConfigurationAcquireInfoINTEL">
-            <member values="VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                         <name>pNext</name></member>
-            <member><type>VkPerformanceConfigurationTypeINTEL</type> <name>type</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderClockFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>shaderSubgroupClock</name></member>
-            <member><type>VkBool32</type>                            <name>shaderDeviceClock</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceIndexTypeUint8FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>indexTypeUint8</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderSMBuiltinsPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                          <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>shaderSMCount</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>shaderWarpsPerSM</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderSMBuiltinsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>shaderSMBuiltins</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name><comment>Pointer to next structure</comment></member>
-            <member><type>VkBool32</type>               <name>fragmentShaderSampleInterlock</name></member>
-            <member><type>VkBool32</type>               <name>fragmentShaderPixelInterlock</name></member>
-            <member><type>VkBool32</type>               <name>fragmentShaderShadingRateInterlock</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>separateDepthStencilLayouts</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR"  alias="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures"/>
-        <type category="struct" name="VkAttachmentReferenceStencilLayout" structextends="VkAttachmentReference2">
-            <member values="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkImageLayout</type>                  <name>stencilLayout</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>primitiveTopologyListRestart</name></member>
-            <member><type>VkBool32</type>                     <name>primitiveTopologyPatchListRestart</name></member>
-        </type>
-        <type category="struct" name="VkAttachmentReferenceStencilLayoutKHR"                   alias="VkAttachmentReferenceStencilLayout"/>
-        <type category="struct" name="VkAttachmentDescriptionStencilLayout" structextends="VkAttachmentDescription2">
-            <member values="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkImageLayout</type>                  <name>stencilInitialLayout</name></member>
-            <member><type>VkImageLayout</type>                  <name>stencilFinalLayout</name></member>
-        </type>
-        <type category="struct" name="VkAttachmentDescriptionStencilLayoutKHR"                 alias="VkAttachmentDescriptionStencilLayout"/>
-        <type category="struct" name="VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>           <name>pipelineExecutableInfo</name></member>
-        </type>
-        <type category="struct" name="VkPipelineInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkPipeline</type>         <name>pipeline</name></member>
-        </type>
-        <type category="struct" name="VkPipelineInfoEXT" alias="VkPipelineInfoKHR"/>
-        <type category="struct" name="VkPipelineExecutablePropertiesKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkShaderStageFlags</type> <name>stages</name></member>
-            <member><type>char</type>               <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>char</type>               <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>uint32_t</type>           <name>subgroupSize</name></member>
-        </type>
-        <type category="struct" name="VkPipelineExecutableInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkPipeline</type>         <name>pipeline</name></member>
-            <member><type>uint32_t</type>           <name>executableIndex</name></member>
-        </type>
-        <type category="union" name="VkPipelineExecutableStatisticValueKHR" returnedonly="true">
-            <member selection="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR"><type>VkBool32</type>           <name>b32</name></member>
-            <member selection="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR"><type>int64_t</type>            <name>i64</name></member>
-            <member selection="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR"><type>uint64_t</type>           <name>u64</name></member>
-            <member selection="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR"><type>double</type>             <name>f64</name></member>
-        </type>
-        <type category="struct" name="VkPipelineExecutableStatisticKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>char</type>               <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>char</type>               <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>VkPipelineExecutableStatisticFormatKHR</type> <name>format</name></member>
-            <member selector="format" noautovalidity="true"><type>VkPipelineExecutableStatisticValueKHR</type>  <name>value</name></member>
-        </type>
-        <type category="struct" name="VkPipelineExecutableInternalRepresentationKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>char</type>               <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>char</type>               <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>VkBool32</type>           <name>isText</name></member>
-            <member><type>size_t</type>             <name>dataSize</name></member>
-            <member optional="true" len="dataSize"><type>void</type>* <name>pData</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBool32</type>                   <name>shaderDemoteToHelperInvocation</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT" alias="VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>texelBufferAlignment</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentProperties" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>                       <name>storageTexelBufferOffsetAlignmentBytes</name></member>
-            <member limittype="exact"><type>VkBool32</type>                         <name>storageTexelBufferOffsetSingleTexelAlignment</name></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>                       <name>uniformTexelBufferOffsetAlignmentBytes</name></member>
-            <member limittype="exact"><type>VkBool32</type>                         <name>uniformTexelBufferOffsetSingleTexelAlignment</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT" alias="VkPhysicalDeviceTexelBufferAlignmentProperties"/>
-        <type category="struct" name="VkPhysicalDeviceSubgroupSizeControlFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>subgroupSizeControl</name></member>
-            <member><type>VkBool32</type>               <name>computeFullSubgroups</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSubgroupSizeControlFeaturesEXT" alias="VkPhysicalDeviceSubgroupSizeControlFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceSubgroupSizeControlProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                          <name>pNext</name></member>
-            <member limittype="min,pot" noautovalidity="true"><type>uint32_t</type> <name>minSubgroupSize</name><comment>The minimum subgroup size supported by this device</comment></member>
-            <member limittype="max,pot" noautovalidity="true"><type>uint32_t</type> <name>maxSubgroupSize</name><comment>The maximum subgroup size supported by this device</comment></member>
-            <member limittype="max" noautovalidity="true"><type>uint32_t</type> <name>maxComputeWorkgroupSubgroups</name><comment>The maximum number of subgroups supported in a workgroup</comment></member>
-            <member limittype="bitmask"><type>VkShaderStageFlags</type>         <name>requiredSubgroupSizeStages</name><comment>The shader stages that support specifying a subgroup size</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSubgroupSizeControlPropertiesEXT" alias="VkPhysicalDeviceSubgroupSizeControlProperties"/>
-        <type category="struct" name="VkPipelineShaderStageRequiredSubgroupSizeCreateInfo" returnedonly="true" structextends="VkPipelineShaderStageCreateInfo,VkShaderCreateInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*  <name>pNext</name></member>
-            <member><type>uint32_t</type>               <name>requiredSubgroupSize</name></member>
-        </type>
-        <type category="struct" name="VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT" alias="VkPipelineShaderStageRequiredSubgroupSizeCreateInfo"/>
-        <type category="struct" name="VkShaderRequiredSubgroupSizeCreateInfoEXT" alias="VkPipelineShaderStageRequiredSubgroupSizeCreateInfo"/>
-        <type category="struct" name="VkSubpassShadingPipelineCreateInfoHUAWEI" returnedonly="true" structextends="VkComputePipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkRenderPass</type>           <name>renderPass</name></member>
-            <member><type>uint32_t</type>               <name>subpass</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSubpassShadingPropertiesHUAWEI" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="max,pot"><type>uint32_t</type>               <name>maxSubpassShadingWorkgroupSizeAspectRatio</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="max,pot"><type>uint32_t</type>           <name>maxWorkGroupCount</name>[3]</member>
-            <member limittype="max,pot"><type>uint32_t</type>           <name>maxWorkGroupSize</name>[3]</member>
-            <member limittype="max"><type>uint32_t</type>               <name>maxOutputClusterCount</name></member>
-            <member limittype="exact"><type>VkDeviceSize</type>         <name>indirectBufferOffsetAlignment</name></member>
-        </type>
-        <type category="struct" name="VkMemoryOpaqueCaptureAddressAllocateInfo" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                   <name>pNext</name></member>
-            <member><type>uint64_t</type>                      <name>opaqueCaptureAddress</name></member>
-        </type>
-        <type category="struct" name="VkMemoryOpaqueCaptureAddressAllocateInfoKHR"             alias="VkMemoryOpaqueCaptureAddressAllocateInfo"/>
-        <type category="struct" name="VkDeviceMemoryOpaqueCaptureAddressInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>                   <name>memory</name></member>
-        </type>
-        <type category="struct" name="VkDeviceMemoryOpaqueCaptureAddressInfoKHR"               alias="VkDeviceMemoryOpaqueCaptureAddressInfo"/>
-        <type category="struct" name="VkPhysicalDeviceLineRasterizationFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>rectangularLines</name></member>
-            <member><type>VkBool32</type>                           <name>bresenhamLines</name></member>
-            <member><type>VkBool32</type>                           <name>smoothLines</name></member>
-            <member><type>VkBool32</type>                           <name>stippledRectangularLines</name></member>
-            <member><type>VkBool32</type>                           <name>stippledBresenhamLines</name></member>
-            <member><type>VkBool32</type>                           <name>stippledSmoothLines</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceLineRasterizationPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="bits"><type>uint32_t</type>                            <name>lineSubPixelPrecisionBits</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRasterizationLineStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                      <name>pNext</name></member>
-            <member><type>VkLineRasterizationModeEXT</type>                                       <name>lineRasterizationMode</name></member>
-            <member><type>VkBool32</type>                                                         <name>stippledLineEnable</name></member>
-            <member><type>uint32_t</type>                                                         <name>lineStippleFactor</name></member>
-            <member><type>uint16_t</type>                                                         <name>lineStipplePattern</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePipelineCreationCacheControlFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type>              <name>pipelineCreationCacheControl</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT" alias="VkPhysicalDevicePipelineCreationCacheControlFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceVulkan11Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>storageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock</comment></member>
-            <member><type>VkBool32</type>                         <name>uniformAndStorageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock and Block</comment></member>
-            <member><type>VkBool32</type>                         <name>storagePushConstant16</name><comment>16-bit integer/floating-point variables supported in PushConstant</comment></member>
-            <member><type>VkBool32</type>                         <name>storageInputOutput16</name><comment>16-bit integer/floating-point variables supported in shader inputs and outputs</comment></member>
-            <member><type>VkBool32</type>                         <name>multiview</name><comment>Multiple views in a renderpass</comment></member>
-            <member><type>VkBool32</type>                         <name>multiviewGeometryShader</name><comment>Multiple views in a renderpass w/ geometry shader</comment></member>
-            <member><type>VkBool32</type>                         <name>multiviewTessellationShader</name><comment>Multiple views in a renderpass w/ tessellation shader</comment></member>
-            <member><type>VkBool32</type>                         <name>variablePointersStorageBuffer</name></member>
-            <member><type>VkBool32</type>                         <name>variablePointers</name></member>
-            <member><type>VkBool32</type>                         <name>protectedMemory</name></member>
-            <member><type>VkBool32</type>                         <name>samplerYcbcrConversion</name><comment>Sampler color conversion supported</comment></member>
-            <member><type>VkBool32</type>                         <name>shaderDrawParameters</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVulkan11Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*      <name>pNext</name></member>
-            <member limittype="exact"><type>uint8_t</type>                          <name>deviceUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member limittype="exact"><type>uint8_t</type>                          <name>driverUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member limittype="exact"><type>uint8_t</type>                          <name>deviceLUID</name>[<enum>VK_LUID_SIZE</enum>]</member>
-            <member limittype="exact"><type>uint32_t</type>                         <name>deviceNodeMask</name></member>
-            <member limittype="exact"><type>VkBool32</type>                         <name>deviceLUIDValid</name></member>
-            <member limittype="max,pot" noautovalidity="true"><type>uint32_t</type>                      <name>subgroupSize</name><comment>The size of a subgroup for this queue.</comment></member>
-            <member limittype="bitmask" noautovalidity="true"><type>VkShaderStageFlags</type>            <name>subgroupSupportedStages</name><comment>Bitfield of what shader stages support subgroup operations</comment></member>
-            <member limittype="bitmask" noautovalidity="true"><type>VkSubgroupFeatureFlags</type>        <name>subgroupSupportedOperations</name><comment>Bitfield of what subgroup operations are supported.</comment></member>
-            <member limittype="bitmask" noautovalidity="true"><type>VkBool32</type>                      <name>subgroupQuadOperationsInAllStages</name><comment>Flag to specify whether quad operations are available in all stages.</comment></member>
-            <member limittype="exact"><type>VkPointClippingBehavior</type>     <name>pointClippingBehavior</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxMultiviewViewCount</name><comment>max number of views in a subpass</comment></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxMultiviewInstanceIndex</name><comment>max instance index for a draw in a multiview subpass</comment></member>
-            <member limittype="exact"><type>VkBool32</type>                    <name>protectedNoFault</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerSetDescriptors</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                     <name>maxMemoryAllocationSize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVulkan12Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>samplerMirrorClampToEdge</name></member>
-            <member><type>VkBool32</type>                         <name>drawIndirectCount</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>
-            <member><type>VkBool32</type>                         <name>shaderBufferInt64Atomics</name></member>
-            <member><type>VkBool32</type>                         <name>shaderSharedInt64Atomics</name></member>
-            <member><type>VkBool32</type>                         <name>shaderFloat16</name><comment>16-bit floats (halfs) in shaders</comment></member>
-            <member><type>VkBool32</type>                         <name>shaderInt8</name><comment>8-bit integers in shaders</comment></member>
-            <member><type>VkBool32</type>                         <name>descriptorIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderInputAttachmentArrayDynamicIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderUniformTexelBufferArrayDynamicIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderStorageTexelBufferArrayDynamicIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderUniformBufferArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderSampledImageArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderStorageBufferArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderStorageImageArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderInputAttachmentArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderUniformTexelBufferArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>shaderStorageTexelBufferArrayNonUniformIndexing</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingUniformBufferUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingSampledImageUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingStorageImageUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingStorageBufferUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingUniformTexelBufferUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingStorageTexelBufferUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingUpdateUnusedWhilePending</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingPartiallyBound</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingVariableDescriptorCount</name></member>
-            <member><type>VkBool32</type>                         <name>runtimeDescriptorArray</name></member>
-            <member><type>VkBool32</type>                         <name>samplerFilterMinmax</name></member>
-            <member><type>VkBool32</type>                         <name>scalarBlockLayout</name></member>
-            <member><type>VkBool32</type>                         <name>imagelessFramebuffer</name></member>
-            <member><type>VkBool32</type>                         <name>uniformBufferStandardLayout</name></member>
-            <member><type>VkBool32</type>                         <name>shaderSubgroupExtendedTypes</name></member>
-            <member><type>VkBool32</type>                         <name>separateDepthStencilLayouts</name></member>
-            <member><type>VkBool32</type>                         <name>hostQueryReset</name></member>
-            <member><type>VkBool32</type>                         <name>timelineSemaphore</name></member>
-            <member><type>VkBool32</type>                         <name>bufferDeviceAddress</name></member>
-            <member><type>VkBool32</type>                         <name>bufferDeviceAddressCaptureReplay</name></member>
-            <member><type>VkBool32</type>                         <name>bufferDeviceAddressMultiDevice</name></member>
-            <member><type>VkBool32</type>                         <name>vulkanMemoryModel</name></member>
-            <member><type>VkBool32</type>                         <name>vulkanMemoryModelDeviceScope</name></member>
-            <member><type>VkBool32</type>                         <name>vulkanMemoryModelAvailabilityVisibilityChains</name></member>
-            <member><type>VkBool32</type>                         <name>shaderOutputViewportIndex</name></member>
-            <member><type>VkBool32</type>                         <name>shaderOutputLayer</name></member>
-            <member><type>VkBool32</type>                         <name>subgroupBroadcastDynamicId</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVulkan12Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member limittype="noauto"><type>VkDriverId</type>                       <name>driverID</name></member>
-            <member limittype="noauto"><type>char</type>                             <name>driverName</name>[<enum>VK_MAX_DRIVER_NAME_SIZE</enum>]</member>
-            <member limittype="noauto"><type>char</type>                             <name>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE</enum>]</member>
-            <member limittype="noauto"><type>VkConformanceVersion</type>             <name>conformanceVersion</name></member>
-            <member limittype="exact"><type>VkShaderFloatControlsIndependence</type> <name>denormBehaviorIndependence</name></member>
-            <member limittype="exact"><type>VkShaderFloatControlsIndependence</type> <name>roundingModeIndependence</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderSignedZeroInfNanPreserveFloat16</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderSignedZeroInfNanPreserveFloat32</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderSignedZeroInfNanPreserveFloat64</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormPreserveFloat16</name><comment>An implementation can preserve  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormPreserveFloat32</name><comment>An implementation can preserve  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormPreserveFloat64</name><comment>An implementation can preserve  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormFlushToZeroFloat16</name><comment>An implementation can flush to zero  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormFlushToZeroFloat32</name><comment>An implementation can flush to zero  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderDenormFlushToZeroFloat64</name><comment>An implementation can flush to zero  denormals</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTEFloat16</name><comment>An implementation can support RTE</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTEFloat32</name><comment>An implementation can support RTE</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTEFloat64</name><comment>An implementation can support RTE</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTZFloat16</name><comment>An implementation can support RTZ</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTZFloat32</name><comment>An implementation can support RTZ</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderRoundingModeRTZFloat64</name><comment>An implementation can support RTZ</comment></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxUpdateAfterBindDescriptorsInAllPools</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderUniformBufferArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderSampledImageArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderStorageBufferArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderStorageImageArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>shaderInputAttachmentArrayNonUniformIndexingNative</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>robustBufferAccessUpdateAfterBind</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>quadDivergentImplicitLod</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerStageDescriptorUpdateAfterBindSamplers</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerStageDescriptorUpdateAfterBindUniformBuffers</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerStageDescriptorUpdateAfterBindStorageBuffers</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerStageDescriptorUpdateAfterBindSampledImages</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerStageDescriptorUpdateAfterBindStorageImages</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerStageDescriptorUpdateAfterBindInputAttachments</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxPerStageUpdateAfterBindResources</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetUpdateAfterBindSamplers</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetUpdateAfterBindUniformBuffers</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetUpdateAfterBindStorageBuffers</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetUpdateAfterBindSampledImages</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetUpdateAfterBindStorageImages</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDescriptorSetUpdateAfterBindInputAttachments</name></member>
-            <member limittype="bitmask"><type>VkResolveModeFlags</type>               <name>supportedDepthResolveModes</name><comment>supported depth resolve modes</comment></member>
-            <member limittype="bitmask"><type>VkResolveModeFlags</type>               <name>supportedStencilResolveModes</name><comment>supported stencil resolve modes</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>independentResolveNone</name><comment>depth and stencil resolve modes can be set independently if one of them is none</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>independentResolve</name><comment>depth and stencil resolve modes can be set independently</comment></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>filterMinmaxSingleComponentFormats</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                         <name>filterMinmaxImageComponentMapping</name></member>
-            <member limittype="max"><type>uint64_t</type>                         <name>maxTimelineSemaphoreValueDifference</name></member>
-            <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferIntegerColorSampleCounts</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVulkan13Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>robustImageAccess</name></member>
-            <member><type>VkBool32</type>                         <name>inlineUniformBlock</name></member>
-            <member><type>VkBool32</type>                         <name>descriptorBindingInlineUniformBlockUpdateAfterBind</name></member>
-            <member><type>VkBool32</type>                         <name>pipelineCreationCacheControl</name></member>
-            <member><type>VkBool32</type>                         <name>privateData</name></member>
-            <member><type>VkBool32</type>                         <name>shaderDemoteToHelperInvocation</name></member>
-            <member><type>VkBool32</type>                         <name>shaderTerminateInvocation</name></member>
-            <member><type>VkBool32</type>                         <name>subgroupSizeControl</name></member>
-            <member><type>VkBool32</type>                         <name>computeFullSubgroups</name></member>
-            <member><type>VkBool32</type>                         <name>synchronization2</name></member>
-            <member><type>VkBool32</type>                         <name>textureCompressionASTC_HDR</name></member>
-            <member><type>VkBool32</type>                         <name>shaderZeroInitializeWorkgroupMemory</name></member>
-            <member><type>VkBool32</type>                         <name>dynamicRendering</name></member>
-            <member><type>VkBool32</type>                         <name>shaderIntegerDotProduct</name></member>
-            <member><type>VkBool32</type>                         <name>maintenance4</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVulkan13Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                          <name>pNext</name></member>
-            <member limittype="min,pot" noautovalidity="true"><type>uint32_t</type> <name>minSubgroupSize</name><comment>The minimum subgroup size supported by this device</comment></member>
-            <member limittype="max,pot" noautovalidity="true"><type>uint32_t</type> <name>maxSubgroupSize</name><comment>The maximum subgroup size supported by this device</comment></member>
-            <member limittype="max" noautovalidity="true"><type>uint32_t</type> <name>maxComputeWorkgroupSubgroups</name><comment>The maximum number of subgroups supported in a workgroup</comment></member>
-            <member limittype="bitmask"><type>VkShaderStageFlags</type>         <name>requiredSubgroupSizeStages</name><comment>The shader stages that support specifying a subgroup size</comment></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>maxInlineUniformBlockSize</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>maxPerStageDescriptorInlineUniformBlocks</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>maxDescriptorSetInlineUniformBlocks</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>maxDescriptorSetUpdateAfterBindInlineUniformBlocks</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>maxInlineUniformTotalSize</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct8BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct8BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct8BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct4x8BitPackedUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct4x8BitPackedSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct4x8BitPackedMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct16BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct16BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct16BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct32BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct32BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct32BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct64BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct64BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProduct64BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating8BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating8BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating16BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating16BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating32BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating32BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating64BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating64BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                   <name>integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated</name></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>                <name>storageTexelBufferOffsetAlignmentBytes</name></member>
-            <member limittype="exact"><type>VkBool32</type>                  <name>storageTexelBufferOffsetSingleTexelAlignment</name></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>                <name>uniformTexelBufferOffsetAlignmentBytes</name></member>
-            <member limittype="exact"><type>VkBool32</type>                  <name>uniformTexelBufferOffsetSingleTexelAlignment</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                   <name>maxBufferSize</name></member>
-        </type>
-        <type category="struct" name="VkPipelineCompilerControlCreateInfoAMD" structextends="VkGraphicsPipelineCreateInfo,VkComputePipelineCreateInfo,VkExecutionGraphPipelineCreateInfoAMDX">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"><type>VkStructureType</type>   <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCompilerControlFlagsAMD</type>                                      <name>compilerControlFlags</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCoherentMemoryFeaturesAMD" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>deviceCoherentMemory</name></member>
-        </type>
-        <type category="struct" name="VkFaultData" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_FAULT_DATA"><type>VkStructureType</type> <name>sType</name></member>
-            <member noautovalidity="true" optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkFaultLevel</type>                    <name>faultLevel</name></member>
-            <member><type>VkFaultType</type>                     <name>faultType</name></member>
-        </type>
-        <type category="struct" name="VkFaultCallbackInfo" structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>           <name>faultCount</name></member>
-            <member optional="true" len="faultCount"><type>VkFaultData</type>*<name>pFaults</name></member>
-            <member><type>PFN_vkFaultCallbackFunction</type>        <name>pfnFaultCallback</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceToolProperties" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>char</type>                  <name>name</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]</member>
-            <member><type>char</type>                  <name>version</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]</member>
-            <member><type>VkToolPurposeFlags</type>    <name>purposes</name></member>
-            <member><type>char</type>                  <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>char</type>                  <name>layer</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]</member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceToolPropertiesEXT" alias="VkPhysicalDeviceToolProperties"/>
-        <type category="struct" name="VkSamplerCustomBorderColorCreateInfoEXT" structextends="VkSamplerCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                            <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkClearColorValue</type>                                                                      <name>customBorderColor</name></member>
-            <member><type>VkFormat</type>                                                                               <name>format</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCustomBorderColorPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                                                   <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                                                                                      <name>maxCustomBorderColorSamplers</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCustomBorderColorFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>customBorderColors</name></member>
-            <member><type>VkBool32</type>                           <name>customBorderColorWithoutFormat</name></member>
-        </type>
-        <type category="struct" name="VkSamplerBorderColorComponentMappingCreateInfoEXT" structextends="VkSamplerCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                       <name>pNext</name></member>
-            <member><type>VkComponentMapping</type>                                                                                <name>components</name></member>
-            <member><type>VkBool32</type>                                                                                          <name>srgb</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceBorderColorSwizzleFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>borderColorSwizzle</name></member>
-            <member><type>VkBool32</type>                     <name>borderColorSwizzleFromImage</name></member>
-        </type>
-        <type category="union" name="VkDeviceOrHostAddressKHR">
-            <member noautovalidity="true"><type>VkDeviceAddress</type>            <name>deviceAddress</name></member>
-            <member noautovalidity="true"><type>void</type>*                      <name>hostAddress</name></member>
-        </type>
-        <type category="union" name="VkDeviceOrHostAddressConstKHR">
-            <member noautovalidity="true"><type>VkDeviceAddress</type>            <name>deviceAddress</name></member>
-            <member noautovalidity="true">const <type>void</type>*                <name>hostAddress</name></member>
-        </type>
-        <type category="union" name="VkDeviceOrHostAddressConstAMDX">
-            <member noautovalidity="true"><type>VkDeviceAddress</type>            <name>deviceAddress</name></member>
-            <member noautovalidity="true">const <type>void</type>*                <name>hostAddress</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureGeometryTrianglesDataKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                   <name>pNext</name></member>
-            <member><type>VkFormat</type>                                      <name>vertexFormat</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>                 <name>vertexData</name></member>
-            <member><type>VkDeviceSize</type>                                  <name>vertexStride</name></member>
-            <member><type>uint32_t</type>                                      <name>maxVertex</name></member>
-            <member><type>VkIndexType</type>                                   <name>indexType</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>                 <name>indexData</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>                 <name>transformData</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureGeometryAabbsDataKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                           <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>         <name>data</name></member>
-            <member><type>VkDeviceSize</type>                          <name>stride</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureGeometryInstancesDataKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                           <name>pNext</name></member>
-            <member><type>VkBool32</type>                              <name>arrayOfPointers</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>         <name>data</name></member>
-        </type>
-        <type category="union" name="VkAccelerationStructureGeometryDataKHR">
-            <member selection="VK_GEOMETRY_TYPE_TRIANGLES_KHR"><type>VkAccelerationStructureGeometryTrianglesDataKHR</type> <name>triangles</name></member>
-            <member selection="VK_GEOMETRY_TYPE_AABBS_KHR"><type>VkAccelerationStructureGeometryAabbsDataKHR</type>         <name>aabbs</name></member>
-            <member selection="VK_GEOMETRY_TYPE_INSTANCES_KHR"><type>VkAccelerationStructureGeometryInstancesDataKHR</type> <name>instances</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureGeometryKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkGeometryTypeKHR</type>                      <name>geometryType</name></member>
-            <member selector="geometryType"><type>VkAccelerationStructureGeometryDataKHR</type> <name>geometry</name></member>
-            <member optional="true"><type>VkGeometryFlagsKHR</type>     <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureBuildGeometryInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                        <name>pNext</name></member>
-            <member><type>VkAccelerationStructureTypeKHR</type>                                     <name>type</name></member>
-            <member optional="true"><type>VkBuildAccelerationStructureFlagsKHR</type>               <name>flags</name></member>
-            <member noautovalidity="true"><type>VkBuildAccelerationStructureModeKHR</type>          <name>mode</name></member>
-            <member optional="true" noautovalidity="true"><type>VkAccelerationStructureKHR</type>                   <name>srcAccelerationStructure</name></member>
-            <member optional="true" noautovalidity="true"><type>VkAccelerationStructureKHR</type>                   <name>dstAccelerationStructure</name></member>
-            <member optional="true"><type>uint32_t</type>                                           <name>geometryCount</name></member>
-            <member len="geometryCount" optional="true">const <type>VkAccelerationStructureGeometryKHR</type>*    <name>pGeometries</name></member>
-            <member len="geometryCount,1" optional="true,false">const <type>VkAccelerationStructureGeometryKHR</type>* const*   <name>ppGeometries</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressKHR</type>                                           <name>scratchData</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureBuildRangeInfoKHR">
-            <member><type>uint32_t</type>                                                <name>primitiveCount</name></member>
-            <member><type>uint32_t</type>                                                <name>primitiveOffset</name></member>
-            <member><type>uint32_t</type>                                                <name>firstVertex</name></member>
-            <member><type>uint32_t</type>                                                <name>transformOffset</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                             <name>pNext</name></member>
-            <member optional="true"><type>VkAccelerationStructureCreateFlagsKHR</type>   <name>createFlags</name></member>
-            <member><type>VkBuffer</type>                                                <name>buffer</name></member>
-            <member><type>VkDeviceSize</type>                                            <name>offset</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>                                            <name>size</name></member>
-            <member><type>VkAccelerationStructureTypeKHR</type>                          <name>type</name></member>
-            <member optional="true"><type>VkDeviceAddress</type>                         <name>deviceAddress</name></member>
-        </type>
-        <type category="struct" name="VkAabbPositionsKHR">
-            <member><type>float</type>                                                   <name>minX</name></member>
-            <member><type>float</type>                                                   <name>minY</name></member>
-            <member><type>float</type>                                                   <name>minZ</name></member>
-            <member><type>float</type>                                                   <name>maxX</name></member>
-            <member><type>float</type>                                                   <name>maxY</name></member>
-            <member><type>float</type>                                                   <name>maxZ</name></member>
-        </type>
-        <type category="struct" name="VkAabbPositionsNV"                                       alias="VkAabbPositionsKHR"/>
-        <type category="struct" name="VkTransformMatrixKHR">
-            <member><type>float</type>                                                   <name>matrix</name>[3][4]</member>
-        </type>
-        <type category="struct" name="VkTransformMatrixNV"                                     alias="VkTransformMatrixKHR"/>
-        <type category="struct" name="VkAccelerationStructureInstanceKHR">
-            <comment>The bitfields in this structure are non-normative since bitfield ordering is implementation-defined in C. The specification defines the normative layout.</comment>
-            <member><type>VkTransformMatrixKHR</type>                                    <name>transform</name></member>
-            <member><type>uint32_t</type>                                                <name>instanceCustomIndex</name>:24</member>
-            <member><type>uint32_t</type>                                                <name>mask</name>:8</member>
-            <member><type>uint32_t</type>                                                <name>instanceShaderBindingTableRecordOffset</name>:24</member>
-            <member optional="true"><type>VkGeometryInstanceFlagsKHR</type>              <name>flags</name>:8</member>
-            <member><type>uint64_t</type>                                                <name>accelerationStructureReference</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureInstanceNV"                       alias="VkAccelerationStructureInstanceKHR"/>
-        <type category="struct" name="VkAccelerationStructureDeviceAddressInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member><type>VkAccelerationStructureKHR</type>                             <name>accelerationStructure</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureVersionInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member len="latexmath:[2 \times \mathtt{VK\_UUID\_SIZE}]" altlen="2*VK_UUID_SIZE">const <type>uint8_t</type>*                    <name>pVersionData</name></member>
-        </type>
-        <type category="struct" name="VkCopyAccelerationStructureInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member><type>VkAccelerationStructureKHR</type>                             <name>src</name></member>
-            <member><type>VkAccelerationStructureKHR</type>                             <name>dst</name></member>
-            <member><type>VkCopyAccelerationStructureModeKHR</type>                     <name>mode</name></member>
-        </type>
-        <type category="struct" name="VkCopyAccelerationStructureToMemoryInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member><type>VkAccelerationStructureKHR</type>                             <name>src</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressKHR</type>                               <name>dst</name></member>
-            <member><type>VkCopyAccelerationStructureModeKHR</type>                     <name>mode</name></member>
-        </type>
-        <type category="struct" name="VkCopyMemoryToAccelerationStructureInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>                          <name>src</name></member>
-            <member><type>VkAccelerationStructureKHR</type>                             <name>dst</name></member>
-            <member><type>VkCopyAccelerationStructureModeKHR</type>                     <name>mode</name></member>
-        </type>
-        <type category="struct" name="VkRayTracingPipelineInterfaceCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>uint32_t</type>                                               <name>maxPipelineRayPayloadSize</name></member>
-            <member><type>uint32_t</type>                                               <name>maxPipelineRayHitAttributeSize</name></member>
-        </type>
-        <type category="struct" name="VkPipelineLibraryCreateInfoKHR" structextends="VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                               <name>libraryCount</name></member>
-            <member len="libraryCount">const <type>VkPipeline</type>*                   <name>pLibraries</name></member>
-        </type>
-        <type category="struct" name="VkRefreshObjectKHR">
-            <member><type>VkObjectType</type>                                       <name>objectType</name></member>
-            <member objecttype="objectType" externsync="true"><type>uint64_t</type> <name>objectHandle</name></member>
-            <member optional="true"><type>VkRefreshObjectFlagsKHR</type>            <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkRefreshObjectListKHR">
-            <member values="VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member><type>uint32_t</type>                                           <name>objectCount</name></member>
-            <member len="objectCount">const <type>VkRefreshObjectKHR</type>*        <name>pObjects</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExtendedDynamicStateFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>extendedDynamicState</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExtendedDynamicState2FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState2</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState2LogicOp</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState2PatchControlPoints</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExtendedDynamicState3FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3TessellationDomainOrigin</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3DepthClampEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3PolygonMode</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3RasterizationSamples</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3SampleMask</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3AlphaToCoverageEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3AlphaToOneEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3LogicOpEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ColorBlendEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ColorBlendEquation</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ColorWriteMask</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3RasterizationStream</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ConservativeRasterizationMode</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ExtraPrimitiveOverestimationSize</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3DepthClipEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3SampleLocationsEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ColorBlendAdvanced</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ProvokingVertexMode</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3LineRasterizationMode</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3LineStippleEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3DepthClipNegativeOneToOne</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ViewportWScalingEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ViewportSwizzle</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3CoverageToColorEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3CoverageToColorLocation</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3CoverageModulationMode</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3CoverageModulationTableEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3CoverageModulationTable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3CoverageReductionMode</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3RepresentativeFragmentTestEnable</name></member>
-            <member><type>VkBool32</type>                     <name>extendedDynamicState3ShadingRateImageEnable</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExtendedDynamicState3PropertiesEXT" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type> <name>dynamicPrimitiveTopologyUnrestricted</name></member>
-        </type>
-        <type category="struct" name="VkColorBlendEquationEXT">
-            <member><type>VkBlendFactor</type>               <name>srcColorBlendFactor</name></member>
-            <member><type>VkBlendFactor</type>               <name>dstColorBlendFactor</name></member>
-            <member><type>VkBlendOp</type>                   <name>colorBlendOp</name></member>
-            <member><type>VkBlendFactor</type>               <name>srcAlphaBlendFactor</name></member>
-            <member><type>VkBlendFactor</type>               <name>dstAlphaBlendFactor</name></member>
-            <member><type>VkBlendOp</type>                   <name>alphaBlendOp</name></member>
-        </type>
-        <type category="struct" name="VkColorBlendAdvancedEXT">
-            <member><type>VkBlendOp</type>                   <name>advancedBlendOp</name></member>
-            <member><type>VkBool32</type>                    <name>srcPremultiplied</name></member>
-            <member><type>VkBool32</type>                    <name>dstPremultiplied</name></member>
-            <member><type>VkBlendOverlapEXT</type>           <name>blendOverlap</name></member>
-            <member><type>VkBool32</type>                    <name>clampResults</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassTransformBeginInfoQCOM" structextends="VkRenderPassBeginInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                           <name>pNext</name><comment>Pointer to next structure</comment></member>
-            <member noautovalidity="true"><type>VkSurfaceTransformFlagBitsKHR</type>   <name>transform</name></member>
-        </type>
-        <type category="struct" name="VkCopyCommandTransformInfoQCOM" structextends="VkBufferImageCopy2,VkImageBlit2">
-            <member values="VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true">const <type>void</type>*     <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkSurfaceTransformFlagBitsKHR</type>   <name>transform</name></member>
-        </type>
-        <type category="struct" name="VkCommandBufferInheritanceRenderPassTransformInfoQCOM" structextends="VkCommandBufferInheritanceInfo">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                           <name>pNext</name><comment>Pointer to next structure</comment></member>
-            <member noautovalidity="true"><type>VkSurfaceTransformFlagBitsKHR</type>   <name>transform</name></member>
-            <member><type>VkRect2D</type>                        <name>renderArea</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDiagnosticsConfigFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>diagnosticsConfig</name></member>
-        </type>
-        <type category="struct" name="VkDeviceDiagnosticsConfigCreateInfoNV" structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                         <name>pNext</name></member>
-            <member optional="true"><type>VkDeviceDiagnosticsConfigFlagsNV</type>    <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkPipelineOfflineCreateInfo" structextends="VkGraphicsPipelineCreateInfo,VkComputePipelineCreateInfo,VkRayTracingPipelineCreateInfoKHR,VkRayTracingPipelineCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member><type>uint8_t</type>                                       <name>pipelineIdentifier</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member><type>VkPipelineMatchControl</type>                        <name>matchControl</name></member>
-            <member><type>VkDeviceSize</type>                                  <name>poolEntrySize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*          <name>pNext</name></member>
-            <member><type>VkBool32</type>       <name>shaderZeroInitializeWorkgroupMemory</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR" alias="VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type> <name>shaderSubgroupUniformControlFlow</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRobustness2FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>robustBufferAccess2</name></member>
-            <member><type>VkBool32</type>                           <name>robustImageAccess2</name></member>
-            <member><type>VkBool32</type>                           <name>nullDescriptor</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRobustness2PropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>    <name>robustStorageBufferAccessSizeAlignment</name></member>
-            <member limittype="min,pot"><type>VkDeviceSize</type>    <name>robustUniformBufferAccessSizeAlignment</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageRobustnessFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>robustImageAccess</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageRobustnessFeaturesEXT" alias="VkPhysicalDeviceImageRobustnessFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>workgroupMemoryExplicitLayout</name></member>
-            <member><type>VkBool32</type>                           <name>workgroupMemoryExplicitLayoutScalarBlockLayout</name></member>
-            <member><type>VkBool32</type>                           <name>workgroupMemoryExplicitLayout8BitAccess</name></member>
-            <member><type>VkBool32</type>                           <name>workgroupMemoryExplicitLayout16BitAccess</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePortabilitySubsetFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>constantAlphaColorBlendFactors</name></member>
-            <member><type>VkBool32</type>                           <name>events</name></member>
-            <member><type>VkBool32</type>                           <name>imageViewFormatReinterpretation</name></member>
-            <member><type>VkBool32</type>                           <name>imageViewFormatSwizzle</name></member>
-            <member><type>VkBool32</type>                           <name>imageView2DOn3DImage</name></member>
-            <member><type>VkBool32</type>                           <name>multisampleArrayImage</name></member>
-            <member><type>VkBool32</type>                           <name>mutableComparisonSamplers</name></member>
-            <member><type>VkBool32</type>                           <name>pointPolygons</name></member>
-            <member><type>VkBool32</type>                           <name>samplerMipLodBias</name></member>
-            <member><type>VkBool32</type>                           <name>separateStencilMaskRef</name></member>
-            <member><type>VkBool32</type>                           <name>shaderSampleRateInterpolationFunctions</name></member>
-            <member><type>VkBool32</type>                           <name>tessellationIsolines</name></member>
-            <member><type>VkBool32</type>                           <name>tessellationPointMode</name></member>
-            <member><type>VkBool32</type>                           <name>triangleFans</name></member>
-            <member><type>VkBool32</type>                           <name>vertexAttributeAccessBeyondStride</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePortabilitySubsetPropertiesKHR" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member limittype="min,pot"><type>uint32_t</type>  <name>minVertexInputBindingStrideAlignment</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevice4444FormatsFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>formatA4R4G4B4</name></member>
-            <member><type>VkBool32</type>                           <name>formatA4B4G4R4</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSubpassShadingFeaturesHUAWEI" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>subpassShading</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"><type>VkStructureType</type>  <name>sType</name></member>
-            <member optional="true"><type>void</type>*<name>pNext</name></member>
-            <member><type>VkBool32</type> <name>clustercullingShader</name></member>
-            <member><type>VkBool32</type> <name>multiviewClusterCullingShader</name></member>
-       </type>
-        <type category="struct" name="VkBufferCopy2">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_COPY_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                       <name>srcOffset</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>                       <name>dstOffset</name><comment>Specified in bytes</comment></member>
-            <member noautovalidity="true"><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member>
-        </type>
-        <type category="struct" name="VkBufferCopy2KHR" alias="VkBufferCopy2"/>
-        <type category="struct" name="VkImageCopy2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_COPY_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkImageSubresourceLayers</type>           <name>srcSubresource</name></member>
-            <member><type>VkOffset3D</type>                         <name>srcOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-            <member><type>VkImageSubresourceLayers</type>           <name>dstSubresource</name></member>
-            <member><type>VkOffset3D</type>                         <name>dstOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-            <member><type>VkExtent3D</type>                         <name>extent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-        </type>
-        <type category="struct" name="VkImageCopy2KHR" alias="VkImageCopy2"/>
-        <type category="struct" name="VkImageBlit2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_BLIT_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkImageSubresourceLayers</type>           <name>srcSubresource</name></member>
-            <member><type>VkOffset3D</type>                         <name>srcOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-            <member><type>VkImageSubresourceLayers</type>           <name>dstSubresource</name></member>
-            <member><type>VkOffset3D</type>                         <name>dstOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-        </type>
-        <type category="struct" name="VkImageBlit2KHR" alias="VkImageBlit2"/>
-        <type category="struct" name="VkBufferImageCopy2">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                       <name>bufferOffset</name><comment>Specified in bytes</comment></member>
-            <member><type>uint32_t</type>                           <name>bufferRowLength</name><comment>Specified in texels</comment></member>
-            <member><type>uint32_t</type>                           <name>bufferImageHeight</name></member>
-            <member><type>VkImageSubresourceLayers</type>           <name>imageSubresource</name></member>
-            <member><type>VkOffset3D</type>                         <name>imageOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-            <member><type>VkExtent3D</type>                         <name>imageExtent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
-        </type>
-        <type category="struct" name="VkBufferImageCopy2KHR" alias="VkBufferImageCopy2"/>
-        <type category="struct" name="VkImageResolve2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkImageSubresourceLayers</type>           <name>srcSubresource</name></member>
-            <member><type>VkOffset3D</type>                         <name>srcOffset</name></member>
-            <member><type>VkImageSubresourceLayers</type>           <name>dstSubresource</name></member>
-            <member><type>VkOffset3D</type>                         <name>dstOffset</name></member>
-            <member><type>VkExtent3D</type>                         <name>extent</name></member>
-        </type>
-        <type category="struct" name="VkImageResolve2KHR" alias="VkImageResolve2"/>
-        <type category="struct" name="VkCopyBufferInfo2">
-            <member values="VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBuffer</type>                           <name>srcBuffer</name></member>
-            <member><type>VkBuffer</type>                           <name>dstBuffer</name></member>
-            <member><type>uint32_t</type>                           <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkBufferCopy2</type>* <name>pRegions</name></member>
-        </type>
-        <type category="struct" name="VkCopyBufferInfo2KHR" alias="VkCopyBufferInfo2"/>
-        <type category="struct" name="VkCopyImageInfo2">
-            <member values="VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkImage</type>                            <name>srcImage</name></member>
-            <member><type>VkImageLayout</type>                      <name>srcImageLayout</name></member>
-            <member><type>VkImage</type>                            <name>dstImage</name></member>
-            <member><type>VkImageLayout</type>                      <name>dstImageLayout</name></member>
-            <member><type>uint32_t</type>                           <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkImageCopy2</type>* <name>pRegions</name></member>
-        </type>
-        <type category="struct" name="VkCopyImageInfo2KHR" alias="VkCopyImageInfo2"/>
-        <type category="struct" name="VkBlitImageInfo2">
-            <member values="VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkImage</type>                                <name>srcImage</name></member>
-            <member><type>VkImageLayout</type>                          <name>srcImageLayout</name></member>
-            <member><type>VkImage</type>                                <name>dstImage</name></member>
-            <member><type>VkImageLayout</type>                          <name>dstImageLayout</name></member>
-            <member><type>uint32_t</type>                               <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkImageBlit2</type>*  <name>pRegions</name></member>
-            <member><type>VkFilter</type>                               <name>filter</name></member>
-        </type>
-        <type category="struct" name="VkBlitImageInfo2KHR" alias="VkBlitImageInfo2"/>
-        <type category="struct" name="VkCopyBufferToImageInfo2">
-            <member values="VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                 <name>pNext</name></member>
-            <member><type>VkBuffer</type>                                    <name>srcBuffer</name></member>
-            <member><type>VkImage</type>                                     <name>dstImage</name></member>
-            <member><type>VkImageLayout</type>                               <name>dstImageLayout</name></member>
-            <member><type>uint32_t</type>                                    <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkBufferImageCopy2</type>* <name>pRegions</name></member>
-        </type>
-        <type category="struct" name="VkCopyBufferToImageInfo2KHR" alias="VkCopyBufferToImageInfo2"/>
-        <type category="struct" name="VkCopyImageToBufferInfo2">
-            <member values="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                   <name>pNext</name></member>
-            <member><type>VkImage</type>                                       <name>srcImage</name></member>
-            <member><type>VkImageLayout</type>                                 <name>srcImageLayout</name></member>
-            <member><type>VkBuffer</type>                                      <name>dstBuffer</name></member>
-            <member><type>uint32_t</type>                                      <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkBufferImageCopy2</type>*   <name>pRegions</name></member>
-        </type>
-        <type category="struct" name="VkCopyImageToBufferInfo2KHR" alias="VkCopyImageToBufferInfo2"/>
-        <type category="struct" name="VkResolveImageInfo2">
-            <member values="VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member><type>VkImage</type>                                    <name>srcImage</name></member>
-            <member><type>VkImageLayout</type>                              <name>srcImageLayout</name></member>
-            <member><type>VkImage</type>                                    <name>dstImage</name></member>
-            <member><type>VkImageLayout</type>                              <name>dstImageLayout</name></member>
-            <member><type>uint32_t</type>                                   <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkImageResolve2</type>*   <name>pRegions</name></member>
-        </type>
-        <type category="struct" name="VkResolveImageInfo2KHR" alias="VkResolveImageInfo2"/>
-        <type category="struct" name="VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>shaderImageInt64Atomics</name></member>
-            <member><type>VkBool32</type>                            <name>sparseImageInt64Atomics</name></member>
-        </type>
-        <type category="struct" name="VkFragmentShadingRateAttachmentInfoKHR" structextends="VkSubpassDescription2">
-            <member values="VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true">const <type>VkAttachmentReference2</type>* <name>pFragmentShadingRateAttachment</name></member>
-            <member><type>VkExtent2D</type>                 <name>shadingRateAttachmentTexelSize</name></member>
-        </type>
-        <type category="struct" name="VkPipelineFragmentShadingRateStateCreateInfoKHR" structextends="VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                <name>pNext</name></member>
-            <member><type>VkExtent2D</type>                                 <name>fragmentSize</name></member>
-            <member noautovalidity="true"><type>VkFragmentShadingRateCombinerOpKHR</type>         <name>combinerOps</name>[2]</member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>           <name>pipelineFragmentShadingRate</name></member>
-            <member><type>VkBool32</type>           <name>primitiveFragmentShadingRate</name></member>
-            <member><type>VkBool32</type>           <name>attachmentFragmentShadingRate</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentShadingRatePropertiesKHR" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member limittype="min"><type>VkExtent2D</type>             <name>minFragmentShadingRateAttachmentTexelSize</name></member>
-            <member limittype="max"><type>VkExtent2D</type>             <name>maxFragmentShadingRateAttachmentTexelSize</name></member>
-            <member limittype="max,pot"><type>uint32_t</type>                <name>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>primitiveFragmentShadingRateWithMultipleViewports</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>layeredShadingRateAttachments</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>fragmentShadingRateNonTrivialCombinerOps</name></member>
-            <member limittype="max"><type>VkExtent2D</type>             <name>maxFragmentSize</name></member>
-            <member limittype="max,pot"><type>uint32_t</type>                <name>maxFragmentSizeAspectRatio</name></member>
-            <member limittype="max"><type>uint32_t</type>                   <name>maxFragmentShadingRateCoverageSamples</name></member>
-            <member limittype="max"><type>VkSampleCountFlagBits</type>  <name>maxFragmentShadingRateRasterizationSamples</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>fragmentShadingRateWithShaderDepthStencilWrites</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>fragmentShadingRateWithSampleMask</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>fragmentShadingRateWithShaderSampleMask</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>fragmentShadingRateWithConservativeRasterization</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>fragmentShadingRateWithFragmentShaderInterlock</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>fragmentShadingRateWithCustomSampleLocations</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>               <name>fragmentShadingRateStrictMultiplyCombiner</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentShadingRateKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkSampleCountFlags</type> <name>sampleCounts</name></member>
-            <member><type>VkExtent2D</type>         <name>fragmentSize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderTerminateInvocationFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                                       <name>shaderTerminateInvocation</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR" alias="VkPhysicalDeviceShaderTerminateInvocationFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>fragmentShadingRateEnums</name></member>
-            <member><type>VkBool32</type>                           <name>supersampleFragmentShadingRates</name></member>
-            <member><type>VkBool32</type>                           <name>noInvocationFragmentShadingRates</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member limittype="max"><type>VkSampleCountFlagBits</type>              <name>maxFragmentShadingRateInvocationCount</name></member>
-        </type>
-        <type category="struct" name="VkPipelineFragmentShadingRateEnumStateCreateInfoNV" structextends="VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkFragmentShadingRateTypeNV</type>        <name>shadingRateType</name></member>
-            <member noautovalidity="true"><type>VkFragmentShadingRateNV</type>            <name>shadingRate</name></member>
-            <member noautovalidity="true"><type>VkFragmentShadingRateCombinerOpKHR</type> <name>combinerOps</name>[2]</member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureBuildSizesInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                       <name>accelerationStructureSize</name></member>
-            <member><type>VkDeviceSize</type>                       <name>updateScratchSize</name></member>
-            <member><type>VkDeviceSize</type>                       <name>buildScratchSize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImage2DViewOf3DFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>image2DViewOf3D</name></member>
-            <member><type>VkBool32</type>                                        <name>sampler2DViewOf3D</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>imageSlicedViewOf3D</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>attachmentFeedbackLoopDynamicState</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>mutableDescriptorType</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE" alias="VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT"/>
-        <type category="struct" name="VkMutableDescriptorTypeListEXT">
-            <member optional="true"><type>uint32_t</type>                          <name>descriptorTypeCount</name></member>
-            <member len="descriptorTypeCount">const <type>VkDescriptorType</type>* <name>pDescriptorTypes</name></member>
-        </type>
-        <type category="struct" name="VkMutableDescriptorTypeListVALVE" alias="VkMutableDescriptorTypeListEXT"/>
-        <type category="struct" name="VkMutableDescriptorTypeCreateInfoEXT" structextends="VkDescriptorSetLayoutCreateInfo,VkDescriptorPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                       <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                          <name>mutableDescriptorTypeListCount</name></member>
-            <member len="mutableDescriptorTypeListCount">const <type>VkMutableDescriptorTypeListEXT</type>* <name>pMutableDescriptorTypeLists</name></member>
-        </type>
-        <type category="struct" name="VkMutableDescriptorTypeCreateInfoVALVE" alias="VkMutableDescriptorTypeCreateInfoEXT"/>
-        <type category="struct" name="VkPhysicalDeviceDepthClipControlFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type>                                    <name>depthClipControl</name></member>
-        </type>
-        <type category="struct" name="VkPipelineViewportDepthClipControlCreateInfoEXT" structextends="VkPipelineViewportStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type>                    <name>negativeOneToOne</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>vertexInputDynamicState</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalMemoryRDMAFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>externalMemoryRDMA</name></member>
-        </type>
-        <type category="struct" name="VkVertexInputBindingDescription2EXT">
-            <member values="VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>uint32_t</type>                       <name>binding</name></member>
-            <member><type>uint32_t</type>                       <name>stride</name></member>
-            <member><type>VkVertexInputRate</type>              <name>inputRate</name></member>
-            <member><type>uint32_t</type>                       <name>divisor</name></member>
-        </type>
-        <type category="struct" name="VkVertexInputAttributeDescription2EXT">
-            <member values="VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>uint32_t</type>                       <name>location</name><comment>location of the shader vertex attrib</comment></member>
-            <member><type>uint32_t</type>                       <name>binding</name><comment>Vertex buffer binding id</comment></member>
-            <member><type>VkFormat</type>                       <name>format</name><comment>format of source data</comment></member>
-            <member><type>uint32_t</type>                       <name>offset</name><comment>Offset of first element in bytes from base of vertex</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceColorWriteEnableFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>colorWriteEnable</name></member>
-        </type>
-        <type category="struct" name="VkPipelineColorWriteCreateInfoEXT" structextends="VkPipelineColorBlendStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>attachmentCount</name><comment># of pAttachments</comment></member>
-            <member len="attachmentCount">const <type>VkBool32</type>*  <name>pColorWriteEnables</name></member>
-        </type>
-        <type category="struct" name="VkMemoryBarrier2" structextends="VkSubpassDependency2">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_BARRIER_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineStageFlags2</type>  <name>srcStageMask</name></member>
-            <member optional="true"><type>VkAccessFlags2</type>         <name>srcAccessMask</name></member>
-            <member optional="true"><type>VkPipelineStageFlags2</type>  <name>dstStageMask</name></member>
-            <member optional="true"><type>VkAccessFlags2</type>         <name>dstAccessMask</name></member>
-        </type>
-        <type category="struct" name="VkMemoryBarrier2KHR" alias="VkMemoryBarrier2"/>
-        <type category="struct" name="VkImageMemoryBarrier2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineStageFlags2</type>  <name>srcStageMask</name></member>
-            <member optional="true"><type>VkAccessFlags2</type>         <name>srcAccessMask</name></member>
-            <member optional="true"><type>VkPipelineStageFlags2</type>  <name>dstStageMask</name></member>
-            <member optional="true"><type>VkAccessFlags2</type>         <name>dstAccessMask</name></member>
-            <member><type>VkImageLayout</type>                          <name>oldLayout</name></member>
-            <member><type>VkImageLayout</type>                          <name>newLayout</name></member>
-            <member><type>uint32_t</type>                               <name>srcQueueFamilyIndex</name></member>
-            <member><type>uint32_t</type>                               <name>dstQueueFamilyIndex</name></member>
-            <member><type>VkImage</type>                                <name>image</name></member>
-            <member><type>VkImageSubresourceRange</type>                <name>subresourceRange</name></member>
-        </type>
-        <type category="struct" name="VkImageMemoryBarrier2KHR" alias="VkImageMemoryBarrier2"/>
-        <type category="struct" name="VkBufferMemoryBarrier2">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineStageFlags2</type>  <name>srcStageMask</name></member>
-            <member optional="true"><type>VkAccessFlags2</type>         <name>srcAccessMask</name></member>
-            <member optional="true"><type>VkPipelineStageFlags2</type>  <name>dstStageMask</name></member>
-            <member optional="true"><type>VkAccessFlags2</type>         <name>dstAccessMask</name></member>
-            <member><type>uint32_t</type>                               <name>srcQueueFamilyIndex</name></member>
-            <member><type>uint32_t</type>                               <name>dstQueueFamilyIndex</name></member>
-            <member><type>VkBuffer</type>                               <name>buffer</name></member>
-            <member><type>VkDeviceSize</type>                           <name>offset</name></member>
-            <member><type>VkDeviceSize</type>                           <name>size</name></member>
-        </type>
-        <type category="struct" name="VkBufferMemoryBarrier2KHR" alias="VkBufferMemoryBarrier2"/>
-        <type category="struct" name="VkDependencyInfo">
-            <member values="VK_STRUCTURE_TYPE_DEPENDENCY_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                  <name>pNext</name></member>
-            <member optional="true"><type>VkDependencyFlags</type>                            <name>dependencyFlags</name></member>
-            <member optional="true"><type>uint32_t</type>                                     <name>memoryBarrierCount</name></member>
-            <member len="memoryBarrierCount">const <type>VkMemoryBarrier2</type>*             <name>pMemoryBarriers</name></member>
-            <member optional="true"><type>uint32_t</type>                                     <name>bufferMemoryBarrierCount</name></member>
-            <member len="bufferMemoryBarrierCount">const <type>VkBufferMemoryBarrier2</type>* <name>pBufferMemoryBarriers</name></member>
-            <member optional="true"><type>uint32_t</type>                                     <name>imageMemoryBarrierCount</name></member>
-            <member len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier2</type>*   <name>pImageMemoryBarriers</name></member>
-        </type>
-        <type category="struct" name="VkDependencyInfoKHR" alias="VkDependencyInfo"/>
-        <type category="struct" name="VkSemaphoreSubmitInfo">
-            <member values="VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO"><type>VkStructureType</type>           <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                <name>pNext</name></member>
-            <member><type>VkSemaphore</type>                                                                <name>semaphore</name></member>
-            <member><type>uint64_t</type>                                                                   <name>value</name></member>
-            <member optional="true"><type>VkPipelineStageFlags2</type>                                      <name>stageMask</name></member>
-            <member><type>uint32_t</type>                                                                   <name>deviceIndex</name></member>
-        </type>
-        <type category="struct" name="VkSemaphoreSubmitInfoKHR" alias="VkSemaphoreSubmitInfo"/>
-        <type category="struct" name="VkCommandBufferSubmitInfo">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO"><type>VkStructureType</type>      <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                <name>pNext</name></member>
-            <member><type>VkCommandBuffer</type>                                                            <name>commandBuffer</name></member>
-            <member><type>uint32_t</type>                                                                   <name>deviceMask</name></member>
-        </type>
-        <type category="struct" name="VkCommandBufferSubmitInfoKHR" alias="VkCommandBufferSubmitInfo"/>
-        <type category="struct" name="VkSubmitInfo2">
-            <member values="VK_STRUCTURE_TYPE_SUBMIT_INFO_2"><type>VkStructureType</type>                   <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                <name>pNext</name></member>
-            <member optional="true"><type>VkSubmitFlags</type>                                              <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>                                                   <name>waitSemaphoreInfoCount</name></member>
-            <member len="waitSemaphoreInfoCount">const <type>VkSemaphoreSubmitInfo</type>*                  <name>pWaitSemaphoreInfos</name></member>
-            <member optional="true"><type>uint32_t</type>                                                   <name>commandBufferInfoCount</name></member>
-            <member len="commandBufferInfoCount">const <type>VkCommandBufferSubmitInfo</type>*              <name>pCommandBufferInfos</name></member>
-            <member optional="true"><type>uint32_t</type>                                                   <name>signalSemaphoreInfoCount</name></member>
-            <member len="signalSemaphoreInfoCount">const <type>VkSemaphoreSubmitInfo</type>*                <name>pSignalSemaphoreInfos</name></member>
-        </type>
-        <type category="struct" name="VkSubmitInfo2KHR" alias="VkSubmitInfo2"/>
-        <type category="struct" name="VkQueueFamilyCheckpointProperties2NV" structextends="VkQueueFamilyProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*           <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkPipelineStageFlags2</type> <name>checkpointExecutionStageMask</name></member>
-        </type>
-        <type category="struct" name="VkCheckpointData2NV" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkPipelineStageFlags2</type>   <name>stage</name></member>
-            <member noautovalidity="true"><type>void</type>* <name>pCheckpointMarker</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSynchronization2Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>synchronization2</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSynchronization2FeaturesKHR" alias="VkPhysicalDeviceSynchronization2Features"/>
-        <type category="struct" name="VkPhysicalDeviceHostImageCopyFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>hostImageCopy</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceHostImageCopyPropertiesEXT" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                                        <name>pNext</name></member>
-            <member optional="true" limittype="noauto"><type>uint32_t</type>                                  <name>copySrcLayoutCount</name></member>
-            <member optional="true" limittype="noauto" len="copySrcLayoutCount"><type>VkImageLayout</type>*   <name>pCopySrcLayouts</name></member>
-            <member optional="true" limittype="noauto"><type>uint32_t</type>                                  <name>copyDstLayoutCount</name></member>
-            <member optional="true" limittype="noauto" len="copyDstLayoutCount"><type>VkImageLayout</type>*   <name>pCopyDstLayouts</name></member>
-            <member optional="true" limittype="noauto"><type>uint8_t</type>                                   <name>optimalTilingLayoutUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member limittype="bitmask"><type>VkBool32</type>                                                 <name>identicalMemoryTypeRequirements</name></member>
-        </type>
-        <type category="struct" name="VkMemoryToImageCopyEXT">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member>const <type>void</type>*                                    <name>pHostPointer</name></member>
-            <member><type>uint32_t</type>                                       <name>memoryRowLength</name><comment>Specified in texels</comment></member>
-            <member><type>uint32_t</type>                                       <name>memoryImageHeight</name></member>
-            <member><type>VkImageSubresourceLayers</type>                       <name>imageSubresource</name></member>
-            <member><type>VkOffset3D</type>                                     <name>imageOffset</name></member>
-            <member><type>VkExtent3D</type>                                     <name>imageExtent</name></member>
-        </type>
-        <type category="struct" name="VkImageToMemoryCopyEXT">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member><type>void</type>*                                          <name>pHostPointer</name></member>
-            <member><type>uint32_t</type>                                       <name>memoryRowLength</name><comment>Specified in texels</comment></member>
-            <member><type>uint32_t</type>                                       <name>memoryImageHeight</name></member>
-            <member><type>VkImageSubresourceLayers</type>                       <name>imageSubresource</name></member>
-            <member><type>VkOffset3D</type>                                     <name>imageOffset</name></member>
-            <member><type>VkExtent3D</type>                                     <name>imageExtent</name></member>
-        </type>
-        <type category="struct" name="VkCopyMemoryToImageInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>VkHostImageCopyFlagsEXT</type>    <name>flags</name></member>
-            <member><type>VkImage</type>                                    <name>dstImage</name></member>
-            <member><type>VkImageLayout</type>                              <name>dstImageLayout</name></member>
-            <member><type>uint32_t</type>                                   <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkMemoryToImageCopyEXT</type>* <name>pRegions</name></member>
-        </type>
-        <type category="struct" name="VkCopyImageToMemoryInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>VkHostImageCopyFlagsEXT</type>    <name>flags</name></member>
-            <member><type>VkImage</type>                                    <name>srcImage</name></member>
-            <member><type>VkImageLayout</type>                              <name>srcImageLayout</name></member>
-            <member><type>uint32_t</type>                                   <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkImageToMemoryCopyEXT</type>* <name>pRegions</name></member>
-        </type>
-        <type category="struct" name="VkCopyImageToImageInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>VkHostImageCopyFlagsEXT</type>    <name>flags</name></member>
-            <member><type>VkImage</type>                                    <name>srcImage</name></member>
-            <member><type>VkImageLayout</type>                              <name>srcImageLayout</name></member>
-            <member><type>VkImage</type>                                    <name>dstImage</name></member>
-            <member><type>VkImageLayout</type>                              <name>dstImageLayout</name></member>
-            <member><type>uint32_t</type>                                   <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkImageCopy2</type>*      <name>pRegions</name></member>
-        </type>
-        <type category="struct" name="VkHostImageLayoutTransitionInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*  <name>pNext</name></member>
-            <member><type>VkImage</type>                      <name>image</name></member>
-            <member><type>VkImageLayout</type>                <name>oldLayout</name></member>
-            <member><type>VkImageLayout</type>                <name>newLayout</name></member>
-            <member><type>VkImageSubresourceRange</type>      <name>subresourceRange</name></member>
-        </type>
-        <type category="struct" name="VkSubresourceHostMemcpySizeEXT" returnedonly="true" structextends="VkSubresourceLayout2KHR">
-            <member values="VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                 <name>size</name><comment>Specified in bytes</comment></member>
-        </type>
-        <type category="struct" name="VkHostImageCopyDevicePerformanceQueryEXT" returnedonly="true" structextends="VkImageFormatProperties2">
-            <member values="VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>optimalDeviceAccess</name><comment>Specifies if device access is optimal</comment></member>
-            <member><type>VkBool32</type>                     <name>identicalMemoryLayout</name><comment>Specifies if memory layout is identical</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVulkanSC10Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*          <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>   <name>deviceNoDynamicHostAllocations</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>   <name>deviceDestroyFreesMemory</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>   <name>commandPoolMultipleCommandBuffersRecording</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>   <name>commandPoolResetCommandBuffer</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>   <name>commandBufferSimultaneousUse</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>   <name>secondaryCommandBufferNullOrImagelessFramebuffer</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>   <name>recycleDescriptorSetMemory</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>   <name>recyclePipelineMemory</name></member>
-            <member limittype="max"><type>uint32_t</type>       <name>maxRenderPassSubpasses</name></member>
-            <member limittype="max"><type>uint32_t</type>       <name>maxRenderPassDependencies</name></member>
-            <member limittype="max"><type>uint32_t</type>       <name>maxSubpassInputAttachments</name></member>
-            <member limittype="max"><type>uint32_t</type>       <name>maxSubpassPreserveAttachments</name></member>
-            <member limittype="max"><type>uint32_t</type>       <name>maxFramebufferAttachments</name></member>
-            <member limittype="max"><type>uint32_t</type>       <name>maxDescriptorSetLayoutBindings</name></member>
-            <member limittype="max"><type>uint32_t</type>       <name>maxQueryFaultCount</name></member>
-            <member limittype="max"><type>uint32_t</type>       <name>maxCallbackFaultCount</name></member>
-            <member limittype="max"><type>uint32_t</type>       <name>maxCommandPoolCommandBuffers</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>   <name>maxCommandBufferSize</name></member>
-        </type>
-        <type category="struct" name="VkPipelinePoolSize">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                   <name>poolEntrySize</name></member>
-            <member><type>uint32_t</type>                       <name>poolEntryCount</name></member>
-        </type>
-        <type category="struct" name="VkDeviceObjectReservationCreateInfo" allowduplicate="true" structextends="VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>pipelineCacheCreateInfoCount</name></member>
-            <member len="pipelineCacheCreateInfoCount">const <type>VkPipelineCacheCreateInfo</type>* <name>pPipelineCacheCreateInfos</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>pipelinePoolSizeCount</name></member>
-            <member len="pipelinePoolSizeCount">const <type>VkPipelinePoolSize</type>* <name>pPipelinePoolSizes</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>semaphoreRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>commandBufferRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>fenceRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>deviceMemoryRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>bufferRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>imageRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>eventRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>queryPoolRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>bufferViewRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>imageViewRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>layeredImageViewRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>pipelineCacheRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>pipelineLayoutRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>renderPassRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>graphicsPipelineRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>computePipelineRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>descriptorSetLayoutRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>samplerRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>descriptorPoolRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>descriptorSetRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>framebufferRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>commandPoolRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>samplerYcbcrConversionRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>surfaceRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>swapchainRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>displayModeRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>subpassDescriptionRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>attachmentDescriptionRequestCount</name></member>
-            <member optional="true"><type>uint32_t</type>       <name>descriptorSetLayoutBindingRequestCount</name></member>
-            <member><type>uint32_t</type>                       <name>descriptorSetLayoutBindingLimit</name></member>
-            <member><type>uint32_t</type>                       <name>maxImageViewMipLevels</name></member>
-            <member><type>uint32_t</type>                       <name>maxImageViewArrayLayers</name></member>
-            <member><type>uint32_t</type>                       <name>maxLayeredImageViewMipLevels</name></member>
-            <member><type>uint32_t</type>                       <name>maxOcclusionQueriesPerPool</name></member>
-            <member><type>uint32_t</type>                       <name>maxPipelineStatisticsQueriesPerPool</name></member>
-            <member><type>uint32_t</type>                       <name>maxTimestampQueriesPerPool</name></member>
-            <member><type>uint32_t</type>                       <name>maxImmutableSamplersPerDescriptorSetLayout</name></member>
-        </type>
-        <type category="struct" name="VkCommandPoolMemoryReservationCreateInfo" structextends="VkCommandPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>  <name>commandPoolReservedSize</name></member>
-            <member><type>uint32_t</type>      <name>commandPoolMaxCommandBuffers</name></member>
-        </type>
-        <type category="struct" name="VkCommandPoolMemoryConsumption" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*          <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                   <name>commandPoolAllocated</name></member>
-            <member><type>VkDeviceSize</type>                   <name>commandPoolReservedSize</name></member>
-            <member><type>VkDeviceSize</type>                   <name>commandBufferAllocated</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVulkanSC10Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*          <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>shaderAtomicInstructions</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>primitivesGeneratedQuery</name></member>
-            <member><type>VkBool32</type>               <name>primitivesGeneratedQueryWithRasterizerDiscard</name></member>
-            <member><type>VkBool32</type>               <name>primitivesGeneratedQueryWithNonZeroStreams</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceLegacyDitheringFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>legacyDithering</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*   <name>pNext</name></member>
-            <member><type>VkBool32</type>                <name>multisampledRenderToSingleSampled</name></member>
-        </type>
-        <type category="struct" name="VkSubpassResolvePerformanceQueryEXT" returnedonly="true" structextends="VkFormatProperties2">
-            <member values="VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type> <name>optimal</name></member>
-        </type>
-        <type category="struct" name="VkMultisampledRenderToSingleSampledInfoEXT" structextends="VkSubpassDescription2,VkRenderingInfo">
-            <member values="VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*   <name>pNext</name></member>
-            <member><type>VkBool32</type>                      <name>multisampledRenderToSingleSampledEnable</name></member>
-            <member><type>VkSampleCountFlagBits</type>         <name>rasterizationSamples</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePipelineProtectedAccessFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>pipelineProtectedAccess</name></member>
-        </type>
-        <type category="struct" name="VkQueueFamilyVideoPropertiesKHR" returnedonly="true" structextends="VkQueueFamilyProperties2">
-            <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkVideoCodecOperationFlagsKHR</type>  <name>videoCodecOperations</name></member>
-        </type>
-        <type category="struct" name="VkQueueFamilyQueryResultStatusPropertiesKHR" returnedonly="true" structextends="VkQueueFamilyProperties2">
-            <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>VkBool32</type>                                           <name>queryResultStatusSupport</name></member>
-        </type>
-        <type category="struct" name="VkVideoProfileListInfoKHR" structextends="VkPhysicalDeviceImageFormatInfo2,VkPhysicalDeviceVideoFormatInfoKHR,VkImageCreateInfo,VkBufferCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                   <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                      <name>profileCount</name></member>
-            <member len="profileCount">const <type>VkVideoProfileInfoKHR</type>*               <name>pProfiles</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVideoFormatInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                          <name>pNext</name></member>
-            <member><type>VkImageUsageFlags</type>                                    <name>imageUsage</name></member>
-        </type>
-        <type category="struct" name="VkVideoFormatPropertiesKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                                  <name>pNext</name></member>
-            <member><type>VkFormat</type>                                                               <name>format</name></member>
-            <member><type>VkComponentMapping</type>                                                     <name>componentMapping</name></member>
-            <member><type>VkImageCreateFlags</type>                                                     <name>imageCreateFlags</name></member>
-            <member><type>VkImageType</type>                                                            <name>imageType</name></member>
-            <member><type>VkImageTiling</type>                                                          <name>imageTiling</name></member>
-            <member><type>VkImageUsageFlags</type>                                                      <name>imageUsageFlags</name></member>
-        </type>
-        <type category="struct" name="VkVideoProfileInfoKHR" structextends="VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkVideoCodecOperationFlagBitsKHR</type>   <name>videoCodecOperation</name></member>
-            <member><type>VkVideoChromaSubsamplingFlagsKHR</type>   <name>chromaSubsampling</name></member>
-            <member><type>VkVideoComponentBitDepthFlagsKHR</type>   <name>lumaBitDepth</name></member>
-            <member optional="true"><type>VkVideoComponentBitDepthFlagsKHR</type> <name>chromaBitDepth</name></member>
-        </type>
-        <type category="struct" name="VkVideoCapabilitiesKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkVideoCapabilityFlagsKHR</type>        <name>flags</name></member>
-            <member><type>VkDeviceSize</type>                     <name>minBitstreamBufferOffsetAlignment</name></member>
-            <member><type>VkDeviceSize</type>                     <name>minBitstreamBufferSizeAlignment</name></member>
-            <member><type>VkExtent2D</type>                       <name>pictureAccessGranularity</name></member>
-            <member><type>VkExtent2D</type>                       <name>minCodedExtent</name></member>
-            <member><type>VkExtent2D</type>                       <name>maxCodedExtent</name></member>
-            <member><type>uint32_t</type>                         <name>maxDpbSlots</name></member>
-            <member><type>uint32_t</type>                         <name>maxActiveReferencePictures</name></member>
-            <member><type>VkExtensionProperties</type>            <name>stdHeaderVersion</name></member>
-        </type>
-        <type category="struct" name="VkVideoSessionMemoryRequirementsKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*             <name>pNext</name></member>
-            <member><type>uint32_t</type>                          <name>memoryBindIndex</name></member>
-            <member><type>VkMemoryRequirements</type>              <name>memoryRequirements</name></member>
-        </type>
-        <type category="struct" name="VkBindVideoSessionMemoryInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*       <name>pNext</name></member>
-            <member><type>uint32_t</type>                          <name>memoryBindIndex</name></member>
-            <member><type>VkDeviceMemory</type>                    <name>memory</name></member>
-            <member><type>VkDeviceSize</type>                      <name>memoryOffset</name></member>
-            <member><type>VkDeviceSize</type>                      <name>memorySize</name></member>
-        </type>
-        <type category="struct" name="VkVideoPictureResourceInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkOffset2D</type>         <name>codedOffset</name><comment>The offset to be used for the picture resource, currently only used in field mode</comment></member>
-            <member><type>VkExtent2D</type>         <name>codedExtent</name><comment>The extent to be used for the picture resource</comment></member>
-            <member><type>uint32_t</type>           <name>baseArrayLayer</name><comment>The first array layer to be accessed for the Decode or Encode Operations</comment></member>
-            <member><type>VkImageView</type>        <name>imageViewBinding</name><comment>The ImageView binding of the resource</comment></member>
-        </type>
-        <type category="struct" name="VkVideoReferenceSlotInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>int32_t</type>                            <name>slotIndex</name><comment>The reference slot index</comment></member>
-            <member optional="true">const <type>VkVideoPictureResourceInfoKHR</type>* <name>pPictureResource</name><comment>The reference picture resource</comment></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeCapabilitiesKHR" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                 <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkVideoDecodeCapabilityFlagsKHR</type> <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeUsageInfoKHR" structextends="VkVideoProfileInfoKHR,VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>VkVideoDecodeUsageFlagsKHR</type> <name>videoUsageHints</name></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member optional="true"><type>VkVideoDecodeFlagsKHR</type>  <name>flags</name></member>
-            <member><type>VkBuffer</type>                               <name>srcBuffer</name></member>
-            <member><type>VkDeviceSize</type>                           <name>srcBufferOffset</name></member>
-            <member><type>VkDeviceSize</type>                           <name>srcBufferRange</name></member>
-            <member><type>VkVideoPictureResourceInfoKHR</type>          <name>dstPictureResource</name></member>
-            <member optional="true">const <type>VkVideoReferenceSlotInfoKHR</type>* <name>pSetupReferenceSlot</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>referenceSlotCount</name></member>
-            <member len="referenceSlotCount">const <type>VkVideoReferenceSlotInfoKHR</type>* <name>pReferenceSlots</name></member>
-        </type>
-            <comment>Video Decode Codec Standard specific structures</comment>
-        <type category="include" name="vk_video/vulkan_video_codec_h264std.h">#include "vk_video/vulkan_video_codec_h264std.h"</type>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264ProfileIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264LevelIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264ChromaFormatIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PocType"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SpsFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264ScalingLists"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SequenceParameterSetVui"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264AspectRatioIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264HrdParameters"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SpsVuiFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264WeightedBipredIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PpsFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SliceType"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264CabacInitIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264DisableDeblockingFilterIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PictureType"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264ModificationOfPicNumsIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264MemMgmtControlOp"/>
-        <type category="include" name="vk_video/vulkan_video_codec_h264std_decode.h">#include "vk_video/vulkan_video_codec_h264std_decode.h"</type>
-        <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264PictureInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264ReferenceInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264PictureInfoFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264ReferenceInfoFlags"/>
-        <type category="struct" name="VkVideoDecodeH264ProfileInfoKHR" structextends="VkVideoProfileInfoKHR,VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                  <name>pNext</name></member>
-            <member><type>StdVideoH264ProfileIdc</type>                                       <name>stdProfileIdc</name></member>
-            <member optional="true"><type>VkVideoDecodeH264PictureLayoutFlagBitsKHR</type>    <name>pictureLayout</name></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeH264CapabilitiesKHR" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>StdVideoH264LevelIdc</type>             <name>maxLevelIdc</name></member>
-            <member><type>VkOffset2D</type>                       <name>fieldOffsetGranularity</name></member>
-        </type>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SequenceParameterSet"/>
-        <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PictureParameterSet"/>
-        <type category="struct" name="VkVideoDecodeH264SessionParametersAddInfoKHR" structextends="VkVideoSessionParametersUpdateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                    <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                       <name>stdSPSCount</name></member>
-            <member len="stdSPSCount">const <type>StdVideoH264SequenceParameterSet</type>*      <name>pStdSPSs</name></member>
-            <member optional="true"><type>uint32_t</type>                                       <name>stdPPSCount</name></member>
-            <member len="stdPPSCount">const <type>StdVideoH264PictureParameterSet</type>*       <name>pStdPPSs</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeH264SessionParametersCreateInfoKHR" structextends="VkVideoSessionParametersCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                               <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                                  <name>maxStdSPSCount</name></member>
-            <member><type>uint32_t</type>                                                                  <name>maxStdPPSCount</name></member>
-            <member optional="true">const <type>VkVideoDecodeH264SessionParametersAddInfoKHR</type>*       <name>pParametersAddInfo</name></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeH264PictureInfoKHR" structextends="VkVideoDecodeInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*           <name>pNext</name></member>
-            <member>const <type>StdVideoDecodeH264PictureInfo</type>*  <name>pStdPictureInfo</name></member>
-            <member><type>uint32_t</type>                              <name>sliceCount</name></member>
-            <member len="sliceCount">const <type>uint32_t</type>*      <name>pSliceOffsets</name></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeH264DpbSlotInfoKHR" structextends="VkVideoReferenceSlotInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member>const <type>StdVideoDecodeH264ReferenceInfo</type>* <name>pStdReferenceInfo</name></member>
-        </type>
-        <type category="include" name="vk_video/vulkan_video_codec_h265std.h">#include "vk_video/vulkan_video_codec_h265std.h"</type>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265ProfileIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265VideoParameterSet"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SequenceParameterSet"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265PictureParameterSet"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265DecPicBufMgr"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265HrdParameters"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265VpsFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265LevelIdc"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SpsFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265ScalingLists"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SequenceParameterSetVui"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265PredictorPaletteEntries"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265PpsFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SubLayerHrdParameters"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265HrdFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SpsVuiFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SliceType"/>
-        <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265PictureType"/>
-        <type category="include" name="vk_video/vulkan_video_codec_h265std_decode.h">#include "vk_video/vulkan_video_codec_h265std_decode.h"</type>
-        <type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265PictureInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265ReferenceInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265PictureInfoFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265ReferenceInfoFlags"/>
-        <type category="struct" name="VkVideoDecodeH265ProfileInfoKHR" structextends="VkVideoProfileInfoKHR,VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member><type>StdVideoH265ProfileIdc</type>         <name>stdProfileIdc</name></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeH265CapabilitiesKHR" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>StdVideoH265LevelIdc</type>                             <name>maxLevelIdc</name></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeH265SessionParametersAddInfoKHR" structextends="VkVideoSessionParametersUpdateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                   <name>stdVPSCount</name></member>
-            <member len="stdVPSCount">const <type>StdVideoH265VideoParameterSet</type>*     <name>pStdVPSs</name></member>
-            <member optional="true"><type>uint32_t</type>                                   <name>stdSPSCount</name></member>
-            <member len="stdSPSCount">const <type>StdVideoH265SequenceParameterSet</type>*  <name>pStdSPSs</name></member>
-            <member optional="true"><type>uint32_t</type>                                   <name>stdPPSCount</name></member>
-            <member len="stdPPSCount">const <type>StdVideoH265PictureParameterSet</type>*   <name>pStdPPSs</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeH265SessionParametersCreateInfoKHR" structextends="VkVideoSessionParametersCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                         <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                            <name>maxStdVPSCount</name></member>
-            <member><type>uint32_t</type>                                                            <name>maxStdSPSCount</name></member>
-            <member><type>uint32_t</type>                                                            <name>maxStdPPSCount</name></member>
-            <member optional="true">const <type>VkVideoDecodeH265SessionParametersAddInfoKHR</type>* <name>pParametersAddInfo</name></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeH265PictureInfoKHR" structextends="VkVideoDecodeInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member>const <type>StdVideoDecodeH265PictureInfo</type>*       <name>pStdPictureInfo</name></member>
-            <member><type>uint32_t</type>                                   <name>sliceSegmentCount</name></member>
-            <member len="sliceSegmentCount">const <type>uint32_t</type>*    <name>pSliceSegmentOffsets</name></member>
-        </type>
-        <type category="struct" name="VkVideoDecodeH265DpbSlotInfoKHR" structextends="VkVideoReferenceSlotInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*             <name>pNext</name></member>
-            <member>const <type>StdVideoDecodeH265ReferenceInfo</type>*  <name>pStdReferenceInfo</name></member>
-        </type>
-        <type category="struct" name="VkVideoSessionCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                   <name>pNext</name></member>
-            <member><type>uint32_t</type>                                      <name>queueFamilyIndex</name></member>
-            <member optional="true"><type>VkVideoSessionCreateFlagsKHR</type>  <name>flags</name></member>
-            <member>const <type>VkVideoProfileInfoKHR</type>*                  <name>pVideoProfile</name></member>
-            <member><type>VkFormat</type>                                      <name>pictureFormat</name></member>
-            <member><type>VkExtent2D</type>                                    <name>maxCodedExtent</name></member>
-            <member><type>VkFormat</type>                                      <name>referencePictureFormat</name></member>
-            <member><type>uint32_t</type>                                      <name>maxDpbSlots</name></member>
-            <member><type>uint32_t</type>                                      <name>maxActiveReferencePictures</name></member>
-            <member>const <type>VkExtensionProperties</type>*                  <name>pStdHeaderVersion</name></member>
-        </type>
-        <type category="struct" name="VkVideoSessionParametersCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member optional="true"><type>VkVideoSessionParametersCreateFlagsKHR</type> <name>flags</name></member>
-            <member optional="true"><type>VkVideoSessionParametersKHR</type>            <name>videoSessionParametersTemplate</name></member>
-            <member><type>VkVideoSessionKHR</type>                                      <name>videoSession</name></member>
-        </type>
-        <type category="struct" name="VkVideoSessionParametersUpdateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member><type>uint32_t</type>                                               <name>updateSequenceCount</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeSessionParametersGetInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member><type>VkVideoSessionParametersKHR</type>                    <name>videoSessionParameters</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeSessionParametersFeedbackInfoKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                          <name>pNext</name></member>
-            <member><type>VkBool32</type>                                       <name>hasOverrides</name></member>
-        </type>
-        <type category="struct" name="VkVideoBeginCodingInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                             <name>pNext</name></member>
-            <member optional="true"><type>VkVideoBeginCodingFlagsKHR</type>              <name>flags</name></member>
-            <member><type>VkVideoSessionKHR</type>                                       <name>videoSession</name></member>
-            <member optional="true"><type>VkVideoSessionParametersKHR</type>             <name>videoSessionParameters</name></member>
-            <member optional="true"><type>uint32_t</type>                                <name>referenceSlotCount</name></member>
-            <member len="referenceSlotCount">const <type>VkVideoReferenceSlotInfoKHR</type>* <name>pReferenceSlots</name></member>
-        </type>
-        <type category="struct" name="VkVideoEndCodingInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                              <name>pNext</name></member>
-            <member optional="true"><type>VkVideoEndCodingFlagsKHR</type> <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkVideoCodingControlInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member><type>VkVideoCodingControlFlagsKHR</type>  <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeUsageInfoKHR" structextends="VkVideoProfileInfoKHR,VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member optional="true"><type>VkVideoEncodeUsageFlagsKHR</type>     <name>videoUsageHints</name></member>
-            <member optional="true"><type>VkVideoEncodeContentFlagsKHR</type>   <name>videoContentHints</name></member>
-            <member optional="true"><type>VkVideoEncodeTuningModeKHR</type>     <name>tuningMode</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkVideoEncodeFlagsKHR</type>  <name>flags</name></member>
-            <member><type>VkBuffer</type>                               <name>dstBuffer</name></member>
-            <member><type>VkDeviceSize</type>                           <name>dstBufferOffset</name></member>
-            <member><type>VkDeviceSize</type>                           <name>dstBufferRange</name></member>
-            <member><type>VkVideoPictureResourceInfoKHR</type>          <name>srcPictureResource</name></member>
-            <member optional="true">const <type>VkVideoReferenceSlotInfoKHR</type>* <name>pSetupReferenceSlot</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>referenceSlotCount</name></member>
-            <member len="referenceSlotCount">const <type>VkVideoReferenceSlotInfoKHR</type>* <name>pReferenceSlots</name></member>
-            <member><type>uint32_t</type>                               <name>precedingExternallyEncodedBytes</name></member>
-        </type>
-        <type category="struct" name="VkQueryPoolVideoEncodeFeedbackCreateInfoKHR" structextends="VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkVideoEncodeFeedbackFlagsKHR</type>          <name>encodeFeedbackFlags</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeQualityLevelInfoKHR" structextends="VkVideoCodingControlInfoKHR,VkVideoSessionParametersCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>uint32_t</type>                               <name>qualityLevel</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member>const <type>VkVideoProfileInfoKHR</type>*           <name>pVideoProfile</name></member>
-            <member><type>uint32_t</type>                               <name>qualityLevel</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeQualityLevelPropertiesKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkVideoEncodeRateControlModeFlagBitsKHR</type> <name>preferredRateControlMode</name></member>
-            <member><type>uint32_t</type>                               <name>preferredRateControlLayerCount</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeRateControlInfoKHR" structextends="VkVideoCodingControlInfoKHR,VkVideoBeginCodingInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkVideoEncodeRateControlFlagsKHR</type> <name>flags</name></member>
-            <member optional="true"><type>VkVideoEncodeRateControlModeFlagBitsKHR</type> <name>rateControlMode</name></member>
-            <member optional="true"><type>uint32_t</type>               <name>layerCount</name></member>
-            <member len="layerCount">const <type>VkVideoEncodeRateControlLayerInfoKHR</type>* <name>pLayers</name></member>
-            <member><type>uint32_t</type>                               <name>virtualBufferSizeInMs</name></member>
-            <member><type>uint32_t</type>                               <name>initialVirtualBufferSizeInMs</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeRateControlLayerInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>uint64_t</type>                               <name>averageBitrate</name></member>
-            <member><type>uint64_t</type>                               <name>maxBitrate</name></member>
-            <member><type>uint32_t</type>                               <name>frameRateNumerator</name></member>
-            <member><type>uint32_t</type>                               <name>frameRateDenominator</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeCapabilitiesKHR" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                 <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkVideoEncodeCapabilityFlagsKHR</type>       <name>flags</name></member>
-            <member><type>VkVideoEncodeRateControlModeFlagsKHR</type>  <name>rateControlModes</name></member>
-            <member><type>uint32_t</type>                              <name>maxRateControlLayers</name></member>
-            <member><type>uint64_t</type>                              <name>maxBitrate</name></member>
-            <member><type>uint32_t</type>                              <name>maxQualityLevels</name></member>
-            <member><type>VkExtent2D</type>                            <name>encodeInputPictureGranularity</name></member>
-            <member><type>VkVideoEncodeFeedbackFlagsKHR</type>         <name>supportedEncodeFeedbackFlags</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264CapabilitiesEXT" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                 <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkVideoEncodeH264CapabilityFlagsEXT</type> <name>flags</name></member>
-            <member><type>StdVideoH264LevelIdc</type>                  <name>maxLevelIdc</name></member>
-            <member><type>uint32_t</type>                              <name>maxSliceCount</name></member>
-            <member><type>uint32_t</type>                              <name>maxPPictureL0ReferenceCount</name></member>
-            <member><type>uint32_t</type>                              <name>maxBPictureL0ReferenceCount</name></member>
-            <member><type>uint32_t</type>                              <name>maxL1ReferenceCount</name></member>
-            <member><type>uint32_t</type>                              <name>maxTemporalLayerCount</name></member>
-            <member><type>VkBool32</type>                              <name>expectDyadicTemporalLayerPattern</name></member>
-            <member><type>int32_t</type>                               <name>minQp</name></member>
-            <member><type>int32_t</type>                               <name>maxQp</name></member>
-            <member><type>VkBool32</type>                              <name>prefersGopRemainingFrames</name></member>
-            <member><type>VkBool32</type>                              <name>requiresGopRemainingFrames</name></member>
-            <member noautovalidity="true"><type>VkVideoEncodeH264StdFlagsEXT</type> <name>stdSyntaxFlags</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264QualityLevelPropertiesEXT" returnedonly="true" structextends="VkVideoEncodeQualityLevelPropertiesKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkVideoEncodeH264RateControlFlagsEXT</type>   <name>preferredRateControlFlags</name></member>
-            <member><type>uint32_t</type>                               <name>preferredGopFrameCount</name></member>
-            <member><type>uint32_t</type>                               <name>preferredIdrPeriod</name></member>
-            <member><type>uint32_t</type>                               <name>preferredConsecutiveBFrameCount</name></member>
-            <member><type>uint32_t</type>                               <name>preferredTemporalLayerCount</name></member>
-            <member><type>VkVideoEncodeH264QpEXT</type>                 <name>preferredConstantQp</name></member>
-            <member><type>uint32_t</type>                               <name>preferredMaxL0ReferenceCount</name></member>
-            <member><type>uint32_t</type>                               <name>preferredMaxL1ReferenceCount</name></member>
-            <member><type>VkBool32</type>                               <name>preferredStdEntropyCodingModeFlag</name></member>
-        </type>
-        <type category="include" name="vk_video/vulkan_video_codec_h264std_encode.h">#include "vk_video/vulkan_video_codec_h264std_encode.h"</type>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264SliceHeader"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264PictureInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264ReferenceInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264SliceHeaderFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264ReferenceListsInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264PictureInfoFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264ReferenceInfoFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264RefMgmtFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264RefListModEntry"/>
-        <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264RefPicMarkingEntry"/>
-        <type category="struct" name="VkVideoEncodeH264SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>useMaxLevelIdc</name></member>
-            <member><type>StdVideoH264LevelIdc</type>                   <name>maxLevelIdc</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                               <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                                  <name>stdSPSCount</name></member>
-            <member len="stdSPSCount" optional="true">const <type>StdVideoH264SequenceParameterSet</type>* <name>pStdSPSs</name></member>
-            <member optional="true"><type>uint32_t</type>                                                  <name>stdPPSCount</name></member>
-            <member len="stdPPSCount" optional="true">const <type>StdVideoH264PictureParameterSet</type>*  <name>pStdPPSs</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                         <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                            <name>maxStdSPSCount</name></member>
-            <member><type>uint32_t</type>                                                            <name>maxStdPPSCount</name></member>
-            <member optional="true">const <type>VkVideoEncodeH264SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264SessionParametersGetInfoEXT" structextends="VkVideoEncodeSessionParametersGetInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>writeStdSPS</name></member>
-            <member><type>VkBool32</type>                               <name>writeStdPPS</name></member>
-            <member><type>uint32_t</type>                               <name>stdSPSId</name></member>
-            <member><type>uint32_t</type>                               <name>stdPPSId</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264SessionParametersFeedbackInfoEXT" structextends="VkVideoEncodeSessionParametersFeedbackInfoKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>hasStdSPSOverrides</name></member>
-            <member><type>VkBool32</type>                               <name>hasStdPPSOverrides</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264DpbSlotInfoEXT" structextends="VkVideoReferenceSlotInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                          <name>pNext</name></member>
-            <member>const <type>StdVideoEncodeH264ReferenceInfo</type>*                               <name>pStdReferenceInfo</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264PictureInfoEXT" structextends="VkVideoEncodeInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                        <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                           <name>naluSliceEntryCount</name></member>
-            <member len="naluSliceEntryCount">const <type>VkVideoEncodeH264NaluSliceInfoEXT</type>* <name>pNaluSliceEntries</name></member>
-            <member>const <type>StdVideoEncodeH264PictureInfo</type>*                               <name>pStdPictureInfo</name></member>
-            <member><type>VkBool32</type>                                                           <name>generatePrefixNalu</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264ProfileInfoEXT" structextends="VkVideoProfileInfoKHR,VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*             <name>pNext</name></member>
-            <member><type>StdVideoH264ProfileIdc</type>                  <name>stdProfileIdc</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264NaluSliceInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                     <name>pNext</name></member>
-            <member><type>int32_t</type>                                         <name>constantQp</name></member>
-            <member>const <type>StdVideoEncodeH264SliceHeader</type>*            <name>pStdSliceHeader</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264RateControlInfoEXT" structextends="VkVideoCodingControlInfoKHR,VkVideoBeginCodingInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                     <name>pNext</name></member>
-            <member optional="true"><type>VkVideoEncodeH264RateControlFlagsEXT</type> <name>flags</name></member>
-            <member><type>uint32_t</type>                                        <name>gopFrameCount</name></member>
-            <member><type>uint32_t</type>                                        <name>idrPeriod</name></member>
-            <member><type>uint32_t</type>                                        <name>consecutiveBFrameCount</name></member>
-            <member><type>uint32_t</type>                                        <name>temporalLayerCount</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264QpEXT">
-            <member noautovalidity="true"><type>int32_t</type> <name>qpI</name></member>
-            <member noautovalidity="true"><type>int32_t</type> <name>qpP</name></member>
-            <member noautovalidity="true"><type>int32_t</type> <name>qpB</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264FrameSizeEXT">
-            <member noautovalidity="true"><type>uint32_t</type> <name>frameISize</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>framePSize</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>frameBSize</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264GopRemainingFrameInfoEXT" structextends="VkVideoBeginCodingInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>useGopRemainingFrames</name></member>
-            <member><type>uint32_t</type>                       <name>gopRemainingI</name></member>
-            <member><type>uint32_t</type>                       <name>gopRemainingP</name></member>
-            <member><type>uint32_t</type>                       <name>gopRemainingB</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH264RateControlLayerInfoEXT" structextends="VkVideoEncodeRateControlLayerInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>useMinQp</name></member>
-            <member><type>VkVideoEncodeH264QpEXT</type>                          <name>minQp</name></member>
-            <member><type>VkBool32</type>                                        <name>useMaxQp</name></member>
-            <member><type>VkVideoEncodeH264QpEXT</type>                          <name>maxQp</name></member>
-            <member><type>VkBool32</type>                                        <name>useMaxFrameSize</name></member>
-            <member><type>VkVideoEncodeH264FrameSizeEXT</type>                   <name>maxFrameSize</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265CapabilitiesEXT" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                 <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkVideoEncodeH265CapabilityFlagsEXT</type> <name>flags</name></member>
-            <member><type>StdVideoH265LevelIdc</type>                  <name>maxLevelIdc</name></member>
-            <member><type>uint32_t</type>                              <name>maxSliceSegmentCount</name></member>
-            <member><type>VkExtent2D</type>                            <name>maxTiles</name></member>
-            <member><type>VkVideoEncodeH265CtbSizeFlagsEXT</type>      <name>ctbSizes</name></member>
-            <member><type>VkVideoEncodeH265TransformBlockSizeFlagsEXT</type>      <name>transformBlockSizes</name></member>
-            <member><type>uint32_t</type>                              <name>maxPPictureL0ReferenceCount</name></member>
-            <member><type>uint32_t</type>                              <name>maxBPictureL0ReferenceCount</name></member>
-            <member><type>uint32_t</type>                              <name>maxL1ReferenceCount</name></member>
-            <member><type>uint32_t</type>                              <name>maxSubLayerCount</name></member>
-            <member><type>VkBool32</type>                              <name>expectDyadicTemporalSubLayerPattern</name></member>
-            <member><type>int32_t</type>                               <name>minQp</name></member>
-            <member><type>int32_t</type>                               <name>maxQp</name></member>
-            <member><type>VkBool32</type>                              <name>prefersGopRemainingFrames</name></member>
-            <member><type>VkBool32</type>                              <name>requiresGopRemainingFrames</name></member>
-            <member noautovalidity="true"><type>VkVideoEncodeH265StdFlagsEXT</type> <name>stdSyntaxFlags</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265QualityLevelPropertiesEXT" returnedonly="true" structextends="VkVideoEncodeQualityLevelPropertiesKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkVideoEncodeH265RateControlFlagsEXT</type>   <name>preferredRateControlFlags</name></member>
-            <member><type>uint32_t</type>                               <name>preferredGopFrameCount</name></member>
-            <member><type>uint32_t</type>                               <name>preferredIdrPeriod</name></member>
-            <member><type>uint32_t</type>                               <name>preferredConsecutiveBFrameCount</name></member>
-            <member><type>uint32_t</type>                               <name>preferredSubLayerCount</name></member>
-            <member><type>VkVideoEncodeH265QpEXT</type>                 <name>preferredConstantQp</name></member>
-            <member><type>uint32_t</type>                               <name>preferredMaxL0ReferenceCount</name></member>
-            <member><type>uint32_t</type>                               <name>preferredMaxL1ReferenceCount</name></member>
-        </type>
-        <type category="include" name="vk_video/vulkan_video_codec_h265std_encode.h">#include "vk_video/vulkan_video_codec_h265std_encode.h"</type>
-        <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265PictureInfoFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265PictureInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265SliceSegmentHeader"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceListsInfo"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265SliceSegmentHeaderFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceInfoFlags"/>
-        <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceModificationFlags"/>
-        <type category="struct" name="VkVideoEncodeH265SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>useMaxLevelIdc</name></member>
-            <member><type>StdVideoH265LevelIdc</type>                   <name>maxLevelIdc</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                               <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                                  <name>stdVPSCount</name></member>
-            <member len="stdVPSCount" optional="true">const <type>StdVideoH265VideoParameterSet</type>*    <name>pStdVPSs</name></member>
-            <member optional="true"><type>uint32_t</type>                                                  <name>stdSPSCount</name></member>
-            <member len="stdSPSCount" optional="true">const <type>StdVideoH265SequenceParameterSet</type>* <name>pStdSPSs</name></member>
-            <member optional="true"><type>uint32_t</type>                                                  <name>stdPPSCount</name></member>
-            <member len="stdPPSCount" optional="true">const <type>StdVideoH265PictureParameterSet</type>*  <name>pStdPPSs</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                         <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                            <name>maxStdVPSCount</name></member>
-            <member><type>uint32_t</type>                                                            <name>maxStdSPSCount</name></member>
-            <member><type>uint32_t</type>                                                            <name>maxStdPPSCount</name></member>
-            <member optional="true">const <type>VkVideoEncodeH265SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265SessionParametersGetInfoEXT" structextends="VkVideoEncodeSessionParametersGetInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>writeStdVPS</name></member>
-            <member><type>VkBool32</type>                               <name>writeStdSPS</name></member>
-            <member><type>VkBool32</type>                               <name>writeStdPPS</name></member>
-            <member><type>uint32_t</type>                               <name>stdVPSId</name></member>
-            <member><type>uint32_t</type>                               <name>stdSPSId</name></member>
-            <member><type>uint32_t</type>                               <name>stdPPSId</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265SessionParametersFeedbackInfoEXT" structextends="VkVideoEncodeSessionParametersFeedbackInfoKHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>hasStdVPSOverrides</name></member>
-            <member><type>VkBool32</type>                               <name>hasStdSPSOverrides</name></member>
-            <member><type>VkBool32</type>                               <name>hasStdPPSOverrides</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265PictureInfoEXT" structextends="VkVideoEncodeInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                       <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                          <name>naluSliceSegmentEntryCount</name></member>
-            <member len="naluSliceSegmentEntryCount">const <type>VkVideoEncodeH265NaluSliceSegmentInfoEXT</type>* <name>pNaluSliceSegmentEntries</name></member>
-            <member>const <type>StdVideoEncodeH265PictureInfo</type>*                              <name>pStdPictureInfo</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265NaluSliceSegmentInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                <name>pNext</name></member>
-            <member><type>int32_t</type>                                                    <name>constantQp</name></member>
-            <member>const <type>StdVideoEncodeH265SliceSegmentHeader</type>*                <name>pStdSliceSegmentHeader</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265RateControlInfoEXT" structextends="VkVideoCodingControlInfoKHR,VkVideoBeginCodingInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                     <name>pNext</name></member>
-            <member optional="true"><type>VkVideoEncodeH265RateControlFlagsEXT</type> <name>flags</name></member>
-            <member><type>uint32_t</type>                                        <name>gopFrameCount</name></member>
-            <member><type>uint32_t</type>                                        <name>idrPeriod</name></member>
-            <member><type>uint32_t</type>                                        <name>consecutiveBFrameCount</name></member>
-            <member><type>uint32_t</type>                                        <name>subLayerCount</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265QpEXT">
-            <member noautovalidity="true"><type>int32_t</type> <name>qpI</name></member>
-            <member noautovalidity="true"><type>int32_t</type> <name>qpP</name></member>
-            <member noautovalidity="true"><type>int32_t</type> <name>qpB</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265FrameSizeEXT">
-            <member noautovalidity="true"><type>uint32_t</type> <name>frameISize</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>framePSize</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>frameBSize</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265GopRemainingFrameInfoEXT" structextends="VkVideoBeginCodingInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>useGopRemainingFrames</name></member>
-            <member><type>uint32_t</type>                       <name>gopRemainingI</name></member>
-            <member><type>uint32_t</type>                       <name>gopRemainingP</name></member>
-            <member><type>uint32_t</type>                       <name>gopRemainingB</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265RateControlLayerInfoEXT" structextends="VkVideoEncodeRateControlLayerInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>useMinQp</name></member>
-            <member><type>VkVideoEncodeH265QpEXT</type>                          <name>minQp</name></member>
-            <member><type>VkBool32</type>                                        <name>useMaxQp</name></member>
-            <member><type>VkVideoEncodeH265QpEXT</type>                          <name>maxQp</name></member>
-            <member><type>VkBool32</type>                                        <name>useMaxFrameSize</name></member>
-            <member><type>VkVideoEncodeH265FrameSizeEXT</type>                   <name>maxFrameSize</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265ProfileInfoEXT" structextends="VkVideoProfileInfoKHR,VkQueryPoolCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>StdVideoH265ProfileIdc</type>         <name>stdProfileIdc</name></member>
-        </type>
-        <type category="struct" name="VkVideoEncodeH265DpbSlotInfoEXT" structextends="VkVideoReferenceSlotInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*              <name>pNext</name></member>
-            <member>const <type>StdVideoEncodeH265ReferenceInfo</type>*   <name>pStdReferenceInfo</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceInheritedViewportScissorFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>inheritedViewportScissor2D</name></member>
-        </type>
-        <type category="struct" name="VkCommandBufferInheritanceViewportScissorInfoNV" structextends="VkCommandBufferInheritanceInfo">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                    <name>pNext</name></member>
-            <member><type>VkBool32</type>                                       <name>viewportScissor2D</name></member>
-            <member><type>uint32_t</type>                                       <name>viewportDepthCount</name></member>
-            <member noautovalidity="true">const <type>VkViewport</type>*        <name>pViewportDepths</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>ycbcr2plane444Formats</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceProvokingVertexFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>provokingVertexLast</name></member>
-            <member><type>VkBool32</type>                           <name>transformFeedbackPreservesProvokingVertex</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceProvokingVertexPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                            <name>provokingVertexModePerPipeline</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                            <name>transformFeedbackPreservesTriangleFanProvokingVertex</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRasterizationProvokingVertexStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member><type>VkProvokingVertexModeEXT</type>           <name>provokingVertexMode</name></member>
-        </type>
-        <type category="struct" name="VkCuModuleCreateInfoNVX">
-            <member values="VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>size_t</type>                 <name>dataSize</name></member>
-            <member len="dataSize">const <type>void</type>*            <name>pData</name></member>
-        </type>
-        <type category="struct" name="VkCuFunctionCreateInfoNVX">
-            <member values="VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member><type>VkCuModuleNVX</type>                      <name>module</name></member>
-            <member len="null-terminated">const <type>char</type>*  <name>pName</name></member>
-        </type>
-        <type category="struct" name="VkCuLaunchInfoNVX">
-            <member values="VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkCuFunctionNVX</type>        <name>function</name></member>
-            <member><type>uint32_t</type>               <name>gridDimX</name></member>
-            <member><type>uint32_t</type>               <name>gridDimY</name></member>
-            <member><type>uint32_t</type>               <name>gridDimZ</name></member>
-            <member><type>uint32_t</type>               <name>blockDimX</name></member>
-            <member><type>uint32_t</type>               <name>blockDimY</name></member>
-            <member><type>uint32_t</type>               <name>blockDimZ</name></member>
-            <member><type>uint32_t</type>               <name>sharedMemBytes</name></member>
-            <member optional="true"><type>size_t</type>                 <name>paramCount</name></member>
-            <member len="paramCount">const <type>void</type>* const *    <name>pParams</name></member>
-            <member optional="true"><type>size_t</type>                 <name>extraCount</name></member>
-            <member len="extraCount">const <type>void</type>* const *    <name>pExtras</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDescriptorBufferFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>descriptorBuffer</name></member>
-            <member><type>VkBool32</type>                           <name>descriptorBufferCaptureReplay</name></member>
-            <member><type>VkBool32</type>                           <name>descriptorBufferImageLayoutIgnored</name></member>
-            <member><type>VkBool32</type>                           <name>descriptorBufferPushDescriptors</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDescriptorBufferPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="noauto"><type>VkBool32</type>                         <name>combinedImageSamplerDescriptorSingleArray</name></member>
-            <member limittype="noauto"><type>VkBool32</type>                         <name>bufferlessPushDescriptors</name></member>
-            <member limittype="noauto"><type>VkBool32</type>                         <name>allowSamplerImageViewPostSubmitCreation</name></member>
-            <member limittype="noauto"><type>VkDeviceSize</type>                     <name>descriptorBufferOffsetAlignment</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxDescriptorBufferBindings</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxResourceDescriptorBufferBindings</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxSamplerDescriptorBufferBindings</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxEmbeddedImmutableSamplerBindings</name></member>
-            <member limittype="max"><type>uint32_t</type>                            <name>maxEmbeddedImmutableSamplers</name></member>
-            <member limittype="noauto"><type>size_t</type>                           <name>bufferCaptureReplayDescriptorDataSize</name></member>
-            <member limittype="noauto"><type>size_t</type>                           <name>imageCaptureReplayDescriptorDataSize</name></member>
-            <member limittype="noauto"><type>size_t</type>                           <name>imageViewCaptureReplayDescriptorDataSize</name></member>
-            <member limittype="noauto"><type>size_t</type>                           <name>samplerCaptureReplayDescriptorDataSize</name></member>
-            <member limittype="noauto"><type>size_t</type>                           <name>accelerationStructureCaptureReplayDescriptorDataSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>samplerDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>combinedImageSamplerDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>sampledImageDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>storageImageDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>uniformTexelBufferDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>robustUniformTexelBufferDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>storageTexelBufferDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>robustStorageTexelBufferDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>uniformBufferDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>robustUniformBufferDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>storageBufferDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>robustStorageBufferDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>inputAttachmentDescriptorSize</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>accelerationStructureDescriptorSize</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                        <name>maxSamplerDescriptorBufferRange</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                        <name>maxResourceDescriptorBufferRange</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                        <name>samplerDescriptorBufferAddressSpaceSize</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                        <name>resourceDescriptorBufferAddressSpaceSize</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                        <name>descriptorBufferAddressSpaceSize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="max"><type>size_t</type>                              <name>combinedImageSamplerDensityMapDescriptorSize</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorAddressInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                   <name>pNext</name></member>
-            <member><type>VkDeviceAddress</type>                         <name>address</name></member>
-            <member><type>VkDeviceSize</type>                            <name>range</name></member>
-            <member><type>VkFormat</type>                                <name>format</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorBufferBindingInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                   <name>pNext</name></member>
-            <member><type>VkDeviceAddress</type>                         <name>address</name></member>
-            <member><type>VkBufferUsageFlags</type>                      <name>usage</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorBufferBindingPushDescriptorBufferHandleEXT" structextends="VkDescriptorBufferBindingInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                   <name>pNext</name></member>
-            <member ><type>VkBuffer</type>                               <name>buffer</name></member>
-        </type>
-        <type category="union" name="VkDescriptorDataEXT">
-            <member selection="VK_DESCRIPTOR_TYPE_SAMPLER">const <type>VkSampler</type>*                                                     <name>pSampler</name></member>
-            <member selection="VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER">const <type>VkDescriptorImageInfo</type>*                          <name>pCombinedImageSampler</name></member>
-            <member selection="VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT">const <type>VkDescriptorImageInfo</type>*                                <name>pInputAttachmentImage</name></member>
-            <member selection="VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE" optional="true">const <type>VkDescriptorImageInfo</type>*                   <name>pSampledImage</name></member>
-            <member selection="VK_DESCRIPTOR_TYPE_STORAGE_IMAGE" optional="true">const <type>VkDescriptorImageInfo</type>*                   <name>pStorageImage</name></member>
-            <member selection="VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER" optional="true">const <type>VkDescriptorAddressInfoEXT</type>*       <name>pUniformTexelBuffer</name></member>
-            <member selection="VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER" optional="true">const <type>VkDescriptorAddressInfoEXT</type>*       <name>pStorageTexelBuffer</name></member>
-            <member selection="VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER" optional="true">const <type>VkDescriptorAddressInfoEXT</type>*             <name>pUniformBuffer</name></member>
-            <member selection="VK_DESCRIPTOR_TYPE_STORAGE_BUFFER" optional="true">const <type>VkDescriptorAddressInfoEXT</type>*             <name>pStorageBuffer</name></member>
-            <member selection="VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"><type>VkDeviceAddress</type> <name>accelerationStructure</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorGetInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkDescriptorType</type>       <name>type</name></member>
-            <member selector="type" noautovalidity="true"><type>VkDescriptorDataEXT</type>  <name>data</name></member>
-        </type>
-        <type category="struct" name="VkBufferCaptureDescriptorDataInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBuffer</type>               <name>buffer</name></member>
-        </type>
-        <type category="struct" name="VkImageCaptureDescriptorDataInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkImage</type>                <name>image</name></member>
-        </type>
-        <type category="struct" name="VkImageViewCaptureDescriptorDataInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkImageView</type>                <name>imageView</name></member>
-        </type>
-        <type category="struct" name="VkSamplerCaptureDescriptorDataInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkSampler</type>              <name>sampler</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureCaptureDescriptorDataInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkAccelerationStructureKHR</type>             <name>accelerationStructure</name></member>
-            <member optional="true"><type>VkAccelerationStructureNV</type>              <name>accelerationStructureNV</name></member>
-        </type>
-        <type category="struct" name="VkOpaqueCaptureDescriptorDataCreateInfoEXT" structextends="VkBufferCreateInfo,VkImageCreateInfo,VkImageViewCreateInfo,VkSamplerCreateInfo,VkAccelerationStructureCreateInfoKHR,VkAccelerationStructureCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member>const <type>void</type>*            <name>opaqueCaptureDescriptorData</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderIntegerDotProductFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>shaderIntegerDotProduct</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" alias="VkPhysicalDeviceShaderIntegerDotProductFeatures"/>
-        <type category="struct" name="VkPhysicalDeviceShaderIntegerDotProductProperties" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct8BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct8BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct8BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct4x8BitPackedUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct4x8BitPackedSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct4x8BitPackedMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct16BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct16BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct16BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct32BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct32BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct32BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct64BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct64BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProduct64BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating8BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating8BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating16BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating16BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating32BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating32BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating64BitUnsignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating64BitSignedAccelerated</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>        <name>integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR" alias="VkPhysicalDeviceShaderIntegerDotProductProperties"/>
-        <type category="struct" name="VkPhysicalDeviceDrmPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type> <name>hasPrimary</name></member>
-            <member limittype="bitmask"><type>VkBool32</type> <name>hasRender</name></member>
-            <member limittype="noauto"><type>int64_t</type> <name>primaryMajor</name></member>
-            <member limittype="noauto"><type>int64_t</type> <name>primaryMinor</name></member>
-            <member limittype="noauto"><type>int64_t</type> <name>renderMajor</name></member>
-            <member limittype="noauto"><type>int64_t</type> <name>renderMinor</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*  <name>pNext</name></member>
-            <member><type>VkBool32</type>               <name>fragmentShaderBarycentric</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*  <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>              <name>triStripVertexOrderIndependentOfProvokingVertex</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRayTracingMotionBlurFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>rayTracingMotionBlur</name></member>
-            <member><type>VkBool32</type>                           <name>rayTracingMotionBlurPipelineTraceRaysIndirect</name></member>
-        </type>
-        <type name="VkAccelerationStructureMotionInstanceTypeNV" category="enum"/>
-        <type category="struct" name="VkAccelerationStructureGeometryMotionTrianglesDataNV" structextends="VkAccelerationStructureGeometryTrianglesDataKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                   <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>                 <name>vertexData</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureMotionInfoNV" structextends="VkAccelerationStructureCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                    <name>pNext</name></member>
-            <member><type>uint32_t</type>                                       <name>maxInstances</name></member>
-            <member optional="true"><type>VkAccelerationStructureMotionInfoFlagsNV</type> <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkSRTDataNV">
-            <member><type>float</type> <name>sx</name></member>
-            <member><type>float</type> <name>a</name></member>
-            <member><type>float</type> <name>b</name></member>
-            <member><type>float</type> <name>pvx</name></member>
-            <member><type>float</type> <name>sy</name></member>
-            <member><type>float</type> <name>c</name></member>
-            <member><type>float</type> <name>pvy</name></member>
-            <member><type>float</type> <name>sz</name></member>
-            <member><type>float</type> <name>pvz</name></member>
-            <member><type>float</type> <name>qx</name></member>
-            <member><type>float</type> <name>qy</name></member>
-            <member><type>float</type> <name>qz</name></member>
-            <member><type>float</type> <name>qw</name></member>
-            <member><type>float</type> <name>tx</name></member>
-            <member><type>float</type> <name>ty</name></member>
-            <member><type>float</type> <name>tz</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureSRTMotionInstanceNV">
-            <comment>The bitfields in this structure are non-normative since bitfield ordering is implementation-defined in C. The specification defines the normative layout.</comment>
-            <member><type>VkSRTDataNV</type>                                             <name>transformT0</name></member>
-            <member><type>VkSRTDataNV</type>                                             <name>transformT1</name></member>
-            <member><type>uint32_t</type>                                                <name>instanceCustomIndex</name>:24</member>
-            <member><type>uint32_t</type>                                                <name>mask</name>:8</member>
-            <member><type>uint32_t</type>                                                <name>instanceShaderBindingTableRecordOffset</name>:24</member>
-            <member optional="true"><type>VkGeometryInstanceFlagsKHR</type>              <name>flags</name>:8</member>
-            <member><type>uint64_t</type>                                                <name>accelerationStructureReference</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureMatrixMotionInstanceNV">
-            <comment>The bitfields in this structure are non-normative since bitfield ordering is implementation-defined in C. The specification defines the normative layout.</comment>
-            <member><type>VkTransformMatrixKHR</type>                                    <name>transformT0</name></member>
-            <member><type>VkTransformMatrixKHR</type>                                    <name>transformT1</name></member>
-            <member><type>uint32_t</type>                                                <name>instanceCustomIndex</name>:24</member>
-            <member><type>uint32_t</type>                                                <name>mask</name>:8</member>
-            <member><type>uint32_t</type>                                                <name>instanceShaderBindingTableRecordOffset</name>:24</member>
-            <member optional="true"><type>VkGeometryInstanceFlagsKHR</type>              <name>flags</name>:8</member>
-            <member><type>uint64_t</type>                                                <name>accelerationStructureReference</name></member>
-        </type>
-        <type category="union" name="VkAccelerationStructureMotionInstanceDataNV">
-            <member selection="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV"><type>VkAccelerationStructureInstanceKHR</type>            <name>staticInstance</name></member>
-            <member selection="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV"><type>VkAccelerationStructureMatrixMotionInstanceNV</type> <name>matrixMotionInstance</name></member>
-            <member selection="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV"><type>VkAccelerationStructureSRTMotionInstanceNV</type>    <name>srtMotionInstance</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureMotionInstanceNV">
-            <member><type>VkAccelerationStructureMotionInstanceTypeNV</type> <name>type</name></member>
-            <member optional="true"><type>VkAccelerationStructureMotionInstanceFlagsNV</type> <name>flags</name></member>
-            <member selector="type"><type>VkAccelerationStructureMotionInstanceDataNV</type> <name>data</name></member>
-        </type>
-        <type category="basetype">typedef <type>void</type>* <name>VkRemoteAddressNV</name>;</type>
-        <type category="struct" name="VkMemoryGetRemoteAddressInfoNV">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>                     <name>memory</name></member>
-            <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
-        </type>
-        <type category="struct" name="VkImportMemoryBufferCollectionFUCHSIA" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBufferCollectionFUCHSIA</type>        <name>collection</name></member>
-            <member><type>uint32_t</type>                         <name>index</name></member>
-        </type>
-        <type category="struct" name="VkBufferCollectionImageCreateInfoFUCHSIA" structextends="VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBufferCollectionFUCHSIA</type>        <name>collection</name></member>
-            <member><type>uint32_t</type>                         <name>index</name></member>
-        </type>
-        <type category="struct" name="VkBufferCollectionBufferCreateInfoFUCHSIA" structextends="VkBufferCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>VkBufferCollectionFUCHSIA</type>        <name>collection</name></member>
-            <member><type>uint32_t</type>                         <name>index</name></member>
-        </type>
-        <type category="struct" name="VkBufferCollectionCreateInfoFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>zx_handle_t</type>                      <name>collectionToken</name></member>
-        </type>
-        <type category="struct" name="VkBufferCollectionPropertiesFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>memoryTypeBits</name></member>
-            <member><type>uint32_t</type>                         <name>bufferCount</name></member>
-            <member><type>uint32_t</type>                         <name>createInfoIndex</name></member>
-            <member><type>uint64_t</type>                         <name>sysmemPixelFormat</name></member>
-            <member><type>VkFormatFeatureFlags</type>             <name>formatFeatures</name></member>
-            <member><type>VkSysmemColorSpaceFUCHSIA</type>        <name>sysmemColorSpaceIndex</name></member>
-            <member><type>VkComponentMapping</type>               <name>samplerYcbcrConversionComponents</name></member>
-            <member><type>VkSamplerYcbcrModelConversion</type>    <name>suggestedYcbcrModel</name></member>
-            <member><type>VkSamplerYcbcrRange</type>              <name>suggestedYcbcrRange</name></member>
-            <member><type>VkChromaLocation</type>                 <name>suggestedXChromaOffset</name></member>
-            <member><type>VkChromaLocation</type>                 <name>suggestedYChromaOffset</name></member>
-        </type>
-        <type category="struct" name="VkBufferConstraintsInfoFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*               <name>pNext</name></member>
-            <member><type>VkBufferCreateInfo</type>                        <name>createInfo</name></member>
-            <member optional="true"><type>VkFormatFeatureFlags</type>      <name>requiredFormatFeatures</name></member>
-            <member><type>VkBufferCollectionConstraintsInfoFUCHSIA</type>  <name>bufferCollectionConstraints</name></member>
-        </type>
-        <type category="struct" name="VkSysmemColorSpaceFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*     <name>pNext</name></member>
-            <member><type>uint32_t</type>                        <name>colorSpace</name></member>
-        </type>
-        <type category="struct" name="VkImageFormatConstraintsInfoFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkImageCreateInfo</type>                                      <name>imageCreateInfo</name></member>
-            <member><type>VkFormatFeatureFlags</type>                                   <name>requiredFormatFeatures</name></member>
-            <member optional="true"><type>VkImageFormatConstraintsFlagsFUCHSIA</type>   <name>flags</name></member>
-            <member optional="true"><type>uint64_t</type>                               <name>sysmemPixelFormat</name></member>
-            <member><type>uint32_t</type>                                               <name>colorSpaceCount</name></member>
-            <member len="colorSpaceCount">const <type>VkSysmemColorSpaceFUCHSIA</type>* <name>pColorSpaces</name></member>
-        </type>
-        <type category="struct" name="VkImageConstraintsInfoFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                      <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                         <name>formatConstraintsCount</name></member>
-            <member len="formatConstraintsCount">const <type>VkImageFormatConstraintsInfoFUCHSIA</type>* <name>pFormatConstraints</name></member>
-            <member><type>VkBufferCollectionConstraintsInfoFUCHSIA</type>                         <name>bufferCollectionConstraints</name></member>
-            <member optional="true"><type>VkImageConstraintsInfoFlagsFUCHSIA</type>               <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkBufferCollectionConstraintsInfoFUCHSIA">
-            <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*     <name>pNext</name></member>
-            <member><type>uint32_t</type>                        <name>minBufferCount</name></member>
-            <member><type>uint32_t</type>                        <name>maxBufferCount</name></member>
-            <member><type>uint32_t</type>                        <name>minBufferCountForCamping</name></member>
-            <member><type>uint32_t</type>                        <name>minBufferCountForDedicatedSlack</name></member>
-            <member><type>uint32_t</type>                        <name>minBufferCountForSharedSlack</name></member>
-        </type>
-        <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_CUDA_MODULE_NV"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkCudaModuleNV</name>)</type>
-        <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_CUDA_FUNCTION_NV"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkCudaFunctionNV</name>)</type>
-        <type category="struct" name="VkCudaModuleCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>size_t</type>                 <name>dataSize</name></member>
-            <member len="dataSize">const <type>void</type>*            <name>pData</name></member>
-        </type>
-        <type category="struct" name="VkCudaFunctionCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkCudaModuleNV</type>         <name>module</name></member>
-            <member len="null-terminated">const <type>char</type>*            <name>pName</name></member>
-        </type>
-        <type category="struct" name="VkCudaLaunchInfoNV">
-            <member values="VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkCudaFunctionNV</type>       <name>function</name></member>
-            <member><type>uint32_t</type>               <name>gridDimX</name></member>
-            <member><type>uint32_t</type>               <name>gridDimY</name></member>
-            <member><type>uint32_t</type>               <name>gridDimZ</name></member>
-            <member><type>uint32_t</type>               <name>blockDimX</name></member>
-            <member><type>uint32_t</type>               <name>blockDimY</name></member>
-            <member><type>uint32_t</type>               <name>blockDimZ</name></member>
-            <member><type>uint32_t</type>               <name>sharedMemBytes</name></member>
-            <member optional="true"><type>size_t</type>                 <name>paramCount</name></member>
-            <member optional="true" len="paramCount">const <type>void</type>* const *    <name>pParams</name></member>
-            <member optional="true"><type>size_t</type>                 <name>extraCount</name></member>
-            <member optional="true" len="extraCount">const <type>void</type>* const *    <name>pExtras</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>formatRgba10x6WithoutYCbCrSampler</name></member>
-        </type>
-        <type category="struct" name="VkFormatProperties3" returnedonly="true" structextends="VkFormatProperties2">
-            <member values="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member optional="true" limittype="bitmask"><type>VkFormatFeatureFlags2</type>            <name>linearTilingFeatures</name></member>
-            <member optional="true" limittype="bitmask"><type>VkFormatFeatureFlags2</type>            <name>optimalTilingFeatures</name></member>
-            <member optional="true" limittype="bitmask"><type>VkFormatFeatureFlags2</type>            <name>bufferFeatures</name></member>
-        </type>
-        <type category="struct" name="VkFormatProperties3KHR" alias="VkFormatProperties3"/>
-        <type category="struct" name="VkDrmFormatModifierPropertiesList2EXT" returnedonly="true" structextends="VkFormatProperties2">
-            <member values="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type> <name>drmFormatModifierCount</name></member>
-            <member optional="true" len="drmFormatModifierCount"><type>VkDrmFormatModifierProperties2EXT</type>* <name>pDrmFormatModifierProperties</name></member>
-        </type>
-        <type category="struct" name="VkDrmFormatModifierProperties2EXT" returnedonly="true">
-            <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
-            <member><type>uint32_t</type> <name>drmFormatModifierPlaneCount</name></member>
-            <member><type>VkFormatFeatureFlags2</type> <name>drmFormatModifierTilingFeatures</name></member>
-        </type>
-        <type category="struct" name="VkAndroidHardwareBufferFormatProperties2ANDROID" structextends="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>VkFormat</type>                           <name>format</name></member>
-            <member><type>uint64_t</type>                           <name>externalFormat</name></member>
-            <member><type>VkFormatFeatureFlags2</type>              <name>formatFeatures</name></member>
-            <member><type>VkComponentMapping</type>                 <name>samplerYcbcrConversionComponents</name></member>
-            <member><type>VkSamplerYcbcrModelConversion</type>      <name>suggestedYcbcrModel</name></member>
-            <member><type>VkSamplerYcbcrRange</type>                <name>suggestedYcbcrRange</name></member>
-            <member><type>VkChromaLocation</type>                   <name>suggestedXChromaOffset</name></member>
-            <member><type>VkChromaLocation</type>                   <name>suggestedYChromaOffset</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRenderingCreateInfo" structextends="VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                                   <name>viewMask</name></member>
-            <member optional="true"><type>uint32_t</type>                                                   <name>colorAttachmentCount</name></member>
-            <member noautovalidity="true" len="colorAttachmentCount">const <type>VkFormat</type>*           <name>pColorAttachmentFormats</name></member>
-            <member noautovalidity="true"><type>VkFormat</type>                                             <name>depthAttachmentFormat</name></member>
-            <member noautovalidity="true"><type>VkFormat</type>                                             <name>stencilAttachmentFormat</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRenderingCreateInfoKHR" alias="VkPipelineRenderingCreateInfo"/>
-        <type category="struct" name="VkRenderingInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDERING_INFO"><type>VkStructureType</type>                  <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                <name>pNext</name></member>
-            <member optional="true"><type>VkRenderingFlags</type>                                           <name>flags</name></member>
-            <member><type>VkRect2D</type>                                                                   <name>renderArea</name></member>
-            <member><type>uint32_t</type>                                                                   <name>layerCount</name></member>
-            <member><type>uint32_t</type>                                                                   <name>viewMask</name></member>
-            <member optional="true"><type>uint32_t</type>                                                   <name>colorAttachmentCount</name></member>
-            <member len="colorAttachmentCount">const <type>VkRenderingAttachmentInfo</type>*                <name>pColorAttachments</name></member>
-            <member optional="true">const <type>VkRenderingAttachmentInfo</type>*                           <name>pDepthAttachment</name></member>
-            <member optional="true">const <type>VkRenderingAttachmentInfo</type>*                           <name>pStencilAttachment</name></member>
-        </type>
-        <type category="struct" name="VkRenderingInfoKHR" alias="VkRenderingInfo"/>
-        <type category="struct" name="VkRenderingAttachmentInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO"><type>VkStructureType</type>       <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                <name>pNext</name></member>
-            <member optional="true"><type>VkImageView</type>                                                <name>imageView</name></member>
-            <member><type>VkImageLayout</type>                                                              <name>imageLayout</name></member>
-            <member optional="true"><type>VkResolveModeFlagBits</type>                                      <name>resolveMode</name></member>
-            <member optional="true"><type>VkImageView</type>                                                <name>resolveImageView</name></member>
-            <member><type>VkImageLayout</type>                                                              <name>resolveImageLayout</name></member>
-            <member><type>VkAttachmentLoadOp</type>                                                         <name>loadOp</name></member>
-            <member><type>VkAttachmentStoreOp</type>                                                        <name>storeOp</name></member>
-            <member><type>VkClearValue</type>                                                               <name>clearValue</name></member>
-        </type>
-        <type category="struct" name="VkRenderingAttachmentInfoKHR" alias="VkRenderingAttachmentInfo"/>
-        <type category="struct" name="VkRenderingFragmentShadingRateAttachmentInfoKHR" structextends="VkRenderingInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member  optional="true">const <type>void</type>*                                               <name>pNext</name></member>
-            <member optional="true"><type>VkImageView</type>                                                <name>imageView</name></member>
-            <member><type>VkImageLayout</type>                                                              <name>imageLayout</name></member>
-            <member><type>VkExtent2D</type>                                                                 <name>shadingRateAttachmentTexelSize</name></member>
-        </type>
-        <type category="struct" name="VkRenderingFragmentDensityMapAttachmentInfoEXT" structextends="VkRenderingInfo">
-            <member values="VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                <name>pNext</name></member>
-            <member><type>VkImageView</type>                                                                <name>imageView</name></member>
-            <member><type>VkImageLayout</type>                                                              <name>imageLayout</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDynamicRenderingFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                   <name>dynamicRendering</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDynamicRenderingFeaturesKHR" alias="VkPhysicalDeviceDynamicRenderingFeatures"/>
-        <type category="struct" name="VkCommandBufferInheritanceRenderingInfo" structextends="VkCommandBufferInheritanceInfo">
-            <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                <name>pNext</name></member>
-            <member optional="true"><type>VkRenderingFlags</type>                                           <name>flags</name></member>
-            <member><type>uint32_t</type>                                                                   <name>viewMask</name></member>
-            <member api="vulkan" optional="true"><type>uint32_t</type>                                      <name>colorAttachmentCount</name></member>
-            <member api="vulkansc"><type>uint32_t</type>                                                    <name>colorAttachmentCount</name></member>
-            <member len="colorAttachmentCount">const <type>VkFormat</type>*                                 <name>pColorAttachmentFormats</name></member>
-            <member><type>VkFormat</type>                                                                   <name>depthAttachmentFormat</name></member>
-            <member><type>VkFormat</type>                                                                   <name>stencilAttachmentFormat</name></member>
-            <member optional="true"><type>VkSampleCountFlagBits</type>                                      <name>rasterizationSamples</name></member>
-        </type>
-        <type category="struct" name="VkCommandBufferInheritanceRenderingInfoKHR" alias="VkCommandBufferInheritanceRenderingInfo"/>
-        <type category="struct" name="VkAttachmentSampleCountInfoAMD" structextends="VkCommandBufferInheritanceInfo,VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                                   <name>colorAttachmentCount</name></member>
-            <member noautovalidity="true" len="colorAttachmentCount">const <type>VkSampleCountFlagBits</type>* <name>pColorAttachmentSamples</name></member>
-            <member noautovalidity="true" optional="true"><type>VkSampleCountFlagBits</type>                <name>depthStencilAttachmentSamples</name></member>
-        </type>
-        <type category="struct" name="VkAttachmentSampleCountInfoNV" alias="VkAttachmentSampleCountInfoAMD"/>
-        <type category="struct" name="VkMultiviewPerViewAttributesInfoNVX" structextends="VkCommandBufferInheritanceInfo,VkGraphicsPipelineCreateInfo,VkRenderingInfo">
-            <member values="VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                               <name>perViewAttributes</name></member>
-            <member><type>VkBool32</type>                               <name>perViewAttributesPositionXOnly</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageViewMinLodFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>minLod</name></member>
-        </type>
-        <type category="struct" name="VkImageViewMinLodCreateInfoEXT" structextends="VkImageViewCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>float</type>                       <name>minLod</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>rasterizationOrderColorAttachmentAccess</name></member>
-            <member><type>VkBool32</type>                         <name>rasterizationOrderDepthAttachmentAccess</name></member>
-            <member><type>VkBool32</type>                         <name>rasterizationOrderStencilAttachmentAccess</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM" alias="VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT"/>
-        <type category="struct" name="VkPhysicalDeviceLinearColorAttachmentFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>linearColorAttachment</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>graphicsPipelineLibrary</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                     <name>graphicsPipelineLibraryFastLinking</name></member>
-            <member limittype="bitmask"><type>VkBool32</type>                     <name>graphicsPipelineLibraryIndependentInterpolationDecoration</name></member>
-        </type>
-        <type category="struct" name="VkGraphicsPipelineLibraryCreateInfoEXT" structextends="VkGraphicsPipelineCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*       <name>pNext</name></member>
-            <member><type>VkGraphicsPipelineLibraryFlagsEXT</type> <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                                           <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                                              <name>descriptorSetHostMapping</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetBindingReferenceVALVE">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                       <name>pNext</name></member>
-            <member><type>VkDescriptorSetLayout</type>                                                             <name>descriptorSetLayout</name></member>
-            <member><type>uint32_t</type>                                                                          <name>binding</name></member>
-        </type>
-        <type category="struct" name="VkDescriptorSetLayoutHostMappingInfoVALVE">
-            <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                                                    <name>pNext</name></member>
-            <member><type>size_t</type>                                                                                   <name>descriptorOffset</name></member>
-            <member><type>uint32_t</type>                                                                                 <name>descriptorSize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceNestedCommandBufferFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>nestedCommandBuffer</name></member>
-            <member><type>VkBool32</type>                                        <name>nestedCommandBufferRendering</name></member>
-            <member><type>VkBool32</type>                                        <name>nestedCommandBufferSimultaneousUse</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceNestedCommandBufferPropertiesEXT" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                           <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                        <name>maxCommandBufferNestingLevel</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                                      <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                                         <name>shaderModuleIdentifier</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
-            <member limittype="noauto"><type>uint8_t</type> <name>shaderModuleIdentifierAlgorithmUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-        </type>
-        <type category="struct" name="VkPipelineShaderStageModuleIdentifierCreateInfoEXT" structextends="VkPipelineShaderStageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*         <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>            <name>identifierSize</name></member>
-            <member len="identifierSize">const <type>uint8_t</type>* <name>pIdentifier</name></member>
-        </type>
-        <type category="struct" name="VkShaderModuleIdentifierEXT" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*          <name>pNext</name></member>
-            <member noautovalidity="true"><type>uint32_t</type> <name>identifierSize</name></member>
-            <member><type>uint8_t</type>                        <name>identifier</name>[<enum>VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT</enum>]</member>
-        </type>
-        <type category="struct" name="VkImageCompressionControlEXT" structextends="VkImageCreateInfo,VkSwapchainCreateInfoKHR,VkPhysicalDeviceImageFormatInfo2">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkImageCompressionFlagsEXT</type>   <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>             <name>compressionControlPlaneCount</name></member>
-            <member noautovalidity="true" len="compressionControlPlaneCount"><type>VkImageCompressionFixedRateFlagsEXT</type>* <name>pFixedRateFlags</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageCompressionControlFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type>                             <name>imageCompressionControl</name></member>
-        </type>
-        <type category="struct" name="VkImageCompressionPropertiesEXT" structextends="VkImageFormatProperties2,VkSurfaceFormat2KHR,VkSubresourceLayout2KHR" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                <name>pNext</name></member>
-            <member><type>VkImageCompressionFlagsEXT</type>           <name>imageCompressionFlags</name></member>
-            <member><type>VkImageCompressionFixedRateFlagsEXT</type>  <name>imageCompressionFixedRateFlags</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type>                             <name>imageCompressionControlSwapchain</name></member>
-        </type>
-        <type category="struct" name="VkImageSubresource2KHR">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*  <name>pNext</name></member>
-            <member><type>VkImageSubresource</type>     <name>imageSubresource</name></member>
-        </type>
-        <type category="struct" name="VkImageSubresource2EXT" alias="VkImageSubresource2KHR"/>
-        <type category="struct" name="VkSubresourceLayout2KHR"  returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*  <name>pNext</name></member>
-            <member><type>VkSubresourceLayout</type>    <name>subresourceLayout</name></member>
-        </type>
-        <type category="struct" name="VkSubresourceLayout2EXT" alias="VkSubresourceLayout2KHR"/>
-        <type category="struct" name="VkRenderPassCreationControlEXT" structextends="VkRenderPassCreateInfo2,VkSubpassDescription2">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                 <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                    <name>disallowMerging</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassCreationFeedbackInfoEXT" returnedonly="true">
-            <member><type>uint32_t</type>                                                                          <name>postMergeSubpassCount</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassCreationFeedbackCreateInfoEXT" structextends="VkRenderPassCreateInfo2">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                              <name>pNext</name></member>
-            <member><type>VkRenderPassCreationFeedbackInfoEXT</type>*                                                     <name>pRenderPassFeedback</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassSubpassFeedbackInfoEXT" returnedonly="true">
-            <member><type>VkSubpassMergeStatusEXT</type>                                                          <name>subpassMergeStatus</name></member>
-            <member><type>char</type>                                                                             <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
-            <member><type>uint32_t</type>                                                                         <name>postMergeIndex</name></member>
-        </type>
-        <type category="struct" name="VkRenderPassSubpassFeedbackCreateInfoEXT" structextends="VkSubpassDescription2">
-            <member values="VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT"><type>VkStructureType</type>     <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                                 <name>pNext</name></member>
-            <member><type>VkRenderPassSubpassFeedbackInfoEXT</type>*                                                         <name>pSubpassFeedback</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                                    <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                                       <name>subpassMergeFeedback</name></member>
-        </type>
-        <type category="struct" name="VkMicromapBuildInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                                        <name>pNext</name></member>
-            <member><type>VkMicromapTypeEXT</type>                                     <name>type</name></member>
-            <member optional="true"><type>VkBuildMicromapFlagsEXT</type>               <name>flags</name></member>
-            <member noautovalidity="true"><type>VkBuildMicromapModeEXT</type>          <name>mode</name></member>
-            <member optional="true" noautovalidity="true"><type>VkMicromapEXT</type>                   <name>dstMicromap</name></member>
-            <member optional="true"><type>uint32_t</type>                                           <name>usageCountsCount</name></member>
-            <member len="usageCountsCount" optional="true">const <type>VkMicromapUsageEXT</type>*    <name>pUsageCounts</name></member>
-            <member len="usageCountsCount,1" optional="true,false">const <type>VkMicromapUsageEXT</type>* const*   <name>ppUsageCounts</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>                               <name>data</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressKHR</type>                                    <name>scratchData</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>                               <name>triangleArray</name></member>
-            <member><type>VkDeviceSize</type>                                                                      <name>triangleArrayStride</name></member>
-        </type>
-        <type category="struct" name="VkMicromapCreateInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                             <name>pNext</name></member>
-            <member optional="true"><type>VkMicromapCreateFlagsEXT</type>   <name>createFlags</name></member>
-            <member><type>VkBuffer</type>                                                <name>buffer</name></member>
-            <member><type>VkDeviceSize</type>                                            <name>offset</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>                                            <name>size</name></member>
-            <member><type>VkMicromapTypeEXT</type>                          <name>type</name></member>
-            <member optional="true"><type>VkDeviceAddress</type>                         <name>deviceAddress</name></member>
-        </type>
-        <type category="struct" name="VkMicromapVersionInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member len="latexmath:[2 \times \mathtt{VK\_UUID\_SIZE}]" altlen="2*VK_UUID_SIZE">const <type>uint8_t</type>*                    <name>pVersionData</name></member>
-        </type>
-        <type category="struct" name="VkCopyMicromapInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member><type>VkMicromapEXT</type>                             <name>src</name></member>
-            <member><type>VkMicromapEXT</type>                             <name>dst</name></member>
-            <member><type>VkCopyMicromapModeEXT</type>                     <name>mode</name></member>
-        </type>
-        <type category="struct" name="VkCopyMicromapToMemoryInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member><type>VkMicromapEXT</type>                             <name>src</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressKHR</type>                               <name>dst</name></member>
-            <member><type>VkCopyMicromapModeEXT</type>                     <name>mode</name></member>
-        </type>
-        <type category="struct" name="VkCopyMemoryToMicromapInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                            <name>pNext</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>                          <name>src</name></member>
-            <member><type>VkMicromapEXT</type>                             <name>dst</name></member>
-            <member><type>VkCopyMicromapModeEXT</type>                     <name>mode</name></member>
-        </type>
-        <type category="struct" name="VkMicromapBuildSizesInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                       <name>micromapSize</name></member>
-            <member><type>VkDeviceSize</type>                       <name>buildScratchSize</name></member>
-            <member><type>VkBool32</type>                           <name>discardable</name></member>
-        </type>
-        <type category="struct" name="VkMicromapUsageEXT">
-            <member><type>uint32_t</type>                                               <name>count</name></member>
-            <member><type>uint32_t</type>                                               <name>subdivisionLevel</name></member>
-            <member><type>uint32_t</type>                                               <name>format</name><comment>Interpretation depends on parent type</comment></member>
-        </type>
-        <type category="struct" name="VkMicromapTriangleEXT">
-            <member><type>uint32_t</type>                                               <name>dataOffset</name><comment>Specified in bytes</comment></member>
-            <member><type>uint16_t</type>                                               <name>subdivisionLevel</name></member>
-            <member><type>uint16_t</type>                                               <name>format</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceOpacityMicromapFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>micromap</name></member>
-            <member><type>VkBool32</type>                         <name>micromapCaptureReplay</name></member>
-            <member><type>VkBool32</type>                         <name>micromapHostCommands</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceOpacityMicromapPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxOpacity2StateSubdivisionLevel</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxOpacity4StateSubdivisionLevel</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureTrianglesOpacityMicromapEXT" structextends="VkAccelerationStructureGeometryTrianglesDataKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                  <name>pNext</name></member>
-            <member><type>VkIndexType</type>                                            <name>indexType</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>    <name>indexBuffer</name></member>
-            <member><type>VkDeviceSize</type>                                           <name>indexStride</name></member>
-            <member><type>uint32_t</type>                                               <name>baseTriangle</name></member>
-            <member optional="true"><type>uint32_t</type>                               <name>usageCountsCount</name></member>
-            <member len="usageCountsCount" optional="true">const <type>VkMicromapUsageEXT</type>*  <name>pUsageCounts</name></member>
-            <member len="usageCountsCount,1" optional="true,false">const <type>VkMicromapUsageEXT</type>* const* <name>ppUsageCounts</name></member>
-            <member optional="true"><type>VkMicromapEXT</type>                          <name>micromap</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDisplacementMicromapFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>displacementMicromap</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDisplacementMicromapPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                         <name>maxDisplacementMicromapSubdivisionLevel</name></member>
-        </type>
-        <type category="struct" name="VkAccelerationStructureTrianglesDisplacementMicromapNV" structextends="VkAccelerationStructureGeometryTrianglesDataKHR">
-            <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                  <name>pNext</name></member>
-
-            <member><type>VkFormat</type>                                               <name>displacementBiasAndScaleFormat</name></member>
-            <member><type>VkFormat</type>                                               <name>displacementVectorFormat</name></member>
-
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>    <name>displacementBiasAndScaleBuffer</name></member>
-            <member><type>VkDeviceSize</type>                                           <name>displacementBiasAndScaleStride</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>    <name>displacementVectorBuffer</name></member>
-            <member><type>VkDeviceSize</type>                                           <name>displacementVectorStride</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>    <name>displacedMicromapPrimitiveFlags</name></member>
-            <member><type>VkDeviceSize</type>                                           <name>displacedMicromapPrimitiveFlagsStride</name></member>
-            <member><type>VkIndexType</type>                                            <name>indexType</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type>    <name>indexBuffer</name></member>
-            <member><type>VkDeviceSize</type>                                           <name>indexStride</name></member>
-
-            <member><type>uint32_t</type>                                               <name>baseTriangle</name></member>
-
-            <member optional="true"><type>uint32_t</type>                                                          <name>usageCountsCount</name></member>
-            <member len="usageCountsCount" optional="true">const <type>VkMicromapUsageEXT</type>*                  <name>pUsageCounts</name></member>
-            <member len="usageCountsCount,1" optional="true,false">const <type>VkMicromapUsageEXT</type>* const*   <name>ppUsageCounts</name></member>
-
-            <member optional="true"><type>VkMicromapEXT</type>                          <name>micromap</name></member>
-        </type>
-        <type category="struct" name="VkPipelinePropertiesIdentifierEXT">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>uint8_t</type>                            <name>pipelineIdentifier</name>[<enum>VK_UUID_SIZE</enum>]</member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePipelinePropertiesFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>pipelinePropertiesIdentifier</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD"><type>VkStructureType</type> <name>sType</name></member>
-            <member noautovalidity="true" optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>shaderEarlyAndLateFragmentTests</name></member>
-        </type>
-        <type category="struct" name="VkExternalMemoryAcquireUnmodifiedEXT" structextends="VkBufferMemoryBarrier,VkBufferMemoryBarrier2,VkImageMemoryBarrier,VkImageMemoryBarrier2">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>acquireUnmodifiedMemory</name></member>
-        </type>
-        <type category="struct" name="VkExportMetalObjectCreateInfoEXT" structextends="VkInstanceCreateInfo,VkMemoryAllocateInfo,VkImageCreateInfo,VkImageViewCreateInfo,VkBufferViewCreateInfo,VkSemaphoreCreateInfo,VkEventCreateInfo" allowduplicate="true">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>VkExportMetalObjectTypeFlagBitsEXT</type>  <name>exportObjectType</name></member>
-        </type>
-        <type category="struct" name="VkExportMetalObjectsInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-        </type>
-        <type category="struct" name="VkExportMetalDeviceInfoEXT" structextends="VkExportMetalObjectsInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member><type>MTLDevice_id</type>                               <name>mtlDevice</name></member>
-        </type>
-        <type category="struct" name="VkExportMetalCommandQueueInfoEXT" structextends="VkExportMetalObjectsInfoEXT" allowduplicate="true">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member><type>VkQueue</type>                                    <name>queue</name></member>
-            <member><type>MTLCommandQueue_id</type>                         <name>mtlCommandQueue</name></member>
-        </type>
-        <type category="struct" name="VkExportMetalBufferInfoEXT" structextends="VkExportMetalObjectsInfoEXT" allowduplicate="true">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member><type>VkDeviceMemory</type>                             <name>memory</name></member>
-            <member><type>MTLBuffer_id</type>                               <name>mtlBuffer</name></member>
-        </type>
-        <type category="struct" name="VkImportMetalBufferInfoEXT" structextends="VkMemoryAllocateInfo" allowduplicate="false">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member><type>MTLBuffer_id</type>                               <name>mtlBuffer</name></member>
-        </type>
-        <type category="struct" name="VkExportMetalTextureInfoEXT" structextends="VkExportMetalObjectsInfoEXT" allowduplicate="true">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>VkImage</type>                    <name>image</name></member>
-            <member optional="true"><type>VkImageView</type>                <name>imageView</name></member>
-            <member optional="true"><type>VkBufferView</type>               <name>bufferView</name></member>
-            <member><type>VkImageAspectFlagBits</type>                      <name>plane</name></member>
-            <member><type>MTLTexture_id</type>                              <name>mtlTexture</name></member>
-        </type>
-        <type category="struct" name="VkImportMetalTextureInfoEXT" structextends="VkImageCreateInfo" allowduplicate="true">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member><type>VkImageAspectFlagBits</type>                      <name>plane</name></member>
-            <member><type>MTLTexture_id</type>                              <name>mtlTexture</name></member>
-        </type>
-        <type category="struct" name="VkExportMetalIOSurfaceInfoEXT" structextends="VkExportMetalObjectsInfoEXT" allowduplicate="true">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member><type>VkImage</type>                                    <name>image</name></member>
-            <member><type>IOSurfaceRef</type>                               <name>ioSurface</name></member>
-        </type>
-        <type category="struct" name="VkImportMetalIOSurfaceInfoEXT" structextends="VkImageCreateInfo" allowduplicate="false">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>IOSurfaceRef</type>               <name>ioSurface</name></member>
-        </type>
-        <type category="struct" name="VkExportMetalSharedEventInfoEXT" structextends="VkExportMetalObjectsInfoEXT" allowduplicate="true">
-            <member values="VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member optional="true"><type>VkSemaphore</type>                <name>semaphore</name></member>
-            <member optional="true"><type>VkEvent</type>                    <name>event</name></member>
-            <member><type>MTLSharedEvent_id</type>                          <name>mtlSharedEvent</name></member>
-        </type>
-        <type category="struct" name="VkImportMetalSharedEventInfoEXT" structextends="VkSemaphoreCreateInfo,VkEventCreateInfo" allowduplicate="false">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                <name>pNext</name></member>
-            <member><type>MTLSharedEvent_id</type>                          <name>mtlSharedEvent</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                                   <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                                      <name>nonSeamlessCubeMap</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePipelineRobustnessFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member noautovalidity="true" optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                                       <name>pipelineRobustness</name></member>
-        </type>
-        <type category="struct" name="VkPipelineRobustnessCreateInfoEXT" structextends="VkGraphicsPipelineCreateInfo,VkComputePipelineCreateInfo,VkPipelineShaderStageCreateInfo,VkRayTracingPipelineCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member noautovalidity="true" optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>VkPipelineRobustnessBufferBehaviorEXT</type>   <name>storageBuffers</name></member>
-            <member><type>VkPipelineRobustnessBufferBehaviorEXT</type>   <name>uniformBuffers</name></member>
-            <member><type>VkPipelineRobustnessBufferBehaviorEXT</type>   <name>vertexInputs</name></member>
-            <member><type>VkPipelineRobustnessImageBehaviorEXT</type>    <name>images</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePipelineRobustnessPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member limittype="exact"><type>VkPipelineRobustnessBufferBehaviorEXT</type>   <name>defaultRobustnessStorageBuffers</name></member>
-            <member limittype="exact"><type>VkPipelineRobustnessBufferBehaviorEXT</type>   <name>defaultRobustnessUniformBuffers</name></member>
-            <member limittype="exact"><type>VkPipelineRobustnessBufferBehaviorEXT</type>   <name>defaultRobustnessVertexInputs</name></member>
-            <member limittype="exact"><type>VkPipelineRobustnessImageBehaviorEXT</type>    <name>defaultRobustnessImages</name></member>
-        </type>
-        <type category="struct" name="VkImageViewSampleWeightCreateInfoQCOM" structextends="VkImageViewCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*       <name>pNext</name></member>
-            <member><type>VkOffset2D</type>                        <name>filterCenter</name></member>
-            <member><type>VkExtent2D</type>                        <name>filterSize</name></member>
-            <member><type>uint32_t</type>                          <name>numPhases</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageProcessingFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>textureSampleWeighted</name></member>
-            <member><type>VkBool32</type>                           <name>textureBoxFilter</name></member>
-            <member><type>VkBool32</type>                           <name>textureBlockMatch</name></member>
-         </type>
-        <type category="struct" name="VkPhysicalDeviceImageProcessingPropertiesQCOM" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                            <name>pNext</name></member>
-            <member limittype="max" optional="true"><type>uint32_t</type>         <name>maxWeightFilterPhases</name></member>
-            <member limittype="max" optional="true"><type>VkExtent2D</type>       <name>maxWeightFilterDimension</name></member>
-            <member limittype="max" optional="true"><type>VkExtent2D</type>       <name>maxBlockMatchRegion</name></member>
-            <member limittype="max" optional="true"><type>VkExtent2D</type>       <name>maxBoxFilterBlockSize</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceTilePropertiesFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>tileProperties</name></member>
-        </type>
-        <type category="struct" name="VkTilePropertiesQCOM">
-            <member values="VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkExtent3D</type>                       <name>tileSize</name></member>
-            <member><type>VkExtent2D</type>                       <name>apronSize</name></member>
-            <member><type>VkOffset2D</type>                       <name>origin</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceAmigoProfilingFeaturesSEC" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>amigoProfiling</name></member>
-        </type>
-        <type category="struct" name="VkAmigoProfilingSubmitInfoSEC" structextends="VkSubmitInfo">
-            <member values="VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>uint64_t</type>                         <name>firstDrawTimestamp</name></member>
-            <member><type>uint64_t</type>                         <name>swapBufferTimestamp</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>attachmentFeedbackLoopLayout</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDepthClampZeroOneFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>depthClampZeroOne</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceAddressBindingReportFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>reportAddressBinding</name></member>
-        </type>
-        <type category="struct" name="VkDeviceAddressBindingCallbackDataEXT" structextends="VkDebugUtilsMessengerCallbackDataEXT">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member optional="true"><type>VkDeviceAddressBindingFlagsEXT</type>     <name>flags</name></member>
-            <member><type>VkDeviceAddress</type>                    <name>baseAddress</name></member>
-            <member><type>VkDeviceSize</type>                       <name>size</name></member>
-            <member><type>VkDeviceAddressBindingTypeEXT</type>      <name>bindingType</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceOpticalFlowFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>opticalFlow</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceOpticalFlowPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkOpticalFlowGridSizeFlagsNV</type> <name>supportedOutputGridSizes</name></member>
-            <member limittype="bitmask"><type>VkOpticalFlowGridSizeFlagsNV</type> <name>supportedHintGridSizes</name></member>
-            <member limittype="noauto"><type>VkBool32</type> <name>hintSupported</name></member>
-            <member limittype="noauto"><type>VkBool32</type> <name>costSupported</name></member>
-            <member limittype="noauto"><type>VkBool32</type> <name>bidirectionalFlowSupported</name></member>
-            <member limittype="noauto"><type>VkBool32</type> <name>globalFlowSupported</name></member>
-            <member limittype="noauto"><type>uint32_t</type>  <name>minWidth</name></member>
-            <member limittype="noauto"><type>uint32_t</type>  <name>minHeight</name></member>
-            <member limittype="noauto"><type>uint32_t</type>  <name>maxWidth</name></member>
-            <member limittype="noauto"><type>uint32_t</type>  <name>maxHeight</name></member>
-            <member limittype="noauto"><type>uint32_t</type>  <name>maxNumRegionsOfInterest</name></member>
-        </type>
-        <type category="struct" name="VkOpticalFlowImageFormatInfoNV" structextends="VkPhysicalDeviceImageFormatInfo2,VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*  <name>pNext</name></member>
-            <member><type>VkOpticalFlowUsageFlagsNV</type> <name>usage</name></member>
-        </type>
-        <type category="struct" name="VkOpticalFlowImageFormatPropertiesNV" returnedonly="true" >
-            <member values="VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*  <name>pNext</name></member>
-            <member><type>VkFormat</type> <name>format</name></member>
-        </type>
-        <type category="struct" name="VkOpticalFlowSessionCreateInfoNV">
-            <member values="VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                              <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                           <name>width</name></member>
-            <member><type>uint32_t</type>                                                           <name>height</name></member>
-            <member><type>VkFormat</type>                                                           <name>imageFormat</name></member>
-            <member><type>VkFormat</type>                                                           <name>flowVectorFormat</name></member>
-            <member optional="true"><type>VkFormat</type>                                           <name>costFormat</name></member>
-            <member><type>VkOpticalFlowGridSizeFlagsNV</type>                                       <name>outputGridSize</name></member>
-            <member optional="true"><type>VkOpticalFlowGridSizeFlagsNV</type>                       <name>hintGridSize</name></member>
-            <member optional="true"><type>VkOpticalFlowPerformanceLevelNV</type>                    <name>performanceLevel</name></member>
-            <member optional="true"><type>VkOpticalFlowSessionCreateFlagsNV</type>                  <name>flags</name></member>
-        </type>
-        <type category="struct" name="VkOpticalFlowSessionCreatePrivateDataInfoNV" structextends="VkOpticalFlowSessionCreateInfoNV"><comment>NV internal use only</comment>
-            <member values="VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                              <name>pNext</name></member>
-            <member><type>uint32_t</type>                                                           <name>id</name></member>
-            <member><type>uint32_t</type>                                                           <name>size</name></member>
-            <member>const <type>void</type>*                                                        <name>pPrivateData</name></member>
-        </type>
-        <type category="struct" name="VkOpticalFlowExecuteInfoNV">
-            <member values="VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>* <name>pNext</name></member>
-            <member optional="true"><type>VkOpticalFlowExecuteFlagsNV</type>        <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>                           <name>regionCount</name></member>
-            <member len="regionCount">const <type>VkRect2D</type>*                  <name>pRegions</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFaultFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>deviceFault</name></member>
-            <member><type>VkBool32</type>                            <name>deviceFaultVendorBinary</name></member>
-        </type>
-        <type category="struct" name="VkDeviceFaultAddressInfoEXT">
-            <member><type>VkDeviceFaultAddressTypeEXT</type>         <name>addressType</name></member>
-            <member><type>VkDeviceAddress</type>                     <name>reportedAddress</name></member>
-            <member><type>VkDeviceSize</type>                        <name>addressPrecision</name></member>
-        </type>
-        <type category="struct" name="VkDeviceFaultVendorInfoEXT">
-            <member noautovalidity="true"><type>char</type>          <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]<comment>Free-form description of the fault</comment></member>
-            <member><type>uint64_t</type>                            <name>vendorFaultCode</name></member>
-            <member><type>uint64_t</type>                            <name>vendorFaultData</name></member>
-        </type>
-        <type category="struct" name="VkDeviceFaultCountsEXT">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                            <name>addressInfoCount</name></member>
-            <member optional="true"><type>uint32_t</type>                            <name>vendorInfoCount</name></member>
-            <member optional="true"><type>VkDeviceSize</type>                        <name>vendorBinarySize</name><comment>Specified in bytes</comment></member>
-        </type>
-        <type category="struct" name="VkDeviceFaultInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member noautovalidity="true"><type>char</type>          <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]<comment>Free-form description of the fault</comment></member>
-            <member optional="true"><type>VkDeviceFaultAddressInfoEXT</type>* <name>pAddressInfos</name></member>
-            <member optional="true"><type>VkDeviceFaultVendorInfoEXT</type>*  <name>pVendorInfos</name></member>
-            <member optional="true"><type>void</type>*                        <name>pVendorBinaryData</name></member>
-        </type>
-        <type category="struct" name="VkDeviceFaultVendorBinaryHeaderVersionOneEXT">
-            <comment>The fields in this structure are non-normative since structure packing is implementation-defined in C. The specification defines the normative layout.</comment>
-            <member><type>uint32_t</type>               <name>headerSize</name></member>
-            <member><type>VkDeviceFaultVendorBinaryHeaderVersionEXT</type> <name>headerVersion</name></member>
-            <member><type>uint32_t</type>               <name>vendorID</name></member>
-            <member><type>uint32_t</type>               <name>deviceID</name></member>
-            <member><type>uint32_t</type>               <name>driverVersion</name></member>
-            <member><type>uint8_t</type>                <name>pipelineCacheUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member><type>uint32_t</type>               <name>applicationNameOffset</name></member>
-            <member><type>uint32_t</type>               <name>applicationVersion</name></member>
-            <member><type>uint32_t</type>               <name>engineNameOffset</name></member>
-            <member><type>uint32_t</type>               <name>engineVersion</name></member>
-            <member><type>uint32_t</type>               <name>apiVersion</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                                            <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                                               <name>pipelineLibraryGroupHandles</name></member>
-        </type>
-        <type category="struct" name="VkDepthBiasInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>float</type>                              <name>depthBiasConstantFactor</name></member>
-            <member><type>float</type>                              <name>depthBiasClamp</name></member>
-            <member><type>float</type>                              <name>depthBiasSlopeFactor</name></member>
-        </type>
-        <type category="struct" name="VkDepthBiasRepresentationInfoEXT" structextends="VkDepthBiasInfoEXT,VkPipelineRasterizationStateCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*        <name>pNext</name></member>
-            <member><type>VkDepthBiasRepresentationEXT</type>       <name>depthBiasRepresentation</name></member>
-            <member><type>VkBool32</type>                           <name>depthBiasExact</name></member>
-        </type>
-        <type category="struct" name="VkDecompressMemoryRegionNV">
-            <member><type>VkDeviceAddress</type>   <name>srcAddress</name></member>
-            <member><type>VkDeviceAddress</type>   <name>dstAddress</name></member>
-            <member><type>VkDeviceSize</type>      <name>compressedSize</name><comment>Specified in bytes</comment></member>
-            <member><type>VkDeviceSize</type>      <name>decompressedSize</name><comment>Specified in bytes</comment></member>
-            <member><type>VkMemoryDecompressionMethodFlagsNV</type> <name>decompressionMethod</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                          <name>pNext</name></member>
-            <member limittype="bitmask"><type>uint64_t</type>                   <name>shaderCoreMask</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>shaderCoreCount</name></member>
-            <member limittype="max"><type>uint32_t</type>                       <name>shaderWarpsPerCore</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                 <name>shaderCoreBuiltins</name></member>
-        </type>
-        <type category="struct" name="VkFrameBoundaryEXT" structextends="VkSubmitInfo,VkSubmitInfo2,VkPresentInfoKHR,VkBindSparseInfo">
-            <member values="VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member optional="true"><type>VkFrameBoundaryFlagsEXT</type>            <name>flags</name></member>
-            <member><type>uint64_t</type>                                           <name>frameID</name></member>
-            <member optional="true"><type>uint32_t</type>                           <name>imageCount</name></member>
-            <member optional="true" len="imageCount">const <type>VkImage</type>*    <name>pImages</name></member>
-            <member optional="true"><type>uint32_t</type>                           <name>bufferCount</name></member>
-            <member optional="true" len="bufferCount">const <type>VkBuffer</type>*  <name>pBuffers</name></member>
-            <member optional="true"><type>uint64_t</type>                           <name>tagName</name></member>
-            <member optional="true"><type>size_t</type>                             <name>tagSize</name></member>
-            <member optional="true" len="tagSize">const <type>void</type>*          <name>pTag</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceFrameBoundaryFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                 <name>frameBoundary</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                 <name>dynamicRenderingUnusedAttachments</name></member>
-        </type>
-        <type category="struct" name="VkSurfacePresentModeEXT" structextends="VkPhysicalDeviceSurfaceInfo2KHR">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member><type>VkPresentModeKHR</type>                    <name>presentMode</name></member>
-        </type>
-        <type category="struct" name="VkSurfacePresentScalingCapabilitiesEXT" structextends="VkSurfaceCapabilities2KHR">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                    <name>pNext</name></member>
-            <member optional="true"><type>VkPresentScalingFlagsEXT</type> <name>supportedPresentScaling</name></member>
-            <member optional="true"><type>VkPresentGravityFlagsEXT</type> <name>supportedPresentGravityX</name></member>
-            <member optional="true"><type>VkPresentGravityFlagsEXT</type> <name>supportedPresentGravityY</name></member>
-            <member optional="true"><type>VkExtent2D</type>               <name>minScaledImageExtent</name><comment>Supported minimum image width and height for the surface when scaling is used</comment></member>
-            <member optional="true"><type>VkExtent2D</type>               <name>maxScaledImageExtent</name><comment>Supported maximum image width and height for the surface when scaling is used</comment></member>
-        </type>
-        <type category="struct" name="VkSurfacePresentModeCompatibilityEXT" structextends="VkSurfaceCapabilities2KHR">
-            <member values="VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                                    <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                 <name>presentModeCount</name></member>
-            <member optional="true" len="presentModeCount"><type>VkPresentModeKHR</type>* <name>pPresentModes</name><comment>Output list of present modes compatible with the one specified in VkSurfacePresentModeEXT</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>swapchainMaintenance1</name></member>
-        </type>
-        <type category="struct" name="VkSwapchainPresentFenceInfoEXT" structextends="VkPresentInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*         <name>pNext</name></member>
-            <member><type>uint32_t</type>                            <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
-            <member len="swapchainCount">const <type>VkFence</type>* <name>pFences</name><comment>Fence to signal for each swapchain</comment></member>
-        </type>
-        <type category="struct" name="VkSwapchainPresentModesCreateInfoEXT" structextends="VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*         <name>pNext</name></member>
-            <member><type>uint32_t</type>                            <name>presentModeCount</name></member><comment>Length of the pPresentModes array</comment>
-            <member len="presentModeCount">const <type>VkPresentModeKHR</type>* <name>pPresentModes</name></member><comment>Presentation modes which will be usable with this swapchain</comment>
-        </type>
-        <type category="struct" name="VkSwapchainPresentModeInfoEXT" structextends="VkPresentInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*         <name>pNext</name></member>
-            <member><type>uint32_t</type>                            <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
-            <member len="swapchainCount">const <type>VkPresentModeKHR</type>* <name>pPresentModes</name><comment>Presentation mode for each swapchain</comment></member>
-        </type>
-        <type category="struct" name="VkSwapchainPresentScalingCreateInfoEXT" structextends="VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                 <name>pNext</name></member>
-            <member optional="true"><type>VkPresentScalingFlagsEXT</type>    <name>scalingBehavior</name></member>
-            <member optional="true"><type>VkPresentGravityFlagsEXT</type>    <name>presentGravityX</name></member>
-            <member optional="true"><type>VkPresentGravityFlagsEXT</type>    <name>presentGravityY</name></member>
-        </type>
-        <type category="struct" name="VkReleaseSwapchainImagesInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                 <name>pNext</name></member>
-            <member externsync="true"><type>VkSwapchainKHR</type>            <name>swapchain</name><comment>Swapchain for which images are being released</comment></member>
-            <member><type>uint32_t</type>                                    <name>imageIndexCount</name><comment>Number of indices to release</comment></member>
-            <member len="imageIndexCount">const <type>uint32_t</type>*       <name>pImageIndices</name><comment>Indices of which presentable images to release</comment></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDepthBiasControlFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>depthBiasControl</name></member>
-            <member><type>VkBool32</type>                           <name>leastRepresentableValueForceUnormRepresentation</name></member>
-            <member><type>VkBool32</type>                           <name>floatRepresentation</name></member>
-            <member><type>VkBool32</type>                           <name>depthBiasExact</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                                      <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                                         <name>rayTracingInvocationReorder</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
-            <member limittype="noauto"><type>VkRayTracingInvocationReorderModeNV</type>                                    <name>rayTracingInvocationReorderReorderingHint</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*  <name>pNext</name></member>
-            <member><type>VkBool32</type>                                     <name>extendedSparseAddressSpace</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                        <name>pNext</name></member>
-            <member limittype="max"><type>VkDeviceSize</type>                 <name>extendedSparseAddressSpaceSize</name><comment>Total address space available for extended sparse allocations (bytes)</comment></member>
-            <member limittype="bitmask"><type>VkImageUsageFlags</type>        <name>extendedSparseImageUsageFlags</name><comment>Bitfield of which image usages are supported for extended sparse allocations</comment></member>
-            <member limittype="bitmask"><type>VkBufferUsageFlags</type>       <name>extendedSparseBufferUsageFlags</name><comment>Bitfield of which buffer usages are supported for extended sparse allocations</comment></member>
-        </type>
-        <type category="struct" name="VkDirectDriverLoadingInfoLUNARG">
-            <member values="VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                  <name>pNext</name></member>
-            <member><type>VkDirectDriverLoadingFlagsLUNARG</type>                                             <name>flags</name></member>
-            <member noautovalidity="true"><type>PFN_vkGetInstanceProcAddrLUNARG</type>                        <name>pfnGetInstanceProcAddr</name></member>
-        </type>
-        <type category="struct" name="VkDirectDriverLoadingListLUNARG" structextends="VkInstanceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                 <name>pNext</name></member>
-            <member><type>VkDirectDriverLoadingModeLUNARG</type>                             <name>mode</name></member>
-            <member><type>uint32_t</type>                                                    <name>driverCount</name></member>
-            <member len="driverCount">const <type>VkDirectDriverLoadingInfoLUNARG</type>*    <name>pDrivers</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>multiviewPerViewViewports</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>rayTracingPositionFetch</name></member>
-        </type>
-        <type category="struct" name="VkDeviceImageSubresourceInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                              <name>pNext</name></member>
-            <member>const <type>VkImageCreateInfo</type>*                                                 <name>pCreateInfo</name></member>
-            <member>const <type>VkImageSubresource2KHR</type>*                                            <name>pSubresource</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderCorePropertiesARM" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                          <name>pNext</name></member>
-            <member limittype="exact"><type>uint32_t</type>         <name>pixelRate</name></member>
-            <member limittype="exact"><type>uint32_t</type>         <name>texelRate</name></member>
-            <member limittype="exact"><type>uint32_t</type>         <name>fmaRate</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>multiviewPerViewRenderAreas</name></member>
-        </type>
-        <type category="struct" name="VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM" structextends="VkRenderPassBeginInfo,VkRenderingInfo">
-            <member values="VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>perViewRenderAreaCount</name></member>
-            <member len="perViewRenderAreaCount">const <type>VkRect2D</type>*  <name>pPerViewRenderAreas</name></member>
-        </type>
-        <type category="struct" name="VkQueryLowLatencySupportNV" structextends="VkSemaphoreCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>void</type>*                                       <name>pQueriedLowLatencyData</name></member>
-        </type>
-        <type category="struct" name="VkMemoryMapInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member optional="true"><type>VkMemoryMapFlags</type> <name>flags</name></member>
-            <member externsync="true"><type>VkDeviceMemory</type> <name>memory</name></member>
-            <member><type>VkDeviceSize</type>                     <name>offset</name></member>
-            <member><type>VkDeviceSize</type>                     <name>size</name></member>
-        </type>
-        <type category="struct" name="VkMemoryUnmapInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*            <name>pNext</name></member>
-            <member optional="true"><type>VkMemoryUnmapFlagsKHR</type>  <name>flags</name></member>
-            <member externsync="true"><type>VkDeviceMemory</type>       <name>memory</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderObjectFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                           <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                                              <name>shaderObject</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderObjectPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*                                             <name>pNext</name></member>
-            <member limittype="noauto"><type>uint8_t</type>                                                              <name>shaderBinaryUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
-            <member limittype="noauto"><type>uint32_t</type>                                                             <name>shaderBinaryVersion</name></member>
-        </type>
-        <type category="struct" name="VkShaderCreateInfoEXT">
-            <member values="VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT"><type>VkStructureType</type>       <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                             <name>pNext</name></member>
-            <member optional="true"><type>VkShaderCreateFlagsEXT</type>                                  <name>flags</name></member>
-            <member><type>VkShaderStageFlagBits</type>                                                   <name>stage</name></member>
-            <member optional="true"><type>VkShaderStageFlags</type>                                      <name>nextStage</name></member>
-            <member><type>VkShaderCodeTypeEXT</type>                                                     <name>codeType</name></member>
-            <member><type>size_t</type>                                                                  <name>codeSize</name></member>
-            <member len="codeSize">const <type>void</type>*                                              <name>pCode</name></member>
-            <member optional="true" len="null-terminated">const <type>char</type>*                       <name>pName</name></member>
-            <member optional="true"><type>uint32_t</type>                                                <name>setLayoutCount</name></member>
-            <member optional="true" len="setLayoutCount">const <type>VkDescriptorSetLayout</type>*       <name>pSetLayouts</name></member>
-            <member optional="true"><type>uint32_t</type>                                                <name>pushConstantRangeCount</name></member>
-            <member optional="true" len="pushConstantRangeCount">const <type>VkPushConstantRange</type>* <name>pPushConstantRanges</name></member>
-            <member optional="true">const <type>VkSpecializationInfo</type>*                             <name>pSpecializationInfo</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderTileImageFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>shaderTileImageColorReadAccess</name></member>
-            <member><type>VkBool32</type>                           <name>shaderTileImageDepthReadAccess</name></member>
-            <member><type>VkBool32</type>                           <name>shaderTileImageStencilReadAccess</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderTileImagePropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member limittype="noauto"><type>VkBool32</type>        <name>shaderTileImageCoherentReadAccelerated</name></member>
-            <member limittype="noauto"><type>VkBool32</type>        <name>shaderTileImageReadSampleFromPixelRateInvocation</name></member>
-            <member limittype="noauto"><type>VkBool32</type>        <name>shaderTileImageReadFromHelperInvocation</name></member>
-        </type>
-        <type category="struct" name="VkImportScreenBufferInfoQNX" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member noautovalidity="true">struct <type>_screen_buffer</type>*       <name>buffer</name></member>
-        </type>
-        <type category="struct" name="VkScreenBufferPropertiesQNX" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                       <name>allocationSize</name></member>
-            <member><type>uint32_t</type>                           <name>memoryTypeBits</name></member>
-        </type>
-        <type category="struct" name="VkScreenBufferFormatPropertiesQNX" structextends="VkScreenBufferPropertiesQNX" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>VkFormat</type>                           <name>format</name></member>
-            <member><type>uint64_t</type>                           <name>externalFormat</name></member>
-            <member><type>uint64_t</type>                           <name>screenUsage</name></member>
-            <member><type>VkFormatFeatureFlags</type>               <name>formatFeatures</name></member>
-            <member><type>VkComponentMapping</type>                 <name>samplerYcbcrConversionComponents</name></member>
-            <member><type>VkSamplerYcbcrModelConversion</type>      <name>suggestedYcbcrModel</name></member>
-            <member><type>VkSamplerYcbcrRange</type>                <name>suggestedYcbcrRange</name></member>
-            <member><type>VkChromaLocation</type>                   <name>suggestedXChromaOffset</name></member>
-            <member><type>VkChromaLocation</type>                   <name>suggestedYChromaOffset</name></member>
-        </type>
-        <type category="struct" name="VkExternalFormatQNX" structextends="VkImageCreateInfo,VkSamplerYcbcrConversionCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                              <name>pNext</name></member>
-            <member><type>uint64_t</type>                           <name>externalFormat</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                       <name>pNext</name></member>
-            <member><type>VkBool32</type>                                    <name>screenBufferImport</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCooperativeMatrixFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member><type>VkBool32</type>                            <name>cooperativeMatrix</name></member>
-            <member><type>VkBool32</type>                            <name>cooperativeMatrixRobustBufferAccess</name></member>
-        </type>
-        <type category="struct" name="VkCooperativeMatrixPropertiesKHR">
-            <member values="VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member><type>uint32_t</type>                            <name>MSize</name></member>
-            <member><type>uint32_t</type>                            <name>NSize</name></member>
-            <member><type>uint32_t</type>                            <name>KSize</name></member>
-            <member><type>VkComponentTypeKHR</type>                  <name>AType</name></member>
-            <member><type>VkComponentTypeKHR</type>                  <name>BType</name></member>
-            <member><type>VkComponentTypeKHR</type>                  <name>CType</name></member>
-            <member><type>VkComponentTypeKHR</type>                  <name>ResultType</name></member>
-            <member><type>VkBool32</type>                            <name>saturatingAccumulation</name></member>
-            <member><type>VkScopeKHR</type>                          <name>scope</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCooperativeMatrixPropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                               <name>pNext</name></member>
-            <member limittype="bitmask"><type>VkShaderStageFlags</type>              <name>cooperativeMatrixSupportedStages</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderEnqueuePropertiesAMDX" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX"><type>VkStructureType</type> <name>sType</name></member>
-            <member noautovalidity="true"  optional="true"><type>void</type>*               <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>                                   <name>maxExecutionGraphDepth</name></member>
-            <member limittype="max"><type>uint32_t</type>                                   <name>maxExecutionGraphShaderOutputNodes</name></member>
-            <member limittype="max"><type>uint32_t</type>                                   <name>maxExecutionGraphShaderPayloadSize</name></member>
-            <member limittype="max"><type>uint32_t</type>                                   <name>maxExecutionGraphShaderPayloadCount</name></member>
-            <member limittype="noauto"><type>uint32_t</type>                                <name>executionGraphDispatchAddressAlignment</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceShaderEnqueueFeaturesAMDX" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX"><type>VkStructureType</type> <name>sType</name></member>
-            <member noautovalidity="true" optional="true"><type>void</type>*                <name>pNext</name></member>
-            <member><type>VkBool32</type>                                                   <name>shaderEnqueue</name></member>
-        </type>
-        <type category="struct" name="VkExecutionGraphPipelineCreateInfoAMDX">
-            <member values="VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                <name>pNext</name></member>
-            <member optional="true"><type>VkPipelineCreateFlags</type>                      <name>flags</name></member>
-            <member optional="true"><type>uint32_t</type>                                   <name>stageCount</name></member>
-            <member optional="true" len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>*    <name>pStages</name></member>
-            <member optional="true">const <type>VkPipelineLibraryCreateInfoKHR</type>*      <name>pLibraryInfo</name></member>
-            <member><type>VkPipelineLayout</type>                                           <name>layout</name></member>
-            <member noautovalidity="true" optional="true"><type>VkPipeline</type>           <name>basePipelineHandle</name></member>
-            <member><type>int32_t</type>                                                    <name>basePipelineIndex</name></member>
-        </type>
-        <type category="struct" name="VkPipelineShaderStageNodeCreateInfoAMDX" structextends="VkPipelineShaderStageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX">  <type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                <name>pNext</name></member>
-            <member optional="true" len="null-terminated">const <type>char</type>*          <name>pName</name></member>
-            <member><type>uint32_t</type>                                                   <name>index</name></member>
-        </type>
-        <type category="struct" name="VkExecutionGraphPipelineScratchSizeAMDX">
-            <member values="VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX"><type>VkStructureType</type> <name>sType</name></member>
-            <member noautovalidity="true" optional="true"><type>void</type>*                <name>pNext</name></member>
-            <member><type>VkDeviceSize</type>                                               <name>size</name></member>
-        </type>
-        <type category="struct" name="VkDispatchGraphInfoAMDX">
-            <member><type>uint32_t</type>                                                   <name>nodeIndex</name></member>
-            <member optional="true"><type>uint32_t</type>                                   <name>payloadCount</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstAMDX</type>           <name>payloads</name></member>
-            <member><type>uint64_t</type>                                                   <name>payloadStride</name></member>
-        </type>
-        <type category="struct" name="VkDispatchGraphCountInfoAMDX">
-            <member optional="true"><type>uint32_t</type>                                   <name>count</name></member>
-            <member noautovalidity="true"><type>VkDeviceOrHostAddressConstAMDX</type>                  <name>infos</name></member>
-            <member><type>uint64_t</type>                                                   <name>stride</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCubicClampFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>cubicRangeClamp</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceYcbcrDegammaFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*        <name>pNext</name></member>
-            <member><type>VkBool32</type>                     <name>ycbcrDegamma</name></member>
-        </type>
-        <type category="struct" name="VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM" structextends="VkSamplerYcbcrConversionCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*              <name>pNext</name></member>
-            <member><type>VkBool32</type>                           <name>enableYDegamma</name></member>
-            <member><type>VkBool32</type>                           <name>enableCbCrDegamma</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCubicWeightsFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>selectableCubicWeights</name></member>
-        </type>
-        <type category="struct" name="VkSamplerCubicWeightsCreateInfoQCOM" structextends="VkSamplerCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>VkCubicFilterWeightsQCOM</type>         <name>cubicWeights</name></member>
-        </type>
-        <type category="struct" name="VkBlitImageCubicWeightsInfoQCOM" structextends="VkBlitImageInfo2">
-            <member values="VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>VkCubicFilterWeightsQCOM</type>         <name>cubicWeights</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageProcessing2FeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*   <name>pNext</name></member>
-            <member><type>VkBool32</type>                                      <name>textureBlockMatch2</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceImageProcessing2PropertiesQCOM" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                        <name>pNext</name></member>
-            <member limittype="max" optional="true"><type>VkExtent2D</type>  <name>maxBlockMatchWindow</name></member>
-        </type>
-        <type category="struct" name="VkSamplerBlockMatchWindowCreateInfoQCOM" structextends="VkSamplerCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                  <name>pNext</name></member>
-            <member><type>VkExtent2D</type>                                   <name>windowExtent</name></member>
-            <member><type>VkBlockMatchWindowCompareModeQCOM</type>            <name>windowCompareMode</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true"><type>void</type>*     <name>pNext</name></member>
-            <member><type>VkBool32</type>                                        <name>descriptorPoolOverallocation</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceLayeredDriverPropertiesMSFT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                       <name>pNext</name></member>
-            <member><type>VkLayeredDriverUnderlyingApiMSFT</type>            <name>underlyingAPI</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalFormatResolveFeaturesANDROID" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-          <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-          <member optional="true"><type>void</type>*        <name>pNext</name></member>
-          <member><type>VkBool32</type>                     <name>externalFormatResolve</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceExternalFormatResolvePropertiesANDROID" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-          <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-          <member optional="true"><type>void</type>*        <name>pNext</name></member>
-          <member limittype="noauto"><type>VkBool32</type>  <name>nullColorAttachmentWithExternalFormatResolve</name></member>
-          <member limittype="noauto"><type>VkChromaLocation</type>  <name>externalFormatResolveChromaOffsetX</name></member>
-          <member limittype="noauto"><type>VkChromaLocation</type>  <name>externalFormatResolveChromaOffsetY</name></member>
-        </type>
-        <type category="struct" name="VkAndroidHardwareBufferFormatResolvePropertiesANDROID" structextends="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true">
-          <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-          <member optional="true"><type>void</type>*        <name>pNext</name></member>
-          <member><type>VkFormat</type>                     <name>colorAttachmentFormat</name></member>
-        </type>
-        <type category="struct" name="VkLatencySleepModeInfoNV">
-            <member values="VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkBool32</type> <name>lowLatencyMode</name></member>
-            <member><type>VkBool32</type> <name>lowLatencyBoost</name></member>
-            <member><type>uint32_t</type> <name>minimumIntervalUs</name></member>
-        </type>
-        <type category="struct" name="VkLatencySleepInfoNV">
-            <member values="VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkSemaphore</type> <name>signalSemaphore</name></member>
-            <member><type>uint64_t</type> <name>value</name></member>
-        </type>
-        <type category="struct" name="VkSetLatencyMarkerInfoNV">
-            <member values="VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>uint64_t</type> <name>presentID</name></member>
-            <member><type>VkLatencyMarkerNV</type> <name>marker</name></member>
-        </type>
-        <type category="struct" name="VkGetLatencyMarkerInfoNV">
-            <member values="VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkLatencyTimingsFrameReportNV</type>* <name>pTimings</name></member>
-        </type>
-        <type category="struct" name="VkLatencyTimingsFrameReportNV">
-            <member values="VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>uint64_t</type>               <name>presentID</name></member>
-            <member><type>uint64_t</type>               <name>inputSampleTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>simStartTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>simEndTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>renderSubmitStartTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>renderSubmitEndTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>presentStartTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>presentEndTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>driverStartTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>driverEndTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>osRenderQueueStartTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>osRenderQueueEndTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>gpuRenderStartTimeUs</name></member>
-            <member><type>uint64_t</type>               <name>gpuRenderEndTimeUs</name></member>
-        </type>
-        <type category="struct" name="VkOutOfBandQueueTypeInfoNV">
-            <member values="VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
-            <member><type>VkOutOfBandQueueTypeNV</type> <name>queueType</name></member>
-        </type>
-        <type category="struct" name="VkLatencySubmissionPresentIdNV" structextends="VkSubmitInfo,VkSubmitInfo2">
-            <member values="VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*      <name>pNext</name></member>
-            <member><type>uint64_t</type>                         <name>presentID</name></member>
-        </type>
-        <type category="struct" name="VkSwapchainLatencyCreateInfoNV" structextends="VkSwapchainCreateInfoKHR">
-            <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                        <name>pNext</name></member>
-            <member optional="true"><type>VkBool32</type>                           <name>latencyModeEnable</name></member>
-        </type>
-        <type category="struct" name="VkLatencySurfaceCapabilitiesNV" structextends="VkSurfaceCapabilities2KHR">
-            <member values="VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                              <name>pNext</name></member>
-            <member optional="true"><type>uint32_t</type>                                 <name>presentModeCount</name></member>
-            <member optional="true" len="presentModeCount"><type>VkPresentModeKHR</type>* <name>pPresentModes</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCudaKernelLaunchFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member><type>VkBool32</type>                       <name>cudaKernelLaunchFeatures</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceCudaKernelLaunchPropertiesNV" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*    <name>pNext</name></member>
-            <member limittype="max"><type>uint32_t</type>         <name>computeCapabilityMinor</name></member>
-            <member limittype="min"><type>uint32_t</type>         <name>computeCapabilityMajor</name></member>
-        </type>
-        <type category="struct" name="VkDeviceQueueShaderCoreControlCreateInfoARM" structextends="VkDeviceQueueCreateInfo,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>uint32_t</type>                         <name>shaderCoreCount</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSchedulingControlsFeaturesARM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*            <name>pNext</name></member>
-            <member><type>VkBool32</type>                         <name>schedulingControls</name></member>
-        </type>
-        <type category="struct" name="VkPhysicalDeviceSchedulingControlsPropertiesARM" structextends="VkPhysicalDeviceProperties2">
-            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true"><type>void</type>*                       <name>pNext</name></member>
-            <member><type>VkPhysicalDeviceSchedulingControlsFlagsARM</type>  <name>schedulingControlsFlags</name></member>
-        </type>
-    </types>
-
-
-    <comment>Vulkan enumerant (token) definitions</comment>
-
-    <enums name="API Constants" comment="Vulkan hardcoded constants - not an enumerated type, part of the header boilerplate">
-        <enum type="uint32_t" value="256"       name="VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"/>
-        <enum type="uint32_t" value="16"        name="VK_UUID_SIZE"/>
-        <enum type="uint32_t" value="8"         name="VK_LUID_SIZE"/>
-        <enum                                   name="VK_LUID_SIZE_KHR" alias="VK_LUID_SIZE"/>
-        <enum type="uint32_t" value="256"       name="VK_MAX_EXTENSION_NAME_SIZE"/>
-        <enum type="uint32_t" value="256"       name="VK_MAX_DESCRIPTION_SIZE"/>
-        <enum type="uint32_t" value="32"        name="VK_MAX_MEMORY_TYPES"/>
-        <enum type="uint32_t" value="16"        name="VK_MAX_MEMORY_HEAPS" comment="The maximum number of unique memory heaps, each of which supporting 1 or more memory types"/>
-        <enum type="float"    value="1000.0F"   name="VK_LOD_CLAMP_NONE"/>
-        <enum type="uint32_t" value="(~0U)"     name="VK_REMAINING_MIP_LEVELS"/>
-        <enum type="uint32_t" value="(~0U)"     name="VK_REMAINING_ARRAY_LAYERS"/>
-        <enum type="uint32_t" value="(~0U)"     name="VK_REMAINING_3D_SLICES_EXT"/>
-        <enum type="uint64_t" value="(~0ULL)"   name="VK_WHOLE_SIZE"/>
-        <enum type="uint32_t" value="(~0U)"     name="VK_ATTACHMENT_UNUSED"/>
-        <enum type="uint32_t" value="1"         name="VK_TRUE"/>
-        <enum type="uint32_t" value="0"         name="VK_FALSE"/>
-        <enum type="uint32_t" value="(~0U)"     name="VK_QUEUE_FAMILY_IGNORED"/>
-        <enum type="uint32_t" value="(~1U)"     name="VK_QUEUE_FAMILY_EXTERNAL"/>
-        <enum                                   name="VK_QUEUE_FAMILY_EXTERNAL_KHR" alias="VK_QUEUE_FAMILY_EXTERNAL"/>
-        <enum type="uint32_t" value="(~2U)"     name="VK_QUEUE_FAMILY_FOREIGN_EXT"/>
-        <enum type="uint32_t" value="(~0U)"     name="VK_SUBPASS_EXTERNAL"/>
-        <enum type="uint32_t" value="32"        name="VK_MAX_DEVICE_GROUP_SIZE"/>
-        <enum                                   name="VK_MAX_DEVICE_GROUP_SIZE_KHR" alias="VK_MAX_DEVICE_GROUP_SIZE"/>
-        <enum type="uint32_t" value="256"       name="VK_MAX_DRIVER_NAME_SIZE"/>
-        <enum                                   name="VK_MAX_DRIVER_NAME_SIZE_KHR" alias="VK_MAX_DRIVER_NAME_SIZE"/>
-        <enum type="uint32_t" value="256"       name="VK_MAX_DRIVER_INFO_SIZE"/>
-        <enum                                   name="VK_MAX_DRIVER_INFO_SIZE_KHR" alias="VK_MAX_DRIVER_INFO_SIZE"/>
-        <enum type="uint32_t" value="(~0U)"     name="VK_SHADER_UNUSED_KHR"/>
-        <enum                                   name="VK_SHADER_UNUSED_NV" alias="VK_SHADER_UNUSED_KHR"/>
-        <enum type="uint32_t" value="16"        name="VK_MAX_GLOBAL_PRIORITY_SIZE_KHR"/>
-        <enum                                   name="VK_MAX_GLOBAL_PRIORITY_SIZE_EXT" alias="VK_MAX_GLOBAL_PRIORITY_SIZE_KHR"/>
-        <enum type="uint32_t" value="32"        name="VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT"/>
-        <enum type="uint32_t" value="(~0U)"     name="VK_SHADER_INDEX_UNUSED_AMDX"/>
-    </enums>
-
-    <comment>
-        Unlike OpenGL, most tokens in Vulkan are actual typed enumerants in
-        their own numeric namespaces. The "name" attribute is the C enum
-        type name, and is pulled in from a type tag definition above
-        (slightly clunky, but retains the type / enum distinction). "type"
-        attributes of "enum" or "bitmask" indicate that these values should
-        be generated inside an appropriate definition.
-    </comment>
-
-    <enums name="VkImageLayout" type="enum">
-        <enum value="0"     name="VK_IMAGE_LAYOUT_UNDEFINED"                         comment="Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)"/>
-        <enum value="1"     name="VK_IMAGE_LAYOUT_GENERAL"                           comment="General layout when image can be used for any kind of access"/>
-        <enum value="2"     name="VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"          comment="Optimal layout when image is only used for color attachment read/write"/>
-        <enum value="3"     name="VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"  comment="Optimal layout when image is only used for depth/stencil attachment read/write"/>
-        <enum value="4"     name="VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"   comment="Optimal layout when image is used for read only depth/stencil attachment and shader access"/>
-        <enum value="5"     name="VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"          comment="Optimal layout when image is used for read only shader access"/>
-        <enum value="6"     name="VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"              comment="Optimal layout when image is used only as source of transfer operations"/>
-        <enum value="7"     name="VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"              comment="Optimal layout when image is used only as destination of transfer operations"/>
-        <enum value="8"     name="VK_IMAGE_LAYOUT_PREINITIALIZED"                    comment="Initial layout used when the data is populated by the CPU"/>
-    </enums>
-    <enums name="VkAttachmentLoadOp" type="enum">
-        <enum value="0"     name="VK_ATTACHMENT_LOAD_OP_LOAD"/>
-        <enum value="1"     name="VK_ATTACHMENT_LOAD_OP_CLEAR"/>
-        <enum value="2"     name="VK_ATTACHMENT_LOAD_OP_DONT_CARE"/>
-    </enums>
-    <enums name="VkAttachmentStoreOp" type="enum">
-        <enum value="0"     name="VK_ATTACHMENT_STORE_OP_STORE"/>
-        <enum value="1"     name="VK_ATTACHMENT_STORE_OP_DONT_CARE"/>
-    </enums>
-    <enums name="VkImageType" type="enum">
-        <enum value="0"     name="VK_IMAGE_TYPE_1D"/>
-        <enum value="1"     name="VK_IMAGE_TYPE_2D"/>
-        <enum value="2"     name="VK_IMAGE_TYPE_3D"/>
-    </enums>
-    <enums name="VkImageTiling" type="enum">
-        <enum value="0"     name="VK_IMAGE_TILING_OPTIMAL"/>
-        <enum value="1"     name="VK_IMAGE_TILING_LINEAR"/>
-    </enums>
-    <enums name="VkImageViewType" type="enum">
-        <enum value="0"     name="VK_IMAGE_VIEW_TYPE_1D"/>
-        <enum value="1"     name="VK_IMAGE_VIEW_TYPE_2D"/>
-        <enum value="2"     name="VK_IMAGE_VIEW_TYPE_3D"/>
-        <enum value="3"     name="VK_IMAGE_VIEW_TYPE_CUBE"/>
-        <enum value="4"     name="VK_IMAGE_VIEW_TYPE_1D_ARRAY"/>
-        <enum value="5"     name="VK_IMAGE_VIEW_TYPE_2D_ARRAY"/>
-        <enum value="6"     name="VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"/>
-    </enums>
-    <enums name="VkCommandBufferLevel" type="enum">
-        <enum value="0"     name="VK_COMMAND_BUFFER_LEVEL_PRIMARY"/>
-        <enum value="1"     name="VK_COMMAND_BUFFER_LEVEL_SECONDARY"/>
-    </enums>
-    <enums name="VkComponentSwizzle" type="enum">
-        <enum value="0"     name="VK_COMPONENT_SWIZZLE_IDENTITY"/>
-        <enum value="1"     name="VK_COMPONENT_SWIZZLE_ZERO"/>
-        <enum value="2"     name="VK_COMPONENT_SWIZZLE_ONE"/>
-        <enum value="3"     name="VK_COMPONENT_SWIZZLE_R"/>
-        <enum value="4"     name="VK_COMPONENT_SWIZZLE_G"/>
-        <enum value="5"     name="VK_COMPONENT_SWIZZLE_B"/>
-        <enum value="6"     name="VK_COMPONENT_SWIZZLE_A"/>
-    </enums>
-    <enums name="VkDescriptorType" type="enum">
-        <enum value="0"     name="VK_DESCRIPTOR_TYPE_SAMPLER"/>
-        <enum value="1"     name="VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"/>
-        <enum value="2"     name="VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"/>
-        <enum value="3"     name="VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"/>
-        <enum value="4"     name="VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"/>
-        <enum value="5"     name="VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"/>
-        <enum value="6"     name="VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"/>
-        <enum value="7"     name="VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"/>
-        <enum value="8"     name="VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"/>
-        <enum value="9"     name="VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"/>
-        <enum value="10"    name="VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"/>
-    </enums>
-    <enums name="VkQueryType" type="enum">
-        <enum value="0"     name="VK_QUERY_TYPE_OCCLUSION"/>
-        <enum value="1"     name="VK_QUERY_TYPE_PIPELINE_STATISTICS"                 comment="Optional"/>
-        <enum value="2"     name="VK_QUERY_TYPE_TIMESTAMP"/>
-    </enums>
-    <enums name="VkBorderColor" type="enum">
-        <enum value="0"     name="VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"/>
-        <enum value="1"     name="VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"/>
-        <enum value="2"     name="VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"/>
-        <enum value="3"     name="VK_BORDER_COLOR_INT_OPAQUE_BLACK"/>
-        <enum value="4"     name="VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"/>
-        <enum value="5"     name="VK_BORDER_COLOR_INT_OPAQUE_WHITE"/>
-    </enums>
-    <enums name="VkPipelineBindPoint" type="enum">
-        <enum value="0"     name="VK_PIPELINE_BIND_POINT_GRAPHICS"/>
-        <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"/>
-    </enums>
-    <enums name="VkPipelineCacheCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkPrimitiveTopology" type="enum">
-        <enum value="0"     name="VK_PRIMITIVE_TOPOLOGY_POINT_LIST"/>
-        <enum value="1"     name="VK_PRIMITIVE_TOPOLOGY_LINE_LIST"/>
-        <enum value="2"     name="VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"/>
-        <enum value="3"     name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"/>
-        <enum value="4"     name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"/>
-        <enum value="5"     name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"/>
-        <enum value="6"     name="VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"/>
-        <enum value="7"     name="VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"/>
-        <enum value="8"     name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"/>
-        <enum value="9"     name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"/>
-        <enum value="10"    name="VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"/>
-    </enums>
-    <enums name="VkSharingMode" type="enum">
-        <enum value="0"     name="VK_SHARING_MODE_EXCLUSIVE"/>
-        <enum value="1"     name="VK_SHARING_MODE_CONCURRENT"/>
-    </enums>
-    <enums name="VkIndexType" type="enum">
-        <enum value="0"     name="VK_INDEX_TYPE_UINT16"/>
-        <enum value="1"     name="VK_INDEX_TYPE_UINT32"/>
-    </enums>
-    <enums name="VkFilter" type="enum">
-        <enum value="0"     name="VK_FILTER_NEAREST"/>
-        <enum value="1"     name="VK_FILTER_LINEAR"/>
-    </enums>
-    <enums name="VkSamplerMipmapMode" type="enum">
-        <enum value="0"     name="VK_SAMPLER_MIPMAP_MODE_NEAREST"                        comment="Choose nearest mip level"/>
-        <enum value="1"     name="VK_SAMPLER_MIPMAP_MODE_LINEAR"                         comment="Linear filter between mip levels"/>
-    </enums>
-    <enums name="VkSamplerAddressMode" type="enum">
-        <enum value="0"     name="VK_SAMPLER_ADDRESS_MODE_REPEAT"/>
-        <enum value="1"     name="VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"/>
-        <enum value="2"     name="VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"/>
-        <enum value="3"     name="VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"/>
-            <comment>
-                value="4" reserved for VK_KHR_sampler_mirror_clamp_to_edge
-                enum VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; do not
-                alias!
-            </comment>
-    </enums>
-    <enums name="VkCompareOp" type="enum">
-        <enum value="0"     name="VK_COMPARE_OP_NEVER"/>
-        <enum value="1"     name="VK_COMPARE_OP_LESS"/>
-        <enum value="2"     name="VK_COMPARE_OP_EQUAL"/>
-        <enum value="3"     name="VK_COMPARE_OP_LESS_OR_EQUAL"/>
-        <enum value="4"     name="VK_COMPARE_OP_GREATER"/>
-        <enum value="5"     name="VK_COMPARE_OP_NOT_EQUAL"/>
-        <enum value="6"     name="VK_COMPARE_OP_GREATER_OR_EQUAL"/>
-        <enum value="7"     name="VK_COMPARE_OP_ALWAYS"/>
-    </enums>
-    <enums name="VkPolygonMode" type="enum">
-        <enum value="0"     name="VK_POLYGON_MODE_FILL"/>
-        <enum value="1"     name="VK_POLYGON_MODE_LINE"/>
-        <enum value="2"     name="VK_POLYGON_MODE_POINT"/>
-    </enums>
-    <enums name="VkFrontFace" type="enum">
-        <enum value="0"     name="VK_FRONT_FACE_COUNTER_CLOCKWISE"/>
-        <enum value="1"     name="VK_FRONT_FACE_CLOCKWISE"/>
-    </enums>
-    <enums name="VkBlendFactor" type="enum">
-        <enum value="0"     name="VK_BLEND_FACTOR_ZERO"/>
-        <enum value="1"     name="VK_BLEND_FACTOR_ONE"/>
-        <enum value="2"     name="VK_BLEND_FACTOR_SRC_COLOR"/>
-        <enum value="3"     name="VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"/>
-        <enum value="4"     name="VK_BLEND_FACTOR_DST_COLOR"/>
-        <enum value="5"     name="VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"/>
-        <enum value="6"     name="VK_BLEND_FACTOR_SRC_ALPHA"/>
-        <enum value="7"     name="VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"/>
-        <enum value="8"     name="VK_BLEND_FACTOR_DST_ALPHA"/>
-        <enum value="9"     name="VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"/>
-        <enum value="10"    name="VK_BLEND_FACTOR_CONSTANT_COLOR"/>
-        <enum value="11"    name="VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"/>
-        <enum value="12"    name="VK_BLEND_FACTOR_CONSTANT_ALPHA"/>
-        <enum value="13"    name="VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"/>
-        <enum value="14"    name="VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"/>
-        <enum value="15"    name="VK_BLEND_FACTOR_SRC1_COLOR"/>
-        <enum value="16"    name="VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"/>
-        <enum value="17"    name="VK_BLEND_FACTOR_SRC1_ALPHA"/>
-        <enum value="18"    name="VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"/>
-    </enums>
-    <enums name="VkBlendOp" type="enum">
-        <enum value="0"     name="VK_BLEND_OP_ADD"/>
-        <enum value="1"     name="VK_BLEND_OP_SUBTRACT"/>
-        <enum value="2"     name="VK_BLEND_OP_REVERSE_SUBTRACT"/>
-        <enum value="3"     name="VK_BLEND_OP_MIN"/>
-        <enum value="4"     name="VK_BLEND_OP_MAX"/>
-    </enums>
-    <enums name="VkStencilOp" type="enum">
-        <enum value="0"     name="VK_STENCIL_OP_KEEP"/>
-        <enum value="1"     name="VK_STENCIL_OP_ZERO"/>
-        <enum value="2"     name="VK_STENCIL_OP_REPLACE"/>
-        <enum value="3"     name="VK_STENCIL_OP_INCREMENT_AND_CLAMP"/>
-        <enum value="4"     name="VK_STENCIL_OP_DECREMENT_AND_CLAMP"/>
-        <enum value="5"     name="VK_STENCIL_OP_INVERT"/>
-        <enum value="6"     name="VK_STENCIL_OP_INCREMENT_AND_WRAP"/>
-        <enum value="7"     name="VK_STENCIL_OP_DECREMENT_AND_WRAP"/>
-    </enums>
-    <enums name="VkLogicOp" type="enum">
-        <enum value="0"     name="VK_LOGIC_OP_CLEAR"/>
-        <enum value="1"     name="VK_LOGIC_OP_AND"/>
-        <enum value="2"     name="VK_LOGIC_OP_AND_REVERSE"/>
-        <enum value="3"     name="VK_LOGIC_OP_COPY"/>
-        <enum value="4"     name="VK_LOGIC_OP_AND_INVERTED"/>
-        <enum value="5"     name="VK_LOGIC_OP_NO_OP"/>
-        <enum value="6"     name="VK_LOGIC_OP_XOR"/>
-        <enum value="7"     name="VK_LOGIC_OP_OR"/>
-        <enum value="8"     name="VK_LOGIC_OP_NOR"/>
-        <enum value="9"     name="VK_LOGIC_OP_EQUIVALENT"/>
-        <enum value="10"    name="VK_LOGIC_OP_INVERT"/>
-        <enum value="11"    name="VK_LOGIC_OP_OR_REVERSE"/>
-        <enum value="12"    name="VK_LOGIC_OP_COPY_INVERTED"/>
-        <enum value="13"    name="VK_LOGIC_OP_OR_INVERTED"/>
-        <enum value="14"    name="VK_LOGIC_OP_NAND"/>
-        <enum value="15"    name="VK_LOGIC_OP_SET"/>
-    </enums>
-    <enums name="VkInternalAllocationType" type="enum">
-        <enum value="0"     name="VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"/>
-    </enums>
-    <enums name="VkSystemAllocationScope" type="enum">
-        <enum value="0"     name="VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"/>
-        <enum value="1"     name="VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"/>
-        <enum value="2"     name="VK_SYSTEM_ALLOCATION_SCOPE_CACHE"/>
-        <enum value="3"     name="VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"/>
-        <enum value="4"     name="VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"/>
-    </enums>
-    <enums name="VkPhysicalDeviceType" type="enum">
-        <enum value="0"     name="VK_PHYSICAL_DEVICE_TYPE_OTHER"/>
-        <enum value="1"     name="VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"/>
-        <enum value="2"     name="VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"/>
-        <enum value="3"     name="VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"/>
-        <enum value="4"     name="VK_PHYSICAL_DEVICE_TYPE_CPU"/>
-    </enums>
-    <enums name="VkVertexInputRate" type="enum">
-        <enum value="0"     name="VK_VERTEX_INPUT_RATE_VERTEX"/>
-        <enum value="1"     name="VK_VERTEX_INPUT_RATE_INSTANCE"/>
-    </enums>
-    <enums name="VkFormat" type="enum" comment="Vulkan format definitions">
-        <enum value="0"     name="VK_FORMAT_UNDEFINED"/>
-        <enum value="1"     name="VK_FORMAT_R4G4_UNORM_PACK8"/>
-        <enum value="2"     name="VK_FORMAT_R4G4B4A4_UNORM_PACK16"/>
-        <enum value="3"     name="VK_FORMAT_B4G4R4A4_UNORM_PACK16"/>
-        <enum value="4"     name="VK_FORMAT_R5G6B5_UNORM_PACK16"/>
-        <enum value="5"     name="VK_FORMAT_B5G6R5_UNORM_PACK16"/>
-        <enum value="6"     name="VK_FORMAT_R5G5B5A1_UNORM_PACK16"/>
-        <enum value="7"     name="VK_FORMAT_B5G5R5A1_UNORM_PACK16"/>
-        <enum value="8"     name="VK_FORMAT_A1R5G5B5_UNORM_PACK16"/>
-        <enum value="9"     name="VK_FORMAT_R8_UNORM"/>
-        <enum value="10"    name="VK_FORMAT_R8_SNORM"/>
-        <enum value="11"    name="VK_FORMAT_R8_USCALED"/>
-        <enum value="12"    name="VK_FORMAT_R8_SSCALED"/>
-        <enum value="13"    name="VK_FORMAT_R8_UINT"/>
-        <enum value="14"    name="VK_FORMAT_R8_SINT"/>
-        <enum value="15"    name="VK_FORMAT_R8_SRGB"/>
-        <enum value="16"    name="VK_FORMAT_R8G8_UNORM"/>
-        <enum value="17"    name="VK_FORMAT_R8G8_SNORM"/>
-        <enum value="18"    name="VK_FORMAT_R8G8_USCALED"/>
-        <enum value="19"    name="VK_FORMAT_R8G8_SSCALED"/>
-        <enum value="20"    name="VK_FORMAT_R8G8_UINT"/>
-        <enum value="21"    name="VK_FORMAT_R8G8_SINT"/>
-        <enum value="22"    name="VK_FORMAT_R8G8_SRGB"/>
-        <enum value="23"    name="VK_FORMAT_R8G8B8_UNORM"/>
-        <enum value="24"    name="VK_FORMAT_R8G8B8_SNORM"/>
-        <enum value="25"    name="VK_FORMAT_R8G8B8_USCALED"/>
-        <enum value="26"    name="VK_FORMAT_R8G8B8_SSCALED"/>
-        <enum value="27"    name="VK_FORMAT_R8G8B8_UINT"/>
-        <enum value="28"    name="VK_FORMAT_R8G8B8_SINT"/>
-        <enum value="29"    name="VK_FORMAT_R8G8B8_SRGB"/>
-        <enum value="30"    name="VK_FORMAT_B8G8R8_UNORM"/>
-        <enum value="31"    name="VK_FORMAT_B8G8R8_SNORM"/>
-        <enum value="32"    name="VK_FORMAT_B8G8R8_USCALED"/>
-        <enum value="33"    name="VK_FORMAT_B8G8R8_SSCALED"/>
-        <enum value="34"    name="VK_FORMAT_B8G8R8_UINT"/>
-        <enum value="35"    name="VK_FORMAT_B8G8R8_SINT"/>
-        <enum value="36"    name="VK_FORMAT_B8G8R8_SRGB"/>
-        <enum value="37"    name="VK_FORMAT_R8G8B8A8_UNORM"/>
-        <enum value="38"    name="VK_FORMAT_R8G8B8A8_SNORM"/>
-        <enum value="39"    name="VK_FORMAT_R8G8B8A8_USCALED"/>
-        <enum value="40"    name="VK_FORMAT_R8G8B8A8_SSCALED"/>
-        <enum value="41"    name="VK_FORMAT_R8G8B8A8_UINT"/>
-        <enum value="42"    name="VK_FORMAT_R8G8B8A8_SINT"/>
-        <enum value="43"    name="VK_FORMAT_R8G8B8A8_SRGB"/>
-        <enum value="44"    name="VK_FORMAT_B8G8R8A8_UNORM"/>
-        <enum value="45"    name="VK_FORMAT_B8G8R8A8_SNORM"/>
-        <enum value="46"    name="VK_FORMAT_B8G8R8A8_USCALED"/>
-        <enum value="47"    name="VK_FORMAT_B8G8R8A8_SSCALED"/>
-        <enum value="48"    name="VK_FORMAT_B8G8R8A8_UINT"/>
-        <enum value="49"    name="VK_FORMAT_B8G8R8A8_SINT"/>
-        <enum value="50"    name="VK_FORMAT_B8G8R8A8_SRGB"/>
-        <enum value="51"    name="VK_FORMAT_A8B8G8R8_UNORM_PACK32"/>
-        <enum value="52"    name="VK_FORMAT_A8B8G8R8_SNORM_PACK32"/>
-        <enum value="53"    name="VK_FORMAT_A8B8G8R8_USCALED_PACK32"/>
-        <enum value="54"    name="VK_FORMAT_A8B8G8R8_SSCALED_PACK32"/>
-        <enum value="55"    name="VK_FORMAT_A8B8G8R8_UINT_PACK32"/>
-        <enum value="56"    name="VK_FORMAT_A8B8G8R8_SINT_PACK32"/>
-        <enum value="57"    name="VK_FORMAT_A8B8G8R8_SRGB_PACK32"/>
-        <enum value="58"    name="VK_FORMAT_A2R10G10B10_UNORM_PACK32"/>
-        <enum value="59"    name="VK_FORMAT_A2R10G10B10_SNORM_PACK32"/>
-        <enum value="60"    name="VK_FORMAT_A2R10G10B10_USCALED_PACK32"/>
-        <enum value="61"    name="VK_FORMAT_A2R10G10B10_SSCALED_PACK32"/>
-        <enum value="62"    name="VK_FORMAT_A2R10G10B10_UINT_PACK32"/>
-        <enum value="63"    name="VK_FORMAT_A2R10G10B10_SINT_PACK32"/>
-        <enum value="64"    name="VK_FORMAT_A2B10G10R10_UNORM_PACK32"/>
-        <enum value="65"    name="VK_FORMAT_A2B10G10R10_SNORM_PACK32"/>
-        <enum value="66"    name="VK_FORMAT_A2B10G10R10_USCALED_PACK32"/>
-        <enum value="67"    name="VK_FORMAT_A2B10G10R10_SSCALED_PACK32"/>
-        <enum value="68"    name="VK_FORMAT_A2B10G10R10_UINT_PACK32"/>
-        <enum value="69"    name="VK_FORMAT_A2B10G10R10_SINT_PACK32"/>
-        <enum value="70"    name="VK_FORMAT_R16_UNORM"/>
-        <enum value="71"    name="VK_FORMAT_R16_SNORM"/>
-        <enum value="72"    name="VK_FORMAT_R16_USCALED"/>
-        <enum value="73"    name="VK_FORMAT_R16_SSCALED"/>
-        <enum value="74"    name="VK_FORMAT_R16_UINT"/>
-        <enum value="75"    name="VK_FORMAT_R16_SINT"/>
-        <enum value="76"    name="VK_FORMAT_R16_SFLOAT"/>
-        <enum value="77"    name="VK_FORMAT_R16G16_UNORM"/>
-        <enum value="78"    name="VK_FORMAT_R16G16_SNORM"/>
-        <enum value="79"    name="VK_FORMAT_R16G16_USCALED"/>
-        <enum value="80"    name="VK_FORMAT_R16G16_SSCALED"/>
-        <enum value="81"    name="VK_FORMAT_R16G16_UINT"/>
-        <enum value="82"    name="VK_FORMAT_R16G16_SINT"/>
-        <enum value="83"    name="VK_FORMAT_R16G16_SFLOAT"/>
-        <enum value="84"    name="VK_FORMAT_R16G16B16_UNORM"/>
-        <enum value="85"    name="VK_FORMAT_R16G16B16_SNORM"/>
-        <enum value="86"    name="VK_FORMAT_R16G16B16_USCALED"/>
-        <enum value="87"    name="VK_FORMAT_R16G16B16_SSCALED"/>
-        <enum value="88"    name="VK_FORMAT_R16G16B16_UINT"/>
-        <enum value="89"    name="VK_FORMAT_R16G16B16_SINT"/>
-        <enum value="90"    name="VK_FORMAT_R16G16B16_SFLOAT"/>
-        <enum value="91"    name="VK_FORMAT_R16G16B16A16_UNORM"/>
-        <enum value="92"    name="VK_FORMAT_R16G16B16A16_SNORM"/>
-        <enum value="93"    name="VK_FORMAT_R16G16B16A16_USCALED"/>
-        <enum value="94"    name="VK_FORMAT_R16G16B16A16_SSCALED"/>
-        <enum value="95"    name="VK_FORMAT_R16G16B16A16_UINT"/>
-        <enum value="96"    name="VK_FORMAT_R16G16B16A16_SINT"/>
-        <enum value="97"    name="VK_FORMAT_R16G16B16A16_SFLOAT"/>
-        <enum value="98"    name="VK_FORMAT_R32_UINT"/>
-        <enum value="99"    name="VK_FORMAT_R32_SINT"/>
-        <enum value="100"   name="VK_FORMAT_R32_SFLOAT"/>
-        <enum value="101"   name="VK_FORMAT_R32G32_UINT"/>
-        <enum value="102"   name="VK_FORMAT_R32G32_SINT"/>
-        <enum value="103"   name="VK_FORMAT_R32G32_SFLOAT"/>
-        <enum value="104"   name="VK_FORMAT_R32G32B32_UINT"/>
-        <enum value="105"   name="VK_FORMAT_R32G32B32_SINT"/>
-        <enum value="106"   name="VK_FORMAT_R32G32B32_SFLOAT"/>
-        <enum value="107"   name="VK_FORMAT_R32G32B32A32_UINT"/>
-        <enum value="108"   name="VK_FORMAT_R32G32B32A32_SINT"/>
-        <enum value="109"   name="VK_FORMAT_R32G32B32A32_SFLOAT"/>
-        <enum value="110"   name="VK_FORMAT_R64_UINT"/>
-        <enum value="111"   name="VK_FORMAT_R64_SINT"/>
-        <enum value="112"   name="VK_FORMAT_R64_SFLOAT"/>
-        <enum value="113"   name="VK_FORMAT_R64G64_UINT"/>
-        <enum value="114"   name="VK_FORMAT_R64G64_SINT"/>
-        <enum value="115"   name="VK_FORMAT_R64G64_SFLOAT"/>
-        <enum value="116"   name="VK_FORMAT_R64G64B64_UINT"/>
-        <enum value="117"   name="VK_FORMAT_R64G64B64_SINT"/>
-        <enum value="118"   name="VK_FORMAT_R64G64B64_SFLOAT"/>
-        <enum value="119"   name="VK_FORMAT_R64G64B64A64_UINT"/>
-        <enum value="120"   name="VK_FORMAT_R64G64B64A64_SINT"/>
-        <enum value="121"   name="VK_FORMAT_R64G64B64A64_SFLOAT"/>
-        <enum value="122"   name="VK_FORMAT_B10G11R11_UFLOAT_PACK32"/>
-        <enum value="123"   name="VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"/>
-        <enum value="124"   name="VK_FORMAT_D16_UNORM"/>
-        <enum value="125"   name="VK_FORMAT_X8_D24_UNORM_PACK32"/>
-        <enum value="126"   name="VK_FORMAT_D32_SFLOAT"/>
-        <enum value="127"   name="VK_FORMAT_S8_UINT"/>
-        <enum value="128"   name="VK_FORMAT_D16_UNORM_S8_UINT"/>
-        <enum value="129"   name="VK_FORMAT_D24_UNORM_S8_UINT"/>
-        <enum value="130"   name="VK_FORMAT_D32_SFLOAT_S8_UINT"/>
-        <enum value="131"   name="VK_FORMAT_BC1_RGB_UNORM_BLOCK"/>
-        <enum value="132"   name="VK_FORMAT_BC1_RGB_SRGB_BLOCK"/>
-        <enum value="133"   name="VK_FORMAT_BC1_RGBA_UNORM_BLOCK"/>
-        <enum value="134"   name="VK_FORMAT_BC1_RGBA_SRGB_BLOCK"/>
-        <enum value="135"   name="VK_FORMAT_BC2_UNORM_BLOCK"/>
-        <enum value="136"   name="VK_FORMAT_BC2_SRGB_BLOCK"/>
-        <enum value="137"   name="VK_FORMAT_BC3_UNORM_BLOCK"/>
-        <enum value="138"   name="VK_FORMAT_BC3_SRGB_BLOCK"/>
-        <enum value="139"   name="VK_FORMAT_BC4_UNORM_BLOCK"/>
-        <enum value="140"   name="VK_FORMAT_BC4_SNORM_BLOCK"/>
-        <enum value="141"   name="VK_FORMAT_BC5_UNORM_BLOCK"/>
-        <enum value="142"   name="VK_FORMAT_BC5_SNORM_BLOCK"/>
-        <enum value="143"   name="VK_FORMAT_BC6H_UFLOAT_BLOCK"/>
-        <enum value="144"   name="VK_FORMAT_BC6H_SFLOAT_BLOCK"/>
-        <enum value="145"   name="VK_FORMAT_BC7_UNORM_BLOCK"/>
-        <enum value="146"   name="VK_FORMAT_BC7_SRGB_BLOCK"/>
-        <enum value="147"   name="VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"/>
-        <enum value="148"   name="VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"/>
-        <enum value="149"   name="VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"/>
-        <enum value="150"   name="VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"/>
-        <enum value="151"   name="VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"/>
-        <enum value="152"   name="VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"/>
-        <enum value="153"   name="VK_FORMAT_EAC_R11_UNORM_BLOCK"/>
-        <enum value="154"   name="VK_FORMAT_EAC_R11_SNORM_BLOCK"/>
-        <enum value="155"   name="VK_FORMAT_EAC_R11G11_UNORM_BLOCK"/>
-        <enum value="156"   name="VK_FORMAT_EAC_R11G11_SNORM_BLOCK"/>
-        <enum value="157"   name="VK_FORMAT_ASTC_4x4_UNORM_BLOCK"/>
-        <enum value="158"   name="VK_FORMAT_ASTC_4x4_SRGB_BLOCK"/>
-        <enum value="159"   name="VK_FORMAT_ASTC_5x4_UNORM_BLOCK"/>
-        <enum value="160"   name="VK_FORMAT_ASTC_5x4_SRGB_BLOCK"/>
-        <enum value="161"   name="VK_FORMAT_ASTC_5x5_UNORM_BLOCK"/>
-        <enum value="162"   name="VK_FORMAT_ASTC_5x5_SRGB_BLOCK"/>
-        <enum value="163"   name="VK_FORMAT_ASTC_6x5_UNORM_BLOCK"/>
-        <enum value="164"   name="VK_FORMAT_ASTC_6x5_SRGB_BLOCK"/>
-        <enum value="165"   name="VK_FORMAT_ASTC_6x6_UNORM_BLOCK"/>
-        <enum value="166"   name="VK_FORMAT_ASTC_6x6_SRGB_BLOCK"/>
-        <enum value="167"   name="VK_FORMAT_ASTC_8x5_UNORM_BLOCK"/>
-        <enum value="168"   name="VK_FORMAT_ASTC_8x5_SRGB_BLOCK"/>
-        <enum value="169"   name="VK_FORMAT_ASTC_8x6_UNORM_BLOCK"/>
-        <enum value="170"   name="VK_FORMAT_ASTC_8x6_SRGB_BLOCK"/>
-        <enum value="171"   name="VK_FORMAT_ASTC_8x8_UNORM_BLOCK"/>
-        <enum value="172"   name="VK_FORMAT_ASTC_8x8_SRGB_BLOCK"/>
-        <enum value="173"   name="VK_FORMAT_ASTC_10x5_UNORM_BLOCK"/>
-        <enum value="174"   name="VK_FORMAT_ASTC_10x5_SRGB_BLOCK"/>
-        <enum value="175"   name="VK_FORMAT_ASTC_10x6_UNORM_BLOCK"/>
-        <enum value="176"   name="VK_FORMAT_ASTC_10x6_SRGB_BLOCK"/>
-        <enum value="177"   name="VK_FORMAT_ASTC_10x8_UNORM_BLOCK"/>
-        <enum value="178"   name="VK_FORMAT_ASTC_10x8_SRGB_BLOCK"/>
-        <enum value="179"   name="VK_FORMAT_ASTC_10x10_UNORM_BLOCK"/>
-        <enum value="180"   name="VK_FORMAT_ASTC_10x10_SRGB_BLOCK"/>
-        <enum value="181"   name="VK_FORMAT_ASTC_12x10_UNORM_BLOCK"/>
-        <enum value="182"   name="VK_FORMAT_ASTC_12x10_SRGB_BLOCK"/>
-        <enum value="183"   name="VK_FORMAT_ASTC_12x12_UNORM_BLOCK"/>
-        <enum value="184"   name="VK_FORMAT_ASTC_12x12_SRGB_BLOCK"/>
-    </enums>
-    <enums name="VkStructureType" type="enum" comment="Structure type enumerant">
-        <enum value="0"     name="VK_STRUCTURE_TYPE_APPLICATION_INFO"/>
-        <enum value="1"     name="VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"/>
-        <enum value="2"     name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"/>
-        <enum value="3"     name="VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"/>
-        <enum value="4"     name="VK_STRUCTURE_TYPE_SUBMIT_INFO"/>
-        <enum value="5"     name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"/>
-        <enum value="6"     name="VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"/>
-        <enum value="7"     name="VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"/>
-        <enum value="8"     name="VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"/>
-        <enum value="9"     name="VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"/>
-        <enum value="10"    name="VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"/>
-        <enum value="11"    name="VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"/>
-        <enum value="12"    name="VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"/>
-        <enum value="13"    name="VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"/>
-        <enum value="14"    name="VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"/>
-        <enum value="15"    name="VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"/>
-        <enum value="16"    name="VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"/>
-        <enum value="17"    name="VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"/>
-        <enum value="18"    name="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"/>
-        <enum value="19"    name="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"/>
-        <enum value="20"    name="VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"/>
-        <enum value="21"    name="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"/>
-        <enum value="22"    name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"/>
-        <enum value="23"    name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"/>
-        <enum value="24"    name="VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"/>
-        <enum value="25"    name="VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"/>
-        <enum value="26"    name="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"/>
-        <enum value="27"    name="VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"/>
-        <enum value="28"    name="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"/>
-        <enum value="29"    name="VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"/>
-        <enum value="30"    name="VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"/>
-        <enum value="31"    name="VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"/>
-        <enum value="32"    name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"/>
-        <enum value="33"    name="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"/>
-        <enum value="34"    name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"/>
-        <enum value="35"    name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"/>
-        <enum value="36"    name="VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"/>
-        <enum value="37"    name="VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"/>
-        <enum value="38"    name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"/>
-        <enum value="39"    name="VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"/>
-        <enum value="40"    name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"/>
-        <enum value="41"    name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"/>
-        <enum value="42"    name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"/>
-        <enum value="43"    name="VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"/>
-        <enum value="44"    name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"/>
-        <enum value="45"    name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"/>
-        <enum value="46"    name="VK_STRUCTURE_TYPE_MEMORY_BARRIER"/>
-        <enum value="47"    name="VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO" comment="Reserved for internal use by the loader, layers, and ICDs"/>
-        <enum value="48"    name="VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO" comment="Reserved for internal use by the loader, layers, and ICDs"/>
-    </enums>
-    <enums name="VkSubpassContents" type="enum">
-        <enum value="0"     name="VK_SUBPASS_CONTENTS_INLINE"/>
-        <enum value="1"     name="VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"/>
-    </enums>
-    <enums name="VkResult" type="enum" comment="API result codes">
-            <comment>Return codes (positive values)</comment>
-        <enum value="0"     name="VK_SUCCESS" comment="Command completed successfully"/>
-        <enum value="1"     name="VK_NOT_READY" comment="A fence or query has not yet completed"/>
-        <enum value="2"     name="VK_TIMEOUT" comment="A wait operation has not completed in the specified time"/>
-        <enum value="3"     name="VK_EVENT_SET" comment="An event is signaled"/>
-        <enum value="4"     name="VK_EVENT_RESET" comment="An event is unsignaled"/>
-        <enum value="5"     name="VK_INCOMPLETE" comment="A return array was too small for the result"/>
-            <comment>Error codes (negative values)</comment>
-        <enum value="-1"    name="VK_ERROR_OUT_OF_HOST_MEMORY" comment="A host memory allocation has failed"/>
-        <enum value="-2"    name="VK_ERROR_OUT_OF_DEVICE_MEMORY" comment="A device memory allocation has failed"/>
-        <enum value="-3"    name="VK_ERROR_INITIALIZATION_FAILED" comment="Initialization of an object has failed"/>
-        <enum value="-4"    name="VK_ERROR_DEVICE_LOST" comment="The logical device has been lost. See &lt;&lt;devsandqueues-lost-device&gt;&gt;"/>
-        <enum value="-5"    name="VK_ERROR_MEMORY_MAP_FAILED" comment="Mapping of a memory object has failed"/>
-        <enum value="-6"    name="VK_ERROR_LAYER_NOT_PRESENT" comment="Layer specified does not exist"/>
-        <enum value="-7"    name="VK_ERROR_EXTENSION_NOT_PRESENT" comment="Extension specified does not exist"/>
-        <enum value="-8"    name="VK_ERROR_FEATURE_NOT_PRESENT" comment="Requested feature is not available on this device"/>
-        <enum value="-9"    name="VK_ERROR_INCOMPATIBLE_DRIVER" comment="Unable to find a Vulkan driver"/>
-        <enum value="-10"   name="VK_ERROR_TOO_MANY_OBJECTS" comment="Too many objects of the type have already been created"/>
-        <enum value="-11"   name="VK_ERROR_FORMAT_NOT_SUPPORTED" comment="Requested format is not supported on this device"/>
-        <enum value="-12"   name="VK_ERROR_FRAGMENTED_POOL" comment="A requested pool allocation has failed due to fragmentation of the pool's memory"/>
-        <enum value="-13"   name="VK_ERROR_UNKNOWN" comment="An unknown error has occurred, due to an implementation or application bug"/>
-            <unused start="-14" comment="This is the next unused available error code (negative value)"/>
-    </enums>
-    <enums name="VkDynamicState" type="enum">
-        <enum value="0"     name="VK_DYNAMIC_STATE_VIEWPORT"/>
-        <enum value="1"     name="VK_DYNAMIC_STATE_SCISSOR"/>
-        <enum value="2"     name="VK_DYNAMIC_STATE_LINE_WIDTH"/>
-        <enum value="3"     name="VK_DYNAMIC_STATE_DEPTH_BIAS"/>
-        <enum value="4"     name="VK_DYNAMIC_STATE_BLEND_CONSTANTS"/>
-        <enum value="5"     name="VK_DYNAMIC_STATE_DEPTH_BOUNDS"/>
-        <enum value="6"     name="VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"/>
-        <enum value="7"     name="VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"/>
-        <enum value="8"     name="VK_DYNAMIC_STATE_STENCIL_REFERENCE"/>
-    </enums>
-    <enums name="VkDescriptorUpdateTemplateType" type="enum">
-        <enum value="0"     name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"   comment="Create descriptor update template for descriptor set updates"/>
-    </enums>
-    <enums name="VkObjectType" type="enum" comment="Enums to track objects of various types - also see objtypeenum attributes on type tags">
-        <enum value="0"     name="VK_OBJECT_TYPE_UNKNOWN"/>
-        <enum value="1"     name="VK_OBJECT_TYPE_INSTANCE"/>
-        <enum value="2"     name="VK_OBJECT_TYPE_PHYSICAL_DEVICE"/>
-        <enum value="3"     name="VK_OBJECT_TYPE_DEVICE"/>
-        <enum value="4"     name="VK_OBJECT_TYPE_QUEUE"/>
-        <enum value="5"     name="VK_OBJECT_TYPE_SEMAPHORE"/>
-        <enum value="6"     name="VK_OBJECT_TYPE_COMMAND_BUFFER"/>
-        <enum value="7"     name="VK_OBJECT_TYPE_FENCE"/>
-        <enum value="8"     name="VK_OBJECT_TYPE_DEVICE_MEMORY"/>
-        <enum value="9"     name="VK_OBJECT_TYPE_BUFFER"/>
-        <enum value="10"    name="VK_OBJECT_TYPE_IMAGE"/>
-        <enum value="11"    name="VK_OBJECT_TYPE_EVENT"/>
-        <enum value="12"    name="VK_OBJECT_TYPE_QUERY_POOL"/>
-        <enum value="13"    name="VK_OBJECT_TYPE_BUFFER_VIEW"/>
-        <enum value="14"    name="VK_OBJECT_TYPE_IMAGE_VIEW"/>
-        <enum value="15"    name="VK_OBJECT_TYPE_SHADER_MODULE"/>
-        <enum value="16"    name="VK_OBJECT_TYPE_PIPELINE_CACHE"/>
-        <enum value="17"    name="VK_OBJECT_TYPE_PIPELINE_LAYOUT"/>
-        <enum value="18"    name="VK_OBJECT_TYPE_RENDER_PASS"/>
-        <enum value="19"    name="VK_OBJECT_TYPE_PIPELINE"/>
-        <enum value="20"    name="VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"/>
-        <enum value="21"    name="VK_OBJECT_TYPE_SAMPLER"/>
-        <enum value="22"    name="VK_OBJECT_TYPE_DESCRIPTOR_POOL"/>
-        <enum value="23"    name="VK_OBJECT_TYPE_DESCRIPTOR_SET"/>
-        <enum value="24"    name="VK_OBJECT_TYPE_FRAMEBUFFER"/>
-        <enum value="25"    name="VK_OBJECT_TYPE_COMMAND_POOL"/>
-    </enums>
-    <enums name="VkRayTracingInvocationReorderModeNV" type="enum">
-        <enum value="0"     name="VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV"/>
-        <enum value="1"     name="VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV"/>
-    </enums>
-    <enums name="VkDirectDriverLoadingModeLUNARG" type="enum">
-        <enum value="0"     name="VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG"/>
-        <enum value="1"     name="VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG"/>
-    </enums>
-
-        <comment>Flags</comment>
-    <enums name="VkQueueFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_QUEUE_GRAPHICS_BIT"                             comment="Queue supports graphics operations"/>
-        <enum bitpos="1"    name="VK_QUEUE_COMPUTE_BIT"                              comment="Queue supports compute operations"/>
-        <enum bitpos="2"    name="VK_QUEUE_TRANSFER_BIT"                             comment="Queue supports transfer operations"/>
-        <enum bitpos="3"    name="VK_QUEUE_SPARSE_BINDING_BIT"                       comment="Queue supports sparse resource memory management operations"/>
-    </enums>
-    <enums name="VkCullModeFlagBits" type="bitmask">
-        <enum value="0"     name="VK_CULL_MODE_NONE"/>
-        <enum bitpos="0"    name="VK_CULL_MODE_FRONT_BIT"/>
-        <enum bitpos="1"    name="VK_CULL_MODE_BACK_BIT"/>
-        <enum value="0x00000003" name="VK_CULL_MODE_FRONT_AND_BACK"/>
-    </enums>
-    <enums name="VkRenderPassCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkDeviceQueueCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkMemoryPropertyFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"               comment="If otherwise stated, then allocate memory on device"/>
-        <enum bitpos="1"    name="VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"               comment="Memory is mappable by host"/>
-        <enum bitpos="2"    name="VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"              comment="Memory will have i/o coherency. If not set, application may need to use vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges to flush/invalidate host cache"/>
-        <enum bitpos="3"    name="VK_MEMORY_PROPERTY_HOST_CACHED_BIT"                comment="Memory will be cached by the host"/>
-        <enum bitpos="4"    name="VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"           comment="Memory may be allocated by the driver when it is required"/>
-    </enums>
-    <enums name="VkMemoryHeapFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"                   comment="If set, heap represents device memory"/>
-    </enums>
-    <enums name="VkAccessFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_ACCESS_INDIRECT_COMMAND_READ_BIT"               comment="Controls coherency of indirect command reads"/>
-        <enum bitpos="1"    name="VK_ACCESS_INDEX_READ_BIT"                          comment="Controls coherency of index reads"/>
-        <enum bitpos="2"    name="VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"               comment="Controls coherency of vertex attribute reads"/>
-        <enum bitpos="3"    name="VK_ACCESS_UNIFORM_READ_BIT"                        comment="Controls coherency of uniform buffer reads"/>
-        <enum bitpos="4"    name="VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"               comment="Controls coherency of input attachment reads"/>
-        <enum bitpos="5"    name="VK_ACCESS_SHADER_READ_BIT"                         comment="Controls coherency of shader reads"/>
-        <enum bitpos="6"    name="VK_ACCESS_SHADER_WRITE_BIT"                        comment="Controls coherency of shader writes"/>
-        <enum bitpos="7"    name="VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"               comment="Controls coherency of color attachment reads"/>
-        <enum bitpos="8"    name="VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"              comment="Controls coherency of color attachment writes"/>
-        <enum bitpos="9"    name="VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"       comment="Controls coherency of depth/stencil attachment reads"/>
-        <enum bitpos="10"   name="VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"      comment="Controls coherency of depth/stencil attachment writes"/>
-        <enum bitpos="11"   name="VK_ACCESS_TRANSFER_READ_BIT"                       comment="Controls coherency of transfer reads"/>
-        <enum bitpos="12"   name="VK_ACCESS_TRANSFER_WRITE_BIT"                      comment="Controls coherency of transfer writes"/>
-        <enum bitpos="13"   name="VK_ACCESS_HOST_READ_BIT"                           comment="Controls coherency of host reads"/>
-        <enum bitpos="14"   name="VK_ACCESS_HOST_WRITE_BIT"                          comment="Controls coherency of host writes"/>
-        <enum bitpos="15"   name="VK_ACCESS_MEMORY_READ_BIT"                         comment="Controls coherency of memory reads"/>
-        <enum bitpos="16"   name="VK_ACCESS_MEMORY_WRITE_BIT"                        comment="Controls coherency of memory writes"/>
-    </enums>
-    <enums name="VkBufferUsageFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_BUFFER_USAGE_TRANSFER_SRC_BIT"                  comment="Can be used as a source of transfer operations"/>
-        <enum bitpos="1"    name="VK_BUFFER_USAGE_TRANSFER_DST_BIT"                  comment="Can be used as a destination of transfer operations"/>
-        <enum bitpos="2"    name="VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"          comment="Can be used as TBO"/>
-        <enum bitpos="3"    name="VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"          comment="Can be used as IBO"/>
-        <enum bitpos="4"    name="VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"                comment="Can be used as UBO"/>
-        <enum bitpos="5"    name="VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"                comment="Can be used as SSBO"/>
-        <enum bitpos="6"    name="VK_BUFFER_USAGE_INDEX_BUFFER_BIT"                  comment="Can be used as source of fixed-function index fetch (index buffer)"/>
-        <enum bitpos="7"    name="VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"                 comment="Can be used as source of fixed-function vertex fetch (VBO)"/>
-        <enum bitpos="8"    name="VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"               comment="Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)"/>
-    </enums>
-    <enums name="VkBufferUsageFlagBits2KHR" type="bitmask" bitwidth="64">
-        <enum bitpos="0"    name="VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR"/>
-        <enum bitpos="3"    name="VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR"/>
-        <enum bitpos="4"    name="VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR"/>
-        <enum bitpos="5"    name="VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR"/>
-        <enum bitpos="6"    name="VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR"/>
-        <enum bitpos="7"    name="VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR"/>
-        <enum bitpos="8"    name="VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR"/>
-    </enums>
-    <enums name="VkBufferCreateFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_BUFFER_CREATE_SPARSE_BINDING_BIT"               comment="Buffer should support sparse backing"/>
-        <enum bitpos="1"    name="VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"             comment="Buffer should support sparse backing with partial residency"/>
-        <enum bitpos="2"    name="VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"               comment="Buffer should support constant data access to physical memory ranges mapped into multiple locations of sparse buffers"/>
-    </enums>
-    <enums name="VkShaderStageFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_SHADER_STAGE_VERTEX_BIT"/>
-        <enum bitpos="1"    name="VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"/>
-        <enum bitpos="2"    name="VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"/>
-        <enum bitpos="3"    name="VK_SHADER_STAGE_GEOMETRY_BIT"/>
-        <enum bitpos="4"    name="VK_SHADER_STAGE_FRAGMENT_BIT"/>
-        <enum bitpos="5"    name="VK_SHADER_STAGE_COMPUTE_BIT"/>
-        <enum value="0x0000001F" name="VK_SHADER_STAGE_ALL_GRAPHICS"/>
-        <enum value="0x7FFFFFFF" name="VK_SHADER_STAGE_ALL"/>
-    </enums>
-    <enums name="VkImageUsageFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_IMAGE_USAGE_TRANSFER_SRC_BIT"                   comment="Can be used as a source of transfer operations"/>
-        <enum bitpos="1"    name="VK_IMAGE_USAGE_TRANSFER_DST_BIT"                   comment="Can be used as a destination of transfer operations"/>
-        <enum bitpos="2"    name="VK_IMAGE_USAGE_SAMPLED_BIT"                        comment="Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"/>
-        <enum bitpos="3"    name="VK_IMAGE_USAGE_STORAGE_BIT"                        comment="Can be used as storage image (STORAGE_IMAGE descriptor type)"/>
-        <enum bitpos="4"    name="VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"               comment="Can be used as framebuffer color attachment"/>
-        <enum bitpos="5"    name="VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"       comment="Can be used as framebuffer depth/stencil attachment"/>
-        <enum bitpos="6"    name="VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"           comment="Image data not needed outside of rendering"/>
-        <enum bitpos="7"    name="VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"               comment="Can be used as framebuffer input attachment"/>
-    </enums>
-    <enums name="VkImageCreateFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_IMAGE_CREATE_SPARSE_BINDING_BIT"                comment="Image should support sparse backing"/>
-        <enum bitpos="1"    name="VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"              comment="Image should support sparse backing with partial residency"/>
-        <enum bitpos="2"    name="VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"                comment="Image should support constant data access to physical memory ranges mapped into multiple locations of sparse images"/>
-        <enum bitpos="3"    name="VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"                comment="Allows image views to have different format than the base image"/>
-        <enum bitpos="4"    name="VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"               comment="Allows creating image views with cube type from the created image"/>
-    </enums>
-    <enums name="VkImageViewCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkSamplerCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkPipelineCreateFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"/>
-        <enum bitpos="1"    name="VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"/>
-        <enum bitpos="2"    name="VK_PIPELINE_CREATE_DERIVATIVE_BIT"/>
-    </enums>
-    <enums name="VkPipelineCreateFlagBits2KHR" type="bitmask" bitwidth="64">
-        <enum bitpos="0"    name="VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR"/>
-    </enums>
-    <enums name="VkPipelineShaderStageCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkColorComponentFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_COLOR_COMPONENT_R_BIT"/>
-        <enum bitpos="1"    name="VK_COLOR_COMPONENT_G_BIT"/>
-        <enum bitpos="2"    name="VK_COLOR_COMPONENT_B_BIT"/>
-        <enum bitpos="3"    name="VK_COLOR_COMPONENT_A_BIT"/>
-    </enums>
-    <enums name="VkFenceCreateFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_FENCE_CREATE_SIGNALED_BIT"/>
-    </enums>
-    <enums name="VkSemaphoreCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkFormatFeatureFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"               comment="Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"/>
-        <enum bitpos="1"    name="VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"               comment="Format can be used for storage images (STORAGE_IMAGE descriptor type)"/>
-        <enum bitpos="2"    name="VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"        comment="Format supports atomic operations in case it is used for storage images"/>
-        <enum bitpos="3"    name="VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"        comment="Format can be used for uniform texel buffers (TBOs)"/>
-        <enum bitpos="4"    name="VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"        comment="Format can be used for storage texel buffers (IBOs)"/>
-        <enum bitpos="5"    name="VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT" comment="Format supports atomic operations in case it is used for storage texel buffers"/>
-        <enum bitpos="6"    name="VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"               comment="Format can be used for vertex buffers (VBOs)"/>
-        <enum bitpos="7"    name="VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"            comment="Format can be used for color attachment images"/>
-        <enum bitpos="8"    name="VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"      comment="Format supports blending in case it is used for color attachment images"/>
-        <enum bitpos="9"    name="VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"    comment="Format can be used for depth/stencil attachment images"/>
-        <enum bitpos="10"   name="VK_FORMAT_FEATURE_BLIT_SRC_BIT"                    comment="Format can be used as the source image of blits with vkCmdBlitImage"/>
-        <enum bitpos="11"   name="VK_FORMAT_FEATURE_BLIT_DST_BIT"                    comment="Format can be used as the destination image of blits with vkCmdBlitImage"/>
-        <enum bitpos="12"   name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" comment="Format can be filtered with VK_FILTER_LINEAR when being sampled"/>
-    </enums>
-    <enums name="VkQueryControlFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_QUERY_CONTROL_PRECISE_BIT"                      comment="Require precise results to be collected by the query"/>
-    </enums>
-    <enums name="VkQueryResultFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_QUERY_RESULT_64_BIT"                            comment="Results of the queries are written to the destination buffer as 64-bit values"/>
-        <enum bitpos="1"    name="VK_QUERY_RESULT_WAIT_BIT"                          comment="Results of the queries are waited on before proceeding with the result copy"/>
-        <enum bitpos="2"    name="VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"             comment="Besides the results of the query, the availability of the results is also written"/>
-        <enum bitpos="3"    name="VK_QUERY_RESULT_PARTIAL_BIT"                       comment="Copy the partial results of the query even if the final results are not available"/>
-    </enums>
-    <enums name="VkCommandBufferUsageFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"/>
-        <enum bitpos="1"    name="VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"/>
-        <enum bitpos="2"    name="VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"      comment="Command buffer may be submitted/executed more than once simultaneously"/>
-    </enums>
-    <enums name="VkQueryPipelineStatisticFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"                    comment="Optional"/>
-        <enum bitpos="1"    name="VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"                  comment="Optional"/>
-        <enum bitpos="2"    name="VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"                  comment="Optional"/>
-        <enum bitpos="3"    name="VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"                comment="Optional"/>
-        <enum bitpos="4"    name="VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"                 comment="Optional"/>
-        <enum bitpos="5"    name="VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"                       comment="Optional"/>
-        <enum bitpos="6"    name="VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"                        comment="Optional"/>
-        <enum bitpos="7"    name="VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"                comment="Optional"/>
-        <enum bitpos="8"    name="VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"        comment="Optional"/>
-        <enum bitpos="9"    name="VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT" comment="Optional"/>
-        <enum bitpos="10"   name="VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"                 comment="Optional"/>
-    </enums>
-    <enums name="VkImageAspectFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_IMAGE_ASPECT_COLOR_BIT"/>
-        <enum bitpos="1"    name="VK_IMAGE_ASPECT_DEPTH_BIT"/>
-        <enum bitpos="2"    name="VK_IMAGE_ASPECT_STENCIL_BIT"/>
-        <enum bitpos="3"    name="VK_IMAGE_ASPECT_METADATA_BIT"/>
-    </enums>
-    <enums name="VkSparseImageFormatFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"         comment="Image uses a single mip tail region for all array layers"/>
-        <enum bitpos="1"    name="VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"       comment="Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-tail mip levels."/>
-        <enum bitpos="2"    name="VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" comment="Image uses a non-standard sparse image block dimensions"/>
-    </enums>
-    <enums name="VkSparseMemoryBindFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_SPARSE_MEMORY_BIND_METADATA_BIT"                comment="Operation binds resource metadata to memory"/>
-    </enums>
-    <enums name="VkPipelineStageFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"                 comment="Before subsequent commands are processed"/>
-        <enum bitpos="1"    name="VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"               comment="Draw/DispatchIndirect command fetch"/>
-        <enum bitpos="2"    name="VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"                comment="Vertex/index fetch"/>
-        <enum bitpos="3"    name="VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"               comment="Vertex shading"/>
-        <enum bitpos="4"    name="VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT" comment="Tessellation control shading"/>
-        <enum bitpos="5"    name="VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT" comment="Tessellation evaluation shading"/>
-        <enum bitpos="6"    name="VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"             comment="Geometry shading"/>
-        <enum bitpos="7"    name="VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"             comment="Fragment shading"/>
-        <enum bitpos="8"    name="VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"        comment="Early fragment (depth and stencil) tests"/>
-        <enum bitpos="9"    name="VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"         comment="Late fragment (depth and stencil) tests"/>
-        <enum bitpos="10"   name="VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"     comment="Color attachment writes"/>
-        <enum bitpos="11"   name="VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"              comment="Compute shading"/>
-        <enum bitpos="12"   name="VK_PIPELINE_STAGE_TRANSFER_BIT"                    comment="Transfer/copy operations"/>
-        <enum bitpos="13"   name="VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"              comment="After previous commands have completed"/>
-        <enum bitpos="14"   name="VK_PIPELINE_STAGE_HOST_BIT"                        comment="Indicates host (CPU) is a source/sink of the dependency"/>
-        <enum bitpos="15"   name="VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"                comment="All stages of the graphics pipeline"/>
-        <enum bitpos="16"   name="VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"                comment="All stages supported on the queue"/>
-    </enums>
-    <enums name="VkCommandPoolCreateFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"              comment="Command buffers have a short lifetime"/>
-        <enum bitpos="1"    name="VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"   comment="Command buffers may release their memory individually"/>
-    </enums>
-    <enums name="VkCommandPoolResetFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"       comment="Release resources owned by the pool"/>
-    </enums>
-    <enums name="VkCommandBufferResetFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"     comment="Release resources owned by the buffer"/>
-    </enums>
-    <enums name="VkSampleCountFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_SAMPLE_COUNT_1_BIT"                             comment="Sample count 1 supported"/>
-        <enum bitpos="1"    name="VK_SAMPLE_COUNT_2_BIT"                             comment="Sample count 2 supported"/>
-        <enum bitpos="2"    name="VK_SAMPLE_COUNT_4_BIT"                             comment="Sample count 4 supported"/>
-        <enum bitpos="3"    name="VK_SAMPLE_COUNT_8_BIT"                             comment="Sample count 8 supported"/>
-        <enum bitpos="4"    name="VK_SAMPLE_COUNT_16_BIT"                            comment="Sample count 16 supported"/>
-        <enum bitpos="5"    name="VK_SAMPLE_COUNT_32_BIT"                            comment="Sample count 32 supported"/>
-        <enum bitpos="6"    name="VK_SAMPLE_COUNT_64_BIT"                            comment="Sample count 64 supported"/>
-    </enums>
-    <enums name="VkAttachmentDescriptionFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"           comment="The attachment may alias physical memory of another attachment in the same render pass"/>
-    </enums>
-    <enums name="VkStencilFaceFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_STENCIL_FACE_FRONT_BIT"                         comment="Front face"/>
-        <enum bitpos="1"    name="VK_STENCIL_FACE_BACK_BIT"                          comment="Back face"/>
-        <enum value="0x00000003" name="VK_STENCIL_FACE_FRONT_AND_BACK"               comment="Front and back faces"/>
-        <enum api="vulkan"  name="VK_STENCIL_FRONT_AND_BACK" alias="VK_STENCIL_FACE_FRONT_AND_BACK" deprecated="aliased"/>
-    </enums>
-    <enums name="VkDescriptorPoolCreateFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT" comment="Descriptor sets may be freed individually"/>
-    </enums>
-    <enums name="VkDependencyFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_DEPENDENCY_BY_REGION_BIT"                       comment="Dependency is per pixel region "/>
-    </enums>
-    <enums name="VkSemaphoreType" type="enum">
-        <enum value="0"     name="VK_SEMAPHORE_TYPE_BINARY"/>
-        <enum value="1"     name="VK_SEMAPHORE_TYPE_TIMELINE"/>
-    </enums>
-    <enums name="VkSemaphoreWaitFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_SEMAPHORE_WAIT_ANY_BIT"/>
-    </enums>
-
-        <comment>WSI Extensions</comment>
-    <enums name="VkPresentModeKHR" type="enum">
-        <enum value="0"     name="VK_PRESENT_MODE_IMMEDIATE_KHR"/>
-        <enum value="1"     name="VK_PRESENT_MODE_MAILBOX_KHR"/>
-        <enum value="2"     name="VK_PRESENT_MODE_FIFO_KHR"/>
-        <enum value="3"     name="VK_PRESENT_MODE_FIFO_RELAXED_KHR"/>
-    </enums>
-    <enums name="VkColorSpaceKHR" type="enum">
-        <enum value="0"     name="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"/>
-        <enum api="vulkan"  name="VK_COLORSPACE_SRGB_NONLINEAR_KHR" alias="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR" deprecated="aliased"/>
-    </enums>
-    <enums name="VkDisplayPlaneAlphaFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"/>
-        <enum bitpos="3"    name="VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"/>
-    </enums>
-    <enums name="VkCompositeAlphaFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"/>
-        <enum bitpos="3"    name="VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"/>
-    </enums>
-    <enums name="VkSurfaceTransformFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"/>
-        <enum bitpos="3"    name="VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"/>
-        <enum bitpos="4"    name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"/>
-        <enum bitpos="5"    name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"/>
-        <enum bitpos="6"    name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"/>
-        <enum bitpos="7"    name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"/>
-        <enum bitpos="8"    name="VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"/>
-    </enums>
-    <enums name="VkSwapchainImageUsageFlagBitsANDROID" type="bitmask">
-      <enum bitpos="0"      name="VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID"/>
-    </enums>
-    <enums name="VkTimeDomainEXT" type="enum">
-        <enum value="0"     name="VK_TIME_DOMAIN_DEVICE_EXT"/>
-        <enum value="1"     name="VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT"/>
-        <enum value="2"     name="VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT"/>
-        <enum value="3"     name="VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT"/>
-    </enums>
-    <enums name="VkDebugReportFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_DEBUG_REPORT_INFORMATION_BIT_EXT"/>
-        <enum bitpos="1"    name="VK_DEBUG_REPORT_WARNING_BIT_EXT"/>
-        <enum bitpos="2"    name="VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"/>
-        <enum bitpos="3"    name="VK_DEBUG_REPORT_ERROR_BIT_EXT"/>
-        <enum bitpos="4"    name="VK_DEBUG_REPORT_DEBUG_BIT_EXT"/>
-    </enums>
-    <enums name="VkDebugReportObjectTypeEXT" type="enum">
-        <enum value="0"     name="VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"/>
-        <enum value="1"     name="VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"/>
-        <enum value="2"     name="VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"/>
-        <enum value="3"     name="VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"/>
-        <enum value="4"     name="VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"/>
-        <enum value="5"     name="VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"/>
-        <enum value="6"     name="VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"/>
-        <enum value="7"     name="VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"/>
-        <enum value="8"     name="VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"/>
-        <enum value="9"     name="VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"/>
-        <enum value="10"    name="VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"/>
-        <enum value="11"    name="VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"/>
-        <enum value="12"    name="VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"/>
-        <enum value="13"    name="VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"/>
-        <enum value="14"    name="VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"/>
-        <enum value="15"    name="VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"/>
-        <enum value="16"    name="VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"/>
-        <enum value="17"    name="VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"/>
-        <enum value="18"    name="VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"/>
-        <enum value="19"    name="VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"/>
-        <enum value="20"    name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"/>
-        <enum value="21"    name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"/>
-        <enum value="22"    name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"/>
-        <enum value="23"    name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"/>
-        <enum value="24"    name="VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"/>
-        <enum value="25"    name="VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"/>
-        <enum value="26"    name="VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"/>
-        <enum value="27"    name="VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"/>
-        <enum value="28"    name="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"/>
-        <enum               name="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT" deprecated="aliased"/>
-        <enum value="29"    name="VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"/>
-        <enum value="30"    name="VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"/>
-            <comment>NVX_device_generated_commands formerly used these enum values, but that extension has been removed
-                value 31 / name VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT
-                value 32 / name VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT
-            </comment>
-        <enum value="33"    name="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"/>
-        <enum               name="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT" deprecated="aliased"/>
-    </enums>
-    <enums name="VkDeviceMemoryReportEventTypeEXT" type="enum">
-        <enum value="0"     name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT"/>
-        <enum value="1"     name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT"/>
-        <enum value="2"     name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT"/>
-        <enum value="3"     name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT"/>
-        <enum value="4"     name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT"/>
-    </enums>
-    <enums name="VkRasterizationOrderAMD" type="enum">
-        <enum value="0"     name="VK_RASTERIZATION_ORDER_STRICT_AMD"/>
-        <enum value="1"     name="VK_RASTERIZATION_ORDER_RELAXED_AMD"/>
-    </enums>
-    <enums name="VkExternalMemoryHandleTypeFlagBitsNV" type="bitmask">
-        <enum bitpos="0"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"/>
-        <enum bitpos="1"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"/>
-        <enum bitpos="2"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"/>
-        <enum bitpos="3"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"/>
-    </enums>
-    <enums name="VkExternalMemoryFeatureFlagBitsNV" type="bitmask">
-        <enum bitpos="0"    name="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"/>
-        <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"/>
-        <enum value="1"     name="VK_VALIDATION_CHECK_SHADERS_EXT"/>
-    </enums>
-    <enums name="VkValidationFeatureEnableEXT" type="enum">
-        <enum value="0"     name="VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"/>
-        <enum value="1"     name="VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT"/>
-        <enum value="2"     name="VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"/>
-        <enum value="3"     name="VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"/>
-        <enum value="4"     name="VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT"/>
-    </enums>
-    <enums name="VkValidationFeatureDisableEXT" type="enum">
-        <enum value="0"     name="VK_VALIDATION_FEATURE_DISABLE_ALL_EXT"/>
-        <enum value="1"     name="VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT"/>
-        <enum value="2"     name="VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT"/>
-        <enum value="3"     name="VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT"/>
-        <enum value="4"     name="VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT"/>
-        <enum value="5"     name="VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"/>
-        <enum value="6"     name="VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT"/>
-        <enum value="7"     name="VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT"/>
-    </enums>
-    <enums name="VkSubgroupFeatureFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_SUBGROUP_FEATURE_BASIC_BIT"              comment="Basic subgroup operations"/>
-        <enum bitpos="1"    name="VK_SUBGROUP_FEATURE_VOTE_BIT"               comment="Vote subgroup operations"/>
-        <enum bitpos="2"    name="VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"         comment="Arithmetic subgroup operations"/>
-        <enum bitpos="3"    name="VK_SUBGROUP_FEATURE_BALLOT_BIT"             comment="Ballot subgroup operations"/>
-        <enum bitpos="4"    name="VK_SUBGROUP_FEATURE_SHUFFLE_BIT"            comment="Shuffle subgroup operations"/>
-        <enum bitpos="5"    name="VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"   comment="Shuffle relative subgroup operations"/>
-        <enum bitpos="6"    name="VK_SUBGROUP_FEATURE_CLUSTERED_BIT"          comment="Clustered subgroup operations"/>
-        <enum bitpos="7"    name="VK_SUBGROUP_FEATURE_QUAD_BIT"               comment="Quad subgroup operations"/>
-    </enums>
-    <enums name="VkIndirectCommandsLayoutUsageFlagBitsNV" type="bitmask">
-        <enum bitpos="0"    name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV"/>
-        <enum bitpos="1"    name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV"/>
-        <enum bitpos="2"    name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV"/>
-    </enums>
-    <enums name="VkIndirectStateFlagBitsNV" type="bitmask">
-        <enum bitpos="0"    name="VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"/>
-    </enums>
-    <enums name="VkIndirectCommandsTokenTypeNV" type="enum">
-        <enum value="0"     name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"/>
-        <enum value="1"     name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"/>
-        <enum value="2"     name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"/>
-        <enum value="3"     name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV"/>
-        <enum value="4"     name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV"/>
-        <enum value="5"     name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"/>
-        <enum value="6"     name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"/>
-        <enum value="7"     name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"/>
-    </enums>
-    <enums name="VkPrivateDataSlotCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkDescriptorSetLayoutCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkExternalMemoryHandleTypeFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"/>
-        <enum bitpos="1"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
-        <enum bitpos="2"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
-        <enum bitpos="3"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"/>
-        <enum bitpos="4"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"/>
-        <enum bitpos="5"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"/>
-        <enum bitpos="6"    name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"/>
-    </enums>
-    <enums name="VkExternalMemoryFeatureFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"/>
-        <enum bitpos="1"    name="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"/>
-        <enum bitpos="2"    name="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"/>
-    </enums>
-    <enums name="VkExternalSemaphoreHandleTypeFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"/>
-        <enum bitpos="1"    name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
-        <enum bitpos="2"    name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
-        <enum bitpos="3"    name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"/>
-        <enum               name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"/>
-        <enum bitpos="4"    name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"/>
-    </enums>
-    <enums name="VkExternalSemaphoreFeatureFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"/>
-        <enum bitpos="1"    name="VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"/>
-    </enums>
-    <enums name="VkSemaphoreImportFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"/>
-    </enums>
-    <enums name="VkExternalFenceHandleTypeFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"/>
-        <enum bitpos="1"    name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
-        <enum bitpos="2"    name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
-        <enum bitpos="3"    name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"/>
-    </enums>
-    <enums name="VkExternalFenceFeatureFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"/>
-        <enum bitpos="1"    name="VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"/>
-    </enums>
-    <enums name="VkFenceImportFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_FENCE_IMPORT_TEMPORARY_BIT"/>
-    </enums>
-    <enums name="VkSurfaceCounterFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_SURFACE_COUNTER_VBLANK_BIT_EXT"/>
-        <enum               name="VK_SURFACE_COUNTER_VBLANK_EXT" alias="VK_SURFACE_COUNTER_VBLANK_BIT_EXT" deprecated="aliased"/>
-    </enums>
-    <enums name="VkDisplayPowerStateEXT" type="enum">
-        <enum value="0"     name="VK_DISPLAY_POWER_STATE_OFF_EXT"/>
-        <enum value="1"     name="VK_DISPLAY_POWER_STATE_SUSPEND_EXT"/>
-        <enum value="2"     name="VK_DISPLAY_POWER_STATE_ON_EXT"/>
-    </enums>
-    <enums name="VkDeviceEventTypeEXT" type="enum">
-        <enum value="0"     name="VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"/>
-    </enums>
-    <enums name="VkDisplayEventTypeEXT" type="enum">
-        <enum value="0"     name="VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"/>
-    </enums>
-    <enums name="VkPeerMemoryFeatureFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"           comment="Can read with vkCmdCopy commands"/>
-        <enum bitpos="1"    name="VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"           comment="Can write with vkCmdCopy commands"/>
-        <enum bitpos="2"    name="VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"        comment="Can read with any access type/command"/>
-        <enum bitpos="3"    name="VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"        comment="Can write with and access type/command"/>
-    </enums>
-    <enums name="VkMemoryAllocateFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"            comment="Force allocation on specific devices"/>
-    </enums>
-    <enums name="VkDeviceGroupPresentModeFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"        comment="Present from local memory"/>
-        <enum bitpos="1"    name="VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"       comment="Present from remote memory"/>
-        <enum bitpos="2"    name="VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"          comment="Present sum of local and/or remote memory"/>
-        <enum bitpos="3"    name="VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR" comment="Each physical device presents from local memory"/>
-    </enums>
-    <enums name="VkSwapchainCreateFlagBitsKHR" type="bitmask">
-    </enums>
-    <enums name="VkViewportCoordinateSwizzleNV" type="enum">
-        <enum value="0"     name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"/>
-        <enum value="1"     name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"/>
-        <enum value="2"     name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"/>
-        <enum value="3"     name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"/>
-        <enum value="4"     name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"/>
-        <enum value="5"     name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"/>
-        <enum value="6"     name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"/>
-        <enum value="7"     name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"/>
-    </enums>
-    <enums name="VkDiscardRectangleModeEXT" type="enum">
-        <enum value="0"     name="VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"/>
-        <enum value="1"     name="VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"/>
-    </enums>
-    <enums name="VkSubpassDescriptionFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkPointClippingBehavior" type="enum">
-        <enum value="0"     name="VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"/>
-        <enum value="1"     name="VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"/>
-    </enums>
-    <enums name="VkSamplerReductionMode" type="enum">
-        <enum value="0"     name="VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE"/>
-        <enum value="1"     name="VK_SAMPLER_REDUCTION_MODE_MIN"/>
-        <enum value="2"     name="VK_SAMPLER_REDUCTION_MODE_MAX"/>
-    </enums>
-    <enums name="VkTessellationDomainOrigin" type="enum">
-        <enum value="0"     name="VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"/>
-        <enum value="1"     name="VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"/>
-    </enums>
-    <enums name="VkSamplerYcbcrModelConversion" type="enum">
-        <enum value="0"     name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"/>
-        <enum value="1"     name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY" comment="just range expansion"/>
-        <enum value="2"     name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"      comment="aka HD YUV"/>
-        <enum value="3"     name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"      comment="aka SD YUV"/>
-        <enum value="4"     name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"     comment="aka UHD YUV"/>
-    </enums>
-    <enums name="VkSamplerYcbcrRange" type="enum">
-        <enum value="0"     name="VK_SAMPLER_YCBCR_RANGE_ITU_FULL"    comment="Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)"/>
-        <enum value="1"     name="VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"  comment="Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240"/>
-    </enums>
-    <enums name="VkChromaLocation" type="enum">
-        <enum value="0"     name="VK_CHROMA_LOCATION_COSITED_EVEN"/>
-        <enum value="1"     name="VK_CHROMA_LOCATION_MIDPOINT"/>
-    </enums>
-    <enums name="VkBlendOverlapEXT" type="enum">
-        <enum value="0"     name="VK_BLEND_OVERLAP_UNCORRELATED_EXT"/>
-        <enum value="1"     name="VK_BLEND_OVERLAP_DISJOINT_EXT"/>
-        <enum value="2"     name="VK_BLEND_OVERLAP_CONJOINT_EXT"/>
-    </enums>
-    <enums name="VkCoverageModulationModeNV" type="enum">
-        <enum value="0"     name="VK_COVERAGE_MODULATION_MODE_NONE_NV"/>
-        <enum value="1"     name="VK_COVERAGE_MODULATION_MODE_RGB_NV"/>
-        <enum value="2"     name="VK_COVERAGE_MODULATION_MODE_ALPHA_NV"/>
-        <enum value="3"     name="VK_COVERAGE_MODULATION_MODE_RGBA_NV"/>
-    </enums>
-    <enums name="VkCoverageReductionModeNV" type="enum">
-        <enum value="0"     name="VK_COVERAGE_REDUCTION_MODE_MERGE_NV"/>
-        <enum value="1"     name="VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV"/>
-    </enums>
-    <enums name="VkValidationCacheHeaderVersionEXT" type="enum">
-        <enum value="1"     name="VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"/>
-    </enums>
-    <enums name="VkShaderInfoTypeAMD" type="enum">
-        <enum value="0"     name="VK_SHADER_INFO_TYPE_STATISTICS_AMD"/>
-        <enum value="1"     name="VK_SHADER_INFO_TYPE_BINARY_AMD"/>
-        <enum value="2"     name="VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"/>
-    </enums>
-    <enums name="VkQueueGlobalPriorityKHR" type="enum">
-        <enum value="128"   name="VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR"/>
-        <enum value="256"   name="VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR"/>
-        <enum value="512"   name="VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR"/>
-        <enum value="1024"  name="VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR"/>
-        <enum               name="VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"         alias="VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR"/>
-        <enum               name="VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"      alias="VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR"/>
-        <enum               name="VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"        alias="VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR"/>
-        <enum               name="VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"    alias="VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR"/>
-    </enums>
-    <enums name="VkDebugUtilsMessageSeverityFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"/>
-        <enum bitpos="4"    name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"/>
-        <enum bitpos="8"    name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"/>
-        <enum bitpos="12"   name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"/>
-    </enums>
-    <enums name="VkDebugUtilsMessageTypeFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"/>
-        <enum bitpos="1"    name="VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"/>
-        <enum bitpos="2"    name="VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"/>
-    </enums>
-    <enums name="VkConservativeRasterizationModeEXT" type="enum">
-        <enum value="0"     name="VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"/>
-        <enum value="1"     name="VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"/>
-        <enum value="2"     name="VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"/>
-    </enums>
-    <enums name="VkDescriptorBindingFlagBits" type="bitmask">
-        <enum bitpos="0" name="VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"/>
-        <enum bitpos="1" name="VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"/>
-        <enum bitpos="2" name="VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"/>
-        <enum bitpos="3" name="VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"/>
-    </enums>
-    <enums name="VkVendorId" type="enum">
-        <comment>Vendor IDs are now represented as enums instead of the old
-                 &lt;vendorids&gt; tag, allowing them to be included in the
-                 API headers.</comment>
-        <enum value="0x10001" name="VK_VENDOR_ID_VIV"   comment="Vivante vendor ID"/>
-        <enum value="0x10002" name="VK_VENDOR_ID_VSI"   comment="VeriSilicon vendor ID"/>
-        <enum value="0x10003" name="VK_VENDOR_ID_KAZAN" comment="Kazan Software Renderer"/>
-        <enum value="0x10004" name="VK_VENDOR_ID_CODEPLAY" comment="Codeplay Software Ltd. vendor ID"/>
-        <enum value="0x10005" name="VK_VENDOR_ID_MESA"  comment="Mesa vendor ID"/>
-        <enum value="0x10006" name="VK_VENDOR_ID_POCL"  comment="PoCL vendor ID"/>
-        <enum value="0x10007" name="VK_VENDOR_ID_MOBILEYE"  comment="Mobileye vendor ID"/>
-            <unused start="0x10008" comment="This is the next unused available Khronos vendor ID"/>
-    </enums>
-    <enums name="VkDriverId" type="enum">
-        <comment>Driver IDs are now represented as enums instead of the old
-                 &lt;driverids&gt; tag, allowing them to be included in the
-                 API headers.</comment>
-        <enum value="1"       name="VK_DRIVER_ID_AMD_PROPRIETARY"               comment="Advanced Micro Devices, Inc."/>
-        <enum value="2"       name="VK_DRIVER_ID_AMD_OPEN_SOURCE"               comment="Advanced Micro Devices, Inc."/>
-        <enum value="3"       name="VK_DRIVER_ID_MESA_RADV"                     comment="Mesa open source project"/>
-        <enum value="4"       name="VK_DRIVER_ID_NVIDIA_PROPRIETARY"            comment="NVIDIA Corporation"/>
-        <enum value="5"       name="VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS"     comment="Intel Corporation"/>
-        <enum value="6"       name="VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA"        comment="Intel Corporation"/>
-        <enum value="7"       name="VK_DRIVER_ID_IMAGINATION_PROPRIETARY"       comment="Imagination Technologies"/>
-        <enum value="8"       name="VK_DRIVER_ID_QUALCOMM_PROPRIETARY"          comment="Qualcomm Technologies, Inc."/>
-        <enum value="9"       name="VK_DRIVER_ID_ARM_PROPRIETARY"               comment="Arm Limited"/>
-        <enum value="10"      name="VK_DRIVER_ID_GOOGLE_SWIFTSHADER"            comment="Google LLC"/>
-        <enum value="11"      name="VK_DRIVER_ID_GGP_PROPRIETARY"               comment="Google LLC"/>
-        <enum value="12"      name="VK_DRIVER_ID_BROADCOM_PROPRIETARY"          comment="Broadcom Inc."/>
-        <enum value="13"      name="VK_DRIVER_ID_MESA_LLVMPIPE"                 comment="Mesa"/>
-        <enum value="14"      name="VK_DRIVER_ID_MOLTENVK"                      comment="MoltenVK"/>
-        <enum value="15"      name="VK_DRIVER_ID_COREAVI_PROPRIETARY"           comment="Core Avionics &amp; Industrial Inc."/>
-        <enum value="16"      name="VK_DRIVER_ID_JUICE_PROPRIETARY"             comment="Juice Technologies, Inc."/>
-        <enum value="17"      name="VK_DRIVER_ID_VERISILICON_PROPRIETARY"       comment="Verisilicon, Inc."/>
-        <enum value="18"      name="VK_DRIVER_ID_MESA_TURNIP"                   comment="Mesa open source project"/>
-        <enum value="19"      name="VK_DRIVER_ID_MESA_V3DV"                     comment="Mesa open source project"/>
-        <enum value="20"      name="VK_DRIVER_ID_MESA_PANVK"                    comment="Mesa open source project"/>
-        <enum value="21"      name="VK_DRIVER_ID_SAMSUNG_PROPRIETARY"           comment="Samsung Electronics Co., Ltd."/>
-        <enum value="22"      name="VK_DRIVER_ID_MESA_VENUS"                    comment="Mesa open source project"/>
-        <enum value="23"      name="VK_DRIVER_ID_MESA_DOZEN"                    comment="Mesa open source project"/>
-        <enum value="24"      name="VK_DRIVER_ID_MESA_NVK"                      comment="Mesa open source project"/>
-        <enum value="25"      name="VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA"  comment="Imagination Technologies"/>
-        <enum value="26"      name="VK_DRIVER_ID_MESA_AGXV"                     comment="Mesa open source project"/>
-    </enums>
-    <enums name="VkConditionalRenderingFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"/>
-    </enums>
-    <enums name="VkResolveModeFlagBits" type="bitmask">
-        <enum value="0" name="VK_RESOLVE_MODE_NONE"/>
-        <enum bitpos="0" name="VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"/>
-        <enum bitpos="1" name="VK_RESOLVE_MODE_AVERAGE_BIT"/>
-        <enum bitpos="2" name="VK_RESOLVE_MODE_MIN_BIT"/>
-        <enum bitpos="3" name="VK_RESOLVE_MODE_MAX_BIT"/>
-    </enums>
-    <enums name="VkShadingRatePaletteEntryNV" type="enum">
-        <enum value="0" name="VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV"/>
-        <enum value="1" name="VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV"/>
-        <enum value="2" name="VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV"/>
-        <enum value="3" name="VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV"/>
-        <enum value="4" name="VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV"/>
-        <enum value="5" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV"/>
-        <enum value="6" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV"/>
-        <enum value="7" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV"/>
-        <enum value="8" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV"/>
-        <enum value="9" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV"/>
-        <enum value="10" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV"/>
-        <enum value="11" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV"/>
-    </enums>
-    <enums name="VkCoarseSampleOrderTypeNV" type="enum">
-        <enum value="0" name="VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV"/>
-        <enum value="1" name="VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV"/>
-        <enum value="2" name="VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV"/>
-        <enum value="3" name="VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV"/>
-    </enums>
-    <enums name="VkGeometryInstanceFlagBitsKHR" type="bitmask">
-        <enum bitpos="0" name="VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"/>
-        <enum bitpos="1" name="VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR"/>
-        <enum bitpos="2" name="VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"/>
-        <enum bitpos="3" name="VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"/>
-        <enum            name="VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR" alias="VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR"/>
-    </enums>
-    <enums name="VkGeometryFlagBitsKHR" type="bitmask">
-        <enum bitpos="0" name="VK_GEOMETRY_OPAQUE_BIT_KHR"/>
-        <enum bitpos="1" name="VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"/>
-    </enums>
-    <enums name="VkBuildAccelerationStructureFlagBitsKHR" type="bitmask">
-        <enum bitpos="0" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"/>
-        <enum bitpos="1" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"/>
-        <enum bitpos="2" name="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"/>
-        <enum bitpos="3" name="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"/>
-        <enum bitpos="4" name="VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"/>
-    </enums>
-    <enums name="VkAccelerationStructureCreateFlagBitsKHR" type="bitmask">
-        <enum bitpos="0" name="VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"/>
-    </enums>
-    <enums name="VkCopyAccelerationStructureModeKHR" type="enum">
-        <enum value="0" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"/>
-        <enum value="1" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"/>
-        <enum value="2" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR"/>
-        <enum value="3" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR"/>
-    </enums>
-    <enums name="VkBuildAccelerationStructureModeKHR" type="enum">
-        <enum value="0" name="VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR"/>
-        <enum value="1" name="VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR"/>
-    </enums>
-    <enums name="VkAccelerationStructureTypeKHR" type="enum">
-        <enum value="0" name="VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"/>
-        <enum value="1" name="VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"/>
-        <enum value="2" name="VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR"/>
-    </enums>
-    <enums name="VkGeometryTypeKHR" type="enum">
-        <enum value="0" name="VK_GEOMETRY_TYPE_TRIANGLES_KHR"/>
-        <enum value="1" name="VK_GEOMETRY_TYPE_AABBS_KHR"/>
-        <enum value="2" name="VK_GEOMETRY_TYPE_INSTANCES_KHR"/>
-    </enums>
-    <enums name="VkAccelerationStructureMemoryRequirementsTypeNV" type="enum">
-        <enum value="0" name="VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV"/>
-        <enum value="1" name="VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV"/>
-        <enum value="2" name="VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV"/>
-    </enums>
-    <enums name="VkAccelerationStructureBuildTypeKHR" type="enum">
-        <enum value="0" name="VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR"/>
-        <enum value="1" name="VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR"/>
-        <enum value="2" name="VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR"/>
-    </enums>
-    <enums name="VkRayTracingShaderGroupTypeKHR" type="enum">
-        <enum value="0" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"/>
-        <enum value="1" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR"/>
-        <enum value="2" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR"/>
-    </enums>
-    <enums name="VkAccelerationStructureCompatibilityKHR" type="enum">
-        <enum value="0" name="VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR"/>
-        <enum value="1" name="VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR"/>
-    </enums>
-    <enums name="VkShaderGroupShaderKHR" type="enum">
-        <enum value="0" name="VK_SHADER_GROUP_SHADER_GENERAL_KHR"/>
-        <enum value="1" name="VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR"/>
-        <enum value="2" name="VK_SHADER_GROUP_SHADER_ANY_HIT_KHR"/>
-        <enum value="3" name="VK_SHADER_GROUP_SHADER_INTERSECTION_KHR"/>
-    </enums>
-    <enums name="VkMemoryOverallocationBehaviorAMD" type="enum">
-        <enum value="0"     name="VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD"/>
-        <enum value="1"     name="VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD"/>
-        <enum value="2"     name="VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD"/>
-    </enums>
-    <enums name="VkFramebufferCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkDeviceDiagnosticsConfigFlagBitsNV" type="bitmask">
-        <enum bitpos="0" name="VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV"/>
-        <enum bitpos="1" name="VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV"/>
-        <enum bitpos="2" name="VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV"/>
-        <enum bitpos="3" name="VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV"/>
-    </enums>
-    <enums name="VkPipelineCreationFeedbackFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT"/>
-        <enum               name="VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT" alias="VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT"/>
-        <enum bitpos="1"    name="VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT"/>
-        <enum               name="VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT" alias="VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT"/>
-        <enum bitpos="2"    name="VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT"/>
-        <enum               name="VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT" alias="VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT"/>
-    </enums>
-    <enums name="VkFullScreenExclusiveEXT" type="enum">
-        <enum value="0"     name="VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT"/>
-        <enum value="1"     name="VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT"/>
-        <enum value="2"     name="VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT"/>
-        <enum value="3"     name="VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT"/>
-    </enums>
-    <enums name="VkPerformanceCounterScopeKHR" type="enum">
-        <enum value="0"     name="VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR"/>
-        <enum value="1"     name="VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"/>
-        <enum value="2"     name="VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR"/>
-        <enum               name="VK_QUERY_SCOPE_COMMAND_BUFFER_KHR" alias="VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR" deprecated="aliased"/>
-        <enum               name="VK_QUERY_SCOPE_RENDER_PASS_KHR" alias="VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR" deprecated="aliased"/>
-        <enum               name="VK_QUERY_SCOPE_COMMAND_KHR" alias="VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR" deprecated="aliased"/>
-    </enums>
-    <enums name="VkMemoryDecompressionMethodFlagBitsNV" type="bitmask" bitwidth="64">
-        <enum bitpos="0" name="VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV"/>
-    </enums>
-    <enums name="VkPerformanceCounterUnitKHR" type="enum">
-        <enum value="0"     name="VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR"/>
-        <enum value="1"     name="VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR"/>
-        <enum value="2"     name="VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR"/>
-        <enum value="3"     name="VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR"/>
-        <enum value="4"     name="VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"/>
-        <enum value="5"     name="VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR"/>
-        <enum value="6"     name="VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR"/>
-        <enum value="7"     name="VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"/>
-        <enum value="8"     name="VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR"/>
-        <enum value="9"     name="VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR"/>
-        <enum value="10"    name="VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"/>
-    </enums>
-    <enums name="VkPerformanceCounterStorageKHR" type="enum">
-        <enum value="0"     name="VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR"/>
-        <enum value="1"     name="VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR"/>
-        <enum value="2"     name="VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR"/>
-        <enum value="3"     name="VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR"/>
-        <enum value="4"     name="VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR"/>
-        <enum value="5"     name="VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR"/>
-    </enums>
-    <enums name="VkPerformanceCounterDescriptionFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"/>
-        <enum               name="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR" alias="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR" deprecated="aliased"/>
-        <enum bitpos="1"    name="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"/>
-        <enum               name="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR" alias="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR" deprecated="aliased"/>
-    </enums>
-    <enums name="VkAcquireProfilingLockFlagBitsKHR" type="bitmask">
-    </enums>
-    <enums name="VkShaderCorePropertiesFlagBitsAMD" type="bitmask">
-    </enums>
-    <enums name="VkRefreshObjectFlagBitsKHR" type="bitmask">
-    </enums>
-    <enums name="VkPerformanceConfigurationTypeINTEL" type="enum">
-        <enum value="0"     name="VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL"/>
-    </enums>
-    <enums name="VkQueryPoolSamplingModeINTEL" type="enum">
-        <enum value="0"     name="VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL"/>
-    </enums>
-    <enums name="VkPerformanceOverrideTypeINTEL" type="enum">
-        <enum value="0"     name="VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL"/>
-        <enum value="1"     name="VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL"/>
-    </enums>
-    <enums name="VkPerformanceParameterTypeINTEL" type="enum">
-        <enum value="0"     name="VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL"/>
-        <enum value="1"     name="VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL"/>
-    </enums>
-    <enums name="VkPerformanceValueTypeINTEL" type="enum">
-        <enum value="0"     name="VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL"/>
-        <enum value="1"     name="VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL"/>
-        <enum value="2"     name="VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"/>
-        <enum value="3"     name="VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL"/>
-        <enum value="4"     name="VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL"/>
-    </enums>
-    <enums name="VkShaderFloatControlsIndependence" type="enum">
-        <enum value="0"     name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY"/>
-        <enum value="1"     name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL"/>
-        <enum value="2"     name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE"/>
-    </enums>
-    <enums name="VkPipelineExecutableStatisticFormatKHR" type="enum">
-        <enum value="0" name="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR"/>
-        <enum value="1" name="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR"/>
-        <enum value="2" name="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR"/>
-        <enum value="3" name="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR"/>
-    </enums>
-    <enums name="VkLineRasterizationModeEXT" type="enum">
-        <enum value="0"     name="VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT"/>
-        <enum value="1"     name="VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT"/>
-        <enum value="2"     name="VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT"/>
-        <enum value="3"     name="VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT"/>
-    </enums>
-    <enums name="VkShaderModuleCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkPipelineCompilerControlFlagBitsAMD" type="bitmask">
-    </enums>
-    <enums name="VkFaultLevel" type="enum">
-        <enum value="0"    name="VK_FAULT_LEVEL_UNASSIGNED"/>
-        <enum value="1"    name="VK_FAULT_LEVEL_CRITICAL"/>
-        <enum value="2"    name="VK_FAULT_LEVEL_RECOVERABLE"/>
-        <enum value="3"    name="VK_FAULT_LEVEL_WARNING"/>
-    </enums>
-    <enums name="VkFaultType" type="enum">
-        <enum value="0"    name="VK_FAULT_TYPE_INVALID"/>
-        <enum value="1"    name="VK_FAULT_TYPE_UNASSIGNED"/>
-        <enum value="2"    name="VK_FAULT_TYPE_IMPLEMENTATION"/>
-        <enum value="3"    name="VK_FAULT_TYPE_SYSTEM"/>
-        <enum value="4"    name="VK_FAULT_TYPE_PHYSICAL_DEVICE"/>
-        <enum value="5"    name="VK_FAULT_TYPE_COMMAND_BUFFER_FULL"/>
-        <enum value="6"    name="VK_FAULT_TYPE_INVALID_API_USAGE"/>
-    </enums>
-    <enums name="VkFaultQueryBehavior" type="enum">
-        <enum value="0"    name="VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS"/>
-    </enums>
-    <enums name="VkToolPurposeFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_TOOL_PURPOSE_VALIDATION_BIT"/>
-        <enum               name="VK_TOOL_PURPOSE_VALIDATION_BIT_EXT"          alias="VK_TOOL_PURPOSE_VALIDATION_BIT"/>
-        <enum bitpos="1"    name="VK_TOOL_PURPOSE_PROFILING_BIT"/>
-        <enum               name="VK_TOOL_PURPOSE_PROFILING_BIT_EXT"           alias="VK_TOOL_PURPOSE_PROFILING_BIT"/>
-        <enum bitpos="2"    name="VK_TOOL_PURPOSE_TRACING_BIT"/>
-        <enum               name="VK_TOOL_PURPOSE_TRACING_BIT_EXT"             alias="VK_TOOL_PURPOSE_TRACING_BIT"/>
-        <enum bitpos="3"    name="VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT"/>
-        <enum               name="VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT" alias="VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT"/>
-        <enum bitpos="4"    name="VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT"/>
-        <enum               name="VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT"  alias="VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT"/>
-    </enums>
-    <enums name="VkPipelineMatchControl" type="enum">
-        <enum value="0"     name="VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH"/>
-    </enums>
-    <enums name="VkFragmentShadingRateCombinerOpKHR" type="enum">
-        <enum value="0" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR"/>
-        <enum value="1" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR"/>
-        <enum value="2" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR"/>
-        <enum value="3" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR"/>
-        <enum value="4" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR"/>
-    </enums>
-    <enums name="VkFragmentShadingRateNV" type="enum">
-        <enum value="0"  name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV"/>
-        <enum value="1"  name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV"/>
-        <enum value="4"  name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV"/>
-        <enum value="5"  name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV"/>
-        <enum value="6"  name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV"/>
-        <enum value="9"  name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV"/>
-        <enum value="10" name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV"/>
-        <enum value="11" name="VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV"/>
-        <enum value="12" name="VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV"/>
-        <enum value="13" name="VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV"/>
-        <enum value="14" name="VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV"/>
-        <enum value="15" name="VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV"/>
-    </enums>
-    <enums name="VkFragmentShadingRateTypeNV" type="enum">
-        <enum value="0"  name="VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV"/>
-        <enum value="1"  name="VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV"/>
-    </enums>
-    <enums name="VkSubpassMergeStatusEXT" type="enum">
-        <enum value="0"  name="VK_SUBPASS_MERGE_STATUS_MERGED_EXT"/>
-        <enum value="1"  name="VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT"/>
-        <enum value="2"  name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT"/>
-        <enum value="3"  name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT"/>
-        <enum value="4"  name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT"/>
-        <enum value="5"  name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT"/>
-        <enum value="6"  name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT"/>
-        <enum value="7"  name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT"/>
-        <enum value="8"  name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT"/>
-        <enum value="9"  name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT"/>
-        <enum value="10" name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT"/>
-        <enum value="11" name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT"/>
-        <enum value="12" name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT"/>
-        <enum value="13" name="VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT"/>
-    </enums>
-    <enums name="VkAccessFlagBits2" type="bitmask" bitwidth="64">
-        <enum value="0"     name="VK_ACCESS_2_NONE"/>
-        <enum               name="VK_ACCESS_2_NONE_KHR" alias="VK_ACCESS_2_NONE"/>
-        <enum bitpos="0"    name="VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR" alias="VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT"/>
-        <enum bitpos="1"    name="VK_ACCESS_2_INDEX_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_INDEX_READ_BIT_KHR" alias="VK_ACCESS_2_INDEX_READ_BIT"/>
-        <enum bitpos="2"    name="VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR" alias="VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT"/>
-        <enum bitpos="3"    name="VK_ACCESS_2_UNIFORM_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_UNIFORM_READ_BIT_KHR" alias="VK_ACCESS_2_UNIFORM_READ_BIT"/>
-        <enum bitpos="4"    name="VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR" alias="VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT"/>
-        <enum bitpos="5"    name="VK_ACCESS_2_SHADER_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_SHADER_READ_BIT_KHR" alias="VK_ACCESS_2_SHADER_READ_BIT"/>
-        <enum bitpos="6"    name="VK_ACCESS_2_SHADER_WRITE_BIT"/>
-        <enum               name="VK_ACCESS_2_SHADER_WRITE_BIT_KHR" alias="VK_ACCESS_2_SHADER_WRITE_BIT"/>
-        <enum bitpos="7"    name="VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR" alias="VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT"/>
-        <enum bitpos="8"    name="VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT"/>
-        <enum               name="VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR" alias="VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT"/>
-        <enum bitpos="9"    name="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR" alias="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT"/>
-        <enum bitpos="10"   name="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"/>
-        <enum               name="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR" alias="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"/>
-        <enum bitpos="11"   name="VK_ACCESS_2_TRANSFER_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_TRANSFER_READ_BIT_KHR" alias="VK_ACCESS_2_TRANSFER_READ_BIT"/>
-        <enum bitpos="12"   name="VK_ACCESS_2_TRANSFER_WRITE_BIT"/>
-        <enum               name="VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR" alias="VK_ACCESS_2_TRANSFER_WRITE_BIT"/>
-        <enum bitpos="13"   name="VK_ACCESS_2_HOST_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_HOST_READ_BIT_KHR" alias="VK_ACCESS_2_HOST_READ_BIT"/>
-        <enum bitpos="14"   name="VK_ACCESS_2_HOST_WRITE_BIT"/>
-        <enum               name="VK_ACCESS_2_HOST_WRITE_BIT_KHR" alias="VK_ACCESS_2_HOST_WRITE_BIT"/>
-        <enum bitpos="15"   name="VK_ACCESS_2_MEMORY_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_MEMORY_READ_BIT_KHR" alias="VK_ACCESS_2_MEMORY_READ_BIT"/>
-        <enum bitpos="16"   name="VK_ACCESS_2_MEMORY_WRITE_BIT"/>
-        <enum               name="VK_ACCESS_2_MEMORY_WRITE_BIT_KHR" alias="VK_ACCESS_2_MEMORY_WRITE_BIT"/>
-            <comment>bitpos 17-31 are specified by extensions to the original VkAccessFlagBits enum</comment>
-        <enum bitpos="32"   name="VK_ACCESS_2_SHADER_SAMPLED_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR" alias="VK_ACCESS_2_SHADER_SAMPLED_READ_BIT"/>
-        <enum bitpos="33"   name="VK_ACCESS_2_SHADER_STORAGE_READ_BIT"/>
-        <enum               name="VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR" alias="VK_ACCESS_2_SHADER_STORAGE_READ_BIT"/>
-        <enum bitpos="34"   name="VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT"/>
-        <enum               name="VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR" alias="VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT"/>
-    </enums>
-    <enums name="VkPipelineStageFlagBits2" type="bitmask" bitwidth="64">
-        <enum value="0"    name="VK_PIPELINE_STAGE_2_NONE"/>
-        <enum               name="VK_PIPELINE_STAGE_2_NONE_KHR" alias="VK_PIPELINE_STAGE_2_NONE"/>
-        <enum bitpos="0"    name="VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR" alias="VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT"/>
-        <enum bitpos="1"    name="VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR" alias="VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT"/>
-        <enum bitpos="2"    name="VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR" alias="VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT"/>
-        <enum bitpos="3"    name="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR" alias="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT"/>
-        <enum bitpos="4"    name="VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR" alias="VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT"/>
-        <enum bitpos="5"    name="VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR" alias="VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT"/>
-        <enum bitpos="6"    name="VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR" alias="VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT"/>
-        <enum bitpos="7"    name="VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR" alias="VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT"/>
-        <enum bitpos="8"    name="VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR" alias="VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT"/>
-        <enum bitpos="9"    name="VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR" alias="VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT"/>
-        <enum bitpos="10"   name="VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR" alias="VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT"/>
-        <enum bitpos="11"   name="VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR" alias="VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT"/>
-        <enum bitpos="12"   name="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR" alias="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_TRANSFER_BIT" alias="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR"/>
-        <enum               name="VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR" alias="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT"/>
-        <enum bitpos="13"   name="VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR" alias="VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT"/>
-        <enum bitpos="14"   name="VK_PIPELINE_STAGE_2_HOST_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_HOST_BIT_KHR" alias="VK_PIPELINE_STAGE_2_HOST_BIT"/>
-        <enum bitpos="15"   name="VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR" alias="VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT"/>
-        <enum bitpos="16"   name="VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR" alias="VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT"/>
-            <comment>bitpos 17-31 are specified by extensions to the original VkPipelineStageFlagBits enum</comment>
-        <enum bitpos="32"   name="VK_PIPELINE_STAGE_2_COPY_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_COPY_BIT_KHR" alias="VK_PIPELINE_STAGE_2_COPY_BIT"/>
-        <enum bitpos="33"   name="VK_PIPELINE_STAGE_2_RESOLVE_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR" alias="VK_PIPELINE_STAGE_2_RESOLVE_BIT"/>
-        <enum bitpos="34"   name="VK_PIPELINE_STAGE_2_BLIT_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_BLIT_BIT_KHR" alias="VK_PIPELINE_STAGE_2_BLIT_BIT"/>
-        <enum bitpos="35"   name="VK_PIPELINE_STAGE_2_CLEAR_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR" alias="VK_PIPELINE_STAGE_2_CLEAR_BIT"/>
-        <enum bitpos="36"   name="VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR" alias="VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT"/>
-        <enum bitpos="37"   name="VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR" alias="VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT"/>
-        <enum bitpos="38"   name="VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT"/>
-        <enum               name="VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR" alias="VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT"/>
-    </enums>
-    <enums name="VkSubmitFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_SUBMIT_PROTECTED_BIT"/>
-        <enum               name="VK_SUBMIT_PROTECTED_BIT_KHR" alias="VK_SUBMIT_PROTECTED_BIT"/>
-    </enums>
-    <enums name="VkEventCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkPipelineLayoutCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkSciSyncClientTypeNV" type="enum">
-        <enum value="0"    name="VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_NV"/>
-        <enum value="1"    name="VK_SCI_SYNC_CLIENT_TYPE_WAITER_NV"/>
-        <enum value="2"    name="VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_WAITER_NV"/>
-    </enums>
-    <enums name="VkSciSyncPrimitiveTypeNV" type="enum">
-        <enum value="0"   name="VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV"/>
-        <enum value="1"   name="VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV"/>
-    </enums>
-    <enums name="VkProvokingVertexModeEXT" type="enum">
-        <enum value="0"     name="VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT"/>
-        <enum value="1"     name="VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT"/>
-    </enums>
-    <enums name="VkPipelineCacheValidationVersion" type="enum">
-        <enum value="1"     name="VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE"/>
-    </enums>
-    <enums name="VkAccelerationStructureMotionInstanceTypeNV" type="enum">
-        <enum value="0" name="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV"/>
-        <enum value="1" name="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV"/>
-        <enum value="2" name="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV"/>
-    </enums>
-    <enums name="VkPipelineColorBlendStateCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkPipelineDepthStencilStateCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkGraphicsPipelineLibraryFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"   name="VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT"/>
-        <enum bitpos="1"   name="VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT"/>
-        <enum bitpos="2"   name="VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT"/>
-        <enum bitpos="3"   name="VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT"/>
-    </enums>
-    <enums name="VkDeviceAddressBindingFlagBitsEXT" type="bitmask">
-        <enum bitpos="0" name="VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT"/>
-    </enums>
-    <enums name="VkDeviceAddressBindingTypeEXT" type="enum">
-        <enum value="0"     name="VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT"/>
-        <enum value="1"     name="VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT"/>
-    </enums>
-    <enums name="VkFrameBoundaryFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"     name="VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT"/>
-    </enums>
-    <enums name="VkPresentScalingFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT"/>
-        <enum bitpos="1"    name="VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT"/>
-        <enum bitpos="2"    name="VK_PRESENT_SCALING_STRETCH_BIT_EXT"/>
-    </enums>
-    <enums name="VkPresentGravityFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_PRESENT_GRAVITY_MIN_BIT_EXT"/>
-        <enum bitpos="1"    name="VK_PRESENT_GRAVITY_MAX_BIT_EXT"/>
-        <enum bitpos="2"    name="VK_PRESENT_GRAVITY_CENTERED_BIT_EXT"/>
-    </enums>
-    <enums name="VkPhysicalDeviceSchedulingControlsFlagBitsARM" type="bitmask">
-        <enum bitpos="0"    name="VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM"/>
-    </enums>
-
-    <enums name="VkVideoCodecOperationFlagBitsKHR" type="bitmask">
-        <enum value="0"     name="VK_VIDEO_CODEC_OPERATION_NONE_KHR"/>
-    </enums>
-    <enums name="VkVideoChromaSubsamplingFlagBitsKHR" type="bitmask" comment="Vulkan video chroma subsampling definitions">
-        <enum value="0"     name="VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR"/>
-        <enum bitpos="0"    name="VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR"/>
-        <enum bitpos="3"    name="VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoComponentBitDepthFlagBitsKHR" type="bitmask" comment="Vulkan video component bit depth definitions">
-        <enum value="0"     name="VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR"/>
-        <enum bitpos="0"    name="VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR"/>
-        <enum bitpos="4"    name="VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoCapabilityFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoSessionCreateFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoDecodeH264PictureLayoutFlagBitsKHR" type="bitmask">
-        <enum value="0"       name="VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR"/>
-        <enum bitpos="0"      name="VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR"/>
-        <enum bitpos="1"      name="VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoCodingControlFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR"/>
-    </enums>
-    <enums name="VkQueryResultStatusKHR" type="enum">
-        <enum value="-1"    name="VK_QUERY_RESULT_STATUS_ERROR_KHR"/>
-        <enum value="0"     name="VK_QUERY_RESULT_STATUS_NOT_READY_KHR"/>
-        <enum value="1"     name="VK_QUERY_RESULT_STATUS_COMPLETE_KHR"/>
-    </enums>
-    <enums name="VkVideoDecodeUsageFlagBitsKHR" type="bitmask">
-        <enum value="0"     name="VK_VIDEO_DECODE_USAGE_DEFAULT_KHR"/>
-        <enum bitpos="0"    name="VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoDecodeCapabilityFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoEncodeUsageFlagBitsKHR" type="bitmask">
-        <enum value="0"     name="VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR"/>
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR"/>
-        <enum bitpos="3"    name="VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoEncodeContentFlagBitsKHR" type="bitmask">
-        <enum value="0"     name="VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR"/>
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoEncodeTuningModeKHR" type="enum">
-        <enum value="0"     name="VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR"/>
-        <enum value="1"     name="VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR"/>
-        <enum value="2"     name="VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR"/>
-        <enum value="3"     name="VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR"/>
-        <enum value="4"     name="VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR"/>
-    </enums>
-    <enums name="VkVideoEncodeCapabilityFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoEncodeFeedbackFlagBitsKHR" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoEncodeRateControlModeFlagBitsKHR" type="bitmask">
-        <enum value="0"     name="VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR"/>
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR"/>
-        <enum bitpos="2"    name="VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR"/>
-    </enums>
-    <enums name="VkVideoEncodeH264CapabilityFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT"/>
-        <enum bitpos="2"    name="VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT"/>
-        <enum bitpos="3"    name="VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT"/>
-        <enum bitpos="4"    name="VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT"/>
-        <enum bitpos="5"    name="VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT"/>
-        <enum bitpos="6"    name="VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT"/>
-        <enum bitpos="7"    name="VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_EXT"/>
-        <enum bitpos="8"    name="VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_EXT"/>
-    </enums>
-    <enums name="VkVideoEncodeH264StdFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="2"    name="VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="3"    name="VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_EXT"/>
-        <enum bitpos="4"    name="VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_EXT"/>
-        <enum bitpos="5"    name="VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_EXT"/>
-        <enum bitpos="6"    name="VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="7"    name="VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_EXT"/>
-        <enum bitpos="8"    name="VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_EXT"/>
-        <enum bitpos="9"    name="VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="10"   name="VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_EXT"/>
-        <enum bitpos="11"   name="VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_EXT"/>
-        <enum bitpos="12"   name="VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="13"   name="VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_EXT"/>
-        <enum bitpos="14"   name="VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="15"   name="VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_EXT"/>
-        <enum bitpos="16"   name="VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_EXT"/>
-        <enum bitpos="17"   name="VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_EXT"/>
-        <enum bitpos="19"   name="VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_EXT"/>
-        <enum bitpos="20"   name="VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT"/>
-    </enums>
-    <enums name="VkVideoEncodeH264RateControlFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_EXT"/>
-        <enum bitpos="2"    name="VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT"/>
-        <enum bitpos="3"    name="VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT"/>
-        <enum bitpos="4"    name="VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_EXT"/>
-    </enums>
-    <enums name="VkHostImageCopyFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_HOST_IMAGE_COPY_MEMCPY_EXT"/>
-    </enums>
-    <enums name="VkImageFormatConstraintsFlagBitsFUCHSIA" type="bitmask">
-    </enums>
-    <enums name="VkImageConstraintsInfoFlagBitsFUCHSIA" type="bitmask">
-        <enum bitpos="0"    name="VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA"/>
-        <enum bitpos="1"    name="VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA"/>
-        <enum bitpos="2"    name="VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA"/>
-        <enum bitpos="3"    name="VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA"/>
-        <enum bitpos="4"    name="VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA"/>
-    </enums>
-    <enums name="VkFormatFeatureFlagBits2" type="bitmask" bitwidth="64">
-        <enum bitpos="0"    name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR" alias="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT"/>
-        <enum bitpos="1"    name="VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR" alias="VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT"/>
-        <enum bitpos="2"    name="VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR" alias="VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT"/>
-        <enum bitpos="3"    name="VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR" alias="VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT"/>
-        <enum bitpos="4"    name="VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR" alias="VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT"/>
-        <enum bitpos="5"    name="VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR" alias="VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"/>
-        <enum bitpos="6"    name="VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR" alias="VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT"/>
-        <enum bitpos="7"    name="VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR" alias="VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT"/>
-        <enum bitpos="8"    name="VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR" alias="VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT"/>
-        <enum bitpos="9"    name="VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR" alias="VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT"/>
-        <enum bitpos="10"   name="VK_FORMAT_FEATURE_2_BLIT_SRC_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR" alias="VK_FORMAT_FEATURE_2_BLIT_SRC_BIT"/>
-        <enum bitpos="11"   name="VK_FORMAT_FEATURE_2_BLIT_DST_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR" alias="VK_FORMAT_FEATURE_2_BLIT_DST_BIT"/>
-        <enum bitpos="12"   name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR" alias="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT"/>
-        <enum bitpos="13"   name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT" alias="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT"/>
-        <enum bitpos="14"   name="VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR" alias="VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT"/>
-        <enum bitpos="15"   name="VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR" alias="VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT"/>
-        <enum bitpos="16"   name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR" alias="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT"/>
-        <enum bitpos="17"   name="VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR" alias="VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT"/>
-        <enum bitpos="18"   name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR" alias="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"/>
-        <enum bitpos="19"   name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR" alias="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"/>
-        <enum bitpos="20"   name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR" alias="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"/>
-        <enum bitpos="21"   name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR" alias="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"/>
-        <enum bitpos="22"   name="VK_FORMAT_FEATURE_2_DISJOINT_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR" alias="VK_FORMAT_FEATURE_2_DISJOINT_BIT"/>
-        <enum bitpos="23"   name="VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR" alias="VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT"/>
-        <enum bitpos="31"   name="VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR" alias="VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT"/>
-        <enum bitpos="32"   name="VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR" alias="VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT"/>
-        <enum bitpos="33"   name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT"/>
-        <enum               name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR" alias="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT"/>
-    </enums>
-    <enums name="VkRenderingFlagBits" type="bitmask">
-        <enum bitpos="0"    name="VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT"/>
-        <enum               name="VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR" alias="VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT"/>
-        <enum bitpos="1"    name="VK_RENDERING_SUSPENDING_BIT"/>
-        <enum               name="VK_RENDERING_SUSPENDING_BIT_KHR" alias="VK_RENDERING_SUSPENDING_BIT"/>
-        <enum bitpos="2"    name="VK_RENDERING_RESUMING_BIT"/>
-        <enum               name="VK_RENDERING_RESUMING_BIT_KHR" alias="VK_RENDERING_RESUMING_BIT"/>
-    </enums>
-    <enums name="VkVideoEncodeH265CapabilityFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT"/>
-        <enum bitpos="2"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT"/>
-        <enum bitpos="3"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_EXT"/>
-        <enum bitpos="4"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT"/>
-        <enum bitpos="5"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT"/>
-        <enum bitpos="6"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT"/>
-        <enum bitpos="7"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_EXT"/>
-        <enum bitpos="8"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_EXT"/>
-        <enum bitpos="9"    name="VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_EXT"/>
-    </enums>
-    <enums name="VkVideoEncodeH265StdFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"    name="VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="1"    name="VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="2"    name="VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="3"    name="VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="4"    name="VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="5"    name="VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_EXT"/>
-        <enum bitpos="6"    name="VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="7"    name="VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="8"    name="VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT"/>
-        <enum bitpos="9"    name="VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="10"   name="VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="11"   name="VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_EXT"/>
-        <enum bitpos="12"   name="VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="13"   name="VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="14"   name="VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="15"   name="VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="16"   name="VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="17"   name="VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="18"   name="VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_EXT"/>
-        <enum bitpos="19"   name="VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_EXT"/>
-        <enum bitpos="20"   name="VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT"/>
-    </enums>
-    <enums name="VkVideoEncodeH265RateControlFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"      name="VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT"/>
-        <enum bitpos="1"      name="VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_EXT"/>
-        <enum bitpos="2"      name="VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT"/>
-        <enum bitpos="3"      name="VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT"/>
-        <enum bitpos="4"      name="VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_EXT"/>
-    </enums>
-    <enums name="VkVideoEncodeH265CtbSizeFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"      name="VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT"/>
-        <enum bitpos="1"      name="VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT"/>
-        <enum bitpos="2"      name="VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT"/>
-    </enums>
-    <enums name="VkVideoEncodeH265TransformBlockSizeFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"      name="VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT"/>
-        <enum bitpos="1"      name="VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT"/>
-        <enum bitpos="2"      name="VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT"/>
-        <enum bitpos="3"      name="VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT"/>
-    </enums>
-    <enums name="VkExportMetalObjectTypeFlagBitsEXT" type="bitmask">
-        <enum bitpos="0"      name="VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT"/>
-        <enum bitpos="1"      name="VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT"/>
-        <enum bitpos="2"      name="VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT"/>
-        <enum bitpos="3"      name="VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT"/>
-        <enum bitpos="4"      name="VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT"/>
-        <enum bitpos="5"      name="VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT"/>
-    </enums>
-    <enums name="VkInstanceCreateFlagBits" type="bitmask">
-    </enums>
-    <enums name="VkImageCompressionFlagBitsEXT" type="bitmask">
-        <enum value="0"      name="VK_IMAGE_COMPRESSION_DEFAULT_EXT"/>
-        <enum bitpos="0"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT"/>
-        <enum bitpos="1"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT"/>
-        <enum bitpos="2"     name="VK_IMAGE_COMPRESSION_DISABLED_EXT"/>
-    </enums>
-    <enums name="VkImageCompressionFixedRateFlagBitsEXT" type="bitmask">
-        <enum value="0"      name="VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT"/>
-        <enum bitpos="0"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT"/>
-        <enum bitpos="1"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT"/>
-        <enum bitpos="2"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT"/>
-        <enum bitpos="3"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT"/>
-        <enum bitpos="4"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT"/>
-        <enum bitpos="5"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT"/>
-        <enum bitpos="6"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT"/>
-        <enum bitpos="7"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT"/>
-        <enum bitpos="8"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT"/>
-        <enum bitpos="9"     name="VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT"/>
-        <enum bitpos="10"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT"/>
-        <enum bitpos="11"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT"/>
-        <enum bitpos="12"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT"/>
-        <enum bitpos="13"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT"/>
-        <enum bitpos="14"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT"/>
-        <enum bitpos="15"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT"/>
-        <enum bitpos="16"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT"/>
-        <enum bitpos="17"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT"/>
-        <enum bitpos="18"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT"/>
-        <enum bitpos="19"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT"/>
-        <enum bitpos="20"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT"/>
-        <enum bitpos="21"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT"/>
-        <enum bitpos="22"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT"/>
-        <enum bitpos="23"    name="VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT"/>
-    </enums>
-    <enums name="VkPipelineRobustnessBufferBehaviorEXT" type="enum">
-        <enum value="0"      name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT" />
-        <enum value="1"      name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT" />
-        <enum value="2"      name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT" />
-        <enum value="3"      name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT" />
-    </enums>
-    <enums name="VkPipelineRobustnessImageBehaviorEXT" type="enum">
-        <enum value="0"      name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT" />
-        <enum value="1"      name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT" />
-        <enum value="2"      name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT" />
-        <enum value="3"      name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT" />
-    </enums>
-    <enums name="VkOpticalFlowGridSizeFlagBitsNV" type="bitmask">
-        <enum value="0"       name="VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV"/>
-        <enum bitpos="0"      name="VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV"/>
-        <enum bitpos="1"      name="VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV"/>
-        <enum bitpos="2"      name="VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV"/>
-        <enum bitpos="3"      name="VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV"/>
-    </enums>
-    <enums name="VkOpticalFlowUsageFlagBitsNV" type="bitmask">
-        <enum value="0"       name="VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV"/>
-        <enum bitpos="0"      name="VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV"/>
-        <enum bitpos="1"      name="VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV"/>
-        <enum bitpos="2"      name="VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV"/>
-        <enum bitpos="3"      name="VK_OPTICAL_FLOW_USAGE_COST_BIT_NV"/>
-        <enum bitpos="4"      name="VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV"/>
-    </enums>
-    <enums name="VkOpticalFlowPerformanceLevelNV" type="enum">
-        <enum value="0"       name="VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV"/>
-        <enum value="1"       name="VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV"/>
-        <enum value="2"       name="VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV"/>
-        <enum value="3"       name="VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV"/>
-    </enums>
-    <enums name="VkOpticalFlowSessionBindingPointNV" type="enum">
-        <enum value="0"       name="VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV"/>
-        <enum value="1"       name="VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV"/>
-        <enum value="2"       name="VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV"/>
-        <enum value="3"       name="VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV"/>
-        <enum value="4"       name="VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV"/>
-        <enum value="5"       name="VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV"/>
-        <enum value="6"       name="VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV"/>
-        <enum value="7"       name="VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV"/>
-        <enum value="8"       name="VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV"/>
-    </enums>
-    <enums name="VkOpticalFlowSessionCreateFlagBitsNV" type="bitmask">
-        <enum bitpos="0"      name="VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV"/>
-        <enum bitpos="1"      name="VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV"/>
-        <enum bitpos="2"      name="VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV"/>
-        <enum bitpos="3"      name="VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV"/>
-        <enum bitpos="4"      name="VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV"/>
-    </enums>
-    <enums name="VkOpticalFlowExecuteFlagBitsNV" type="bitmask">
-        <enum bitpos="0"      name="VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV"/>
-    </enums>
-    <enums name="VkMicromapTypeEXT" type="enum">
-        <enum value="0" name="VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT"/>
-    </enums>
-    <enums name="VkBuildMicromapFlagBitsEXT" type="bitmask">
-        <enum bitpos="0" name="VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT"/>
-        <enum bitpos="1" name="VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT"/>
-        <enum bitpos="2" name="VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT"/>
-    </enums>
-    <enums name="VkMicromapCreateFlagBitsEXT" type="bitmask">
-        <enum bitpos="0" name="VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"/>
-    </enums>
-    <enums name="VkCopyMicromapModeEXT" type="enum">
-        <enum value="0" name="VK_COPY_MICROMAP_MODE_CLONE_EXT"/>
-        <enum value="1" name="VK_COPY_MICROMAP_MODE_SERIALIZE_EXT"/>
-        <enum value="2" name="VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT"/>
-        <enum value="3" name="VK_COPY_MICROMAP_MODE_COMPACT_EXT"/>
-    </enums>
-    <enums name="VkBuildMicromapModeEXT" type="enum">
-        <enum value="0" name="VK_BUILD_MICROMAP_MODE_BUILD_EXT"/>
-    </enums>
-    <enums name="VkOpacityMicromapFormatEXT" type="enum">
-        <enum value="1" name="VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT"/>
-        <enum value="2" name="VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT"/>
-    </enums>
-    <enums name="VkOpacityMicromapSpecialIndexEXT" type="enum">
-        <enum value="-1" name="VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT"/>
-        <enum value="-2" name="VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT"/>
-        <enum value="-3" name="VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT"/>
-        <enum value="-4" name="VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT"/>
-    </enums>
-    <enums name="VkDepthBiasRepresentationEXT" type="enum">
-        <enum value="0"     name="VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT"/>
-        <enum value="1"     name="VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT"/>
-        <enum value="2"     name="VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT"/>
-    </enums>
-    <enums name="VkDeviceFaultAddressTypeEXT" type="enum">
-        <enum value="0"     name="VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT" comment="Currently unused"/>
-        <enum value="1"     name="VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT"/>
-        <enum value="2"     name="VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT"/>
-        <enum value="3"     name="VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT"/>
-        <enum value="4"     name="VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT"/>
-        <enum value="5"     name="VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT"/>
-        <enum value="6"     name="VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT"/>
-    </enums>
-    <enums name="VkDeviceFaultVendorBinaryHeaderVersionEXT" type="enum">
-        <enum value="1"     name="VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT"/>
-    </enums>
-    <enums name="VkDisplacementMicromapFormatNV" type="enum">
-        <enum value="1" name="VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV"/>
-        <enum value="2" name="VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV"/>
-        <enum value="3" name="VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV"/>
-    </enums>
-    <enums name="VkShaderCreateFlagBitsEXT" type="bitmask">
-        <enum bitpos="0" name="VK_SHADER_CREATE_LINK_STAGE_BIT_EXT"/>
-    </enums>
-    <enums name="VkShaderCodeTypeEXT" type="enum">
-        <enum value="0" name="VK_SHADER_CODE_TYPE_BINARY_EXT"/>
-        <enum value="1" name="VK_SHADER_CODE_TYPE_SPIRV_EXT"/>
-    </enums>
-    <enums name="VkScopeKHR" type="enum">
-        <enum value="1"     name="VK_SCOPE_DEVICE_KHR"/>
-        <enum value="2"     name="VK_SCOPE_WORKGROUP_KHR"/>
-        <enum value="3"     name="VK_SCOPE_SUBGROUP_KHR"/>
-        <enum value="5"     name="VK_SCOPE_QUEUE_FAMILY_KHR"/>
-    </enums>
-    <enums name="VkComponentTypeKHR" type="enum">
-        <enum value="0"     name="VK_COMPONENT_TYPE_FLOAT16_KHR"/>
-        <enum value="1"     name="VK_COMPONENT_TYPE_FLOAT32_KHR"/>
-        <enum value="2"     name="VK_COMPONENT_TYPE_FLOAT64_KHR"/>
-        <enum value="3"     name="VK_COMPONENT_TYPE_SINT8_KHR"/>
-        <enum value="4"     name="VK_COMPONENT_TYPE_SINT16_KHR"/>
-        <enum value="5"     name="VK_COMPONENT_TYPE_SINT32_KHR"/>
-        <enum value="6"     name="VK_COMPONENT_TYPE_SINT64_KHR"/>
-        <enum value="7"     name="VK_COMPONENT_TYPE_UINT8_KHR"/>
-        <enum value="8"     name="VK_COMPONENT_TYPE_UINT16_KHR"/>
-        <enum value="9"     name="VK_COMPONENT_TYPE_UINT32_KHR"/>
-        <enum value="10"    name="VK_COMPONENT_TYPE_UINT64_KHR"/>
-    </enums>
-    <enums name="VkCubicFilterWeightsQCOM" type="enum">
-        <enum value="0"     name="VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM"/>
-        <enum value="1"     name="VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM"/>
-        <enum value="2"     name="VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM"/>
-        <enum value="3"     name="VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM"/>
-    </enums>
-    <enums name="VkBlockMatchWindowCompareModeQCOM" type="enum">
-        <enum value="0" name="VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM"/>
-        <enum value="1" name="VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM"/>
-    </enums>
-    <enums name="VkLayeredDriverUnderlyingApiMSFT" type="enum">
-        <enum value="0" name="VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT"/>
-        <enum value="1" name="VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT"/>
-    </enums>
-    <enums name="VkLatencyMarkerNV" type="enum">
-        <enum value="0"    name="VK_LATENCY_MARKER_SIMULATION_START_NV"/>
-        <enum value="1"    name="VK_LATENCY_MARKER_SIMULATION_END_NV"/>
-        <enum value="2"    name="VK_LATENCY_MARKER_RENDERSUBMIT_START_NV"/>
-        <enum value="3"    name="VK_LATENCY_MARKER_RENDERSUBMIT_END_NV"/>
-        <enum value="4"    name="VK_LATENCY_MARKER_PRESENT_START_NV"/>
-        <enum value="5"    name="VK_LATENCY_MARKER_PRESENT_END_NV"/>
-        <enum value="6"    name="VK_LATENCY_MARKER_INPUT_SAMPLE_NV"/>
-        <enum value="7"    name="VK_LATENCY_MARKER_TRIGGER_FLASH_NV"/>
-        <enum value="8"    name="VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV"/>
-        <enum value="9"    name="VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV"/>
-        <enum value="10"   name="VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV"/>
-        <enum value="11"   name="VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV"/>
-    </enums>
-    <enums name="VkOutOfBandQueueTypeNV" type="enum">
-        <enum value="0"    name="VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV"/>
-        <enum value="1"    name="VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV"/>
-    </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">
-            <proto><type>VkResult</type> <name>vkCreateInstance</name></proto>
-            <param>const <type>VkInstanceCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkInstance</type>* <name>pInstance</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyInstance</name></proto>
-            <param optional="true" externsync="true"><type>VkInstance</type> <name>instance</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <implicitexternsyncparams>
-                <param>all sname:VkPhysicalDevice objects enumerated from pname:instance</param>
-            </implicitexternsyncparams>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkEnumeratePhysicalDevices</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPhysicalDeviceCount</name></param>
-            <param optional="true" len="pPhysicalDeviceCount"><type>VkPhysicalDevice</type>* <name>pPhysicalDevices</name></param>
-        </command>
-        <command>
-            <proto><type>PFN_vkVoidFunction</type> <name>vkGetDeviceProcAddr</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param len="null-terminated">const <type>char</type>* <name>pName</name></param>
-        </command>
-        <command>
-            <proto><type>PFN_vkVoidFunction</type> <name>vkGetInstanceProcAddr</name></proto>
-            <param optional="true"><type>VkInstance</type> <name>instance</name></param>
-            <param len="null-terminated">const <type>char</type>* <name>pName</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkPhysicalDeviceProperties</type>* <name>pProperties</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceQueueFamilyProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pQueueFamilyPropertyCount</name></param>
-            <param optional="true" len="pQueueFamilyPropertyCount"><type>VkQueueFamilyProperties</type>* <name>pQueueFamilyProperties</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceMemoryProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkPhysicalDeviceMemoryProperties</type>* <name>pMemoryProperties</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceFeatures</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkPhysicalDeviceFeatures</type>* <name>pFeatures</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceFormatProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkFormat</type> <name>format</name></param>
-            <param><type>VkFormatProperties</type>* <name>pFormatProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceImageFormatProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkFormat</type> <name>format</name></param>
-            <param><type>VkImageType</type> <name>type</name></param>
-            <param><type>VkImageTiling</type> <name>tiling</name></param>
-            <param><type>VkImageUsageFlags</type> <name>usage</name></param>
-            <param optional="true"><type>VkImageCreateFlags</type> <name>flags</name></param>
-            <param><type>VkImageFormatProperties</type>* <name>pImageFormatProperties</name></param>
-        </command>
-        <command api="vulkan" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_FEATURE_NOT_PRESENT,VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkCreateDevice</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkDeviceCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDevice</type>* <name>pDevice</name></param>
-        </command>
-        <command api="vulkansc" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_FEATURE_NOT_PRESENT,VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_DEVICE_LOST,VK_ERROR_INVALID_PIPELINE_CACHE_DATA">
-            <proto><type>VkResult</type> <name>vkCreateDevice</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkDeviceCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDevice</type>* <name>pDevice</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyDevice</name></proto>
-            <param optional="true" externsync="true"><type>VkDevice</type> <name>device</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <implicitexternsyncparams>
-                <param>all sname:VkQueue objects created from pname:device</param>
-            </implicitexternsyncparams>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkEnumerateInstanceVersion</name></proto>
-            <param><type>uint32_t</type>* <name>pApiVersion</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkEnumerateInstanceLayerProperties</name></proto>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkLayerProperties</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_LAYER_NOT_PRESENT">
-            <proto><type>VkResult</type> <name>vkEnumerateInstanceExtensionProperties</name></proto>
-            <param optional="true" len="null-terminated">const <type>char</type>* <name>pLayerName</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param>
-        </command>
-        <command api="vulkan" successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkEnumerateDeviceLayerProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkLayerProperties</type>* <name>pProperties</name></param>
-        </command>
-        <command api="vulkansc" successcodes="VK_SUCCESS">
-            <proto><type>VkResult</type> <name>vkEnumerateDeviceLayerProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkLayerProperties</type>* <name>pProperties</name></param>
-        </command>
-
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_LAYER_NOT_PRESENT">
-            <proto><type>VkResult</type> <name>vkEnumerateDeviceExtensionProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="true" len="null-terminated">const <type>char</type>* <name>pLayerName</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceQueue</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
-            <param><type>uint32_t</type> <name>queueIndex</name></param>
-            <param><type>VkQueue</type>* <name>pQueue</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkQueueSubmit</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-            <param optional="true"><type>uint32_t</type> <name>submitCount</name></param>
-            <param len="submitCount">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param>
-            <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkQueueWaitIdle</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkDeviceWaitIdle</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <implicitexternsyncparams>
-                <param>all sname:VkQueue objects created from pname:device</param>
-            </implicitexternsyncparams>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
-            <proto><type>VkResult</type> <name>vkAllocateMemory</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryAllocateInfo</type>* <name>pAllocateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDeviceMemory</type>* <name>pMemory</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkFreeMemory</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED">
-            <proto><type>VkResult</type> <name>vkMapMemory</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>VkDeviceSize</type> <name>size</name></param>
-            <param optional="true"><type>VkMemoryMapFlags</type> <name>flags</name></param>
-            <param optional="false,true"><type>void</type>** <name>ppData</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkUnmapMemory</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDeviceMemory</type> <name>memory</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>vkFlushMappedMemoryRanges</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>memoryRangeCount</name></param>
-            <param len="memoryRangeCount">const <type>VkMappedMemoryRange</type>* <name>pMemoryRanges</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>vkInvalidateMappedMemoryRanges</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>memoryRangeCount</name></param>
-            <param len="memoryRangeCount">const <type>VkMappedMemoryRange</type>* <name>pMemoryRanges</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceMemoryCommitment</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param><type>VkDeviceSize</type>* <name>pCommittedMemoryInBytes</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetBufferMemoryRequirements</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
-            <proto><type>VkResult</type> <name>vkBindBufferMemory</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param><type>VkDeviceSize</type> <name>memoryOffset</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetImageMemoryRequirements</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</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>vkBindImageMemory</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkImage</type> <name>image</name></param>
-            <param><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param><type>VkDeviceSize</type> <name>memoryOffset</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetImageSparseMemoryRequirements</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param>
-            <param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements</type>* <name>pSparseMemoryRequirements</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceSparseImageFormatProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkFormat</type> <name>format</name></param>
-            <param><type>VkImageType</type> <name>type</name></param>
-            <param><type>VkSampleCountFlagBits</type> <name>samples</name></param>
-            <param><type>VkImageUsageFlags</type> <name>usage</name></param>
-            <param><type>VkImageTiling</type> <name>tiling</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkSparseImageFormatProperties</type>* <name>pProperties</name></param>
-        </command>
-        <command queues="sparse_binding" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkQueueBindSparse</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-            <param optional="true"><type>uint32_t</type> <name>bindInfoCount</name></param>
-            <param len="bindInfoCount">const <type>VkBindSparseInfo</type>* <name>pBindInfo</name></param>
-            <param optional="true" externsync="true"><type>VkFence</type> <name>fence</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>vkCreateFence</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkFenceCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkFence</type>* <name>pFence</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyFence</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkResetFences</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>fenceCount</name></param>
-            <param len="fenceCount" externsync="true">const <type>VkFence</type>* <name>pFences</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_NOT_READY" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkGetFenceStatus</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkFence</type> <name>fence</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_TIMEOUT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkWaitForFences</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>fenceCount</name></param>
-            <param len="fenceCount">const <type>VkFence</type>* <name>pFences</name></param>
-            <param><type>VkBool32</type> <name>waitAll</name></param>
-            <param><type>uint64_t</type> <name>timeout</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>vkCreateSemaphore</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSemaphoreCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSemaphore</type>* <name>pSemaphore</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroySemaphore</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkSemaphore</type> <name>semaphore</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</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>vkCreateEvent</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkEventCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkEvent</type>* <name>pEvent</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyEvent</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkEvent</type> <name>event</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_EVENT_SET,VK_EVENT_RESET" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkGetEventStatus</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkEvent</type> <name>event</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>vkSetEvent</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkEvent</type> <name>event</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkResetEvent</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkEvent</type> <name>event</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>vkCreateQueryPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkQueryPoolCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkQueryPool</type>* <name>pQueryPool</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyQueryPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_NOT_READY" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkGetQueryPoolResults</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>firstQuery</name></param>
-            <param><type>uint32_t</type> <name>queryCount</name></param>
-            <param><type>size_t</type> <name>dataSize</name></param>
-            <param len="dataSize"><type>void</type>* <name>pData</name></param>
-            <param><type>VkDeviceSize</type> <name>stride</name></param>
-            <param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkResetQueryPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>firstQuery</name></param>
-            <param><type>uint32_t</type> <name>queryCount</name></param>
-        </command>
-        <command name="vkResetQueryPoolEXT"                        alias="vkResetQueryPool"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
-            <proto><type>VkResult</type> <name>vkCreateBuffer</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkBufferCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkBuffer</type>* <name>pBuffer</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyBuffer</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkBuffer</type> <name>buffer</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</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>vkCreateBufferView</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkBufferViewCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkBufferView</type>* <name>pView</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyBufferView</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkBufferView</type> <name>bufferView</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_COMPRESSION_EXHAUSTED_EXT,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
-            <proto><type>VkResult</type> <name>vkCreateImage</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImageCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkImage</type>* <name>pImage</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyImage</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkImage</type> <name>image</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetImageSubresourceLayout</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param>const <type>VkImageSubresource</type>* <name>pSubresource</name></param>
-            <param><type>VkSubresourceLayout</type>* <name>pLayout</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
-            <proto><type>VkResult</type> <name>vkCreateImageView</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImageViewCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkImageView</type>* <name>pView</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyImageView</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkImageView</type> <name>imageView</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV">
-            <proto><type>VkResult</type> <name>vkCreateShaderModule</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkShaderModuleCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkShaderModule</type>* <name>pShaderModule</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyShaderModule</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkShaderModule</type> <name>shaderModule</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command api="vulkan" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreatePipelineCache</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkPipelineCacheCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkPipelineCache</type>* <name>pPipelineCache</name></param>
-        </command>
-        <command api="vulkansc" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_PIPELINE_CACHE_DATA">
-            <proto><type>VkResult</type> <name>vkCreatePipelineCache</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkPipelineCacheCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkPipelineCache</type>* <name>pPipelineCache</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyPipelineCache</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPipelineCacheData</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param optional="false,true"><type>size_t</type>* <name>pDataSize</name></param>
-            <param optional="true" len="pDataSize"><type>void</type>* <name>pData</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>vkMergePipelineCaches</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkPipelineCache</type> <name>dstCache</name></param>
-            <param><type>uint32_t</type> <name>srcCacheCount</name></param>
-            <param len="srcCacheCount">const <type>VkPipelineCache</type>* <name>pSrcCaches</name></param>
-        </command>
-        <command api="vulkan" successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV">
-            <proto><type>VkResult</type> <name>vkCreateGraphicsPipelines</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param><type>uint32_t</type> <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkGraphicsPipelineCreateInfo</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
-        </command>
-        <command api="vulkansc" successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NO_PIPELINE_MATCH,VK_ERROR_OUT_OF_POOL_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateGraphicsPipelines</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param><type>uint32_t</type> <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkGraphicsPipelineCreateInfo</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
-        </command>
-        <command api="vulkan" successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV">
-            <proto><type>VkResult</type> <name>vkCreateComputePipelines</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param><type>uint32_t</type> <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkComputePipelineCreateInfo</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
-        </command>
-        <command api="vulkansc" successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NO_PIPELINE_MATCH,VK_ERROR_OUT_OF_POOL_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateComputePipelines</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param><type>uint32_t</type> <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkComputePipelineCreateInfo</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkRenderPass</type> <name>renderpass</name></param>
-            <param><type>VkExtent2D</type>* <name>pMaxWorkgroupSize</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyPipeline</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkPipeline</type> <name>pipeline</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</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>vkCreatePipelineLayout</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkPipelineLayoutCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkPipelineLayout</type>* <name>pPipelineLayout</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyPipelineLayout</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkPipelineLayout</type> <name>pipelineLayout</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
-            <proto><type>VkResult</type> <name>vkCreateSampler</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSamplerCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSampler</type>* <name>pSampler</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroySampler</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkSampler</type> <name>sampler</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</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>vkCreateDescriptorSetLayout</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDescriptorSetLayoutCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDescriptorSetLayout</type>* <name>pSetLayout</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyDescriptorSetLayout</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkDescriptorSetLayout</type> <name>descriptorSetLayout</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FRAGMENTATION_EXT">
-            <proto><type>VkResult</type> <name>vkCreateDescriptorPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDescriptorPoolCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDescriptorPool</type>* <name>pDescriptorPool</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyDescriptorPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS">
-            <proto><type>VkResult</type> <name>vkResetDescriptorPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param>
-            <param optional="true"><type>VkDescriptorPoolResetFlags</type> <name>flags</name></param>
-            <implicitexternsyncparams>
-                <param>any sname:VkDescriptorSet objects allocated from pname:descriptorPool</param>
-            </implicitexternsyncparams>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FRAGMENTED_POOL,VK_ERROR_OUT_OF_POOL_MEMORY">
-            <proto><type>VkResult</type> <name>vkAllocateDescriptorSets</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="pAllocateInfo-&gt;descriptorPool">const <type>VkDescriptorSetAllocateInfo</type>* <name>pAllocateInfo</name></param>
-            <param len="pAllocateInfo-&gt;descriptorSetCount"><type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS">
-            <proto><type>VkResult</type> <name>vkFreeDescriptorSets</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param>
-            <param><type>uint32_t</type> <name>descriptorSetCount</name></param>
-            <param noautovalidity="true" externsync="true" len="descriptorSetCount">const <type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkUpdateDescriptorSets</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>uint32_t</type> <name>descriptorWriteCount</name></param>
-            <param len="descriptorWriteCount">const <type>VkWriteDescriptorSet</type>* <name>pDescriptorWrites</name></param>
-            <param optional="true"><type>uint32_t</type> <name>descriptorCopyCount</name></param>
-            <param len="descriptorCopyCount">const <type>VkCopyDescriptorSet</type>* <name>pDescriptorCopies</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>vkCreateFramebuffer</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkFramebufferCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkFramebuffer</type>* <name>pFramebuffer</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyFramebuffer</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkFramebuffer</type> <name>framebuffer</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</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>vkCreateRenderPass</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkRenderPassCreateInfo</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>
-            <proto><type>void</type> <name>vkDestroyRenderPass</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkRenderPass</type> <name>renderPass</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetRenderAreaGranularity</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkRenderPass</type> <name>renderPass</name></param>
-            <param><type>VkExtent2D</type>* <name>pGranularity</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetRenderingAreaGranularityKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkRenderingAreaInfoKHR</type>* <name>pRenderingAreaInfo</name></param>
-            <param><type>VkExtent2D</type>* <name>pGranularity</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>vkCreateCommandPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkCommandPoolCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkCommandPool</type>* <name>pCommandPool</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyCommandPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkResetCommandPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
-            <param optional="true"><type>VkCommandPoolResetFlags</type> <name>flags</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>vkAllocateCommandBuffers</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="pAllocateInfo-&gt;commandPool">const <type>VkCommandBufferAllocateInfo</type>* <name>pAllocateInfo</name></param>
-            <param len="pAllocateInfo-&gt;commandBufferCount"><type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkFreeCommandBuffers</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
-            <param><type>uint32_t</type> <name>commandBufferCount</name></param>
-            <param noautovalidity="true" externsync="true" len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</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>vkBeginCommandBuffer</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCommandBufferBeginInfo</type>* <name>pBeginInfo</name></param>
-            <implicitexternsyncparams>
-                <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
-            </implicitexternsyncparams>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR">
-            <proto><type>VkResult</type> <name>vkEndCommandBuffer</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <implicitexternsyncparams>
-                <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
-            </implicitexternsyncparams>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkResetCommandBuffer</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>VkCommandBufferResetFlags</type> <name>flags</name></param>
-            <implicitexternsyncparams>
-                <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
-            </implicitexternsyncparams>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindPipeline</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
-            <param><type>VkPipeline</type> <name>pipeline</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetAttachmentFeedbackLoopEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>VkImageAspectFlags</type> <name>aspectMask</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetViewport</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstViewport</name></param>
-            <param><type>uint32_t</type> <name>viewportCount</name></param>
-            <param len="viewportCount">const <type>VkViewport</type>* <name>pViewports</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetScissor</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstScissor</name></param>
-            <param><type>uint32_t</type> <name>scissorCount</name></param>
-            <param len="scissorCount">const <type>VkRect2D</type>* <name>pScissors</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetLineWidth</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>float</type> <name>lineWidth</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthBias</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>float</type> <name>depthBiasConstantFactor</name></param>
-            <param><type>float</type> <name>depthBiasClamp</name></param>
-            <param><type>float</type> <name>depthBiasSlopeFactor</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetBlendConstants</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>float</type> <name>blendConstants</name>[4]</param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthBounds</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>float</type> <name>minDepthBounds</name></param>
-            <param><type>float</type> <name>maxDepthBounds</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetStencilCompareMask</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param>
-            <param><type>uint32_t</type> <name>compareMask</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetStencilWriteMask</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param>
-            <param><type>uint32_t</type> <name>writeMask</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetStencilReference</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param>
-            <param><type>uint32_t</type> <name>reference</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindDescriptorSets</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
-            <param><type>VkPipelineLayout</type> <name>layout</name></param>
-            <param><type>uint32_t</type> <name>firstSet</name></param>
-            <param><type>uint32_t</type> <name>descriptorSetCount</name></param>
-            <param len="descriptorSetCount" optional="false,true">const <type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param>
-            <param optional="true"><type>uint32_t</type> <name>dynamicOffsetCount</name></param>
-            <param len="dynamicOffsetCount">const <type>uint32_t</type>* <name>pDynamicOffsets</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindIndexBuffer</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>VkIndexType</type> <name>indexType</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindVertexBuffers</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstBinding</name></param>
-            <param><type>uint32_t</type> <name>bindingCount</name></param>
-            <param len="bindingCount" optional="false,true">const <type>VkBuffer</type>* <name>pBuffers</name></param>
-            <param len="bindingCount">const <type>VkDeviceSize</type>* <name>pOffsets</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDraw</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>vertexCount</name></param>
-            <param><type>uint32_t</type> <name>instanceCount</name></param>
-            <param><type>uint32_t</type> <name>firstVertex</name></param>
-            <param><type>uint32_t</type> <name>firstInstance</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawIndexed</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>indexCount</name></param>
-            <param><type>uint32_t</type> <name>instanceCount</name></param>
-            <param><type>uint32_t</type> <name>firstIndex</name></param>
-            <param><type>int32_t</type> <name>vertexOffset</name></param>
-            <param><type>uint32_t</type> <name>firstInstance</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawMultiEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>uint32_t</type> <name>drawCount</name></param>
-            <param noautovalidity="true" len="drawCount" stride="stride">const <type>VkMultiDrawInfoEXT</type>* <name>pVertexInfo</name></param>
-            <param><type>uint32_t</type> <name>instanceCount</name></param>
-            <param><type>uint32_t</type> <name>firstInstance</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawMultiIndexedEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>uint32_t</type> <name>drawCount</name></param>
-            <param noautovalidity="true" len="drawCount" stride="stride">const <type>VkMultiDrawIndexedInfoEXT</type>* <name>pIndexInfo</name></param>
-            <param><type>uint32_t</type> <name>instanceCount</name></param>
-            <param><type>uint32_t</type> <name>firstInstance</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-            <param optional="true">const <type>int32_t</type>* <name>pVertexOffset</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawIndirect</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>uint32_t</type> <name>drawCount</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawIndexedIndirect</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>uint32_t</type> <name>drawCount</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDispatch</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>groupCountX</name></param>
-            <param><type>uint32_t</type> <name>groupCountY</name></param>
-            <param><type>uint32_t</type> <name>groupCountZ</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDispatchIndirect</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdSubpassShadingHUAWEI</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawClusterHUAWEI</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>groupCountX</name></param>
-            <param><type>uint32_t</type> <name>groupCountY</name></param>
-            <param><type>uint32_t</type> <name>groupCountZ</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawClusterIndirectHUAWEI</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdUpdatePipelineIndirectBufferNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPipelineBindPoint</type>           <name>pipelineBindPoint</name></param>
-            <param><type>VkPipeline</type>                    <name>pipeline</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyBuffer</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>srcBuffer</name></param>
-            <param><type>VkBuffer</type> <name>dstBuffer</name></param>
-            <param><type>uint32_t</type> <name>regionCount</name></param>
-            <param len="regionCount">const <type>VkBufferCopy</type>* <name>pRegions</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyImage</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkImage</type> <name>srcImage</name></param>
-            <param><type>VkImageLayout</type> <name>srcImageLayout</name></param>
-            <param><type>VkImage</type> <name>dstImage</name></param>
-            <param><type>VkImageLayout</type> <name>dstImageLayout</name></param>
-            <param><type>uint32_t</type> <name>regionCount</name></param>
-            <param len="regionCount">const <type>VkImageCopy</type>* <name>pRegions</name></param>
-        </command>
-        <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdBlitImage</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkImage</type> <name>srcImage</name></param>
-            <param><type>VkImageLayout</type> <name>srcImageLayout</name></param>
-            <param><type>VkImage</type> <name>dstImage</name></param>
-            <param><type>VkImageLayout</type> <name>dstImageLayout</name></param>
-            <param><type>uint32_t</type> <name>regionCount</name></param>
-            <param len="regionCount">const <type>VkImageBlit</type>* <name>pRegions</name></param>
-            <param><type>VkFilter</type> <name>filter</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyBufferToImage</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>srcBuffer</name></param>
-            <param><type>VkImage</type> <name>dstImage</name></param>
-            <param><type>VkImageLayout</type> <name>dstImageLayout</name></param>
-            <param><type>uint32_t</type> <name>regionCount</name></param>
-            <param len="regionCount">const <type>VkBufferImageCopy</type>* <name>pRegions</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyImageToBuffer</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkImage</type> <name>srcImage</name></param>
-            <param><type>VkImageLayout</type> <name>srcImageLayout</name></param>
-            <param><type>VkBuffer</type> <name>dstBuffer</name></param>
-            <param><type>uint32_t</type> <name>regionCount</name></param>
-            <param len="regionCount">const <type>VkBufferImageCopy</type>* <name>pRegions</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyMemoryIndirectNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkDeviceAddress</type> <name>copyBufferAddress</name></param>
-            <param><type>uint32_t</type> <name>copyCount</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyMemoryToImageIndirectNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkDeviceAddress</type> <name>copyBufferAddress</name></param>
-            <param><type>uint32_t</type> <name>copyCount</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-            <param><type>VkImage</type> <name>dstImage</name></param>
-            <param><type>VkImageLayout</type> <name>dstImageLayout</name></param>
-            <param len="copyCount">const <type>VkImageSubresourceLayers</type>* <name>pImageSubresources</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdUpdateBuffer</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>dstBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>dstOffset</name></param>
-            <param><type>VkDeviceSize</type> <name>dataSize</name></param>
-            <param len="dataSize">const <type>void</type>* <name>pData</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action" comment="transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification">
-            <proto><type>void</type> <name>vkCmdFillBuffer</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>dstBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>dstOffset</name></param>
-            <param><type>VkDeviceSize</type> <name>size</name></param>
-            <param><type>uint32_t</type> <name>data</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdClearColorImage</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param><type>VkImageLayout</type> <name>imageLayout</name></param>
-            <param noautovalidity="true">const <type>VkClearColorValue</type>* <name>pColor</name></param>
-            <param><type>uint32_t</type> <name>rangeCount</name></param>
-            <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
-        </command>
-        <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdClearDepthStencilImage</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param><type>VkImageLayout</type> <name>imageLayout</name></param>
-            <param>const <type>VkClearDepthStencilValue</type>* <name>pDepthStencil</name></param>
-            <param><type>uint32_t</type> <name>rangeCount</name></param>
-            <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdClearAttachments</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>attachmentCount</name></param>
-            <param len="attachmentCount">const <type>VkClearAttachment</type>* <name>pAttachments</name></param>
-            <param><type>uint32_t</type> <name>rectCount</name></param>
-            <param len="rectCount">const <type>VkClearRect</type>* <name>pRects</name></param>
-        </command>
-        <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdResolveImage</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkImage</type> <name>srcImage</name></param>
-            <param><type>VkImageLayout</type> <name>srcImageLayout</name></param>
-            <param><type>VkImage</type> <name>dstImage</name></param>
-            <param><type>VkImageLayout</type> <name>dstImageLayout</name></param>
-            <param><type>uint32_t</type> <name>regionCount</name></param>
-            <param len="regionCount">const <type>VkImageResolve</type>* <name>pRegions</name></param>
-        </command>
-        <command queues="graphics,compute,decode,encode" renderpass="outside" videocoding="both" cmdbufferlevel="primary,secondary" tasks="synchronization">
-            <proto><type>void</type> <name>vkCmdSetEvent</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkEvent</type> <name>event</name></param>
-            <param optional="true"><type>VkPipelineStageFlags</type> <name>stageMask</name></param>
-        </command>
-        <command queues="graphics,compute,decode,encode" renderpass="outside" videocoding="both" cmdbufferlevel="primary,secondary" tasks="synchronization">
-            <proto><type>void</type> <name>vkCmdResetEvent</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkEvent</type> <name>event</name></param>
-            <param optional="true"><type>VkPipelineStageFlags</type> <name>stageMask</name></param>
-        </command>
-        <command queues="graphics,compute,decode,encode" renderpass="both" videocoding="both" cmdbufferlevel="primary,secondary" tasks="synchronization">
-            <proto><type>void</type> <name>vkCmdWaitEvents</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>eventCount</name></param>
-            <param len="eventCount">const <type>VkEvent</type>* <name>pEvents</name></param>
-            <param optional="true"><type>VkPipelineStageFlags</type> <name>srcStageMask</name></param>
-            <param optional="true"><type>VkPipelineStageFlags</type> <name>dstStageMask</name></param>
-            <param optional="true"><type>uint32_t</type> <name>memoryBarrierCount</name></param>
-            <param len="memoryBarrierCount">const <type>VkMemoryBarrier</type>* <name>pMemoryBarriers</name></param>
-            <param optional="true"><type>uint32_t</type> <name>bufferMemoryBarrierCount</name></param>
-            <param len="bufferMemoryBarrierCount">const <type>VkBufferMemoryBarrier</type>* <name>pBufferMemoryBarriers</name></param>
-            <param optional="true"><type>uint32_t</type> <name>imageMemoryBarrierCount</name></param>
-            <param len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier</type>* <name>pImageMemoryBarriers</name></param>
-        </command>
-        <command queues="transfer,graphics,compute,decode,encode" renderpass="both" videocoding="both" cmdbufferlevel="primary,secondary" tasks="synchronization">
-            <proto><type>void</type> <name>vkCmdPipelineBarrier</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>VkPipelineStageFlags</type> <name>srcStageMask</name></param>
-            <param optional="true"><type>VkPipelineStageFlags</type> <name>dstStageMask</name></param>
-            <param optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></param>
-            <param optional="true"><type>uint32_t</type> <name>memoryBarrierCount</name></param>
-            <param len="memoryBarrierCount">const <type>VkMemoryBarrier</type>* <name>pMemoryBarriers</name></param>
-            <param optional="true"><type>uint32_t</type> <name>bufferMemoryBarrierCount</name></param>
-            <param len="bufferMemoryBarrierCount">const <type>VkBufferMemoryBarrier</type>* <name>pBufferMemoryBarriers</name></param>
-            <param optional="true"><type>uint32_t</type> <name>imageMemoryBarrierCount</name></param>
-            <param len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier</type>* <name>pImageMemoryBarriers</name></param>
-        </command>
-        <command queues="graphics,compute,decode,encode" renderpass="both" videocoding="both" cmdbufferlevel="primary,secondary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdBeginQuery</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>query</name></param>
-            <param optional="true"><type>VkQueryControlFlags</type> <name>flags</name></param>
-        </command>
-        <command queues="graphics,compute,decode,encode" renderpass="both" videocoding="both" cmdbufferlevel="primary,secondary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdEndQuery</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <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" tasks="action,state">
-            <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" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdEndConditionalRenderingEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-        </command>
-        <command queues="graphics,compute,decode,encode,opticalflow" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdResetQueryPool</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>firstQuery</name></param>
-            <param><type>uint32_t</type> <name>queryCount</name></param>
-        </command>
-        <command queues="transfer,graphics,compute,decode,encode,opticalflow" renderpass="both" videocoding="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdWriteTimestamp</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPipelineStageFlagBits</type> <name>pipelineStage</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>query</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyQueryPoolResults</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>firstQuery</name></param>
-            <param><type>uint32_t</type> <name>queryCount</name></param>
-            <param><type>VkBuffer</type> <name>dstBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>dstOffset</name></param>
-            <param><type>VkDeviceSize</type> <name>stride</name></param>
-            <param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdPushConstants</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPipelineLayout</type> <name>layout</name></param>
-            <param><type>VkShaderStageFlags</type> <name>stageFlags</name></param>
-            <param><type>uint32_t</type> <name>offset</name></param>
-            <param><type>uint32_t</type> <name>size</name></param>
-            <param len="size">const <type>void</type>* <name>pValues</name></param>
-        </command>
-        <command queues="graphics" renderpass="outside" cmdbufferlevel="primary" tasks="action,state,synchronization">
-            <proto><type>void</type> <name>vkCmdBeginRenderPass</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkRenderPassBeginInfo</type>* <name>pRenderPassBegin</name></param>
-            <param><type>VkSubpassContents</type> <name>contents</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary" tasks="action,state,synchronization">
-            <proto><type>void</type> <name>vkCmdNextSubpass</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkSubpassContents</type> <name>contents</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary" tasks="action,state,synchronization">
-            <proto><type>void</type> <name>vkCmdEndRenderPass</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="indirection">
-            <proto><type>void</type> <name>vkCmdExecuteCommands</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>commandBufferCount</name></param>
-            <param len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
-            <proto><type>VkResult</type> <name>vkCreateAndroidSurfaceKHR</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkAndroidSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayPropertiesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkDisplayPropertiesKHR</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkDisplayPlanePropertiesKHR</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetDisplayPlaneSupportedDisplaysKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>planeIndex</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pDisplayCount</name></param>
-            <param optional="true" len="pDisplayCount"><type>VkDisplayKHR</type>* <name>pDisplays</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetDisplayModePropertiesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkDisplayKHR</type> <name>display</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkDisplayModePropertiesKHR</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkCreateDisplayModeKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param externsync="true"><type>VkDisplayKHR</type> <name>display</name></param>
-            <param>const <type>VkDisplayModeCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDisplayModeKHR</type>* <name>pMode</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>vkGetDisplayPlaneCapabilitiesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param externsync="true"><type>VkDisplayModeKHR</type> <name>mode</name></param>
-            <param><type>uint32_t</type> <name>planeIndex</name></param>
-            <param><type>VkDisplayPlaneCapabilitiesKHR</type>* <name>pCapabilities</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>vkCreateDisplayPlaneSurfaceKHR</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkDisplaySurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,VK_ERROR_DEVICE_LOST,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkCreateSharedSwapchainsKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>swapchainCount</name></param>
-            <param api="vulkan" len="swapchainCount" externsync="pCreateInfos[].surface,pCreateInfos[].oldSwapchain">const <type>VkSwapchainCreateInfoKHR</type>* <name>pCreateInfos</name></param>
-            <param api="vulkansc" len="swapchainCount" externsync="pCreateInfos[].surface">const <type>VkSwapchainCreateInfoKHR</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="swapchainCount"><type>VkSwapchainKHR</type>* <name>pSwapchains</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroySurfaceKHR</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param optional="true" externsync="true"><type>VkSurfaceKHR</type> <name>surface</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceSupportKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
-            <param><type>VkSurfaceKHR</type> <name>surface</name></param>
-            <param><type>VkBool32</type>* <name>pSupported</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkSurfaceKHR</type> <name>surface</name></param>
-            <param><type>VkSurfaceCapabilitiesKHR</type>* <name>pSurfaceCapabilities</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceFormatsKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="true"><type>VkSurfaceKHR</type> <name>surface</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pSurfaceFormatCount</name></param>
-            <param optional="true" len="pSurfaceFormatCount"><type>VkSurfaceFormatKHR</type>* <name>pSurfaceFormats</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfacePresentModesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="true"><type>VkSurfaceKHR</type> <name>surface</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPresentModeCount</name></param>
-            <param optional="true" len="pPresentModeCount"><type>VkPresentModeKHR</type>* <name>pPresentModes</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_COMPRESSION_EXHAUSTED_EXT">
-            <proto><type>VkResult</type> <name>vkCreateSwapchainKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param api="vulkan" externsync="pCreateInfo-&gt;surface,pCreateInfo-&gt;oldSwapchain">const <type>VkSwapchainCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param api="vulkansc" externsync="pCreateInfo-&gt;surface">const <type>VkSwapchainCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSwapchainKHR</type>* <name>pSwapchain</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroySwapchainKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetSwapchainImagesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pSwapchainImageCount</name></param>
-            <param optional="true" len="pSwapchainImageCount"><type>VkImage</type>* <name>pSwapchainImages</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_NOT_READY,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT">
-            <proto><type>VkResult</type> <name>vkAcquireNextImageKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param><type>uint64_t</type> <name>timeout</name></param>
-            <param optional="true" externsync="true"><type>VkSemaphore</type> <name>semaphore</name></param>
-            <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
-            <param><type>uint32_t</type>* <name>pImageIndex</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT">
-            <proto><type>VkResult</type> <name>vkQueuePresentKHR</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-            <param externsync="pPresentInfo-&gt;pWaitSemaphores[],pPresentInfo-&gt;pSwapchains[]">const <type>VkPresentInfoKHR</type>* <name>pPresentInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
-            <proto><type>VkResult</type> <name>vkCreateViSurfaceNN</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkViSurfaceCreateInfoNN</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</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>vkCreateWaylandSurfaceKHR</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkWaylandSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command>
-            <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceWaylandPresentationSupportKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
-            <param>struct <type>wl_display</type>* <name>display</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>vkCreateWin32SurfaceKHR</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkWin32SurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command>
-            <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceWin32PresentationSupportKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>queueFamilyIndex</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>vkCreateXlibSurfaceKHR</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkXlibSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command>
-            <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceXlibPresentationSupportKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
-            <param><type>Display</type>* <name>dpy</name></param>
-            <param><type>VisualID</type> <name>visualID</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>vkCreateXcbSurfaceKHR</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkXcbSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command>
-            <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceXcbPresentationSupportKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
-            <param><type>xcb_connection_t</type>* <name>connection</name></param>
-            <param><type>xcb_visualid_t</type> <name>visual_id</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>vkCreateDirectFBSurfaceEXT</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkDirectFBSurfaceCreateInfoEXT</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command>
-            <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceDirectFBPresentationSupportEXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
-            <param><type>IDirectFB</type>* <name>dfb</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>vkCreateImagePipeSurfaceFUCHSIA</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkImagePipeSurfaceCreateInfoFUCHSIA</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
-            <proto><type>VkResult</type> <name>vkCreateStreamDescriptorSurfaceGGP</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkStreamDescriptorSurfaceCreateInfoGGP</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</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>vkCreateScreenSurfaceQNX</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkScreenSurfaceCreateInfoQNX</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command>
-            <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceScreenPresentationSupportQNX</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
-            <param>struct <type>_screen_window</type>* <name>window</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateDebugReportCallbackEXT</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkDebugReportCallbackCreateInfoEXT</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDebugReportCallbackEXT</type>* <name>pCallback</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyDebugReportCallbackEXT</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param optional="true" externsync="true"><type>VkDebugReportCallbackEXT</type> <name>callback</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDebugReportMessageEXT</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param><type>VkDebugReportFlagsEXT</type> <name>flags</name></param>
-            <param><type>VkDebugReportObjectTypeEXT</type> <name>objectType</name></param>
-            <param objecttype="objectType"><type>uint64_t</type> <name>object</name></param>
-            <param><type>size_t</type> <name>location</name></param>
-            <param><type>int32_t</type> <name>messageCode</name></param>
-            <param len="null-terminated">const <type>char</type>* <name>pLayerPrefix</name></param>
-            <param len="null-terminated">const <type>char</type>* <name>pMessage</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>vkDebugMarkerSetObjectNameEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="pNameInfo-&gt;object">const <type>VkDebugMarkerObjectNameInfoEXT</type>* <name>pNameInfo</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>vkDebugMarkerSetObjectTagEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="pTagInfo-&gt;object">const <type>VkDebugMarkerObjectTagInfoEXT</type>* <name>pTagInfo</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDebugMarkerBeginEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkDebugMarkerMarkerInfoEXT</type>* <name>pMarkerInfo</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDebugMarkerEndEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDebugMarkerInsertEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkDebugMarkerMarkerInfoEXT</type>* <name>pMarkerInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceExternalImageFormatPropertiesNV</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkFormat</type> <name>format</name></param>
-            <param><type>VkImageType</type> <name>type</name></param>
-            <param><type>VkImageTiling</type> <name>tiling</name></param>
-            <param><type>VkImageUsageFlags</type> <name>usage</name></param>
-            <param optional="true"><type>VkImageCreateFlags</type> <name>flags</name></param>
-            <param optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>externalHandleType</name></param>
-            <param><type>VkExternalImageFormatPropertiesNV</type>* <name>pExternalImageFormatProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetMemoryWin32HandleNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleType</name></param>
-            <param><type>HANDLE</type>* <name>pHandle</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action,indirection">
-            <proto><type>void</type> <name>vkCmdExecuteGeneratedCommandsNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>isPreprocessed</name></param>
-            <param>const <type>VkGeneratedCommandsInfoNV</type>* <name>pGeneratedCommandsInfo</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdPreprocessGeneratedCommandsNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkGeneratedCommandsInfoNV</type>* <name>pGeneratedCommandsInfo</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindPipelineShaderGroupNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
-            <param><type>VkPipeline</type> <name>pipeline</name></param>
-            <param><type>uint32_t</type> <name>groupIndex</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetGeneratedCommandsMemoryRequirementsNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkGeneratedCommandsMemoryRequirementsInfoNV</type>* <name>pInfo</name></param>
-            <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</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>vkCreateIndirectCommandsLayoutNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkIndirectCommandsLayoutCreateInfoNV</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkIndirectCommandsLayoutNV</type>* <name>pIndirectCommandsLayout</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyIndirectCommandsLayoutNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkIndirectCommandsLayoutNV</type> <name>indirectCommandsLayout</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceFeatures2</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkPhysicalDeviceFeatures2</type>* <name>pFeatures</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceFeatures2KHR"                        alias="vkGetPhysicalDeviceFeatures2"/>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceProperties2</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkPhysicalDeviceProperties2</type>* <name>pProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceProperties2KHR"                      alias="vkGetPhysicalDeviceProperties2"/>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceFormatProperties2</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkFormat</type> <name>format</name></param>
-            <param><type>VkFormatProperties2</type>* <name>pFormatProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceFormatProperties2KHR"                alias="vkGetPhysicalDeviceFormatProperties2"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED,VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceImageFormatProperties2</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceImageFormatInfo2</type>* <name>pImageFormatInfo</name></param>
-            <param><type>VkImageFormatProperties2</type>* <name>pImageFormatProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceImageFormatProperties2KHR"           alias="vkGetPhysicalDeviceImageFormatProperties2"/>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceQueueFamilyProperties2</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pQueueFamilyPropertyCount</name></param>
-            <param optional="true" len="pQueueFamilyPropertyCount"><type>VkQueueFamilyProperties2</type>* <name>pQueueFamilyProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceQueueFamilyProperties2KHR"           alias="vkGetPhysicalDeviceQueueFamilyProperties2"/>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceMemoryProperties2</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkPhysicalDeviceMemoryProperties2</type>* <name>pMemoryProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceMemoryProperties2KHR"                alias="vkGetPhysicalDeviceMemoryProperties2"/>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceSparseImageFormatProperties2</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceSparseImageFormatInfo2</type>* <name>pFormatInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkSparseImageFormatProperties2</type>* <name>pProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceSparseImageFormatProperties2KHR"     alias="vkGetPhysicalDeviceSparseImageFormatProperties2"/>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdPushDescriptorSetKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
-            <param><type>VkPipelineLayout</type> <name>layout</name></param>
-            <param><type>uint32_t</type> <name>set</name></param>
-            <param><type>uint32_t</type> <name>descriptorWriteCount</name></param>
-            <param len="descriptorWriteCount">const <type>VkWriteDescriptorSet</type>* <name>pDescriptorWrites</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkTrimCommandPool</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
-            <param optional="true"><type>VkCommandPoolTrimFlags</type> <name>flags</name></param>
-        </command>
-        <command name="vkTrimCommandPoolKHR"                                   alias="vkTrimCommandPool"/>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceExternalBufferProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceExternalBufferInfo</type>* <name>pExternalBufferInfo</name></param>
-            <param><type>VkExternalBufferProperties</type>* <name>pExternalBufferProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceExternalBufferPropertiesKHR"         alias="vkGetPhysicalDeviceExternalBufferProperties"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetMemoryWin32HandleKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryGetWin32HandleInfoKHR</type>* <name>pGetWin32HandleInfo</name></param>
-            <param><type>HANDLE</type>* <name>pHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkGetMemoryWin32HandlePropertiesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
-            <param><type>HANDLE</type> <name>handle</name></param>
-            <param><type>VkMemoryWin32HandlePropertiesKHR</type>* <name>pMemoryWin32HandleProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetMemoryFdKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryGetFdInfoKHR</type>* <name>pGetFdInfo</name></param>
-            <param><type>int</type>* <name>pFd</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkGetMemoryFdPropertiesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
-            <param><type>int</type> <name>fd</name></param>
-            <param><type>VkMemoryFdPropertiesKHR</type>* <name>pMemoryFdProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetMemoryZirconHandleFUCHSIA</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryGetZirconHandleInfoFUCHSIA</type>* <name>pGetZirconHandleInfo</name></param>
-            <param><type>zx_handle_t</type>* <name>pZirconHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkGetMemoryZirconHandlePropertiesFUCHSIA</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
-            <param><type>zx_handle_t</type> <name>zirconHandle</name></param>
-            <param><type>VkMemoryZirconHandlePropertiesFUCHSIA</type>* <name>pMemoryZirconHandleProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkGetMemoryRemoteAddressNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryGetRemoteAddressInfoNV</type>* <name>pMemoryGetRemoteAddressInfo</name></param>
-            <param><type>VkRemoteAddressNV</type>* <name>pAddress</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkGetMemorySciBufNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryGetSciBufInfoNV</type>* <name>pGetSciBufInfo</name></param>
-            <param><type>NvSciBufObj</type>* <name>pHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
-            <param><type>NvSciBufObj</type> <name>handle</name></param>
-            <param><type>VkMemorySciBufPropertiesNV</type>* <name>pMemorySciBufProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSciBufAttributesNV</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>NvSciBufAttrList</type> <name>pAttributes</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceExternalSemaphoreProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceExternalSemaphoreInfo</type>* <name>pExternalSemaphoreInfo</name></param>
-            <param><type>VkExternalSemaphoreProperties</type>* <name>pExternalSemaphoreProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"      alias="vkGetPhysicalDeviceExternalSemaphoreProperties"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetSemaphoreWin32HandleKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSemaphoreGetWin32HandleInfoKHR</type>* <name>pGetWin32HandleInfo</name></param>
-            <param><type>HANDLE</type>* <name>pHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkImportSemaphoreWin32HandleKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImportSemaphoreWin32HandleInfoKHR</type>* <name>pImportSemaphoreWin32HandleInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetSemaphoreFdKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSemaphoreGetFdInfoKHR</type>* <name>pGetFdInfo</name></param>
-            <param><type>int</type>* <name>pFd</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkImportSemaphoreFdKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImportSemaphoreFdInfoKHR</type>* <name>pImportSemaphoreFdInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetSemaphoreZirconHandleFUCHSIA</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSemaphoreGetZirconHandleInfoFUCHSIA</type>* <name>pGetZirconHandleInfo</name></param>
-            <param><type>zx_handle_t</type>* <name>pZirconHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkImportSemaphoreZirconHandleFUCHSIA</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImportSemaphoreZirconHandleInfoFUCHSIA</type>* <name>pImportSemaphoreZirconHandleInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceExternalFenceProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceExternalFenceInfo</type>* <name>pExternalFenceInfo</name></param>
-            <param><type>VkExternalFenceProperties</type>* <name>pExternalFenceProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceExternalFencePropertiesKHR"          alias="vkGetPhysicalDeviceExternalFenceProperties"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetFenceWin32HandleKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkFenceGetWin32HandleInfoKHR</type>* <name>pGetWin32HandleInfo</name></param>
-            <param><type>HANDLE</type>* <name>pHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkImportFenceWin32HandleKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImportFenceWin32HandleInfoKHR</type>* <name>pImportFenceWin32HandleInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetFenceFdKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkFenceGetFdInfoKHR</type>* <name>pGetFdInfo</name></param>
-            <param><type>int</type>* <name>pFd</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkImportFenceFdKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImportFenceFdInfoKHR</type>* <name>pImportFenceFdInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_NOT_PERMITTED_EXT">
-            <proto><type>VkResult</type> <name>vkGetFenceSciSyncFenceNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkFenceGetSciSyncInfoNV</type>* <name>pGetSciSyncHandleInfo</name></param>
-            <param><type>void</type>* <name>pHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_NOT_PERMITTED_EXT">
-            <proto><type>VkResult</type> <name>vkGetFenceSciSyncObjNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkFenceGetSciSyncInfoNV</type>* <name>pGetSciSyncHandleInfo</name></param>
-            <param><type>void</type>* <name>pHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_NOT_PERMITTED_EXT">
-            <proto><type>VkResult</type> <name>vkImportFenceSciSyncFenceNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImportFenceSciSyncInfoNV</type>* <name>pImportFenceSciSyncInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_NOT_PERMITTED_EXT">
-            <proto><type>VkResult</type> <name>vkImportFenceSciSyncObjNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImportFenceSciSyncInfoNV</type>* <name>pImportFenceSciSyncInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_NOT_PERMITTED_EXT">
-            <proto><type>VkResult</type> <name>vkGetSemaphoreSciSyncObjNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSemaphoreGetSciSyncInfoNV</type>* <name>pGetSciSyncInfo</name></param>
-            <param><type>void</type>* <name>pHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_NOT_PERMITTED_EXT,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkImportSemaphoreSciSyncObjNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImportSemaphoreSciSyncInfoNV</type>* <name>pImportSemaphoreSciSyncInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSciSyncAttributesNV</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkSciSyncAttributesInfoNV</type>* <name>pSciSyncAttributesInfo</name></param>
-            <param><type>NvSciSyncAttrList</type> <name>pAttributes</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateSemaphoreSciSyncPoolNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSemaphoreSciSyncPoolCreateInfoNV</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSemaphoreSciSyncPoolNV</type>* <name>pSemaphorePool</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroySemaphoreSciSyncPoolNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkSemaphoreSciSyncPoolNV</type> <name>semaphorePool</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS">
-            <proto><type>VkResult</type> <name>vkReleaseDisplayEXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkDisplayKHR</type> <name>display</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkAcquireXlibDisplayEXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>Display</type>* <name>dpy</name></param>
-            <param><type>VkDisplayKHR</type> <name>display</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetRandROutputDisplayEXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>Display</type>* <name>dpy</name></param>
-            <param><type>RROutput</type> <name>rrOutput</name></param>
-            <param><type>VkDisplayKHR</type>* <name>pDisplay</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkAcquireWinrtDisplayNV</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkDisplayKHR</type> <name>display</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkGetWinrtDisplayNV</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>deviceRelativeId</name></param>
-            <param><type>VkDisplayKHR</type>* <name>pDisplay</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkDisplayPowerControlEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDisplayKHR</type> <name>display</name></param>
-            <param>const <type>VkDisplayPowerInfoEXT</type>* <name>pDisplayPowerInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkRegisterDeviceEventEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDeviceEventInfoEXT</type>* <name>pDeviceEventInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkFence</type>* <name>pFence</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkRegisterDisplayEventEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDisplayKHR</type> <name>display</name></param>
-            <param>const <type>VkDisplayEventInfoEXT</type>* <name>pDisplayEventInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkFence</type>* <name>pFence</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR">
-            <proto><type>VkResult</type> <name>vkGetSwapchainCounterEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param><type>VkSurfaceCounterFlagBitsEXT</type> <name>counter</name></param>
-            <param><type>uint64_t</type>* <name>pCounterValue</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilities2EXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkSurfaceKHR</type> <name>surface</name></param>
-            <param><type>VkSurfaceCapabilities2EXT</type>* <name>pSurfaceCapabilities</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkEnumeratePhysicalDeviceGroups</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPhysicalDeviceGroupCount</name></param>
-            <param optional="true" len="pPhysicalDeviceGroupCount"><type>VkPhysicalDeviceGroupProperties</type>* <name>pPhysicalDeviceGroupProperties</name></param>
-        </command>
-        <command name="vkEnumeratePhysicalDeviceGroupsKHR"                     alias="vkEnumeratePhysicalDeviceGroups"/>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceGroupPeerMemoryFeatures</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>heapIndex</name></param>
-            <param><type>uint32_t</type> <name>localDeviceIndex</name></param>
-            <param><type>uint32_t</type> <name>remoteDeviceIndex</name></param>
-            <param><type>VkPeerMemoryFeatureFlags</type>* <name>pPeerMemoryFeatures</name></param>
-        </command>
-        <command name="vkGetDeviceGroupPeerMemoryFeaturesKHR"                  alias="vkGetDeviceGroupPeerMemoryFeatures"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
-            <proto><type>VkResult</type> <name>vkBindBufferMemory2</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>bindInfoCount</name></param>
-            <param len="bindInfoCount">const <type>VkBindBufferMemoryInfo</type>* <name>pBindInfos</name></param>
-        </command>
-        <command name="vkBindBufferMemory2KHR"                                 alias="vkBindBufferMemory2"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkBindImageMemory2</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>bindInfoCount</name></param>
-            <param len="bindInfoCount">const <type>VkBindImageMemoryInfo</type>* <name>pBindInfos</name></param>
-        </command>
-        <command name="vkBindImageMemory2KHR"                                  alias="vkBindImageMemory2"/>
-        <command queues="graphics,compute,transfer" renderpass="both" videocoding="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDeviceMask</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>deviceMask</name></param>
-        </command>
-        <command name="vkCmdSetDeviceMaskKHR"                                  alias="vkCmdSetDeviceMask"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetDeviceGroupPresentCapabilitiesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDeviceGroupPresentCapabilitiesKHR</type>* <name>pDeviceGroupPresentCapabilities</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetDeviceGroupSurfacePresentModesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkSurfaceKHR</type> <name>surface</name></param>
-            <param optional="false,true"><type>VkDeviceGroupPresentModeFlagsKHR</type>* <name>pModes</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_NOT_READY,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT">
-            <proto><type>VkResult</type> <name>vkAcquireNextImage2KHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkAcquireNextImageInfoKHR</type>* <name>pAcquireInfo</name></param>
-            <param><type>uint32_t</type>* <name>pImageIndex</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDispatchBase</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>baseGroupX</name></param>
-            <param><type>uint32_t</type> <name>baseGroupY</name></param>
-            <param><type>uint32_t</type> <name>baseGroupZ</name></param>
-            <param><type>uint32_t</type> <name>groupCountX</name></param>
-            <param><type>uint32_t</type> <name>groupCountY</name></param>
-            <param><type>uint32_t</type> <name>groupCountZ</name></param>
-        </command>
-        <command name="vkCmdDispatchBaseKHR"                                   alias="vkCmdDispatchBase"/>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDevicePresentRectanglesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param externsync="true"><type>VkSurfaceKHR</type> <name>surface</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pRectCount</name></param>
-            <param optional="true" len="pRectCount"><type>VkRect2D</type>* <name>pRects</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>vkCreateDescriptorUpdateTemplate</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDescriptorUpdateTemplateCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDescriptorUpdateTemplate</type>* <name>pDescriptorUpdateTemplate</name></param>
-        </command>
-        <command name="vkCreateDescriptorUpdateTemplateKHR"                    alias="vkCreateDescriptorUpdateTemplate"/>
-        <command>
-            <proto><type>void</type> <name>vkDestroyDescriptorUpdateTemplate</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command name="vkDestroyDescriptorUpdateTemplateKHR"                   alias="vkDestroyDescriptorUpdateTemplate"/>
-        <command>
-            <proto><type>void</type> <name>vkUpdateDescriptorSetWithTemplate</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDescriptorSet</type> <name>descriptorSet</name></param>
-            <param><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param>
-            <param noautovalidity="true">const <type>void</type>* <name>pData</name></param>
-        </command>
-        <command name="vkUpdateDescriptorSetWithTemplateKHR"                   alias="vkUpdateDescriptorSetWithTemplate"/>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdPushDescriptorSetWithTemplateKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param>
-            <param><type>VkPipelineLayout</type> <name>layout</name></param>
-            <param><type>uint32_t</type> <name>set</name></param>
-            <param noautovalidity="true">const <type>void</type>* <name>pData</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkSetHdrMetadataEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>swapchainCount</name></param>
-            <param len="swapchainCount">const <type>VkSwapchainKHR</type>* <name>pSwapchains</name></param>
-            <param len="swapchainCount">const <type>VkHdrMetadataEXT</type>* <name>pMetadata</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT">
-            <proto><type>VkResult</type> <name>vkGetSwapchainStatusKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetRefreshCycleDurationGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param><type>VkRefreshCycleDurationGOOGLE</type>* <name>pDisplayTimingProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetPastPresentationTimingGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPresentationTimingCount</name></param>
-            <param optional="true" len="pPresentationTimingCount"><type>VkPastPresentationTimingGOOGLE</type>* <name>pPresentationTimings</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
-            <proto><type>VkResult</type> <name>vkCreateIOSSurfaceMVK</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkIOSSurfaceCreateInfoMVK</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
-            <proto><type>VkResult</type> <name>vkCreateMacOSSurfaceMVK</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkMacOSSurfaceCreateInfoMVK</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
-            <proto><type>VkResult</type> <name>vkCreateMetalSurfaceEXT</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkMetalSurfaceCreateInfoEXT</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetViewportWScalingNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstViewport</name></param>
-            <param><type>uint32_t</type> <name>viewportCount</name></param>
-            <param len="viewportCount">const <type>VkViewportWScalingNV</type>* <name>pViewportWScalings</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDiscardRectangleEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstDiscardRectangle</name></param>
-            <param><type>uint32_t</type> <name>discardRectangleCount</name></param>
-            <param len="discardRectangleCount">const <type>VkRect2D</type>* <name>pDiscardRectangles</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDiscardRectangleEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>discardRectangleEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDiscardRectangleModeEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkDiscardRectangleModeEXT</type> <name>discardRectangleMode</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetSampleLocationsEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkSampleLocationsInfoEXT</type>* <name>pSampleLocationsInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceMultisamplePropertiesEXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkSampleCountFlagBits</type> <name>samples</name></param>
-            <param><type>VkMultisamplePropertiesEXT</type>* <name>pMultisampleProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilities2KHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param>
-            <param><type>VkSurfaceCapabilities2KHR</type>* <name>pSurfaceCapabilities</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceFormats2KHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pSurfaceFormatCount</name></param>
-            <param optional="true" len="pSurfaceFormatCount"><type>VkSurfaceFormat2KHR</type>* <name>pSurfaceFormats</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayProperties2KHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkDisplayProperties2KHR</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayPlaneProperties2KHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkDisplayPlaneProperties2KHR</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetDisplayModeProperties2KHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>VkDisplayKHR</type> <name>display</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkDisplayModeProperties2KHR</type>* <name>pProperties</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>vkGetDisplayPlaneCapabilities2KHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkDisplayPlaneInfo2KHR</type>* <name>pDisplayPlaneInfo</name></param>
-            <param><type>VkDisplayPlaneCapabilities2KHR</type>* <name>pCapabilities</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetBufferMemoryRequirements2</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkBufferMemoryRequirementsInfo2</type>* <name>pInfo</name></param>
-            <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
-        </command>
-        <command name="vkGetBufferMemoryRequirements2KHR"                      alias="vkGetBufferMemoryRequirements2"/>
-        <command>
-            <proto><type>void</type> <name>vkGetImageMemoryRequirements2</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImageMemoryRequirementsInfo2</type>* <name>pInfo</name></param>
-            <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
-        </command>
-        <command name="vkGetImageMemoryRequirements2KHR"                       alias="vkGetImageMemoryRequirements2"/>
-        <command>
-            <proto><type>void</type> <name>vkGetImageSparseMemoryRequirements2</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImageSparseMemoryRequirementsInfo2</type>* <name>pInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param>
-            <param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements2</type>* <name>pSparseMemoryRequirements</name></param>
-        </command>
-        <command name="vkGetImageSparseMemoryRequirements2KHR"                 alias="vkGetImageSparseMemoryRequirements2"/>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceBufferMemoryRequirements</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDeviceBufferMemoryRequirements</type>* <name>pInfo</name></param>
-            <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
-        </command>
-        <command name="vkGetDeviceBufferMemoryRequirementsKHR" alias="vkGetDeviceBufferMemoryRequirements"/>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceImageMemoryRequirements</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDeviceImageMemoryRequirements</type>* <name>pInfo</name></param>
-            <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
-        </command>
-        <command name="vkGetDeviceImageMemoryRequirementsKHR" alias="vkGetDeviceImageMemoryRequirements"/>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceImageSparseMemoryRequirements</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDeviceImageMemoryRequirements</type>* <name>pInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param>
-            <param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements2</type>* <name>pSparseMemoryRequirements</name></param>
-        </command>
-        <command name="vkGetDeviceImageSparseMemoryRequirementsKHR" alias="vkGetDeviceImageSparseMemoryRequirements"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateSamplerYcbcrConversion</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSamplerYcbcrConversionCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSamplerYcbcrConversion</type>* <name>pYcbcrConversion</name></param>
-        </command>
-        <command name="vkCreateSamplerYcbcrConversionKHR"                      alias="vkCreateSamplerYcbcrConversion"/>
-        <command>
-            <proto><type>void</type> <name>vkDestroySamplerYcbcrConversion</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkSamplerYcbcrConversion</type> <name>ycbcrConversion</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command name="vkDestroySamplerYcbcrConversionKHR"                     alias="vkDestroySamplerYcbcrConversion"/>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceQueue2</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDeviceQueueInfo2</type>* <name>pQueueInfo</name></param>
-            <param><type>VkQueue</type>* <name>pQueue</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateValidationCacheEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkValidationCacheCreateInfoEXT</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkValidationCacheEXT</type>* <name>pValidationCache</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyValidationCacheEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkValidationCacheEXT</type> <name>validationCache</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetValidationCacheDataEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkValidationCacheEXT</type> <name>validationCache</name></param>
-            <param optional="false,true"><type>size_t</type>* <name>pDataSize</name></param>
-            <param optional="true" len="pDataSize"><type>void</type>* <name>pData</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>vkMergeValidationCachesEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkValidationCacheEXT</type> <name>dstCache</name></param>
-            <param><type>uint32_t</type> <name>srcCacheCount</name></param>
-            <param len="srcCacheCount">const <type>VkValidationCacheEXT</type>* <name>pSrcCaches</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDescriptorSetLayoutSupport</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDescriptorSetLayoutCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param><type>VkDescriptorSetLayoutSupport</type>* <name>pSupport</name></param>
-        </command>
-        <command name="vkGetDescriptorSetLayoutSupportKHR"                     alias="vkGetDescriptorSetLayoutSupport"/>
-        <command>
-            <proto><type>VkResult</type> <name>vkGetSwapchainGrallocUsageANDROID</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkFormat</type> <name>format</name></param>
-            <param><type>VkImageUsageFlags</type> <name>imageUsage</name></param>
-            <param><type>int</type>* <name>grallocUsage</name></param>
-        </command>
-        <command>
-            <proto><type>VkResult</type> <name>vkGetSwapchainGrallocUsage2ANDROID</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkFormat</type> <name>format</name></param>
-            <param><type>VkImageUsageFlags</type> <name>imageUsage</name></param>
-            <param><type>VkSwapchainImageUsageFlagsANDROID</type> <name>swapchainImageUsage</name></param>
-            <param><type>uint64_t</type>* <name>grallocConsumerUsage</name></param>
-            <param><type>uint64_t</type>* <name>grallocProducerUsage</name></param>
-        </command>
-        <command>
-            <proto><type>VkResult</type> <name>vkAcquireImageANDROID</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param><type>int</type> <name>nativeFenceFd</name></param>
-            <param optional="true"><type>VkSemaphore</type> <name>semaphore</name></param>
-            <param optional="true"><type>VkFence</type> <name>fence</name></param>
-        </command>
-        <command>
-            <proto><type>VkResult</type> <name>vkQueueSignalReleaseImageANDROID</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-            <param><type>uint32_t</type> <name>waitSemaphoreCount</name></param>
-            <param len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param><type>int</type>* <name>pNativeFenceFd</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_FEATURE_NOT_PRESENT,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetShaderInfoAMD</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPipeline</type> <name>pipeline</name></param>
-            <param><type>VkShaderStageFlagBits</type> <name>shaderStage</name></param>
-            <param><type>VkShaderInfoTypeAMD</type> <name>infoType</name></param>
-            <param optional="false,true"><type>size_t</type>* <name>pInfoSize</name></param>
-            <param optional="true" len="pInfoSize"><type>void</type>* <name>pInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkSetLocalDimmingAMD</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSwapchainKHR</type> <name>swapChain</name></param>
-            <param><type>VkBool32</type> <name>localDimmingEnable</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceCalibrateableTimeDomainsEXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pTimeDomainCount</name></param>
-            <param optional="true" len="pTimeDomainCount"><type>VkTimeDomainEXT</type>* <name>pTimeDomains</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>vkGetCalibratedTimestampsEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>timestampCount</name></param>
-            <param len="timestampCount">const <type>VkCalibratedTimestampInfoEXT</type>* <name>pTimestampInfos</name></param>
-            <param len="timestampCount"><type>uint64_t</type>* <name>pTimestamps</name></param>
-            <param><type>uint64_t</type>* <name>pMaxDeviation</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>vkSetDebugUtilsObjectNameEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="pNameInfo-&gt;objectHandle">const <type>VkDebugUtilsObjectNameInfoEXT</type>* <name>pNameInfo</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>vkSetDebugUtilsObjectTagEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="pTagInfo-&gt;objectHandle">const <type>VkDebugUtilsObjectTagInfoEXT</type>* <name>pTagInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueBeginDebugUtilsLabelEXT</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-            <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueEndDebugUtilsLabelEXT</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueInsertDebugUtilsLabelEXT</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-            <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdBeginDebugUtilsLabelEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdEndDebugUtilsLabelEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdInsertDebugUtilsLabelEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateDebugUtilsMessengerEXT</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkDebugUtilsMessengerCreateInfoEXT</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDebugUtilsMessengerEXT</type>* <name>pMessenger</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyDebugUtilsMessengerEXT</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param optional="true" externsync="true"><type>VkDebugUtilsMessengerEXT</type> <name>messenger</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkSubmitDebugUtilsMessageEXT</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param><type>VkDebugUtilsMessageSeverityFlagBitsEXT</type> <name>messageSeverity</name></param>
-            <param><type>VkDebugUtilsMessageTypeFlagsEXT</type> <name>messageTypes</name></param>
-            <param>const <type>VkDebugUtilsMessengerCallbackDataEXT</type>* <name>pCallbackData</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkGetMemoryHostPointerPropertiesEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
-            <param>const <type>void</type>* <name>pHostPointer</name></param>
-            <param><type>VkMemoryHostPointerPropertiesEXT</type>* <name>pMemoryHostPointerProperties</name></param>
-        </command>
-        <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdWriteBufferMarkerAMD</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>VkPipelineStageFlagBits</type> <name>pipelineStage</name></param>
-            <param><type>VkBuffer</type> <name>dstBuffer</name></param>
-            <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>vkCreateRenderPass2</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkRenderPassCreateInfo2</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 name="vkCreateRenderPass2KHR"                                 alias="vkCreateRenderPass2"/>
-        <command queues="graphics" renderpass="outside" cmdbufferlevel="primary" tasks="action,state,synchronization">
-            <proto><type>void</type> <name>vkCmdBeginRenderPass2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkRenderPassBeginInfo</type>*      <name>pRenderPassBegin</name></param>
-            <param>const <type>VkSubpassBeginInfo</type>*      <name>pSubpassBeginInfo</name></param>
-        </command>
-        <command name="vkCmdBeginRenderPass2KHR"                               alias="vkCmdBeginRenderPass2"/>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary" tasks="action,state,synchronization">
-            <proto><type>void</type> <name>vkCmdNextSubpass2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkSubpassBeginInfo</type>*      <name>pSubpassBeginInfo</name></param>
-            <param>const <type>VkSubpassEndInfo</type>*        <name>pSubpassEndInfo</name></param>
-        </command>
-        <command name="vkCmdNextSubpass2KHR"                                   alias="vkCmdNextSubpass2"/>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary" tasks="action,state,synchronization">
-            <proto><type>void</type> <name>vkCmdEndRenderPass2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkSubpassEndInfo</type>*        <name>pSubpassEndInfo</name></param>
-        </command>
-        <command name="vkCmdEndRenderPass2KHR"                                 alias="vkCmdEndRenderPass2"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkGetSemaphoreCounterValue</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSemaphore</type> <name>semaphore</name></param>
-            <param><type>uint64_t</type>* <name>pValue</name></param>
-        </command>
-        <command name="vkGetSemaphoreCounterValueKHR"              alias="vkGetSemaphoreCounterValue"/>
-        <command successcodes="VK_SUCCESS,VK_TIMEOUT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkWaitSemaphores</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSemaphoreWaitInfo</type>* <name>pWaitInfo</name></param>
-            <param><type>uint64_t</type> <name>timeout</name></param>
-        </command>
-        <command name="vkWaitSemaphoresKHR"                        alias="vkWaitSemaphores"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkSignalSemaphore</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSemaphoreSignalInfo</type>* <name>pSignalInfo</name></param>
-        </command>
-        <command name="vkSignalSemaphoreKHR"                       alias="vkSignalSemaphore"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR">
-            <proto><type>VkResult</type> <name>vkGetAndroidHardwareBufferPropertiesANDROID</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const struct <type>AHardwareBuffer</type>* <name>buffer</name></param>
-            <param><type>VkAndroidHardwareBufferPropertiesANDROID</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetMemoryAndroidHardwareBufferANDROID</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryGetAndroidHardwareBufferInfoANDROID</type>* <name>pInfo</name></param>
-            <param>struct <type>AHardwareBuffer</type>** <name>pBuffer</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawIndirectCount</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>VkBuffer</type> <name>countBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>countBufferOffset</name></param>
-            <param><type>uint32_t</type> <name>maxDrawCount</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command name="vkCmdDrawIndirectCountKHR"                              alias="vkCmdDrawIndirectCount"/>
-        <command name="vkCmdDrawIndirectCountAMD"                              alias="vkCmdDrawIndirectCount"/>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawIndexedIndirectCount</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>VkBuffer</type> <name>countBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>countBufferOffset</name></param>
-            <param><type>uint32_t</type> <name>maxDrawCount</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command name="vkCmdDrawIndexedIndirectCountKHR"                       alias="vkCmdDrawIndexedIndirectCount"/>
-        <command name="vkCmdDrawIndexedIndirectCountAMD"                       alias="vkCmdDrawIndexedIndirectCount"/>
-        <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdSetCheckpointNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param noautovalidity="true">const <type>void</type>* <name>pCheckpointMarker</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetQueueCheckpointDataNV</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pCheckpointDataCount</name></param>
-            <param optional="true" len="pCheckpointDataCount"><type>VkCheckpointDataNV</type>* <name>pCheckpointData</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindTransformFeedbackBuffersEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstBinding</name></param>
-            <param><type>uint32_t</type> <name>bindingCount</name></param>
-            <param len="bindingCount">const <type>VkBuffer</type>* <name>pBuffers</name></param>
-            <param len="bindingCount">const <type>VkDeviceSize</type>* <name>pOffsets</name></param>
-            <param optional="true" len="bindingCount" noautovalidity="true">const <type>VkDeviceSize</type>* <name>pSizes</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBeginTransformFeedbackEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstCounterBuffer</name></param>
-            <param optional="true"><type>uint32_t</type> <name>counterBufferCount</name></param>
-            <param noautovalidity="true" len="counterBufferCount">const <type>VkBuffer</type>* <name>pCounterBuffers</name></param>
-            <param optional="true" len="counterBufferCount">const <type>VkDeviceSize</type>* <name>pCounterBufferOffsets</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdEndTransformFeedbackEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstCounterBuffer</name></param>
-            <param optional="true"><type>uint32_t</type> <name>counterBufferCount</name></param>
-            <param noautovalidity="true" len="counterBufferCount">const <type>VkBuffer</type>* <name>pCounterBuffers</name></param>
-            <param optional="true" len="counterBufferCount">const <type>VkDeviceSize</type>* <name>pCounterBufferOffsets</name></param>
-        </command>
-        <command queues="graphics,compute,decode,encode" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdBeginQueryIndexedEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>query</name></param>
-            <param optional="true"><type>VkQueryControlFlags</type> <name>flags</name></param>
-            <param><type>uint32_t</type> <name>index</name></param>
-        </command>
-        <command queues="graphics,compute,decode,encode" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdEndQueryIndexedEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>query</name></param>
-            <param><type>uint32_t</type> <name>index</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawIndirectByteCountEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>instanceCount</name></param>
-            <param><type>uint32_t</type> <name>firstInstance</name></param>
-            <param><type>VkBuffer</type> <name>counterBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>counterBufferOffset</name></param>
-            <param><type>uint32_t</type> <name>counterOffset</name></param>
-            <param><type>uint32_t</type> <name>vertexStride</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetExclusiveScissorNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstExclusiveScissor</name></param>
-            <param><type>uint32_t</type> <name>exclusiveScissorCount</name></param>
-            <param len="exclusiveScissorCount">const <type>VkRect2D</type>* <name>pExclusiveScissors</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetExclusiveScissorEnableNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstExclusiveScissor</name></param>
-            <param><type>uint32_t</type> <name>exclusiveScissorCount</name></param>
-            <param len="exclusiveScissorCount">const <type>VkBool32</type>* <name>pExclusiveScissorEnables</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindShadingRateImageNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>VkImageView</type> <name>imageView</name></param>
-            <param><type>VkImageLayout</type> <name>imageLayout</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetViewportShadingRatePaletteNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstViewport</name></param>
-            <param><type>uint32_t</type> <name>viewportCount</name></param>
-            <param len="viewportCount">const <type>VkShadingRatePaletteNV</type>* <name>pShadingRatePalettes</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetCoarseSampleOrderNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkCoarseSampleOrderTypeNV</type> <name>sampleOrderType</name></param>
-            <param optional="true"><type>uint32_t</type> <name>customSampleOrderCount</name></param>
-            <param len="customSampleOrderCount">const <type>VkCoarseSampleOrderCustomNV</type>* <name>pCustomSampleOrders</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawMeshTasksNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>taskCount</name></param>
-            <param><type>uint32_t</type> <name>firstTask</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawMeshTasksIndirectNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>uint32_t</type> <name>drawCount</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawMeshTasksIndirectCountNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>VkBuffer</type> <name>countBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>countBufferOffset</name></param>
-            <param><type>uint32_t</type> <name>maxDrawCount</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawMeshTasksEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>groupCountX</name></param>
-            <param><type>uint32_t</type> <name>groupCountY</name></param>
-            <param><type>uint32_t</type> <name>groupCountZ</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawMeshTasksIndirectEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>uint32_t</type> <name>drawCount</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDrawMeshTasksIndirectCountEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>VkBuffer</type> <name>countBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>countBufferOffset</name></param>
-            <param><type>uint32_t</type> <name>maxDrawCount</name></param>
-            <param><type>uint32_t</type> <name>stride</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>vkCompileDeferredNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPipeline</type> <name>pipeline</name></param>
-            <param><type>uint32_t</type> <name>shader</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateAccelerationStructureNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkAccelerationStructureCreateInfoNV</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkAccelerationStructureNV</type>* <name>pAccelerationStructure</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindInvocationMaskHUAWEI</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>VkImageView</type> <name>imageView</name></param>
-            <param><type>VkImageLayout</type> <name>imageLayout</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyAccelerationStructureKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkAccelerationStructureKHR</type> <name>accelerationStructure</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyAccelerationStructureNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkAccelerationStructureNV</type> <name>accelerationStructure</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetAccelerationStructureMemoryRequirementsNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkAccelerationStructureMemoryRequirementsInfoNV</type>* <name>pInfo</name></param>
-            <param><type>VkMemoryRequirements2KHR</type>* <name>pMemoryRequirements</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>vkBindAccelerationStructureMemoryNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>bindInfoCount</name></param>
-            <param len="bindInfoCount">const <type>VkBindAccelerationStructureMemoryInfoNV</type>* <name>pBindInfos</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyAccelerationStructureNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkAccelerationStructureNV</type> <name>dst</name></param>
-            <param><type>VkAccelerationStructureNV</type> <name>src</name></param>
-            <param><type>VkCopyAccelerationStructureModeKHR</type> <name>mode</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyAccelerationStructureKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyAccelerationStructureInfoKHR</type>* <name>pInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCopyAccelerationStructureKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param>const <type>VkCopyAccelerationStructureInfoKHR</type>* <name>pInfo</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyAccelerationStructureToMemoryKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyAccelerationStructureToMemoryInfoKHR</type>* <name>pInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCopyAccelerationStructureToMemoryKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param>const <type>VkCopyAccelerationStructureToMemoryInfoKHR</type>* <name>pInfo</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyMemoryToAccelerationStructureKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyMemoryToAccelerationStructureInfoKHR</type>* <name>pInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCopyMemoryToAccelerationStructureKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param>const <type>VkCopyMemoryToAccelerationStructureInfoKHR</type>* <name>pInfo</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdWriteAccelerationStructuresPropertiesKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>accelerationStructureCount</name></param>
-            <param len="accelerationStructureCount">const <type>VkAccelerationStructureKHR</type>* <name>pAccelerationStructures</name></param>
-            <param><type>VkQueryType</type> <name>queryType</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>firstQuery</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdWriteAccelerationStructuresPropertiesNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>accelerationStructureCount</name></param>
-            <param len="accelerationStructureCount">const <type>VkAccelerationStructureNV</type>* <name>pAccelerationStructures</name></param>
-            <param><type>VkQueryType</type> <name>queryType</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>firstQuery</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdBuildAccelerationStructureNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkAccelerationStructureInfoNV</type>* <name>pInfo</name></param>
-            <param optional="true"><type>VkBuffer</type> <name>instanceData</name></param>
-            <param><type>VkDeviceSize</type> <name>instanceOffset</name></param>
-            <param><type>VkBool32</type> <name>update</name></param>
-            <param><type>VkAccelerationStructureNV</type> <name>dst</name></param>
-            <param optional="true"><type>VkAccelerationStructureNV</type> <name>src</name></param>
-            <param><type>VkBuffer</type> <name>scratch</name></param>
-            <param><type>VkDeviceSize</type> <name>scratchOffset</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>vkWriteAccelerationStructuresPropertiesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>accelerationStructureCount</name></param>
-            <param len="accelerationStructureCount">const <type>VkAccelerationStructureKHR</type>* <name>pAccelerationStructures</name></param>
-            <param><type>VkQueryType</type>  <name>queryType</name></param>
-            <param><type>size_t</type>       <name>dataSize</name></param>
-            <param len="dataSize"><type>void</type>* <name>pData</name></param>
-            <param><type>size_t</type> <name>stride</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdTraceRaysKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pRaygenShaderBindingTable</name></param>
-            <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pMissShaderBindingTable</name></param>
-            <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pHitShaderBindingTable</name></param>
-            <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pCallableShaderBindingTable</name></param>
-            <param><type>uint32_t</type> <name>width</name></param>
-            <param><type>uint32_t</type> <name>height</name></param>
-            <param><type>uint32_t</type> <name>depth</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdTraceRaysNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>raygenShaderBindingTableBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>raygenShaderBindingOffset</name></param>
-            <param optional="true"><type>VkBuffer</type> <name>missShaderBindingTableBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>missShaderBindingOffset</name></param>
-            <param><type>VkDeviceSize</type> <name>missShaderBindingStride</name></param>
-            <param optional="true"><type>VkBuffer</type> <name>hitShaderBindingTableBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>hitShaderBindingOffset</name></param>
-            <param><type>VkDeviceSize</type> <name>hitShaderBindingStride</name></param>
-            <param optional="true"><type>VkBuffer</type> <name>callableShaderBindingTableBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>callableShaderBindingOffset</name></param>
-            <param><type>VkDeviceSize</type> <name>callableShaderBindingStride</name></param>
-            <param><type>uint32_t</type> <name>width</name></param>
-            <param><type>uint32_t</type> <name>height</name></param>
-            <param><type>uint32_t</type> <name>depth</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>vkGetRayTracingShaderGroupHandlesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPipeline</type> <name>pipeline</name></param>
-            <param><type>uint32_t</type> <name>firstGroup</name></param>
-            <param><type>uint32_t</type> <name>groupCount</name></param>
-            <param><type>size_t</type> <name>dataSize</name></param>
-            <param len="dataSize"><type>void</type>* <name>pData</name></param>
-        </command>
-        <command name="vkGetRayTracingShaderGroupHandlesNV"                 alias="vkGetRayTracingShaderGroupHandlesKHR"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetRayTracingCaptureReplayShaderGroupHandlesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPipeline</type> <name>pipeline</name></param>
-            <param><type>uint32_t</type> <name>firstGroup</name></param>
-            <param><type>uint32_t</type> <name>groupCount</name></param>
-            <param><type>size_t</type> <name>dataSize</name></param>
-            <param len="dataSize"><type>void</type>* <name>pData</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>vkGetAccelerationStructureHandleNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkAccelerationStructureNV</type> <name>accelerationStructure</name></param>
-            <param><type>size_t</type> <name>dataSize</name></param>
-            <param len="dataSize"><type>void</type>* <name>pData</name></param>
-        </command>
-        <command api="vulkan" successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV">
-            <proto><type>VkResult</type> <name>vkCreateRayTracingPipelinesNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param><type>uint32_t</type> <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkRayTracingPipelineCreateInfoNV</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
-        </command>
-        <command api="vulkansc" successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NO_PIPELINE_MATCH,VK_ERROR_OUT_OF_POOL_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateRayTracingPipelinesNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param><type>uint32_t</type> <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkRayTracingPipelineCreateInfoNV</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
-        </command>
-        <command api="vulkan" successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS">
-            <proto><type>VkResult</type> <name>vkCreateRayTracingPipelinesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param><type>uint32_t</type> <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkRayTracingPipelineCreateInfoKHR</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
-        </command>
-        <command api="vulkansc" successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,VK_ERROR_NO_PIPELINE_MATCH,VK_ERROR_OUT_OF_POOL_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateRayTracingPipelinesKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param><type>VkPipelineCache</type> <name>pipelineCache</name></param>
-            <param><type>uint32_t</type> <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkRayTracingPipelineCreateInfoKHR</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceCooperativeMatrixPropertiesNV</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkCooperativeMatrixPropertiesNV</type>* <name>pProperties</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdTraceRaysIndirectKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pRaygenShaderBindingTable</name></param>
-            <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pMissShaderBindingTable</name></param>
-            <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pHitShaderBindingTable</name></param>
-            <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pCallableShaderBindingTable</name></param>
-            <param><type>VkDeviceAddress</type> <name>indirectDeviceAddress</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdTraceRaysIndirect2KHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkDeviceAddress</type> <name>indirectDeviceAddress</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceAccelerationStructureCompatibilityKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkAccelerationStructureVersionInfoKHR</type>* <name>pVersionInfo</name></param>
-            <param><type>VkAccelerationStructureCompatibilityKHR</type>* <name>pCompatibility</name></param>
-        </command>
-        <command>
-            <proto><type>VkDeviceSize</type> <name>vkGetRayTracingShaderGroupStackSizeKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPipeline</type> <name>pipeline</name></param>
-            <param><type>uint32_t</type> <name>group</name></param>
-            <param><type>VkShaderGroupShaderKHR</type> <name>groupShader</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetRayTracingPipelineStackSizeKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>pipelineStackSize</name></param>
-        </command>
-        <command>
-            <proto><type>uint32_t</type> <name>vkGetImageViewHandleNVX</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImageViewHandleInfoNVX</type>* <name>pInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_UNKNOWN">
-            <proto><type>VkResult</type> <name>vkGetImageViewAddressNVX</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkImageView</type> <name>imageView</name></param>
-            <param><type>VkImageViewAddressPropertiesNVX</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfacePresentModes2EXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPresentModeCount</name></param>
-            <param optional="true" len="pPresentModeCount"><type>VkPresentModeKHR</type>* <name>pPresentModes</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkGetDeviceGroupSurfacePresentModes2EXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param>
-            <param optional="false,true"><type>VkDeviceGroupPresentModeFlagsKHR</type>* <name>pModes</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkAcquireFullScreenExclusiveModeEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkReleaseFullScreenExclusiveModeEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pCounterCount</name></param>
-            <param optional="true" len="pCounterCount"><type>VkPerformanceCounterKHR</type>* <name>pCounters</name></param>
-            <param optional="true" len="pCounterCount"><type>VkPerformanceCounterDescriptionKHR</type>* <name>pCounterDescriptions</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkQueryPoolPerformanceCreateInfoKHR</type>* <name>pPerformanceQueryCreateInfo</name></param>
-            <param><type>uint32_t</type>* <name>pNumPasses</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_TIMEOUT">
-            <proto><type>VkResult</type> <name>vkAcquireProfilingLockKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkAcquireProfilingLockInfoKHR</type>* <name>pInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkReleaseProfilingLockKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetImageDrmFormatModifierPropertiesEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param><type>VkImageDrmFormatModifierPropertiesEXT</type>* <name>pProperties</name></param>
-        </command>
-        <command>
-            <proto><type>uint64_t</type> <name>vkGetBufferOpaqueCaptureAddress</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkBufferDeviceAddressInfo</type>* <name>pInfo</name></param>
-        </command>
-        <command name="vkGetBufferOpaqueCaptureAddressKHR" alias="vkGetBufferOpaqueCaptureAddress"/>
-        <command>
-            <proto><type>VkDeviceAddress</type> <name>vkGetBufferDeviceAddress</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkBufferDeviceAddressInfo</type>* <name>pInfo</name></param>
-        </command>
-        <command name="vkGetBufferDeviceAddressKHR"        alias="vkGetBufferDeviceAddress"/>
-        <command name="vkGetBufferDeviceAddressEXT"        alias="vkGetBufferDeviceAddress"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateHeadlessSurfaceEXT</name></proto>
-            <param><type>VkInstance</type> <name>instance</name></param>
-            <param>const <type>VkHeadlessSurfaceCreateInfoEXT</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pCombinationCount</name></param>
-            <param optional="true" len="pCombinationCount"><type>VkFramebufferMixedSamplesCombinationNV</type>* <name>pCombinations</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkInitializePerformanceApiINTEL</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkInitializePerformanceApiInfoINTEL</type>* <name>pInitializeInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkUninitializePerformanceApiINTEL</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-        </command>
-        <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY" tasks="action,state">
-            <proto><type>VkResult</type> <name>vkCmdSetPerformanceMarkerINTEL</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkPerformanceMarkerInfoINTEL</type>* <name>pMarkerInfo</name></param>
-        </command>
-        <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY" tasks="action,state">
-            <proto><type>VkResult</type> <name>vkCmdSetPerformanceStreamMarkerINTEL</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkPerformanceStreamMarkerInfoINTEL</type>* <name>pMarkerInfo</name></param>
-        </command>
-        <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY" tasks="state">
-            <proto><type>VkResult</type> <name>vkCmdSetPerformanceOverrideINTEL</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkPerformanceOverrideInfoINTEL</type>* <name>pOverrideInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkAcquirePerformanceConfigurationINTEL</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkPerformanceConfigurationAcquireInfoINTEL</type>* <name>pAcquireInfo</name></param>
-            <param><type>VkPerformanceConfigurationINTEL</type>* <name>pConfiguration</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkReleasePerformanceConfigurationINTEL</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkPerformanceConfigurationINTEL</type> <name>configuration</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkQueueSetPerformanceConfigurationINTEL</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-            <param><type>VkPerformanceConfigurationINTEL</type> <name>configuration</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPerformanceParameterINTEL</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkPerformanceParameterTypeINTEL</type> <name>parameter</name></param>
-            <param><type>VkPerformanceValueINTEL</type>* <name>pValue</name></param>
-        </command>
-        <command>
-            <proto><type>uint64_t</type> <name>vkGetDeviceMemoryOpaqueCaptureAddress</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDeviceMemoryOpaqueCaptureAddressInfo</type>* <name>pInfo</name></param>
-        </command>
-        <command name="vkGetDeviceMemoryOpaqueCaptureAddressKHR"        alias="vkGetDeviceMemoryOpaqueCaptureAddress"/>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPipelineExecutablePropertiesKHR</name></proto>
-            <param><type>VkDevice</type>                        <name>device</name></param>
-            <param>const <type>VkPipelineInfoKHR</type>*        <name>pPipelineInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pExecutableCount</name></param>
-            <param optional="true" len="pExecutableCount"><type>VkPipelineExecutablePropertiesKHR</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPipelineExecutableStatisticsKHR</name></proto>
-            <param><type>VkDevice</type>                        <name>device</name></param>
-            <param>const <type>VkPipelineExecutableInfoKHR</type>*  <name>pExecutableInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pStatisticCount</name></param>
-            <param optional="true" len="pStatisticCount"><type>VkPipelineExecutableStatisticKHR</type>* <name>pStatistics</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPipelineExecutableInternalRepresentationsKHR</name></proto>
-            <param><type>VkDevice</type>                        <name>device</name></param>
-            <param>const <type>VkPipelineExecutableInfoKHR</type>*  <name>pExecutableInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pInternalRepresentationCount</name></param>
-            <param optional="true" len="pInternalRepresentationCount"><type>VkPipelineExecutableInternalRepresentationKHR</type>* <name>pInternalRepresentations</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetLineStippleEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>lineStippleFactor</name></param>
-            <param><type>uint16_t</type> <name>lineStipplePattern</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetFaultData</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkFaultQueryBehavior</type> <name>faultQueryBehavior</name></param>
-            <param><type>VkBool32</type>* <name>pUnrecordedFaults</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pFaultCount</name></param>
-            <param optional="true" len="pFaultCount"><type>VkFaultData</type>* <name>pFaults</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceToolProperties</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pToolCount</name></param>
-            <param optional="true" len="pToolCount"><type>VkPhysicalDeviceToolProperties</type>* <name>pToolProperties</name></param>
-        </command>
-        <command name="vkGetPhysicalDeviceToolPropertiesEXT" alias="vkGetPhysicalDeviceToolProperties"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
-            <proto><type>VkResult</type> <name>vkCreateAccelerationStructureKHR</name></proto>
-            <param><type>VkDevice</type>                                           <name>device</name></param>
-            <param>const <type>VkAccelerationStructureCreateInfoKHR</type>*        <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>*       <name>pAllocator</name></param>
-            <param><type>VkAccelerationStructureKHR</type>*                        <name>pAccelerationStructure</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdBuildAccelerationStructuresKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                                    <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>infoCount</name></param>
-            <param len="infoCount">const <type>VkAccelerationStructureBuildGeometryInfoKHR</type>* <name>pInfos</name></param>
-            <param len="infoCount">const <type>VkAccelerationStructureBuildRangeInfoKHR</type>* const* <name>ppBuildRangeInfos</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdBuildAccelerationStructuresIndirectKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                  <name>commandBuffer</name></param>
-            <param><type>uint32_t</type>                                           <name>infoCount</name></param>
-            <param len="infoCount">const <type>VkAccelerationStructureBuildGeometryInfoKHR</type>* <name>pInfos</name></param>
-            <param len="infoCount">const <type>VkDeviceAddress</type>*             <name>pIndirectDeviceAddresses</name></param>
-            <param len="infoCount">const <type>uint32_t</type>*                    <name>pIndirectStrides</name></param>
-            <param len="infoCount">const <type>uint32_t</type>* const*             <name>ppMaxPrimitiveCounts</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkBuildAccelerationStructuresKHR</name></proto>
-            <param><type>VkDevice</type>                                           <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param><type>uint32_t</type> <name>infoCount</name></param>
-            <param len="infoCount">const <type>VkAccelerationStructureBuildGeometryInfoKHR</type>* <name>pInfos</name></param>
-            <param len="infoCount">const <type>VkAccelerationStructureBuildRangeInfoKHR</type>* const* <name>ppBuildRangeInfos</name></param>
-        </command>
-        <command>
-            <proto><type>VkDeviceAddress</type> <name>vkGetAccelerationStructureDeviceAddressKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkAccelerationStructureDeviceAddressInfoKHR</type>* <name>pInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateDeferredOperationKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkDeferredOperationKHR</type>* <name>pDeferredOperation</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyDeferredOperationKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkDeferredOperationKHR</type> <name>operation</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>uint32_t</type> <name>vkGetDeferredOperationMaxConcurrencyKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDeferredOperationKHR</type> <name>operation</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_NOT_READY">
-            <proto><type>VkResult</type> <name>vkGetDeferredOperationResultKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDeferredOperationKHR</type> <name>operation</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_THREAD_DONE_KHR,VK_THREAD_IDLE_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkDeferredOperationJoinKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDeferredOperationKHR</type> <name>operation</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetPipelineIndirectMemoryRequirementsNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkComputePipelineCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
-        </command>
-        <command>
-            <proto><type>VkDeviceAddress</type> <name>vkGetPipelineIndirectDeviceAddressNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkPipelineIndirectDeviceAddressInfoNV</type>* <name>pInfo</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetCullMode</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>VkCullModeFlags</type> <name>cullMode</name></param>
-        </command>
-        <command name="vkCmdSetCullModeEXT" alias="vkCmdSetCullMode"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetFrontFace</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkFrontFace</type> <name>frontFace</name></param>
-        </command>
-        <command name="vkCmdSetFrontFaceEXT" alias="vkCmdSetFrontFace"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetPrimitiveTopology</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPrimitiveTopology</type> <name>primitiveTopology</name></param>
-        </command>
-        <command name="vkCmdSetPrimitiveTopologyEXT" alias="vkCmdSetPrimitiveTopology"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetViewportWithCount</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>viewportCount</name></param>
-            <param len="viewportCount">const <type>VkViewport</type>* <name>pViewports</name></param>
-        </command>
-        <command name="vkCmdSetViewportWithCountEXT" alias="vkCmdSetViewportWithCount"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetScissorWithCount</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>scissorCount</name></param>
-            <param len="scissorCount">const <type>VkRect2D</type>* <name>pScissors</name></param>
-        </command>
-        <command name="vkCmdSetScissorWithCountEXT" alias="vkCmdSetScissorWithCount"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindIndexBuffer2KHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>VkDeviceSize</type> <name>offset</name></param>
-            <param><type>VkDeviceSize</type> <name>size</name></param>
-            <param><type>VkIndexType</type> <name>indexType</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindVertexBuffers2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstBinding</name></param>
-            <param><type>uint32_t</type> <name>bindingCount</name></param>
-            <param len="bindingCount" optional="false,true">const <type>VkBuffer</type>* <name>pBuffers</name></param>
-            <param len="bindingCount">const <type>VkDeviceSize</type>* <name>pOffsets</name></param>
-            <param optional="true" len="bindingCount">const <type>VkDeviceSize</type>* <name>pSizes</name></param>
-            <param optional="true" len="bindingCount">const <type>VkDeviceSize</type>* <name>pStrides</name></param>
-        </command>
-        <command name="vkCmdBindVertexBuffers2EXT" alias="vkCmdBindVertexBuffers2"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthTestEnable</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>depthTestEnable</name></param>
-        </command>
-        <command name="vkCmdSetDepthTestEnableEXT" alias="vkCmdSetDepthTestEnable"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthWriteEnable</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>depthWriteEnable</name></param>
-        </command>
-        <command name="vkCmdSetDepthWriteEnableEXT" alias="vkCmdSetDepthWriteEnable"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthCompareOp</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkCompareOp</type> <name>depthCompareOp</name></param>
-        </command>
-        <command name="vkCmdSetDepthCompareOpEXT" alias="vkCmdSetDepthCompareOp"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthBoundsTestEnable</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>depthBoundsTestEnable</name></param>
-        </command>
-        <command name="vkCmdSetDepthBoundsTestEnableEXT" alias="vkCmdSetDepthBoundsTestEnable"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetStencilTestEnable</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>stencilTestEnable</name></param>
-        </command>
-        <command name="vkCmdSetStencilTestEnableEXT" alias="vkCmdSetStencilTestEnable"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetStencilOp</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param>
-            <param><type>VkStencilOp</type> <name>failOp</name></param>
-            <param><type>VkStencilOp</type> <name>passOp</name></param>
-            <param><type>VkStencilOp</type> <name>depthFailOp</name></param>
-            <param><type>VkCompareOp</type> <name>compareOp</name></param>
-        </command>
-        <command name="vkCmdSetStencilOpEXT" alias="vkCmdSetStencilOp"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetPatchControlPointsEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>patchControlPoints</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetRasterizerDiscardEnable</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>rasterizerDiscardEnable</name></param>
-        </command>
-        <command name="vkCmdSetRasterizerDiscardEnableEXT" alias="vkCmdSetRasterizerDiscardEnable"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthBiasEnable</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>depthBiasEnable</name></param>
-        </command>
-        <command name="vkCmdSetDepthBiasEnableEXT" alias="vkCmdSetDepthBiasEnable"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetLogicOpEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkLogicOp</type> <name>logicOp</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetPrimitiveRestartEnable</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>primitiveRestartEnable</name></param>
-        </command>
-        <command name="vkCmdSetPrimitiveRestartEnableEXT" alias="vkCmdSetPrimitiveRestartEnable"/>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetTessellationDomainOriginEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkTessellationDomainOrigin</type> <name>domainOrigin</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthClampEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>depthClampEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetPolygonModeEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPolygonMode</type> <name>polygonMode</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetRasterizationSamplesEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkSampleCountFlagBits</type>  <name>rasterizationSamples</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetSampleMaskEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkSampleCountFlagBits</type>  <name>samples</name></param>
-            <param len="latexmath:[\lceil{\mathit{samples} \over 32}\rceil]" altlen="(samples + 31) / 32">const <type>VkSampleMask</type>*    <name>pSampleMask</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetAlphaToCoverageEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>alphaToCoverageEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetAlphaToOneEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>alphaToOneEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetLogicOpEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>logicOpEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetColorBlendEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstAttachment</name></param>
-            <param><type>uint32_t</type> <name>attachmentCount</name></param>
-            <param len="attachmentCount">const <type>VkBool32</type>* <name>pColorBlendEnables</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetColorBlendEquationEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstAttachment</name></param>
-            <param><type>uint32_t</type> <name>attachmentCount</name></param>
-            <param len="attachmentCount">const <type>VkColorBlendEquationEXT</type>* <name>pColorBlendEquations</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetColorWriteMaskEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstAttachment</name></param>
-            <param><type>uint32_t</type> <name>attachmentCount</name></param>
-            <param len="attachmentCount" optional="false,true">const <type>VkColorComponentFlags</type>* <name>pColorWriteMasks</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetRasterizationStreamEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>rasterizationStream</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetConservativeRasterizationModeEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkConservativeRasterizationModeEXT</type> <name>conservativeRasterizationMode</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetExtraPrimitiveOverestimationSizeEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>float</type> <name>extraPrimitiveOverestimationSize</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthClipEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>depthClipEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetSampleLocationsEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>sampleLocationsEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetColorBlendAdvancedEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstAttachment</name></param>
-            <param><type>uint32_t</type> <name>attachmentCount</name></param>
-            <param len="attachmentCount">const <type>VkColorBlendAdvancedEXT</type>* <name>pColorBlendAdvanced</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetProvokingVertexModeEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkProvokingVertexModeEXT</type> <name>provokingVertexMode</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetLineRasterizationModeEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkLineRasterizationModeEXT</type> <name>lineRasterizationMode</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetLineStippleEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>stippledLineEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthClipNegativeOneToOneEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>negativeOneToOne</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetViewportWScalingEnableNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>viewportWScalingEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetViewportSwizzleNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>firstViewport</name></param>
-            <param><type>uint32_t</type> <name>viewportCount</name></param>
-            <param len="viewportCount">const <type>VkViewportSwizzleNV</type>* <name>pViewportSwizzles</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetCoverageToColorEnableNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>coverageToColorEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetCoverageToColorLocationNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>coverageToColorLocation</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetCoverageModulationModeNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkCoverageModulationModeNV</type> <name>coverageModulationMode</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetCoverageModulationTableEnableNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>coverageModulationTableEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetCoverageModulationTableNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>coverageModulationTableCount</name></param>
-            <param len="coverageModulationTableCount">const <type>float</type>* <name>pCoverageModulationTable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetShadingRateImageEnableNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>shadingRateImageEnable</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetCoverageReductionModeNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkCoverageReductionModeNV</type> <name>coverageReductionMode</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetRepresentativeFragmentTestEnableNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkBool32</type> <name>representativeFragmentTestEnable</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreatePrivateDataSlot</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkPrivateDataSlotCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkPrivateDataSlot</type>* <name>pPrivateDataSlot</name></param>
-        </command>
-        <command name="vkCreatePrivateDataSlotEXT" alias="vkCreatePrivateDataSlot"/>
-        <command>
-            <proto><type>void</type> <name>vkDestroyPrivateDataSlot</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkPrivateDataSlot</type> <name>privateDataSlot</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command name="vkDestroyPrivateDataSlotEXT" alias="vkDestroyPrivateDataSlot"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkSetPrivateData</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkObjectType</type> <name>objectType</name></param>
-            <param objecttype="objectType"><type>uint64_t</type> <name>objectHandle</name></param>
-            <param><type>VkPrivateDataSlot</type> <name>privateDataSlot</name></param>
-            <param><type>uint64_t</type> <name>data</name></param>
-        </command>
-        <command name="vkSetPrivateDataEXT" alias="vkSetPrivateData"/>
-        <command>
-            <proto><type>void</type> <name>vkGetPrivateData</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkObjectType</type> <name>objectType</name></param>
-            <param objecttype="objectType"><type>uint64_t</type> <name>objectHandle</name></param>
-            <param><type>VkPrivateDataSlot</type> <name>privateDataSlot</name></param>
-            <param><type>uint64_t</type>* <name>pData</name></param>
-        </command>
-        <command name="vkGetPrivateDataEXT" alias="vkGetPrivateData"/>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyBuffer2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyBufferInfo2</type>* <name>pCopyBufferInfo</name></param>
-        </command>
-        <command name="vkCmdCopyBuffer2KHR" alias="vkCmdCopyBuffer2"/>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyImage2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyImageInfo2</type>* <name>pCopyImageInfo</name></param>
-        </command>
-        <command name="vkCmdCopyImage2KHR" alias="vkCmdCopyImage2"/>
-        <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdBlitImage2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkBlitImageInfo2</type>* <name>pBlitImageInfo</name></param>
-        </command>
-        <command name="vkCmdBlitImage2KHR" alias="vkCmdBlitImage2"/>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyBufferToImage2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyBufferToImageInfo2</type>* <name>pCopyBufferToImageInfo</name></param>
-        </command>
-        <command name="vkCmdCopyBufferToImage2KHR" alias="vkCmdCopyBufferToImage2"/>
-        <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyImageToBuffer2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyImageToBufferInfo2</type>* <name>pCopyImageToBufferInfo</name></param>
-        </command>
-        <command name="vkCmdCopyImageToBuffer2KHR" alias="vkCmdCopyImageToBuffer2"/>
-        <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdResolveImage2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkResolveImageInfo2</type>* <name>pResolveImageInfo</name></param>
-        </command>
-        <command name="vkCmdResolveImage2KHR" alias="vkCmdResolveImage2"/>
-        <command queues="graphics,compute,transfer" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdRefreshObjectsKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkRefreshObjectListKHR</type>* <name>pRefreshObjects</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceRefreshableObjectTypesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pRefreshableObjectTypeCount</name></param>
-            <param optional="true" len="pRefreshableObjectTypeCount"><type>VkObjectType</type>* <name>pRefreshableObjectTypes</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetFragmentShadingRateKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>           <name>commandBuffer</name></param>
-            <param>const <type>VkExtent2D</type>*                           <name>pFragmentSize</name></param>
-            <param>const <type>VkFragmentShadingRateCombinerOpKHR</type>    <name>combinerOps</name>[2]</param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceFragmentShadingRatesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pFragmentShadingRateCount</name></param>
-            <param optional="true" len="pFragmentShadingRateCount"><type>VkPhysicalDeviceFragmentShadingRateKHR</type>* <name>pFragmentShadingRates</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetFragmentShadingRateEnumNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>           <name>commandBuffer</name></param>
-            <param><type>VkFragmentShadingRateNV</type>                     <name>shadingRate</name></param>
-            <param>const <type>VkFragmentShadingRateCombinerOpKHR</type>    <name>combinerOps</name>[2]</param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetAccelerationStructureBuildSizesKHR</name></proto>
-            <param><type>VkDevice</type>                                            <name>device</name></param>
-            <param><type>VkAccelerationStructureBuildTypeKHR</type>                 <name>buildType</name></param>
-            <param>const <type>VkAccelerationStructureBuildGeometryInfoKHR</type>*  <name>pBuildInfo</name></param>
-            <param optional="true" len="pBuildInfo-&gt;geometryCount">const <type>uint32_t</type>*  <name>pMaxPrimitiveCounts</name></param>
-            <param><type>VkAccelerationStructureBuildSizesInfoKHR</type>*           <name>pSizeInfo</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetVertexInputEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>uint32_t</type> <name>vertexBindingDescriptionCount</name></param>
-            <param len="vertexBindingDescriptionCount">const <type>VkVertexInputBindingDescription2EXT</type>* <name>pVertexBindingDescriptions</name></param>
-            <param optional="true"><type>uint32_t</type> <name>vertexAttributeDescriptionCount</name></param>
-            <param len="vertexAttributeDescriptionCount">const <type>VkVertexInputAttributeDescription2EXT</type>* <name>pVertexAttributeDescriptions</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type>                                    <name>vkCmdSetColorWriteEnableEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>       <name>commandBuffer</name></param>
-            <param><type>uint32_t</type>                                <name>attachmentCount</name></param>
-            <param len="attachmentCount">const <type>VkBool32</type>*   <name>pColorWriteEnables</name></param>
-        </command>
-        <command queues="graphics,compute,decode,encode" renderpass="outside" videocoding="both" cmdbufferlevel="primary,secondary" tasks="synchronization">
-            <proto><type>void</type> <name>vkCmdSetEvent2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                   <name>commandBuffer</name></param>
-            <param><type>VkEvent</type>                                             <name>event</name></param>
-            <param>const <type>VkDependencyInfo</type>*                             <name>pDependencyInfo</name></param>
-        </command>
-        <command name="vkCmdSetEvent2KHR" alias="vkCmdSetEvent2"/>
-        <command queues="graphics,compute,decode,encode" renderpass="outside" videocoding="both" cmdbufferlevel="primary,secondary" tasks="synchronization">
-            <proto><type>void</type> <name>vkCmdResetEvent2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                   <name>commandBuffer</name></param>
-            <param><type>VkEvent</type>                                             <name>event</name></param>
-            <param optional="true"><type>VkPipelineStageFlags2</type>               <name>stageMask</name></param>
-        </command>
-        <command name="vkCmdResetEvent2KHR" alias="vkCmdResetEvent2"/>
-        <command queues="graphics,compute,decode,encode" renderpass="both" videocoding="both" cmdbufferlevel="primary,secondary" tasks="synchronization">
-            <proto><type>void</type> <name>vkCmdWaitEvents2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                   <name>commandBuffer</name></param>
-            <param><type>uint32_t</type>                                            <name>eventCount</name></param>
-            <param len="eventCount">const <type>VkEvent</type>*                     <name>pEvents</name></param>
-            <param len="eventCount">const <type>VkDependencyInfo</type>*            <name>pDependencyInfos</name></param>
-        </command>
-        <command name="vkCmdWaitEvents2KHR" alias="vkCmdWaitEvents2"/>
-        <command queues="transfer,graphics,compute,decode,encode" renderpass="both" videocoding="both" cmdbufferlevel="primary,secondary" tasks="synchronization">
-            <proto><type>void</type> <name>vkCmdPipelineBarrier2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                   <name>commandBuffer</name></param>
-            <param>const <type>VkDependencyInfo</type>*                             <name>pDependencyInfo</name></param>
-        </command>
-        <command name="vkCmdPipelineBarrier2KHR" alias="vkCmdPipelineBarrier2"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
-            <proto><type>VkResult</type> <name>vkQueueSubmit2</name></proto>
-            <param externsync="true"><type>VkQueue</type>                           <name>queue</name></param>
-            <param optional="true"><type>uint32_t</type>                            <name>submitCount</name></param>
-            <param len="submitCount">const <type>VkSubmitInfo2</type>*              <name>pSubmits</name></param>
-            <param optional="true" externsync="true"><type>VkFence</type>           <name>fence</name></param>
-        </command>
-        <command name="vkQueueSubmit2KHR" alias="vkQueueSubmit2"/>
-        <command queues="transfer,graphics,compute,decode,encode" renderpass="both" videocoding="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdWriteTimestamp2</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                   <name>commandBuffer</name></param>
-            <param optional="true"><type>VkPipelineStageFlags2</type>               <name>stage</name></param>
-            <param><type>VkQueryPool</type>                                         <name>queryPool</name></param>
-            <param><type>uint32_t</type>                                            <name>query</name></param>
-        </command>
-        <command name="vkCmdWriteTimestamp2KHR" alias="vkCmdWriteTimestamp2"/>
-        <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdWriteBufferMarker2AMD</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                   <name>commandBuffer</name></param>
-            <param optional="true"><type>VkPipelineStageFlags2</type>               <name>stage</name></param>
-            <param><type>VkBuffer</type>                                            <name>dstBuffer</name></param>
-            <param><type>VkDeviceSize</type>                                        <name>dstOffset</name></param>
-            <param><type>uint32_t</type>                                            <name>marker</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetQueueCheckpointData2NV</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pCheckpointDataCount</name></param>
-            <param optional="true" len="pCheckpointDataCount"><type>VkCheckpointData2NV</type>* <name>pCheckpointData</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED">
-            <proto><type>VkResult</type> <name>vkCopyMemoryToImageEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkCopyMemoryToImageInfoEXT</type>* <name>pCopyMemoryToImageInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED">
-            <proto><type>VkResult</type> <name>vkCopyImageToMemoryEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkCopyImageToMemoryInfoEXT</type>* <name>pCopyImageToMemoryInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED">
-            <proto><type>VkResult</type> <name>vkCopyImageToImageEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkCopyImageToImageInfoEXT</type>* <name>pCopyImageToImageInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED">
-            <proto><type>VkResult</type> <name>vkTransitionImageLayoutEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>transitionCount</name></param>
-            <param len="transitionCount">const <type>VkHostImageLayoutTransitionInfoEXT</type>* <name>pTransitions</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetCommandPoolMemoryConsumption</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
-            <param optional="true" externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkCommandPoolMemoryConsumption</type>* <name>pConsumption</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceVideoCapabilitiesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkVideoProfileInfoKHR</type>* <name>pVideoProfile</name></param>
-            <param><type>VkVideoCapabilitiesKHR</type>* <name>pCapabilities</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceVideoFormatPropertiesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceVideoFormatInfoKHR</type>* <name>pVideoFormatInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pVideoFormatPropertyCount</name></param>
-            <param optional="true" len="pVideoFormatPropertyCount"><type>VkVideoFormatPropertiesKHR</type>* <name>pVideoFormatProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR,VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR</type>* <name>pQualityLevelInfo</name></param>
-            <param><type>VkVideoEncodeQualityLevelPropertiesKHR</type>* <name>pQualityLevelProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR,VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR">
-            <proto><type>VkResult</type> <name>vkCreateVideoSessionKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkVideoSessionCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkVideoSessionKHR</type>* <name>pVideoSession</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyVideoSessionKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkVideoSessionKHR</type> <name>videoSession</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR">
-            <proto><type>VkResult</type> <name>vkCreateVideoSessionParametersKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkVideoSessionParametersCreateInfoKHR</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkVideoSessionParametersKHR</type>* <name>pVideoSessionParameters</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR">
-            <proto><type>VkResult</type> <name>vkUpdateVideoSessionParametersKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkVideoSessionParametersKHR</type> <name>videoSessionParameters</name></param>
-            <param>const <type>VkVideoSessionParametersUpdateInfoKHR</type>* <name>pUpdateInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetEncodedVideoSessionParametersKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkVideoEncodeSessionParametersGetInfoKHR</type>* <name>pVideoSessionParametersInfo</name></param>
-            <param optional="true"><type>VkVideoEncodeSessionParametersFeedbackInfoKHR</type>* <name>pFeedbackInfo</name></param>
-            <param optional="false,true"><type>size_t</type>* <name>pDataSize</name></param>
-            <param optional="true" len="pDataSize"><type>void</type>* <name>pData</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyVideoSessionParametersKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkVideoSessionParametersKHR</type> <name>videoSessionParameters</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE">
-            <proto><type>VkResult</type> <name>vkGetVideoSessionMemoryRequirementsKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkVideoSessionKHR</type> <name>videoSession</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pMemoryRequirementsCount</name></param>
-            <param optional="true" len="pMemoryRequirementsCount"><type>VkVideoSessionMemoryRequirementsKHR</type>* <name>pMemoryRequirements</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>vkBindVideoSessionMemoryKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkVideoSessionKHR</type> <name>videoSession</name></param>
-            <param><type>uint32_t</type> <name>bindSessionMemoryInfoCount</name></param>
-            <param len="bindSessionMemoryInfoCount">const <type>VkBindVideoSessionMemoryInfoKHR</type>* <name>pBindSessionMemoryInfos</name></param>
-        </command>
-        <command queues="decode" renderpass="outside" videocoding="inside" cmdbufferlevel="primary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDecodeVideoKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkVideoDecodeInfoKHR</type>* <name>pDecodeInfo</name></param>
-        </command>
-        <command queues="decode,encode" renderpass="outside" videocoding="outside" cmdbufferlevel="primary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdBeginVideoCodingKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkVideoBeginCodingInfoKHR</type>* <name>pBeginInfo</name></param>
-        </command>
-        <command queues="decode,encode" renderpass="outside" videocoding="inside" cmdbufferlevel="primary" tasks="action">
-            <proto><type>void</type> <name>vkCmdControlVideoCodingKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkVideoCodingControlInfoKHR</type>* <name>pCodingControlInfo</name></param>
-        </command>
-        <command queues="decode,encode" renderpass="outside" videocoding="inside" cmdbufferlevel="primary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdEndVideoCodingKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkVideoEndCodingInfoKHR</type>* <name>pEndCodingInfo</name></param>
-        </command>
-        <command queues="encode" renderpass="outside" videocoding="inside" cmdbufferlevel="primary" tasks="action">
-            <proto><type>void</type> <name>vkCmdEncodeVideoKHR</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkVideoEncodeInfoKHR</type>* <name>pEncodeInfo</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDecompressMemoryNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>decompressRegionCount</name></param>
-            <param len="decompressRegionCount">const <type>VkDecompressMemoryRegionNV</type>* <name>pDecompressMemoryRegions</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdDecompressMemoryIndirectCountNV</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkDeviceAddress</type> <name>indirectCommandsAddress</name></param>
-            <param><type>VkDeviceAddress</type> <name>indirectCommandsCountAddress</name></param>
-            <param><type>uint32_t</type> <name>stride</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkCreateCuModuleNVX</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkCuModuleCreateInfoNVX</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkCuModuleNVX</type>* <name>pModule</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkCreateCuFunctionNVX</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkCuFunctionCreateInfoNVX</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkCuFunctionNVX</type>* <name>pFunction</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyCuModuleNVX</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkCuModuleNVX</type> <name>module</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyCuFunctionNVX</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkCuFunctionNVX</type> <name>function</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCuLaunchKernelNVX</name></proto>
-            <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCuLaunchInfoNVX</type>* <name>pLaunchInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDescriptorSetLayoutSizeEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDescriptorSetLayout</type> <name>layout</name></param>
-            <param><type>VkDeviceSize</type>* <name>pLayoutSizeInBytes</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDescriptorSetLayoutBindingOffsetEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDescriptorSetLayout</type> <name>layout</name></param>
-            <param><type>uint32_t</type> <name>binding</name></param>
-            <param><type>VkDeviceSize</type>* <name>pOffset</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDescriptorEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDescriptorGetInfoEXT</type>* <name>pDescriptorInfo</name></param>
-            <param><type>size_t</type> <name>dataSize</name></param>
-            <param len="dataSize"><type>void</type>* <name>pDescriptor</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindDescriptorBuffersEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>bufferCount</name></param>
-            <param len="bufferCount">const <type>VkDescriptorBufferBindingInfoEXT</type>* <name>pBindingInfos</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDescriptorBufferOffsetsEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
-            <param><type>VkPipelineLayout</type> <name>layout</name></param>
-            <param><type>uint32_t</type> <name>firstSet</name></param>
-            <param><type>uint32_t</type> <name>setCount</name></param>
-            <param len="setCount">const <type>uint32_t</type>* <name>pBufferIndices</name></param>
-            <param len="setCount">const <type>VkDeviceSize</type>* <name>pOffsets</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindDescriptorBufferEmbeddedSamplersEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
-            <param><type>VkPipelineLayout</type> <name>layout</name></param>
-            <param><type>uint32_t</type> <name>set</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>vkGetBufferOpaqueCaptureDescriptorDataEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkBufferCaptureDescriptorDataInfoEXT</type>* <name>pInfo</name></param>
-            <param><type>void</type>* <name>pData</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>vkGetImageOpaqueCaptureDescriptorDataEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImageCaptureDescriptorDataInfoEXT</type>* <name>pInfo</name></param>
-            <param><type>void</type>* <name>pData</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>vkGetImageViewOpaqueCaptureDescriptorDataEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImageViewCaptureDescriptorDataInfoEXT</type>* <name>pInfo</name></param>
-            <param><type>void</type>* <name>pData</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>vkGetSamplerOpaqueCaptureDescriptorDataEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkSamplerCaptureDescriptorDataInfoEXT</type>* <name>pInfo</name></param>
-            <param><type>void</type>* <name>pData</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>vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkAccelerationStructureCaptureDescriptorDataInfoEXT</type>* <name>pInfo</name></param>
-            <param><type>void</type>* <name>pData</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkSetDeviceMemoryPriorityEXT</name></proto>
-            <param><type>VkDevice</type>       <name>device</name></param>
-            <param><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param><type>float</type>          <name>priority</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkAcquireDrmDisplayEXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>int32_t</type> <name>drmFd</name></param>
-            <param><type>VkDisplayKHR</type> <name>display</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetDrmDisplayEXT</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param><type>int32_t</type> <name>drmFd</name></param>
-            <param><type>uint32_t</type> <name>connectorId</name></param>
-            <param><type>VkDisplayKHR</type>* <name>display</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT">
-            <proto><type>VkResult</type> <name>vkWaitForPresentKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param><type>uint64_t</type> <name>presentId</name></param>
-            <param><type>uint64_t</type> <name>timeout</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkCreateBufferCollectionFUCHSIA</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkBufferCollectionCreateInfoFUCHSIA</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkBufferCollectionFUCHSIA</type>* <name>pCollection</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
-            <proto><type>VkResult</type> <name>vkSetBufferCollectionBufferConstraintsFUCHSIA</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></param>
-            <param>const <type>VkBufferConstraintsInfoFUCHSIA</type>* <name>pBufferConstraintsInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
-            <proto><type>VkResult</type> <name>vkSetBufferCollectionImageConstraintsFUCHSIA</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></param>
-            <param>const <type>VkImageConstraintsInfoFUCHSIA</type>* <name>pImageConstraintsInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyBufferCollectionFUCHSIA</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkGetBufferCollectionPropertiesFUCHSIA</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></param>
-            <param><type>VkBufferCollectionPropertiesFUCHSIA</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateCudaModuleNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkCudaModuleCreateInfoNV</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkCudaModuleNV</type>* <name>pModule</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkGetCudaModuleCacheNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkCudaModuleNV</type> <name>module</name></param>
-            <param optional="false,true"><type>size_t</type>* <name>pCacheSize</name></param>
-            <param optional="true" len="pCacheSize"><type>void</type>* <name>pCacheData</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateCudaFunctionNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkCudaFunctionCreateInfoNV</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkCudaFunctionNV</type>* <name>pFunction</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyCudaModuleNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkCudaModuleNV</type> <name>module</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyCudaFunctionNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkCudaFunctionNV</type> <name>function</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCudaLaunchKernelNV</name></proto>
-            <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCudaLaunchInfoNV</type>* <name>pLaunchInfo</name></param>
-        </command>
-        <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdBeginRendering</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                   <name>commandBuffer</name></param>
-            <param>const <type>VkRenderingInfo</type>*                              <name>pRenderingInfo</name></param>
-        </command>
-        <command name="vkCmdBeginRenderingKHR" alias="vkCmdBeginRendering"/>
-        <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action,state">
-            <proto><type>void</type> <name>vkCmdEndRendering</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                   <name>commandBuffer</name></param>
-        </command>
-
-        <command name="vkCmdEndRenderingKHR" alias="vkCmdEndRendering"/>
-        <command>
-            <proto><type>void</type> <name>vkGetDescriptorSetLayoutHostMappingInfoVALVE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDescriptorSetBindingReferenceVALVE</type>* <name>pBindingReference</name></param>
-            <param><type>VkDescriptorSetLayoutHostMappingInfoVALVE</type>* <name>pHostMapping</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDescriptorSetHostMappingVALVE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDescriptorSet</type> <name>descriptorSet</name></param>
-            <param><type>void</type>** <name>ppData</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
-            <proto><type>VkResult</type> <name>vkCreateMicromapEXT</name></proto>
-            <param><type>VkDevice</type>                                           <name>device</name></param>
-            <param>const <type>VkMicromapCreateInfoEXT</type>*        <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>*       <name>pAllocator</name></param>
-            <param><type>VkMicromapEXT</type>*                        <name>pMicromap</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdBuildMicromapsEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type>                                    <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>infoCount</name></param>
-            <param len="infoCount">const <type>VkMicromapBuildInfoEXT</type>* <name>pInfos</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkBuildMicromapsEXT</name></proto>
-            <param><type>VkDevice</type>                                           <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param><type>uint32_t</type> <name>infoCount</name></param>
-            <param len="infoCount">const <type>VkMicromapBuildInfoEXT</type>* <name>pInfos</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyMicromapEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkMicromapEXT</type> <name>micromap</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyMicromapEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyMicromapInfoEXT</type>* <name>pInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCopyMicromapEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param>const <type>VkCopyMicromapInfoEXT</type>* <name>pInfo</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyMicromapToMemoryEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyMicromapToMemoryInfoEXT</type>* <name>pInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCopyMicromapToMemoryEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param>const <type>VkCopyMicromapToMemoryInfoEXT</type>* <name>pInfo</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdCopyMemoryToMicromapEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCopyMemoryToMicromapInfoEXT</type>* <name>pInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCopyMemoryToMicromapEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
-            <param>const <type>VkCopyMemoryToMicromapInfoEXT</type>* <name>pInfo</name></param>
-        </command>
-        <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdWriteMicromapsPropertiesEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>micromapCount</name></param>
-            <param len="micromapCount">const <type>VkMicromapEXT</type>* <name>pMicromaps</name></param>
-            <param><type>VkQueryType</type> <name>queryType</name></param>
-            <param><type>VkQueryPool</type> <name>queryPool</name></param>
-            <param><type>uint32_t</type> <name>firstQuery</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>vkWriteMicromapsPropertiesEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>micromapCount</name></param>
-            <param len="micromapCount">const <type>VkMicromapEXT</type>* <name>pMicromaps</name></param>
-            <param><type>VkQueryType</type>  <name>queryType</name></param>
-            <param><type>size_t</type>       <name>dataSize</name></param>
-            <param len="dataSize"><type>void</type>* <name>pData</name></param>
-            <param><type>size_t</type> <name>stride</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceMicromapCompatibilityEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMicromapVersionInfoEXT</type>* <name>pVersionInfo</name></param>
-            <param><type>VkAccelerationStructureCompatibilityKHR</type>* <name>pCompatibility</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetMicromapBuildSizesEXT</name></proto>
-            <param><type>VkDevice</type>                                            <name>device</name></param>
-            <param><type>VkAccelerationStructureBuildTypeKHR</type>                 <name>buildType</name></param>
-            <param>const <type>VkMicromapBuildInfoEXT</type>*  <name>pBuildInfo</name></param>
-            <param><type>VkMicromapBuildSizesInfoEXT</type>*           <name>pSizeInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetShaderModuleIdentifierEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkShaderModule</type> <name>shaderModule</name></param>
-            <param><type>VkShaderModuleIdentifierEXT</type>* <name>pIdentifier</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetShaderModuleCreateInfoIdentifierEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkShaderModuleCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param><type>VkShaderModuleIdentifierEXT</type>* <name>pIdentifier</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetImageSubresourceLayout2KHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param>const <type>VkImageSubresource2KHR</type>* <name>pSubresource</name></param>
-            <param><type>VkSubresourceLayout2KHR</type>* <name>pLayout</name></param>
-        </command>
-        <command name="vkGetImageSubresourceLayout2EXT"        alias="vkGetImageSubresourceLayout2KHR"/>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPipelinePropertiesEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkPipelineInfoEXT</type>* <name>pPipelineInfo</name></param>
-            <param noautovalidity="true" validstructs="VkPipelinePropertiesIdentifierEXT"><type>VkBaseOutStructure</type>* <name>pPipelineProperties</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkExportMetalObjectsEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkExportMetalObjectsInfoEXT</type>* <name>pMetalObjectsInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE">
-            <proto><type>VkResult</type> <name>vkGetFramebufferTilePropertiesQCOM</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkFramebuffer</type> <name>framebuffer</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertiesCount</name></param>
-            <param optional="true" len="pPropertiesCount"><type>VkTilePropertiesQCOM</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS">
-            <proto><type>VkResult</type> <name>vkGetDynamicRenderingTilePropertiesQCOM</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkRenderingInfo</type>* <name>pRenderingInfo</name></param>
-            <param><type>VkTilePropertiesQCOM</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_FORMAT_NOT_SUPPORTED">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceOpticalFlowImageFormatsNV</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param>const <type>VkOpticalFlowImageFormatInfoNV</type>* <name>pOpticalFlowImageFormatInfo</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pFormatCount</name></param>
-            <param optional="true" len="pFormatCount"><type>VkOpticalFlowImageFormatPropertiesNV</type>* <name>pImageFormatProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkCreateOpticalFlowSessionNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkOpticalFlowSessionCreateInfoNV</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkOpticalFlowSessionNV</type>* <name>pSession</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyOpticalFlowSessionNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkOpticalFlowSessionNV</type> <name>session</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkBindOpticalFlowSessionImageNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkOpticalFlowSessionNV</type> <name>session</name></param>
-            <param><type>VkOpticalFlowSessionBindingPointNV</type> <name>bindingPoint</name></param>
-            <param optional="true"><type>VkImageView</type> <name>view</name></param>
-            <param><type>VkImageLayout</type> <name>layout</name></param>
-        </command>
-        <command queues="opticalflow" renderpass="outside" cmdbufferlevel="primary,secondary" tasks="action">
-            <proto><type>void</type> <name>vkCmdOpticalFlowExecuteNV</name></proto>
-            <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkOpticalFlowSessionNV</type> <name>session</name></param>
-            <param>const <type>VkOpticalFlowExecuteInfoNV</type>* <name>pExecuteInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetDeviceFaultInfoEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkDeviceFaultCountsEXT</type>* <name>pFaultCounts</name></param>
-            <param optional="true"><type>VkDeviceFaultInfoEXT</type>* <name>pFaultInfo</name></param>
-        </command>
-        <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdSetDepthBias2EXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkDepthBiasInfoEXT</type>*         <name>pDepthBiasInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_SURFACE_LOST_KHR">
-            <proto><type>VkResult</type> <name>vkReleaseSwapchainImagesEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkReleaseSwapchainImagesInfoEXT</type>* <name>pReleaseInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetDeviceImageSubresourceLayoutKHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkDeviceImageSubresourceInfoKHR</type>* <name>pInfo</name></param>
-            <param><type>VkSubresourceLayout2KHR</type>* <name>pLayout</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED">
-            <proto><type>VkResult</type> <name>vkMapMemory2KHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryMapInfoKHR</type>* <name>pMemoryMapInfo</name></param>
-            <param optional="false,true"><type>void</type>** <name>ppData</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS">
-            <proto><type>VkResult</type> <name>vkUnmapMemory2KHR</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryUnmapInfoKHR</type>* <name>pMemoryUnmapInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT">
-            <proto><type>VkResult</type> <name>vkCreateShadersEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>uint32_t</type> <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkShaderCreateInfoEXT</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkShaderEXT</type>* <name>pShaders</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkDestroyShaderEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkShaderEXT</type> <name>shader</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetShaderBinaryDataEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkShaderEXT</type> <name>shader</name></param>
-            <param optional="false,true"><type>size_t</type>* <name>pDataSize</name></param>
-            <param optional="true" len="pDataSize"><type>void</type>* <name>pData</name></param>
-        </command>
-        <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state">
-            <proto><type>void</type> <name>vkCmdBindShadersEXT</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>stageCount</name></param>
-            <param len="stageCount">const <type>VkShaderStageFlagBits</type>* <name>pStages</name></param>
-            <param optional="true,true" len="stageCount">const <type>VkShaderEXT</type>* <name>pShaders</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR">
-            <proto><type>VkResult</type> <name>vkGetScreenBufferPropertiesQNX</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const struct <type>_screen_buffer</type>* <name>buffer</name></param>
-            <param><type>VkScreenBufferPropertiesQNX</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR</name></proto>
-            <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
-            <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
-            <param optional="true" len="pPropertyCount"><type>VkCooperativeMatrixPropertiesKHR</type>* <name>pProperties</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetExecutionGraphPipelineScratchSizeAMDX</name></proto>
-            <param><type>VkDevice</type>                                        <name>device</name></param>
-            <param><type>VkPipeline</type>                                      <name>executionGraph</name></param>
-            <param><type>VkExecutionGraphPipelineScratchSizeAMDX</type>*         <name>pSizeInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetExecutionGraphPipelineNodeIndexAMDX</name></proto>
-            <param><type>VkDevice</type>                                        <name>device</name></param>
-            <param><type>VkPipeline</type>                                      <name>executionGraph</name></param>
-            <param>const <type>VkPipelineShaderStageNodeCreateInfoAMDX</type>*   <name>pNodeInfo</name></param>
-            <param><type>uint32_t</type>*                                       <name>pNodeIndex</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkCreateExecutionGraphPipelinesAMDX</name></proto>
-            <param><type>VkDevice</type>                                        <name>device</name></param>
-            <param optional="true"><type>VkPipelineCache</type>                 <name>pipelineCache</name></param>
-            <param><type>uint32_t</type>                                        <name>createInfoCount</name></param>
-            <param len="createInfoCount">const <type>VkExecutionGraphPipelineCreateInfoAMDX</type>* <name>pCreateInfos</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>*    <name>pAllocator</name></param>
-            <param len="createInfoCount"><type>VkPipeline</type>*               <name>pPipelines</name></param>
-        </command>
-        <command queues="graphics,compute" tasks="action" renderpass="outside" cmdbufferlevel="primary">
-            <proto><type>void</type> <name>vkCmdInitializeGraphScratchMemoryAMDX</name></proto>
-            <param><type>VkCommandBuffer</type>                                 <name>commandBuffer</name></param>
-            <param><type>VkDeviceAddress</type>                                 <name>scratch</name></param>
-        </command>
-        <command queues="graphics,compute" tasks="action" renderpass="outside" cmdbufferlevel="primary">
-            <proto><type>void</type> <name>vkCmdDispatchGraphAMDX</name></proto>
-            <param><type>VkCommandBuffer</type>                                 <name>commandBuffer</name></param>
-            <param><type>VkDeviceAddress</type>                                 <name>scratch</name></param>
-            <param>const <type>VkDispatchGraphCountInfoAMDX</type>*              <name>pCountInfo</name></param>
-        </command>
-        <command queues="graphics,compute" tasks="action" renderpass="outside" cmdbufferlevel="primary">
-            <proto><type>void</type> <name>vkCmdDispatchGraphIndirectAMDX</name></proto>
-            <param><type>VkCommandBuffer</type>                                 <name>commandBuffer</name></param>
-            <param><type>VkDeviceAddress</type>                                 <name>scratch</name></param>
-            <param>const <type>VkDispatchGraphCountInfoAMDX</type>*              <name>pCountInfo</name></param>
-        </command>
-        <command queues="graphics,compute" tasks="action" renderpass="outside" cmdbufferlevel="primary">
-            <proto><type>void</type> <name>vkCmdDispatchGraphIndirectCountAMDX</name></proto>
-            <param><type>VkCommandBuffer</type>                                 <name>commandBuffer</name></param>
-            <param><type>VkDeviceAddress</type>                                 <name>scratch</name></param>
-            <param><type>VkDeviceAddress</type>                                 <name>countInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED">
-            <proto><type>VkResult</type> <name>vkSetLatencySleepModeNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param>const <type>VkLatencySleepModeInfoNV</type>* <name>pSleepModeInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_UNKNOWN">
-            <proto><type>VkResult</type> <name>vkLatencySleepNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param>const <type>VkLatencySleepInfoNV</type>* <name>pSleepInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkSetLatencyMarkerNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param>const <type>VkSetLatencyMarkerInfoNV</type>* <name>pLatencyMarkerInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetLatencyTimingsNV</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
-            <param><type>uint32_t</type>* <name>pTimingCount</name></param>
-            <param><type>VkGetLatencyMarkerInfoNV</type>* <name>pLatencyMarkerInfo</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueNotifyOutOfBandNV</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-            <param>const <type>VkOutOfBandQueueTypeInfoNV</type>* <name>pQueueTypeInfo</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetMemoryMetalHandleEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkMemoryGetMetalHandleInfoEXT</type>* <name>pGetMetalHandleInfo</name></param>
-            <param><type>MTLResource_id</type>* <name>pHandle</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
-            <proto><type>VkResult</type> <name>vkGetMemoryMetalHandlePropertiesEXT</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
-            <param><type>MTLResource_id</type> <name>handle</name></param>
-            <param><type>VkMemoryMetalHandlePropertiesEXT</type>* <name>pMemoryMetalHandleProperties</name></param>
-        </command>
-    </commands>
-
-    <feature api="vulkan,vulkansc" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
-        <require comment="Header boilerplate">
-            <type name="vk_platform"/>
-            <type name="VK_DEFINE_HANDLE"/>
-            <type name="VK_USE_64_BIT_PTR_DEFINES"/>
-            <type name="VK_DEFINE_NON_DISPATCHABLE_HANDLE"/>
-            <type name="VK_NULL_HANDLE"/>
-        </require>
-        <require comment="Fundamental types used by many commands and structures">
-            <type name="VkBool32"/>
-            <type name="VkDeviceAddress"/>
-            <type name="VkDeviceSize"/>
-            <type name="VkExtent2D"/>
-            <type name="VkExtent3D"/>
-            <type name="VkFlags"/>
-            <type name="VkOffset2D"/>
-            <type name="VkOffset3D"/>
-            <type name="VkRect2D"/>
-            <type name="VkResult"/>
-            <type name="VkStructureType"/>
-        </require>
-        <require comment="API constants">
-            <enum name="VK_ATTACHMENT_UNUSED"/>
-            <enum name="VK_FALSE"/>
-            <enum name="VK_LOD_CLAMP_NONE"/>
-            <enum name="VK_QUEUE_FAMILY_IGNORED"/>
-            <enum name="VK_REMAINING_ARRAY_LAYERS"/>
-            <enum name="VK_REMAINING_MIP_LEVELS"/>
-            <enum name="VK_SUBPASS_EXTERNAL"/>
-            <enum name="VK_TRUE"/>
-            <enum name="VK_WHOLE_SIZE"/>
-            <enum name="VK_MAX_MEMORY_TYPES"/>
-            <enum name="VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"/>
-            <enum name="VK_UUID_SIZE"/>
-            <enum name="VK_MAX_EXTENSION_NAME_SIZE"/>
-            <enum name="VK_MAX_DESCRIPTION_SIZE"/>
-            <enum name="VK_MAX_MEMORY_HEAPS"/>
-            <type name="VkPipelineCacheHeaderVersion"/>
-        </require>
-        <require comment="These types are part of the API, though not directly used in API commands or data structures">
-            <type name="VkBaseInStructure"/>
-            <type name="VkBaseOutStructure"/>
-            <type name="VkBufferMemoryBarrier"/>
-            <type name="VkDispatchIndirectCommand"/>
-            <type name="VkDrawIndexedIndirectCommand"/>
-            <type name="VkDrawIndirectCommand"/>
-            <type name="VkImageMemoryBarrier"/>
-            <type name="VkMemoryBarrier"/>
-            <type name="VkObjectType"/>
-            <type name="VkPipelineCacheHeaderVersionOne"/>
-            <type name="VkVendorId"/>
-        </require>
-        <require comment="API version macros">
-            <type name="VK_API_VERSION"/>
-            <type name="VK_API_VERSION_1_0"/>
-            <type name="VK_HEADER_VERSION"/>
-            <type name="VK_HEADER_VERSION_COMPLETE"/>
-            <type name="VK_MAKE_VERSION"/>
-            <type name="VK_VERSION_MAJOR"/>
-            <type name="VK_VERSION_MINOR"/>
-            <type name="VK_VERSION_PATCH"/>
-            <type name="VK_MAKE_API_VERSION"/>
-            <type name="VK_API_VERSION_VARIANT"/>
-            <type name="VK_API_VERSION_MAJOR"/>
-            <type name="VK_API_VERSION_MINOR"/>
-            <type name="VK_API_VERSION_PATCH"/>
-        </require>
-        <require comment="Device initialization">
-            <type name="PFN_vkAllocationFunction"/>
-            <type name="PFN_vkFreeFunction"/>
-            <type name="PFN_vkInternalAllocationNotification"/>
-            <type name="PFN_vkInternalFreeNotification"/>
-            <type name="PFN_vkReallocationFunction"/>
-            <type name="PFN_vkVoidFunction"/>
-            <type name="VkAllocationCallbacks"/>
-            <type name="VkApplicationInfo"/>
-            <type name="VkFormat"/>
-            <type name="VkFormatFeatureFlagBits"/>
-            <type name="VkFormatFeatureFlags"/>
-            <type name="VkFormatProperties"/>
-            <type name="VkImageCreateFlagBits"/>
-            <type name="VkImageCreateFlags"/>
-            <type name="VkImageFormatProperties"/>
-            <type name="VkImageTiling"/>
-            <type name="VkImageType"/>
-            <type name="VkImageUsageFlagBits"/>
-            <type name="VkImageUsageFlags"/>
-            <type name="VkInstance"/>
-            <type name="VkInstanceCreateFlags"/>
-            <type name="VkInstanceCreateFlagBits"/>
-            <type name="VkInstanceCreateInfo"/>
-            <type name="VkInternalAllocationType"/>
-            <type name="VkMemoryHeap"/>
-            <type name="VkMemoryHeapFlagBits"/>
-            <type name="VkMemoryHeapFlags"/>
-            <type name="VkMemoryPropertyFlagBits"/>
-            <type name="VkMemoryPropertyFlags"/>
-            <type name="VkMemoryType"/>
-            <type name="VkPhysicalDevice"/>
-            <type name="VkPhysicalDeviceFeatures"/>
-            <type name="VkPhysicalDeviceLimits"/>
-            <type name="VkPhysicalDeviceMemoryProperties"/>
-            <type name="VkPhysicalDeviceProperties"/>
-            <type name="VkPhysicalDeviceSparseProperties"/>
-            <type name="VkPhysicalDeviceType"/>
-            <type name="VkQueueFamilyProperties"/>
-            <type name="VkQueueFlagBits"/>
-            <type name="VkQueueFlags"/>
-            <type name="VkSampleCountFlagBits"/>
-            <type name="VkSampleCountFlags"/>
-            <type name="VkSystemAllocationScope"/>
-            <command name="vkCreateInstance"/>
-            <command name="vkDestroyInstance"/>
-            <command name="vkEnumeratePhysicalDevices"/>
-            <command name="vkGetPhysicalDeviceFeatures"/>
-            <command name="vkGetPhysicalDeviceFormatProperties"/>
-            <command name="vkGetPhysicalDeviceImageFormatProperties"/>
-            <command name="vkGetPhysicalDeviceProperties"/>
-            <command name="vkGetPhysicalDeviceQueueFamilyProperties"/>
-            <command name="vkGetPhysicalDeviceMemoryProperties"/>
-            <command name="vkGetInstanceProcAddr"/>
-            <command name="vkGetDeviceProcAddr"/>
-        </require>
-        <require comment="Device commands">
-            <type name="VkDevice"/>
-            <type name="VkDeviceCreateFlags" comment="Will add VkDeviceCreateFlagBits when bits are defined in the future"/>
-            <type name="VkDeviceCreateInfo"/>
-            <type name="VkDeviceQueueCreateFlags" comment="VkDeviceQueueCreateFlagBits was added later"/>
-            <type name="VkDeviceQueueCreateInfo"/>
-            <command name="vkCreateDevice"/>
-            <command name="vkDestroyDevice"/>
-        </require>
-        <require comment="Extension discovery commands">
-            <type name="VkExtensionProperties"/>
-            <command name="vkEnumerateInstanceExtensionProperties"/>
-            <command name="vkEnumerateDeviceExtensionProperties"/>
-        </require>
-        <require comment="Layer discovery commands">
-            <type name="VkLayerProperties"/>
-            <command name="vkEnumerateInstanceLayerProperties"/>
-            <command name="vkEnumerateDeviceLayerProperties"/>
-        </require>
-        <require comment="Queue commands">
-            <type name="VkPipelineStageFlagBits"/>
-            <type name="VkPipelineStageFlags"/>
-            <type name="VkQueue"/>
-            <type name="VkSubmitInfo"/>
-            <command name="vkGetDeviceQueue"/>
-            <command name="vkQueueSubmit"/>
-            <command name="vkQueueWaitIdle"/>
-            <command name="vkDeviceWaitIdle"/>
-        </require>
-        <require comment="Memory commands">
-            <type name="VkMappedMemoryRange"/>
-            <type name="VkMemoryAllocateInfo"/>
-            <type name="VkMemoryMapFlags"/>
-            <command name="vkAllocateMemory"/>
-            <command name="vkFreeMemory"/>
-            <command name="vkMapMemory"/>
-            <command name="vkUnmapMemory"/>
-            <command name="vkFlushMappedMemoryRanges"/>
-            <command name="vkInvalidateMappedMemoryRanges"/>
-            <command name="vkGetDeviceMemoryCommitment"/>
-        </require>
-        <require comment="Memory management API commands">
-            <type name="VkDeviceMemory"/>
-            <type name="VkMemoryRequirements"/>
-            <command name="vkBindBufferMemory"/>
-            <command name="vkBindImageMemory"/>
-            <command name="vkGetBufferMemoryRequirements"/>
-            <command name="vkGetImageMemoryRequirements"/>
-        </require>
-        <require comment="Sparse resource memory management API commands">
-            <type name="VkBindSparseInfo"/>
-            <type name="VkImageAspectFlagBits"/>
-            <type name="VkImageAspectFlags"/>
-            <type name="VkImageSubresource"/>
-            <type name="VkSparseBufferMemoryBindInfo"/>
-            <type name="VkSparseImageFormatFlagBits"/>
-            <type name="VkSparseImageFormatFlags"/>
-            <type name="VkSparseImageFormatProperties"/>
-            <type name="VkSparseImageMemoryBind"/>
-            <type name="VkSparseImageMemoryBindInfo"/>
-            <type name="VkSparseImageMemoryRequirements"/>
-            <type name="VkSparseImageOpaqueMemoryBindInfo"/>
-            <type name="VkSparseMemoryBind"/>
-            <type name="VkSparseMemoryBindFlagBits"/>
-            <type name="VkSparseMemoryBindFlags"/>
-            <command name="vkGetImageSparseMemoryRequirements"/>
-            <command name="vkGetPhysicalDeviceSparseImageFormatProperties"/>
-            <command name="vkQueueBindSparse"/>
-        </require>
-        <require comment="Fence commands">
-            <type name="VkFence"/>
-            <type name="VkFenceCreateFlagBits"/>
-            <type name="VkFenceCreateFlags"/>
-            <type name="VkFenceCreateInfo"/>
-            <command name="vkCreateFence"/>
-            <command name="vkDestroyFence"/>
-            <command name="vkResetFences"/>
-            <command name="vkGetFenceStatus"/>
-            <command name="vkWaitForFences"/>
-        </require>
-        <require comment="Queue semaphore commands">
-            <type name="VkSemaphore"/>
-            <type name="VkSemaphoreCreateFlags" comment="Will add VkSemaphoreCreateFlagBits when bits are defined in the future"/>
-            <type name="VkSemaphoreCreateInfo"/>
-            <command name="vkCreateSemaphore"/>
-            <command name="vkDestroySemaphore"/>
-        </require>
-        <require comment="Event commands">
-            <type name="VkEvent"/>
-            <type name="VkEventCreateFlags"/>
-            <type name="VkEventCreateFlagBits"/>
-            <type name="VkEventCreateInfo"/>
-            <command name="vkCreateEvent"/>
-            <command name="vkDestroyEvent"/>
-            <command name="vkGetEventStatus"/>
-            <command name="vkSetEvent"/>
-            <command name="vkResetEvent"/>
-        </require>
-        <require comment="Query commands">
-            <type name="VkQueryPipelineStatisticFlagBits"/>
-            <type name="VkQueryPipelineStatisticFlags"/>
-            <type name="VkQueryPool"/>
-            <type name="VkQueryPoolCreateFlags" comment="Will add VkQueryPoolCreateFlagBits when bits are defined in the future"/>
-            <type name="VkQueryPoolCreateInfo"/>
-            <type name="VkQueryResultFlagBits"/>
-            <type name="VkQueryResultFlags"/>
-            <type name="VkQueryType"/>
-            <command name="vkCreateQueryPool"/>
-            <command name="vkDestroyQueryPool"/>
-            <command name="vkGetQueryPoolResults"/>
-        </require>
-        <require comment="Buffer commands">
-            <type name="VkBuffer"/>
-            <type name="VkBufferCreateFlagBits"/>
-            <type name="VkBufferCreateFlags"/>
-            <type name="VkBufferCreateInfo"/>
-            <type name="VkBufferUsageFlagBits"/>
-            <type name="VkBufferUsageFlags"/>
-            <type name="VkSharingMode"/>
-            <command name="vkCreateBuffer"/>
-            <command name="vkDestroyBuffer"/>
-        </require>
-        <require comment="Buffer view commands">
-            <type name="VkBufferView"/>
-            <type name="VkBufferViewCreateFlags" comment="Will add VkBufferViewFlagBits when bits are defined in the future"/>
-            <type name="VkBufferViewCreateInfo"/>
-            <command name="vkCreateBufferView"/>
-            <command name="vkDestroyBufferView"/>
-        </require>
-        <require comment="Image commands">
-            <type name="VkImage"/>
-            <type name="VkImageCreateInfo"/>
-            <type name="VkImageLayout"/>
-            <type name="VkSubresourceLayout"/>
-            <command name="vkCreateImage"/>
-            <command name="vkDestroyImage"/>
-            <command name="vkGetImageSubresourceLayout"/>
-        </require>
-        <require comment="Image view commands">
-            <type name="VkComponentMapping"/>
-            <type name="VkComponentSwizzle"/>
-            <type name="VkImageSubresourceRange"/>
-            <type name="VkImageView"/>
-            <type name="VkImageViewCreateFlagBits"/>
-            <type name="VkImageViewCreateFlags"/>
-            <type name="VkImageViewCreateInfo"/>
-            <type name="VkImageViewType"/>
-            <command name="vkCreateImageView"/>
-            <command name="vkDestroyImageView"/>
-        </require>
-        <require comment="Shader commands">
-            <type name="VkShaderModule"/>
-            <type name="VkShaderModuleCreateFlags"/>
-            <type name="VkShaderModuleCreateInfo"/>
-            <command name="vkCreateShaderModule"/>
-            <command name="vkDestroyShaderModule"/>
-        </require>
-        <require comment="Pipeline Cache commands">
-            <type name="VkPipelineCache"/>
-            <type name="VkPipelineCacheCreateFlags" comment="VkPipelineCacheCreateFlagBits was added later"/>
-            <type name="VkPipelineCacheCreateInfo"/>
-            <command name="vkCreatePipelineCache"/>
-            <command name="vkDestroyPipelineCache"/>
-            <command name="vkGetPipelineCacheData"/>
-            <command name="vkMergePipelineCaches"/>
-        </require>
-        <require comment="Pipeline commands">
-            <type name="VkBlendFactor"/>
-            <type name="VkBlendOp"/>
-            <type name="VkColorComponentFlagBits"/>
-            <type name="VkColorComponentFlags"/>
-            <type name="VkCompareOp"/>
-            <type name="VkComputePipelineCreateInfo"/>
-            <type name="VkCullModeFlagBits"/>
-            <type name="VkCullModeFlags"/>
-            <type name="VkDynamicState"/>
-            <type name="VkFrontFace"/>
-            <type name="VkGraphicsPipelineCreateInfo"/>
-            <type name="VkLogicOp"/>
-            <type name="VkPipeline"/>
-            <type name="VkPipelineColorBlendAttachmentState"/>
-            <type name="VkPipelineColorBlendStateCreateFlags" comment="Will add VkPipeline*StateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineColorBlendStateCreateInfo"/>
-            <type name="VkPipelineCreateFlagBits"/>
-            <type name="VkPipelineCreateFlags"/>
-            <type name="VkPipelineDepthStencilStateCreateFlags" comment="Will add VkPipeline*StateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineDepthStencilStateCreateInfo"/>
-            <type name="VkPipelineDynamicStateCreateFlags" comment="Will add VkPipeline*StateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineDynamicStateCreateInfo"/>
-            <type name="VkPipelineInputAssemblyStateCreateFlags" comment="Will add VkPipeline*StateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineInputAssemblyStateCreateInfo"/>
-            <type name="VkPipelineLayoutCreateFlags" comment="Will add VkPipelineLayoutCreateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineMultisampleStateCreateFlags" comment="Will add VkPipelineMultisampleStateCreateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineMultisampleStateCreateInfo"/>
-            <type name="VkPipelineRasterizationStateCreateFlags" comment="Will add VkPipelineRasterizationStateCreateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineRasterizationStateCreateInfo"/>
-            <type name="VkPipelineShaderStageCreateFlagBits"/>
-            <type name="VkPipelineShaderStageCreateFlags"/>
-            <type name="VkPipelineShaderStageCreateInfo"/>
-            <type name="VkPipelineTessellationStateCreateFlags" comment="Will add VkPipelineTessellationStateCreateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineTessellationStateCreateInfo"/>
-            <type name="VkPipelineVertexInputStateCreateFlags" comment="Will add VkPipelineVertexInputStateCreateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineVertexInputStateCreateInfo"/>
-            <type name="VkPipelineViewportStateCreateFlags" comment="Will add VkPipelineViewportStateCreateFlagBits when bits are defined in the future"/>
-            <type name="VkPipelineViewportStateCreateInfo"/>
-            <type name="VkPolygonMode"/>
-            <type name="VkPrimitiveTopology"/>
-            <type name="VkSampleMask"/>
-            <type name="VkShaderStageFlagBits"/>
-            <type name="VkShaderStageFlags"/>
-            <type name="VkSpecializationInfo"/>
-            <type name="VkSpecializationMapEntry"/>
-            <type name="VkStencilOp"/>
-            <type name="VkStencilOpState"/>
-            <type name="VkVertexInputAttributeDescription"/>
-            <type name="VkVertexInputBindingDescription"/>
-            <type name="VkVertexInputRate"/>
-            <type name="VkViewport"/>
-            <command name="vkCreateGraphicsPipelines"/>
-            <command name="vkCreateComputePipelines"/>
-            <command name="vkDestroyPipeline"/>
-        </require>
-        <require comment="Pipeline layout commands">
-            <type name="VkPipelineLayout"/>
-            <type name="VkPipelineLayoutCreateInfo"/>
-            <type name="VkPushConstantRange"/>
-            <command name="vkCreatePipelineLayout"/>
-            <command name="vkDestroyPipelineLayout"/>
-        </require>
-        <require comment="Sampler commands">
-            <type name="VkBorderColor"/>
-            <type name="VkFilter"/>
-            <type name="VkSampler"/>
-            <type name="VkSamplerAddressMode"/>
-            <type name="VkSamplerCreateFlagBits"/>
-            <type name="VkSamplerCreateFlags"/>
-            <type name="VkSamplerCreateInfo"/>
-            <type name="VkSamplerMipmapMode"/>
-            <command name="vkCreateSampler"/>
-            <command name="vkDestroySampler"/>
-        </require>
-        <require comment="Descriptor set commands">
-            <type name="VkCopyDescriptorSet"/>
-            <type name="VkDescriptorBufferInfo"/>
-            <type name="VkDescriptorImageInfo"/>
-            <type name="VkDescriptorPool"/>
-            <type name="VkDescriptorPoolCreateFlagBits"/>
-            <type name="VkDescriptorPoolCreateFlags"/>
-            <type name="VkDescriptorPoolCreateInfo"/>
-            <type name="VkDescriptorPoolResetFlags"/>
-            <type name="VkDescriptorPoolSize"/>
-            <type name="VkDescriptorSet"/>
-            <type name="VkDescriptorSetAllocateInfo"/>
-            <type name="VkDescriptorSetLayout"/>
-            <type name="VkDescriptorSetLayoutBinding"/>
-            <type name="VkDescriptorSetLayoutCreateFlagBits"/>
-            <type name="VkDescriptorSetLayoutCreateFlags"/>
-            <type name="VkDescriptorSetLayoutCreateInfo"/>
-            <type name="VkDescriptorType"/>
-            <type name="VkWriteDescriptorSet"/>
-            <command name="vkCreateDescriptorSetLayout"/>
-            <command name="vkDestroyDescriptorSetLayout"/>
-            <command name="vkCreateDescriptorPool"/>
-            <command name="vkDestroyDescriptorPool"/>
-            <command name="vkResetDescriptorPool"/>
-            <command name="vkAllocateDescriptorSets"/>
-            <command name="vkFreeDescriptorSets"/>
-            <command name="vkUpdateDescriptorSets"/>
-        </require>
-        <require comment="Pass commands">
-            <type name="VkAccessFlagBits"/>
-            <type name="VkAccessFlags"/>
-            <type name="VkAttachmentDescription"/>
-            <type name="VkAttachmentDescriptionFlagBits"/>
-            <type name="VkAttachmentDescriptionFlags"/>
-            <type name="VkAttachmentLoadOp"/>
-            <type name="VkAttachmentReference"/>
-            <type name="VkAttachmentStoreOp"/>
-            <type name="VkDependencyFlagBits"/>
-            <type name="VkDependencyFlags"/>
-            <type name="VkFramebuffer"/>
-            <type name="VkFramebufferCreateFlagBits"/>
-            <type name="VkFramebufferCreateFlags"/>
-            <type name="VkFramebufferCreateInfo"/>
-            <type name="VkPipelineBindPoint"/>
-            <type name="VkRenderPass"/>
-            <type name="VkRenderPassCreateFlagBits"/>
-            <type name="VkRenderPassCreateFlags"/>
-            <type name="VkRenderPassCreateInfo"/>
-            <type name="VkSubpassDependency"/>
-            <type name="VkSubpassDescription"/>
-            <type name="VkSubpassDescriptionFlagBits"/>
-            <type name="VkSubpassDescriptionFlags"/>
-            <command name="vkCreateFramebuffer"/>
-            <command name="vkDestroyFramebuffer"/>
-            <command name="vkCreateRenderPass"/>
-            <command name="vkDestroyRenderPass"/>
-            <command name="vkGetRenderAreaGranularity"/>
-        </require>
-        <require comment="Command pool commands">
-            <type name="VkCommandPool"/>
-            <type name="VkCommandPoolCreateFlagBits"/>
-            <type name="VkCommandPoolCreateFlags"/>
-            <type name="VkCommandPoolCreateInfo"/>
-            <type name="VkCommandPoolResetFlagBits"/>
-            <type name="VkCommandPoolResetFlags"/>
-            <command name="vkCreateCommandPool"/>
-            <command name="vkDestroyCommandPool"/>
-            <command name="vkResetCommandPool"/>
-        </require>
-        <require comment="Command buffer commands">
-            <type name="VkCommandBuffer"/>
-            <type name="VkCommandBufferAllocateInfo"/>
-            <type name="VkCommandBufferBeginInfo"/>
-            <type name="VkCommandBufferInheritanceInfo"/>
-            <type name="VkCommandBufferLevel"/>
-            <type name="VkCommandBufferResetFlagBits"/>
-            <type name="VkCommandBufferResetFlags"/>
-            <type name="VkCommandBufferUsageFlagBits"/>
-            <type name="VkCommandBufferUsageFlags"/>
-            <type name="VkQueryControlFlagBits"/>
-            <type name="VkQueryControlFlags"/>
-            <command name="vkAllocateCommandBuffers"/>
-            <command name="vkFreeCommandBuffers"/>
-            <command name="vkBeginCommandBuffer"/>
-            <command name="vkEndCommandBuffer"/>
-            <command name="vkResetCommandBuffer"/>
-        </require>
-        <require comment="Command buffer building commands">
-            <type name="VkBufferCopy"/>
-            <type name="VkBufferImageCopy"/>
-            <type name="VkClearAttachment"/>
-            <type name="VkClearColorValue"/>
-            <type name="VkClearDepthStencilValue"/>
-            <type name="VkClearRect"/>
-            <type name="VkClearValue"/>
-            <type name="VkImageBlit"/>
-            <type name="VkImageCopy"/>
-            <type name="VkImageResolve"/>
-            <type name="VkImageSubresourceLayers"/>
-            <type name="VkIndexType"/>
-            <type name="VkRenderPassBeginInfo"/>
-            <type name="VkStencilFaceFlagBits"/>
-            <type name="VkStencilFaceFlags"/>
-            <type name="VkSubpassContents"/>
-            <command name="vkCmdBindPipeline"/>
-            <command name="vkCmdSetViewport"/>
-            <command name="vkCmdSetScissor"/>
-            <command name="vkCmdSetLineWidth"/>
-            <command name="vkCmdSetDepthBias"/>
-            <command name="vkCmdSetBlendConstants"/>
-            <command name="vkCmdSetDepthBounds"/>
-            <command name="vkCmdSetStencilCompareMask"/>
-            <command name="vkCmdSetStencilWriteMask"/>
-            <command name="vkCmdSetStencilReference"/>
-            <command name="vkCmdBindDescriptorSets"/>
-            <command name="vkCmdBindIndexBuffer"/>
-            <command name="vkCmdBindVertexBuffers"/>
-            <command name="vkCmdDraw"/>
-            <command name="vkCmdDrawIndexed"/>
-            <command name="vkCmdDrawIndirect"/>
-            <command name="vkCmdDrawIndexedIndirect"/>
-            <command name="vkCmdDispatch"/>
-            <command name="vkCmdDispatchIndirect"/>
-            <command name="vkCmdCopyBuffer"/>
-            <command name="vkCmdCopyImage"/>
-            <command name="vkCmdBlitImage"/>
-            <command name="vkCmdCopyBufferToImage"/>
-            <command name="vkCmdCopyImageToBuffer"/>
-            <command name="vkCmdUpdateBuffer"/>
-            <command name="vkCmdFillBuffer"/>
-            <command name="vkCmdClearColorImage"/>
-            <command name="vkCmdClearDepthStencilImage"/>
-            <command name="vkCmdClearAttachments"/>
-            <command name="vkCmdResolveImage"/>
-            <command name="vkCmdSetEvent"/>
-            <command name="vkCmdResetEvent"/>
-            <command name="vkCmdWaitEvents"/>
-            <command name="vkCmdPipelineBarrier"/>
-            <command name="vkCmdBeginQuery"/>
-            <command name="vkCmdEndQuery"/>
-            <command name="vkCmdResetQueryPool"/>
-            <command name="vkCmdWriteTimestamp"/>
-            <command name="vkCmdCopyQueryPoolResults"/>
-            <command name="vkCmdPushConstants"/>
-            <command name="vkCmdBeginRenderPass"/>
-            <command name="vkCmdNextSubpass"/>
-            <command name="vkCmdEndRenderPass"/>
-            <command name="vkCmdExecuteCommands"/>
-        </require>
-    </feature>
-    <feature api="vulkan,vulkansc" name="VK_VERSION_1_1" number="1.1" comment="Vulkan 1.1 core API interface definitions.">
-        <require>
-            <type name="VK_API_VERSION_1_1"/>
-        </require>
-        <require comment="Device Initialization">
-            <command name="vkEnumerateInstanceVersion"/>
-        </require>
-        <require comment="Promoted from VK_KHR_relaxed_block_layout, which has no API"/>
-        <require comment="Promoted from VK_KHR_storage_buffer_storage_class, which has no API"/>
-        <require comment="Originally based on VK_KHR_subgroup (extension 94), but the actual enum block used was, incorrectly, that of extension 95">
-            <enum extends="VkStructureType" extnumber="95"  offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"/>
-            <type                                       name="VkPhysicalDeviceSubgroupProperties"/>
-            <type                                       name="VkSubgroupFeatureFlags"/>
-            <type                                       name="VkSubgroupFeatureFlagBits"/>
-        </require>
-        <require comment="Promoted from VK_KHR_bind_memory2">
-            <command name="vkBindBufferMemory2"/>
-            <command name="vkBindImageMemory2"/>
-            <enum extends="VkStructureType" extnumber="158" offset="0"          name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"/>
-            <enum extends="VkStructureType" extnumber="158" offset="1"          name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"/>
-            <enum bitpos="10" extends="VkImageCreateFlagBits"                   name="VK_IMAGE_CREATE_ALIAS_BIT"/>
-            <type name="VkBindBufferMemoryInfo"/>
-            <type name="VkBindImageMemoryInfo"/>
-        </require>
-        <require comment="Promoted from VK_KHR_16bit_storage">
-            <enum extends="VkStructureType" extnumber="84"  offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"/>
-            <type name="VkPhysicalDevice16BitStorageFeatures"/>
-        </require>
-        <require comment="Promoted from VK_KHR_dedicated_allocation">
-            <enum extends="VkStructureType" extnumber="128" offset="0"          name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"/>
-            <enum extends="VkStructureType" extnumber="128" offset="1"          name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"/>
-            <type name="VkMemoryDedicatedRequirements"/>
-            <type name="VkMemoryDedicatedAllocateInfo"/>
-        </require>
-        <require comment="Promoted from VK_KHR_device_group">
-            <enum extends="VkStructureType" extnumber="61"  offset="0"          name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"/>
-            <comment>offset 1 reserved for the old VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX enum</comment>
-            <comment>offset 2 reserved for the old VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX enum</comment>
-            <enum extends="VkStructureType" extnumber="61"  offset="3"          name="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"/>
-            <enum extends="VkStructureType" extnumber="61"  offset="4"          name="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"/>
-            <enum extends="VkStructureType" extnumber="61"  offset="5"          name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"/>
-            <enum extends="VkStructureType" extnumber="61"  offset="6"          name="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"/>
-            <type name="VkPeerMemoryFeatureFlags"/>
-            <type name="VkPeerMemoryFeatureFlagBits"/>
-            <type name="VkMemoryAllocateFlags"/>
-            <type name="VkMemoryAllocateFlagBits"/>
-            <type name="VkMemoryAllocateFlagsInfo"/>
-            <type name="VkDeviceGroupRenderPassBeginInfo"/>
-            <type name="VkDeviceGroupCommandBufferBeginInfo"/>
-            <type name="VkDeviceGroupSubmitInfo"/>
-            <type name="VkDeviceGroupBindSparseInfo"/>
-            <command name="vkGetDeviceGroupPeerMemoryFeatures"/>
-            <command name="vkCmdSetDeviceMask"/>
-            <command name="vkCmdDispatchBase"/>
-            <enum bitpos="3"  extends="VkPipelineCreateFlagBits"                name="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"/>
-            <enum bitpos="4"  extends="VkPipelineCreateFlagBits"                name="VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"/>
-            <enum extends="VkPipelineCreateFlagBits"                            name="VK_PIPELINE_CREATE_DISPATCH_BASE" alias="VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"/>
-            <enum bitpos="2"  extends="VkDependencyFlagBits"                    name="VK_DEPENDENCY_DEVICE_GROUP_BIT" comment="Dependency is across devices"/>
-        </require>
-        <require comment="Promoted from VK_KHR_device_group + VK_KHR_bind_memory2">
-            <enum extends="VkStructureType" extnumber="61"  offset="13"         name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"/>
-            <enum extends="VkStructureType" extnumber="61"  offset="14"         name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"/>
-            <type name="VkBindBufferMemoryDeviceGroupInfo"/>
-            <type name="VkBindImageMemoryDeviceGroupInfo"/>
-            <enum bitpos="6"  extends="VkImageCreateFlagBits"                   name="VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT" comment="Allows using VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions when binding memory to the image"/>
-        </require>
-        <require comment="Promoted from VK_KHR_device_group_creation">
-            <enum extends="VkStructureType" extnumber="71"  offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"/>
-            <enum extends="VkStructureType" extnumber="71"  offset="1"          name="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"/>
-            <enum name="VK_MAX_DEVICE_GROUP_SIZE"/>
-            <type name="VkPhysicalDeviceGroupProperties"/>
-            <type name="VkDeviceGroupDeviceCreateInfo"/>
-            <command name="vkEnumeratePhysicalDeviceGroups"/>
-            <enum bitpos="1"  extends="VkMemoryHeapFlagBits"                    name="VK_MEMORY_HEAP_MULTI_INSTANCE_BIT" comment="If set, heap allocations allocate multiple instances by default"/>
-        </require>
-        <require comment="Promoted from VK_KHR_get_memory_requirements2">
-            <enum extends="VkStructureType" extnumber="147" offset="0"          name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"/>
-            <enum extends="VkStructureType" extnumber="147" offset="1"          name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"/>
-            <enum extends="VkStructureType" extnumber="147" offset="2"          name="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"/>
-            <enum extends="VkStructureType" extnumber="147" offset="3"          name="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"/>
-            <enum extends="VkStructureType" extnumber="147" offset="4"          name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"/>
-            <type name="VkBufferMemoryRequirementsInfo2"/>
-            <type name="VkImageMemoryRequirementsInfo2"/>
-            <type name="VkImageSparseMemoryRequirementsInfo2"/>
-            <type name="VkMemoryRequirements2"/>
-            <type name="VkSparseImageMemoryRequirements2"/>
-            <command name="vkGetImageMemoryRequirements2"/>
-            <command name="vkGetBufferMemoryRequirements2"/>
-            <command name="vkGetImageSparseMemoryRequirements2"/>
-        </require>
-        <require comment="Promoted from VK_KHR_get_physical_device_properties2">
-            <enum extends="VkStructureType" extnumber="60"  offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"/>
-            <enum extends="VkStructureType" extnumber="60"  offset="1"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"/>
-            <enum extends="VkStructureType" extnumber="60"  offset="2"          name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"/>
-            <enum extends="VkStructureType" extnumber="60"  offset="3"          name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"/>
-            <enum extends="VkStructureType" extnumber="60"  offset="4"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"/>
-            <enum extends="VkStructureType" extnumber="60"  offset="5"          name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"/>
-            <enum extends="VkStructureType" extnumber="60"  offset="6"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"/>
-            <enum extends="VkStructureType" extnumber="60"  offset="7"          name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"/>
-            <enum extends="VkStructureType" extnumber="60"  offset="8"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"/>
-            <type name="VkPhysicalDeviceFeatures2"/>
-            <type name="VkPhysicalDeviceProperties2"/>
-            <type name="VkFormatProperties2"/>
-            <type name="VkImageFormatProperties2"/>
-            <type name="VkPhysicalDeviceImageFormatInfo2"/>
-            <type name="VkQueueFamilyProperties2"/>
-            <type name="VkPhysicalDeviceMemoryProperties2"/>
-            <type name="VkSparseImageFormatProperties2"/>
-            <type name="VkPhysicalDeviceSparseImageFormatInfo2"/>
-            <command name="vkGetPhysicalDeviceFeatures2"/>
-            <command name="vkGetPhysicalDeviceProperties2"/>
-            <command name="vkGetPhysicalDeviceFormatProperties2"/>
-            <command name="vkGetPhysicalDeviceImageFormatProperties2"/>
-            <command name="vkGetPhysicalDeviceQueueFamilyProperties2"/>
-            <command name="vkGetPhysicalDeviceMemoryProperties2"/>
-            <command name="vkGetPhysicalDeviceSparseImageFormatProperties2"/>
-        </require>
-        <require comment="Promoted from VK_KHR_maintenance1">
-            <enum extends="VkResult"        extnumber="70"  offset="0"  dir="-" name="VK_ERROR_OUT_OF_POOL_MEMORY"/>
-            <enum bitpos="14" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT" comment="Format can be used as the source image of image transfer commands"/>
-            <enum bitpos="15" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_TRANSFER_DST_BIT" comment="Format can be used as the destination image of image transfer commands"/>
-            <enum bitpos="5"  extends="VkImageCreateFlagBits"                   name="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT" comment="The 3D image can be viewed as a 2D or 2D array image"/>
-            <command name="vkTrimCommandPool"/>
-            <comment>Additional dependent types / tokens extending enumerants, not explicitly mentioned</comment>
-            <type name="VkCommandPoolTrimFlags"/>
-        </require>
-        <require comment="Promoted from VK_KHR_maintenance2">
-            <enum bitpos="7"  extends="VkImageCreateFlagBits"                   name="VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"/>
-            <enum bitpos="8"  extends="VkImageCreateFlagBits"                   name="VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"/>
-            <enum extends="VkStructureType" extnumber="118" offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"/>
-            <enum extends="VkStructureType" extnumber="118" offset="1"          name="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"/>
-            <enum extends="VkStructureType" extnumber="118" offset="2"          name="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"/>
-            <enum extends="VkStructureType" extnumber="118" offset="3"          name="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"/>
-            <enum extends="VkImageLayout"   extnumber="118" offset="0"          name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"/>
-            <enum extends="VkImageLayout"   extnumber="118" offset="1"          name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"/>
-            <type name="VkPhysicalDevicePointClippingProperties"/>
-            <type name="VkPointClippingBehavior"/>
-            <type name="VkRenderPassInputAttachmentAspectCreateInfo"/>
-            <type name="VkInputAttachmentAspectReference"/>
-            <type name="VkImageViewUsageCreateInfo"/>
-            <type name="VkTessellationDomainOrigin"/>
-            <type name="VkPipelineTessellationDomainOriginStateCreateInfo"/>
-        </require>
-        <require comment="Promoted from VK_KHR_multiview">
-            <enum extends="VkStructureType" extnumber="54"  offset="0"          name="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"/>
-            <enum extends="VkStructureType" extnumber="54"  offset="1"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"/>
-            <enum extends="VkStructureType" extnumber="54"  offset="2"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"/>
-            <enum bitpos="1"  extends="VkDependencyFlagBits"                    name="VK_DEPENDENCY_VIEW_LOCAL_BIT"/>
-            <type name="VkRenderPassMultiviewCreateInfo"/>
-            <type name="VkPhysicalDeviceMultiviewFeatures"/>
-            <type name="VkPhysicalDeviceMultiviewProperties"/>
-        </require>
-        <require comment="Promoted from VK_KHR_variable_pointers">
-            <enum extends="VkStructureType" extnumber="121" offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"/>
-            <enum api="vulkan" extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"/>
-            <type name="VkPhysicalDeviceVariablePointerFeatures"/>
-            <type name="VkPhysicalDeviceVariablePointersFeatures"/>
-        </require>
-        <require comment="Originally based on VK_KHR_protected_memory (extension 146), which was never published; thus the mystifying large value= numbers below. These are not aliased since they were not actually promoted from an extension.">
-            <enum extends="VkStructureType" extnumber="146" offset="0"          name="VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"/>
-            <enum extends="VkStructureType" extnumber="146" offset="1"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"/>
-            <enum extends="VkStructureType" extnumber="146" offset="2"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"/>
-            <enum extends="VkStructureType" extnumber="146" offset="3"          name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"/>
-            <enum bitpos="4"  extends="VkQueueFlagBits"                         name="VK_QUEUE_PROTECTED_BIT" comment="Queues may support protected operations"/>
-            <enum bitpos="0"  extends="VkDeviceQueueCreateFlagBits"             name="VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT" comment="Queue is a protected-capable device queue"/>
-            <type name="VkDeviceQueueCreateFlagBits" comment="This is a temporary workaround for processors not recognizing that VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT above also requires this type"/>
-            <enum bitpos="5"  extends="VkMemoryPropertyFlagBits"                name="VK_MEMORY_PROPERTY_PROTECTED_BIT" comment="Memory is protected"/>
-            <enum bitpos="3"  extends="VkBufferCreateFlagBits"                  name="VK_BUFFER_CREATE_PROTECTED_BIT" comment="Buffer requires protected memory"/>
-            <enum bitpos="11" extends="VkImageCreateFlagBits"                   name="VK_IMAGE_CREATE_PROTECTED_BIT" comment="Image requires protected memory"/>
-            <enum bitpos="2"  extends="VkCommandPoolCreateFlagBits"             name="VK_COMMAND_POOL_CREATE_PROTECTED_BIT" comment="Command buffers allocated from pool are protected command buffers"/>
-            <type name="VkPhysicalDeviceProtectedMemoryFeatures"/>
-            <type name="VkPhysicalDeviceProtectedMemoryProperties"/>
-            <type name="VkDeviceQueueInfo2"/>
-            <type name="VkProtectedSubmitInfo"/>
-            <command name="vkGetDeviceQueue2"/>
-        </require>
-        <require comment="Promoted from VK_KHR_sampler_ycbcr_conversion">
-            <enum extends="VkStructureType" extnumber="157" offset="0"          name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"/>
-            <enum extends="VkStructureType" extnumber="157" offset="1"          name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"/>
-            <enum extends="VkStructureType" extnumber="157" offset="2"          name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"/>
-            <enum extends="VkStructureType" extnumber="157" offset="3"          name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"/>
-            <enum extends="VkStructureType" extnumber="157" offset="4"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"/>
-            <enum extends="VkStructureType" extnumber="157" offset="5"          name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"/>
-            <enum extends="VkObjectType"    extnumber="157" offset="0"          name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"/>
-            <enum extends="VkFormat"        extnumber="157" offset="0"          name="VK_FORMAT_G8B8G8R8_422_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="1"          name="VK_FORMAT_B8G8R8G8_422_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="2"          name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="3"          name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="4"          name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="5"          name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="6"          name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="7"          name="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="8"          name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="9"          name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="10"         name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="11"         name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="12"         name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="13"         name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="14"         name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="15"         name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="16"         name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="17"         name="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="18"         name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="19"         name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="20"         name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="21"         name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="22"         name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="23"         name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="24"         name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="25"         name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="26"         name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"/>
-            <enum extends="VkFormat"        extnumber="157" offset="27"         name="VK_FORMAT_G16B16G16R16_422_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="28"         name="VK_FORMAT_B16G16R16G16_422_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="29"         name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="30"         name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="31"         name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="32"         name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"/>
-            <enum extends="VkFormat"        extnumber="157" offset="33"         name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"/>
-            <enum bitpos="4"  extends="VkImageAspectFlagBits"                   name="VK_IMAGE_ASPECT_PLANE_0_BIT"/>
-            <enum bitpos="5"  extends="VkImageAspectFlagBits"                   name="VK_IMAGE_ASPECT_PLANE_1_BIT"/>
-            <enum bitpos="6"  extends="VkImageAspectFlagBits"                   name="VK_IMAGE_ASPECT_PLANE_2_BIT"/>
-            <enum bitpos="9"  extends="VkImageCreateFlagBits"                   name="VK_IMAGE_CREATE_DISJOINT_BIT"/>
-            <enum bitpos="17" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT" comment="Format can have midpoint rather than cosited chroma samples"/>
-            <enum bitpos="18" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT" comment="Format can be used with linear filtering whilst color conversion is enabled"/>
-            <enum bitpos="19" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT" comment="Format can have different chroma, min and mag filters"/>
-            <enum bitpos="20" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"/>
-            <enum bitpos="21" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"/>
-            <enum bitpos="22" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_DISJOINT_BIT" comment="Format supports disjoint planes"/>
-            <enum bitpos="23" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT" comment="Format can have cosited rather than midpoint chroma samples"/>
-            <type name="VkSamplerYcbcrConversionCreateInfo"/>
-            <type name="VkSamplerYcbcrConversionInfo"/>
-            <type name="VkBindImagePlaneMemoryInfo"/>
-            <type name="VkImagePlaneMemoryRequirementsInfo"/>
-            <type name="VkPhysicalDeviceSamplerYcbcrConversionFeatures"/>
-            <type name="VkSamplerYcbcrConversionImageFormatProperties"/>
-            <command name="vkCreateSamplerYcbcrConversion"/>
-            <command name="vkDestroySamplerYcbcrConversion"/>
-            <comment>Additional dependent types / tokens extending enumerants, not explicitly mentioned</comment>
-            <type name="VkSamplerYcbcrConversion"/>
-            <type name="VkSamplerYcbcrModelConversion"/>
-            <type name="VkSamplerYcbcrRange"/>
-            <type name="VkChromaLocation"/>
-        </require>
-        <require comment="Promoted from VK_KHR_descriptor_update_template">
-            <enum extends="VkStructureType" extnumber="86"  offset="0"          name="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"/>
-            <enum extends="VkObjectType"    extnumber="86"  offset="0"          name="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"/>
-            <command name="vkCreateDescriptorUpdateTemplate"/>
-            <command name="vkDestroyDescriptorUpdateTemplate"/>
-            <command name="vkUpdateDescriptorSetWithTemplate"/>
-            <type name="VkDescriptorUpdateTemplate"/>
-            <type name="VkDescriptorUpdateTemplateCreateFlags"/>
-            <type name="VkDescriptorUpdateTemplateType"/>
-            <type name="VkDescriptorUpdateTemplateEntry"/>
-            <type name="VkDescriptorUpdateTemplateCreateInfo"/>
-        </require>
-        <require comment="Promoted from VK_KHR_external_memory_capabilities">
-            <enum extends="VkStructureType" extnumber="72"  offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"/>
-            <enum extends="VkStructureType" extnumber="72"  offset="1"          name="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"/>
-            <enum extends="VkStructureType" extnumber="72"  offset="2"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"/>
-            <enum extends="VkStructureType" extnumber="72"  offset="3"          name="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"/>
-            <enum extends="VkStructureType" extnumber="72"  offset="4"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/>
-            <enum name="VK_LUID_SIZE"/>
-            <type name="VkExternalMemoryHandleTypeFlags"/>
-            <type name="VkExternalMemoryHandleTypeFlagBits"/>
-            <type name="VkExternalMemoryFeatureFlags"/>
-            <type name="VkExternalMemoryFeatureFlagBits"/>
-            <type name="VkExternalMemoryProperties"/>
-            <type name="VkPhysicalDeviceExternalImageFormatInfo"/>
-            <type name="VkExternalImageFormatProperties"/>
-            <type name="VkPhysicalDeviceExternalBufferInfo"/>
-            <type name="VkExternalBufferProperties"/>
-            <type name="VkPhysicalDeviceIDProperties"/>
-            <command name="vkGetPhysicalDeviceExternalBufferProperties"/>
-        </require>
-        <require comment="Promoted from VK_KHR_external_memory">
-            <enum extends="VkStructureType" extnumber="73"  offset="0"          name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"/>
-            <enum extends="VkStructureType" extnumber="73"  offset="1"          name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"/>
-            <enum extends="VkStructureType" extnumber="73"  offset="2"          name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"/>
-            <enum extends="VkResult"        extnumber="73"  offset="3"  dir="-" name="VK_ERROR_INVALID_EXTERNAL_HANDLE"/>
-            <enum name="VK_QUEUE_FAMILY_EXTERNAL"/>
-            <type name="VkExternalMemoryImageCreateInfo"/>
-            <type name="VkExternalMemoryBufferCreateInfo"/>
-            <type name="VkExportMemoryAllocateInfo"/>
-        </require>
-        <require comment="Promoted from VK_KHR_external_fence_capabilities">
-            <enum extends="VkStructureType" extnumber="113" offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"/>
-            <enum extends="VkStructureType" extnumber="113" offset="1"          name="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"/>
-            <type name="VkExternalFenceHandleTypeFlags"/>
-            <type name="VkExternalFenceHandleTypeFlagBits"/>
-            <type name="VkExternalFenceFeatureFlags"/>
-            <type name="VkExternalFenceFeatureFlagBits"/>
-            <type name="VkPhysicalDeviceExternalFenceInfo"/>
-            <type name="VkExternalFenceProperties"/>
-            <command name="vkGetPhysicalDeviceExternalFenceProperties"/>
-        </require>
-        <require comment="Promoted from VK_KHR_external_fence">
-            <enum extends="VkStructureType" extnumber="114" offset="0"          name="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"/>
-            <type name="VkFenceImportFlags"/>
-            <type name="VkFenceImportFlagBits"/>
-            <type name="VkExportFenceCreateInfo"/>
-        </require>
-        <require comment="Promoted from VK_KHR_external_semaphore">
-            <enum extends="VkStructureType" extnumber="78"  offset="0"          name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"/>
-            <type name="VkSemaphoreImportFlags"/>
-            <type name="VkSemaphoreImportFlagBits"/>
-            <type name="VkExportSemaphoreCreateInfo"/>
-        </require>
-        <require comment="Promoted from VK_KHR_external_semaphore_capabilities">
-            <enum extends="VkStructureType" extnumber="77"  offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"/>
-            <enum extends="VkStructureType" extnumber="77"  offset="1"          name="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"/>
-            <type name="VkExternalSemaphoreHandleTypeFlags"/>
-            <type name="VkExternalSemaphoreHandleTypeFlagBits"/>
-            <type name="VkExternalSemaphoreFeatureFlags"/>
-            <type name="VkExternalSemaphoreFeatureFlagBits"/>
-            <type name="VkPhysicalDeviceExternalSemaphoreInfo"/>
-            <type name="VkExternalSemaphoreProperties"/>
-            <command name="vkGetPhysicalDeviceExternalSemaphoreProperties"/>
-        </require>
-        <require comment="Promoted from VK_KHR_maintenance3">
-            <enum extends="VkStructureType" extnumber="169" offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"/>
-            <enum extends="VkStructureType" extnumber="169" offset="1"          name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"/>
-            <type name="VkPhysicalDeviceMaintenance3Properties"/>
-            <type name="VkDescriptorSetLayoutSupport"/>
-            <command name="vkGetDescriptorSetLayoutSupport"/>
-        </require>
-        <require comment="Promoted from VK_KHR_shader_draw_parameters, with a feature support query added">
-            <enum extends="VkStructureType" extnumber="64"  offset="0"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"/>
-            <enum api="vulkan" extends="VkStructureType"                                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"/>
-            <type name="VkPhysicalDeviceShaderDrawParameterFeatures"/>
-            <type name="VkPhysicalDeviceShaderDrawParametersFeatures"/>
-        </require>
-    </feature>
-    <feature api="vulkan,vulkansc" name="VK_VERSION_1_2" number="1.2" comment="Vulkan 1.2 core API interface definitions.">
-        <require>
-            <type name="VK_API_VERSION_1_2"/>
-        </require>
-        <require>
-            <enum extends="VkStructureType" value="49" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"/>
-            <enum extends="VkStructureType" value="50" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"/>
-            <enum extends="VkStructureType" value="51" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"/>
-            <enum extends="VkStructureType" value="52" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"/>
-            <type name="VkPhysicalDeviceVulkan11Features"/>
-            <type name="VkPhysicalDeviceVulkan11Properties"/>
-            <type name="VkPhysicalDeviceVulkan12Features"/>
-            <type name="VkPhysicalDeviceVulkan12Properties"/>
-        </require>
-        <require comment="Promoted from VK_KHR_image_format_list (extension 148)">
-            <enum offset="0" extends="VkStructureType"  extnumber="148"         name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"/>
-            <type name="VkImageFormatListCreateInfo"/>
-        </require>
-        <require comment="Promoted from VK_KHR_sampler_mirror_clamp_to_edge (extension 15)">
-            <enum value="4" extends="VkSamplerAddressMode"                      name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="No need to add an extnumber attribute, since this uses a core enum value"/>
-        </require>
-        <require comment="Promoted from VK_KHR_draw_indirect_count (extension 170)">
-            <command name="vkCmdDrawIndirectCount"/>
-            <command name="vkCmdDrawIndexedIndirectCount"/>
-        </require>
-        <require comment="Promoted from VK_KHR_create_renderpass2 (extension 110)">
-            <enum offset="0" extends="VkStructureType" extnumber="110"          name="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"/>
-            <enum offset="1" extends="VkStructureType" extnumber="110"          name="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"/>
-            <enum offset="2" extends="VkStructureType" extnumber="110"          name="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"/>
-            <enum offset="3" extends="VkStructureType" extnumber="110"          name="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"/>
-            <enum offset="4" extends="VkStructureType" extnumber="110"          name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"/>
-            <enum offset="5" extends="VkStructureType" extnumber="110"          name="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"/>
-            <enum offset="6" extends="VkStructureType" extnumber="110"          name="VK_STRUCTURE_TYPE_SUBPASS_END_INFO"/>
-            <command name="vkCreateRenderPass2"/>
-            <command name="vkCmdBeginRenderPass2"/>
-            <command name="vkCmdNextSubpass2"/>
-            <command name="vkCmdEndRenderPass2"/>
-            <type name="VkRenderPassCreateInfo2"/>
-            <type name="VkAttachmentDescription2"/>
-            <type name="VkAttachmentReference2"/>
-            <type name="VkSubpassDescription2"/>
-            <type name="VkSubpassDependency2"/>
-            <type name="VkSubpassBeginInfo"/>
-            <type name="VkSubpassEndInfo"/>
-        </require>
-        <require comment="Promoted from VK_KHR_8bit_storage (extension 178)">
-            <enum offset="0" extends="VkStructureType" extnumber="178"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"/>
-            <type name="VkPhysicalDevice8BitStorageFeatures"/>
-        </require>
-        <require comment="Promoted from VK_KHR_driver_properties (extension 197)">
-            <enum offset="0" extends="VkStructureType" extnumber="197"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"/>
-            <enum name="VK_MAX_DRIVER_NAME_SIZE"/>
-            <enum name="VK_MAX_DRIVER_INFO_SIZE"/>
-            <type name="VkDriverId"/>
-            <type name="VkConformanceVersion"/>
-            <type name="VkPhysicalDeviceDriverProperties"/>
-        </require>
-        <require comment="Promoted from VK_KHR_shader_atomic_int64 (extension 181)">
-            <enum offset="0" extends="VkStructureType" extnumber="181"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"/>
-            <type name="VkPhysicalDeviceShaderAtomicInt64Features"/>
-        </require>
-        <require comment="Promoted from VK_KHR_shader_float16_int8 (extension 83)">
-            <enum offset="0" extends="VkStructureType" extnumber="83"           name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"/>
-            <type name="VkPhysicalDeviceShaderFloat16Int8Features"/>
-        </require>
-        <require comment="Promoted from VK_KHR_shader_float_controls (extension 198)">
-            <enum offset="0" extends="VkStructureType" extnumber="198"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"/>
-            <type name="VkPhysicalDeviceFloatControlsProperties"/>
-            <type name="VkShaderFloatControlsIndependence"/>
-        </require>
-        <require comment="Promoted from VK_EXT_descriptor_indexing (extension 162)">
-            <enum offset="0" extends="VkStructureType" extnumber="162"          name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"/>
-            <enum offset="1" extends="VkStructureType" extnumber="162"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"/>
-            <enum offset="2" extends="VkStructureType" extnumber="162"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"/>
-            <enum offset="3" extends="VkStructureType" extnumber="162"          name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"/>
-            <enum offset="4" extends="VkStructureType" extnumber="162"          name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"/>
-            <enum bitpos="1" extends="VkDescriptorPoolCreateFlagBits"           name="VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"/>
-            <enum bitpos="1" extends="VkDescriptorSetLayoutCreateFlagBits"      name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"/>
-            <enum offset="0" dir="-" extends="VkResult" extnumber="162"         name="VK_ERROR_FRAGMENTATION"/>
-            <type name="VkDescriptorSetLayoutBindingFlagsCreateInfo"/>
-            <type name="VkPhysicalDeviceDescriptorIndexingFeatures"/>
-            <type name="VkPhysicalDeviceDescriptorIndexingProperties"/>
-            <type name="VkDescriptorSetVariableDescriptorCountAllocateInfo"/>
-            <type name="VkDescriptorSetVariableDescriptorCountLayoutSupport"/>
-            <type name="VkDescriptorBindingFlagBits"/>
-            <type name="VkDescriptorBindingFlags"/>
-        </require>
-        <require comment="Promoted from VK_KHR_depth_stencil_resolve (extension 200)">
-            <enum offset="0" extends="VkStructureType" extnumber="200"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"/>
-            <enum offset="1" extends="VkStructureType" extnumber="200"          name="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"/>
-            <type name="VkSubpassDescriptionDepthStencilResolve"/>
-            <type name="VkPhysicalDeviceDepthStencilResolveProperties"/>
-            <type name="VkResolveModeFlagBits"/>
-            <type name="VkResolveModeFlags"/>
-        </require>
-        <require comment="Promoted from VK_EXT_scalar_block_layout (extension 222))">
-            <type                                                               name="VkPhysicalDeviceScalarBlockLayoutFeatures"/>
-            <enum offset="0" extends="VkStructureType" extnumber="222"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"/>
-        </require>
-        <require comment="Promoted from VK_EXT_shader_viewport_index_layer, which has no API (extension 163)"/>
-        <require comment="Promoted from VK_EXT_separate_stencil_usage (extension 247)">
-            <enum offset="0" extends="VkStructureType" extnumber="247"          name="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"/>
-            <type name="VkImageStencilUsageCreateInfo"/>
-        </require>
-        <require comment="Promoted from VK_EXT_sampler_filter_minmax (extension 131)">
-            <enum offset="0" extends="VkStructureType" extnumber="131"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"/>
-            <enum offset="1" extends="VkStructureType" extnumber="131"          name="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"/>
-            <enum bitpos="16" extends="VkFormatFeatureFlagBits"                 name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT" comment="Format can be used with min/max reduction filtering"/>
-            <type name="VkSamplerReductionMode"/>
-            <type name="VkSamplerReductionModeCreateInfo"/>
-            <type name="VkPhysicalDeviceSamplerFilterMinmaxProperties"/>
-        </require>
-        <require comment="Promoted from VK_KHR_vulkan_memory_model (extension 212)">
-            <enum offset="0" extends="VkStructureType" extnumber="212"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"/>
-            <type name="VkPhysicalDeviceVulkanMemoryModelFeatures"/>
-        </require>
-        <require comment="Promoted from VK_KHR_imageless_framebuffer (extension 109)">
-            <type name="VkPhysicalDeviceImagelessFramebufferFeatures"/>
-            <type name="VkFramebufferAttachmentsCreateInfo"/>
-            <type name="VkFramebufferAttachmentImageInfo"/>
-            <type name="VkRenderPassAttachmentBeginInfo"/>
-            <enum offset="0" extends="VkStructureType" extnumber="109"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"/>
-            <enum offset="1" extends="VkStructureType" extnumber="109"          name="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"/>
-            <enum offset="2" extends="VkStructureType" extnumber="109"          name="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"/>
-            <enum offset="3" extends="VkStructureType" extnumber="109"          name="VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"/>
-            <enum bitpos="0" extends="VkFramebufferCreateFlagBits"              name="VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"/>
-        </require>
-        <require comment="Promoted from VK_KHR_uniform_buffer_standard_layout (extension 254)">
-            <type name="VkPhysicalDeviceUniformBufferStandardLayoutFeatures"/>
-            <enum offset="0" extends="VkStructureType" extnumber="254"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"/>
-        </require>
-        <require comment="Promoted from VK_KHR_shader_subgroup_extended_types (extension 176)">
-            <enum offset="0" extends="VkStructureType" extnumber="176"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"/>
-            <type name="VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures"/>
-        </require>
-        <require comment="Promoted from VK_KHR_spirv_1_4 (extension 237)">
-        </require>
-        <require comment="Promoted from VK_KHR_separate_depth_stencil_layouts (extension 242)">
-            <enum offset="0" extends="VkStructureType" extnumber="242"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"/>
-            <enum offset="1" extends="VkStructureType" extnumber="242"          name="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"/>
-            <enum offset="2" extends="VkStructureType" extnumber="242"          name="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"/>
-            <enum offset="0" extends="VkImageLayout"   extnumber="242"          name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"/>
-            <enum offset="1" extends="VkImageLayout"   extnumber="242"          name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"/>
-            <enum offset="2" extends="VkImageLayout"   extnumber="242"          name="VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"/>
-            <enum offset="3" extends="VkImageLayout"   extnumber="242"          name="VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"/>
-            <type name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures"/>
-            <type name="VkAttachmentReferenceStencilLayout"/>
-            <type name="VkAttachmentDescriptionStencilLayout"/>
-        </require>
-        <require comment="Promoted from VK_EXT_host_query_reset (extension 262)">
-            <enum offset="0" extends="VkStructureType" extnumber="262"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"/>
-            <type name="VkPhysicalDeviceHostQueryResetFeatures"/>
-            <command name="vkResetQueryPool"/>
-        </require>
-        <require comment="Promoted from VK_KHR_timeline_semaphore (extension 208)">
-            <enum offset="0" extends="VkStructureType" extnumber="208"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"/>
-            <enum offset="1" extends="VkStructureType" extnumber="208"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"/>
-            <enum offset="2" extends="VkStructureType" extnumber="208"          name="VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"/>
-            <enum offset="3" extends="VkStructureType" extnumber="208"          name="VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"/>
-            <enum offset="4" extends="VkStructureType" extnumber="208"          name="VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"/>
-            <enum offset="5" extends="VkStructureType" extnumber="208"          name="VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"/>
-            <type name="VkSemaphoreType"/>
-            <type name="VkPhysicalDeviceTimelineSemaphoreFeatures"/>
-            <type name="VkPhysicalDeviceTimelineSemaphoreProperties"/>
-            <type name="VkSemaphoreTypeCreateInfo"/>
-            <type name="VkTimelineSemaphoreSubmitInfo"/>
-            <type name="VkSemaphoreWaitFlagBits"/>
-            <type name="VkSemaphoreWaitFlags"/>
-            <type name="VkSemaphoreWaitInfo"/>
-            <type name="VkSemaphoreSignalInfo"/>
-            <command name="vkGetSemaphoreCounterValue"/>
-            <command name="vkWaitSemaphores"/>
-            <command name="vkSignalSemaphore"/>
-        </require>
-        <require comment="Promoted from VK_KHR_buffer_device_address (extension 258)">
-            <enum offset="0" extends="VkStructureType" extnumber="258"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"/>
-            <enum offset="1" extends="VkStructureType" extnumber="245"          name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"/>
-            <enum offset="2" extends="VkStructureType" extnumber="258"          name="VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"/>
-            <enum offset="3" extends="VkStructureType" extnumber="258"          name="VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"/>
-            <enum offset="4" extends="VkStructureType" extnumber="258"          name="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"/>
-            <enum bitpos="17" extends="VkBufferUsageFlagBits"                   name="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"/>
-            <enum bitpos="4"  extends="VkBufferCreateFlagBits"                  name="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
-            <enum bitpos="1" extends="VkMemoryAllocateFlagBits"                 name="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"/>
-            <enum bitpos="2" extends="VkMemoryAllocateFlagBits"                 name="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
-            <enum offset="0" dir="-" extends="VkResult" extnumber="258"         name="VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"/>
-            <type name="VkPhysicalDeviceBufferDeviceAddressFeatures"/>
-            <type name="VkBufferDeviceAddressInfo"/>
-            <type name="VkBufferOpaqueCaptureAddressCreateInfo"/>
-            <type name="VkMemoryOpaqueCaptureAddressAllocateInfo"/>
-            <type name="VkDeviceMemoryOpaqueCaptureAddressInfo"/>
-            <command name="vkGetBufferDeviceAddress"/>
-            <command name="vkGetBufferOpaqueCaptureAddress"/>
-            <command name="vkGetDeviceMemoryOpaqueCaptureAddress"/>
-        </require>
-    </feature>
-    <feature api="vulkan,vulkansc" name="VK_VERSION_1_3" number="1.3" comment="Vulkan 1.3 core API interface definitions.">
-        <require>
-            <type name="VK_API_VERSION_1_3"/>
-        </require>
-        <require>
-            <type name="VkFlags64"/>
-        </require>
-        <require>
-            <enum extends="VkStructureType" value="53"                          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES"/>
-            <enum extends="VkStructureType" value="54"                          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES"/>
-            <type name="VkPhysicalDeviceVulkan13Features"/>
-            <type name="VkPhysicalDeviceVulkan13Properties"/>
-        </require>
-        <require comment="Promoted from VK_EXT_pipeline_creation_feedback (extension 193)">
-            <enum offset="0" extends="VkStructureType"  extnumber="193"         name="VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO"/>
-            <type name="VkPipelineCreationFeedbackFlagBits"/>
-            <type name="VkPipelineCreationFeedbackFlags"/>
-            <type name="VkPipelineCreationFeedbackCreateInfo"/>
-            <type name="VkPipelineCreationFeedback"/>
-        </require>
-        <require comment="Promoted from VK_KHR_shader_terminate_invocation (extension 216)">
-            <enum offset="0" extends="VkStructureType"  extnumber="216"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES"/>
-            <type name="VkPhysicalDeviceShaderTerminateInvocationFeatures"/>
-        </require>
-        <require comment="Promoted from VK_EXT_tooling_info (extension 246)">
-            <enum offset="0" extends="VkStructureType"  extnumber="246"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES"/>
-            <type name="VkToolPurposeFlagBits"/>
-            <type name="VkToolPurposeFlags"/>
-            <type name="VkPhysicalDeviceToolProperties"/>
-            <command name="vkGetPhysicalDeviceToolProperties"/>
-        </require>
-        <require comment="Promoted from VK_EXT_shader_demote_to_helper_invocation (extension 277)">
-            <enum offset="0" extends="VkStructureType"  extnumber="277"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES"/>
-            <type name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures"/>
-        </require>
-        <require comment="Promoted from VK_KHR_shader_non_semantic_info (extension 294)">
-        </require>
-        <require comment="Promoted from VK_EXT_private_data (extension 296)">
-            <enum offset="0" extends="VkStructureType"  extnumber="296"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES"/>
-            <enum offset="1" extends="VkStructureType"  extnumber="296"         name="VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO"/>
-            <enum offset="2" extends="VkStructureType"  extnumber="296"         name="VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO"/>
-            <enum offset="0" extends="VkObjectType"     extnumber="296"         name="VK_OBJECT_TYPE_PRIVATE_DATA_SLOT"/>
-            <type name="VkPhysicalDevicePrivateDataFeatures"/>
-            <type name="VkDevicePrivateDataCreateInfo"/>
-            <type name="VkPrivateDataSlotCreateInfo"/>
-            <type name="VkPrivateDataSlot"/>
-            <type name="VkPrivateDataSlotCreateFlags" comment="Will add VkPrivateDataSlotCreateFlagBits when bits are defined in the future"/>
-            <command name="vkCreatePrivateDataSlot"/>
-            <command name="vkDestroyPrivateDataSlot"/>
-            <command name="vkSetPrivateData"/>
-            <command name="vkGetPrivateData"/>
-        </require>
-        <require comment="Promoted from VK_EXT_pipeline_creation_cache_control (extension 298)">
-            <enum offset="0" extends="VkStructureType"  extnumber="298"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES"/>
-            <type name="VkPhysicalDevicePipelineCreationCacheControlFeatures"/>
-            <enum bitpos="8" extends="VkPipelineCreateFlagBits"                 name="VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT"/>
-            <enum bitpos="9" extends="VkPipelineCreateFlagBits"                 name="VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT"/>
-            <enum offset="0" extends="VkResult"         extnumber="298"         name="VK_PIPELINE_COMPILE_REQUIRED"/>
-            <enum bitpos="0" extends="VkPipelineCacheCreateFlagBits"            name="VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT"/>
-        </require>
-        <require comment="Promoted from VK_KHR_synchronization2 (extension 315)">
-            <enum offset="0" extends="VkStructureType"  extnumber="315"         name="VK_STRUCTURE_TYPE_MEMORY_BARRIER_2"/>
-            <enum offset="1" extends="VkStructureType"  extnumber="315"         name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2"/>
-            <enum offset="2" extends="VkStructureType"  extnumber="315"         name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2"/>
-            <enum offset="3" extends="VkStructureType"  extnumber="315"         name="VK_STRUCTURE_TYPE_DEPENDENCY_INFO"/>
-            <enum offset="4" extends="VkStructureType"  extnumber="315"         name="VK_STRUCTURE_TYPE_SUBMIT_INFO_2"/>
-            <enum offset="5" extends="VkStructureType"  extnumber="315"         name="VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO"/>
-            <enum offset="6" extends="VkStructureType"  extnumber="315"         name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO"/>
-            <enum offset="7" extends="VkStructureType"  extnumber="315"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES"/>
-            <enum bitpos="0" extends="VkEventCreateFlagBits"                    name="VK_EVENT_CREATE_DEVICE_ONLY_BIT"/>
-            <enum offset="0" extends="VkImageLayout"    extnumber="315"         name="VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL"/>
-            <enum offset="1" extends="VkImageLayout"    extnumber="315"         name="VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL"/>
-            <enum value="0"  extends="VkPipelineStageFlagBits"                  name="VK_PIPELINE_STAGE_NONE"/>
-            <enum value="0"  extends="VkAccessFlagBits"                         name="VK_ACCESS_NONE"/>
-            <type name="VkPipelineStageFlags2"/>
-            <type name="VkPipelineStageFlagBits2"/>
-            <type name="VkAccessFlags2"/>
-            <type name="VkAccessFlagBits2"/>
-            <type name="VkMemoryBarrier2"/>
-            <type name="VkBufferMemoryBarrier2"/>
-            <type name="VkImageMemoryBarrier2"/>
-            <type name="VkDependencyInfo"/>
-            <type name="VkSubmitInfo2"/>
-            <type name="VkSemaphoreSubmitInfo"/>
-            <type name="VkCommandBufferSubmitInfo"/>
-            <type name="VkSubmitFlagBits"/>
-            <type name="VkSubmitFlags"/>
-            <type name="VkPhysicalDeviceSynchronization2Features"/>
-            <command name="vkCmdSetEvent2"/>
-            <command name="vkCmdResetEvent2"/>
-            <command name="vkCmdWaitEvents2"/>
-            <command name="vkCmdPipelineBarrier2"/>
-            <command name="vkCmdWriteTimestamp2"/>
-            <command name="vkQueueSubmit2"/>
-        </require>
-        <require comment="Promoted from VK_KHR_zero_initialize_workgroup_memory (extension 326)">
-            <enum offset="0" extends="VkStructureType"  extnumber="326"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES"/>
-            <type name="VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures"/>
-        </require>
-        <require comment="Promoted from VK_EXT_image_robustness (extension 336)">
-            <enum offset="0" extends="VkStructureType"  extnumber="336"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES"/>
-            <type name="VkPhysicalDeviceImageRobustnessFeatures"/>
-        </require>
-        <require comment="Promoted from VK_KHR_copy_commands2 (extension 338)">
-            <enum offset="0" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2"/>
-            <enum offset="1" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2"/>
-            <enum offset="2" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2"/>
-            <enum offset="3" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2"/>
-            <enum offset="4" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2"/>
-            <enum offset="5" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2"/>
-            <enum offset="6" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_BUFFER_COPY_2"/>
-            <enum offset="7" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_IMAGE_COPY_2"/>
-            <enum offset="8" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_IMAGE_BLIT_2"/>
-            <enum offset="9" extends="VkStructureType"  extnumber="338"         name="VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2"/>
-            <enum offset="10" extends="VkStructureType" extnumber="338"         name="VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2"/>
-            <type name="VkCopyBufferInfo2"/>
-            <type name="VkCopyImageInfo2"/>
-            <type name="VkCopyBufferToImageInfo2"/>
-            <type name="VkCopyImageToBufferInfo2"/>
-            <type name="VkBlitImageInfo2"/>
-            <type name="VkResolveImageInfo2"/>
-            <type name="VkBufferCopy2"/>
-            <type name="VkImageCopy2"/>
-            <type name="VkImageBlit2"/>
-            <type name="VkBufferImageCopy2"/>
-            <type name="VkImageResolve2"/>
-            <command name="vkCmdCopyBuffer2"/>
-            <command name="vkCmdCopyImage2"/>
-            <command name="vkCmdCopyBufferToImage2"/>
-            <command name="vkCmdCopyImageToBuffer2"/>
-            <command name="vkCmdBlitImage2"/>
-            <command name="vkCmdResolveImage2"/>
-        </require>
-        <require comment="Promoted from VK_EXT_subgroup_size_control (STDPROMOTE/PROPLIMCHANGE) (extension 226)">
-            <type name="VkPhysicalDeviceSubgroupSizeControlFeatures"/>
-            <type name="VkPhysicalDeviceSubgroupSizeControlProperties"/>
-            <type name="VkPipelineShaderStageRequiredSubgroupSizeCreateInfo"/>
-            <enum offset="0" extends="VkStructureType"  extnumber="226"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES"/>
-            <enum offset="1" extends="VkStructureType"  extnumber="226"         name="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO"/>
-            <enum offset="2" extends="VkStructureType"  extnumber="226"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES"/>
-            <enum bitpos="0" extends="VkPipelineShaderStageCreateFlagBits"      name="VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT"/>
-            <enum bitpos="1" extends="VkPipelineShaderStageCreateFlagBits"      name="VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT"/>
-        </require>
-        <require comment="Promoted from VK_EXT_inline_uniform_block (STDPROMOTE/PROPLIMCHANGE) (extension 139)">
-            <enum offset="0" extends="VkDescriptorType" extnumber="139"         name="VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK"/>
-            <enum offset="0" extends="VkStructureType" extnumber="139"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES"/>
-            <enum offset="1" extends="VkStructureType" extnumber="139"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES"/>
-            <enum offset="2" extends="VkStructureType" extnumber="139"          name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK"/>
-            <enum offset="3" extends="VkStructureType" extnumber="139"          name="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO"/>
-            <type name="VkPhysicalDeviceInlineUniformBlockFeatures"/>
-            <type name="VkPhysicalDeviceInlineUniformBlockProperties"/>
-            <type name="VkWriteDescriptorSetInlineUniformBlock"/>
-            <type name="VkDescriptorPoolInlineUniformBlockCreateInfo"/>
-        </require>
-        <require comment="Promoted from VK_EXT_ycbcr_2plane_444_formats (does not promote the Feature struct, just the formats) (extension 331)">
-            <enum offset="0" extends="VkFormat" extnumber="331"                 name="VK_FORMAT_G8_B8R8_2PLANE_444_UNORM"/>
-            <enum offset="1" extends="VkFormat" extnumber="331"                 name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16"/>
-            <enum offset="2" extends="VkFormat" extnumber="331"                 name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16"/>
-            <enum offset="3" extends="VkFormat" extnumber="331"                 name="VK_FORMAT_G16_B16R16_2PLANE_444_UNORM"/>
-        </require>
-        <require comment="Promoted from VK_EXT_4444_formats (does not promote the Feature struct, just the formats) (extension 341)">
-            <enum offset="0" extends="VkFormat" extnumber="341"                 name="VK_FORMAT_A4R4G4B4_UNORM_PACK16"/>
-            <enum offset="1" extends="VkFormat" extnumber="341"                 name="VK_FORMAT_A4B4G4R4_UNORM_PACK16"/>
-        </require>
-        <require comment="Promoted from VK_EXT_texture_compression_astc_hdr (Feature struct is promoted, but becomes optional) (extension 67)">
-            <enum offset="0"  extends="VkStructureType" extnumber="67"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES"/>
-            <type name="VkPhysicalDeviceTextureCompressionASTCHDRFeatures"/>
-            <enum offset="0"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK"/>
-            <enum offset="1"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK"/>
-            <enum offset="2"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK"/>
-            <enum offset="3"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK"/>
-            <enum offset="4"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK"/>
-            <enum offset="5"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK"/>
-            <enum offset="6"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK"/>
-            <enum offset="7"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK"/>
-            <enum offset="8"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK"/>
-            <enum offset="9"  extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK"/>
-            <enum offset="10" extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK"/>
-            <enum offset="11" extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK"/>
-            <enum offset="12" extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK"/>
-            <enum offset="13" extends="VkFormat" extnumber="67"                 name="VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK"/>
-        </require>
-        <require comment="Promoted from VK_KHR_dynamic_rendering (extension 45)">
-            <command name="vkCmdBeginRendering"/>
-            <command name="vkCmdEndRendering"/>
-            <enum offset="0" extends="VkStructureType" extnumber="45"           name="VK_STRUCTURE_TYPE_RENDERING_INFO"/>
-            <enum offset="1" extends="VkStructureType" extnumber="45"           name="VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO"/>
-            <enum offset="2" extends="VkStructureType" extnumber="45"           name="VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO"/>
-            <enum offset="3" extends="VkStructureType" extnumber="45"           name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES"/>
-            <enum offset="4" extends="VkStructureType" extnumber="45"           name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO"/>
-            <enum offset="0" extends="VkAttachmentStoreOp" extnumber="302"      name="VK_ATTACHMENT_STORE_OP_NONE"/>
-            <type name="VkRenderingInfo"/>
-            <type name="VkRenderingAttachmentInfo"/>
-            <type name="VkPipelineRenderingCreateInfo"/>
-            <type name="VkPhysicalDeviceDynamicRenderingFeatures"/>
-            <type name="VkCommandBufferInheritanceRenderingInfo"/>
-            <type name="VkRenderingFlags"/>
-            <type name="VkRenderingFlagBits"/>
-        </require>
-        <require comment="Promoted from VK_EXT_extended_dynamic_state (Feature struct is not promoted) (extension 268)">
-            <enum offset="0" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_CULL_MODE"/>
-            <enum offset="1" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_FRONT_FACE"/>
-            <enum offset="2" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY"/>
-            <enum offset="3" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT"/>
-            <enum offset="4" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT"/>
-            <enum offset="5" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE"/>
-            <enum offset="6" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE"/>
-            <enum offset="7" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE"/>
-            <enum offset="8" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_DEPTH_COMPARE_OP"/>
-            <enum offset="9" extends="VkDynamicState"  extnumber="268"          name="VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE"/>
-            <enum offset="10" extends="VkDynamicState" extnumber="268"          name="VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE"/>
-            <enum offset="11" extends="VkDynamicState" extnumber="268"          name="VK_DYNAMIC_STATE_STENCIL_OP"/>
-            <command name="vkCmdSetCullMode"/>
-            <command name="vkCmdSetFrontFace"/>
-            <command name="vkCmdSetPrimitiveTopology"/>
-            <command name="vkCmdSetViewportWithCount"/>
-            <command name="vkCmdSetScissorWithCount"/>
-            <command name="vkCmdBindVertexBuffers2"/>
-            <command name="vkCmdSetDepthTestEnable"/>
-            <command name="vkCmdSetDepthWriteEnable"/>
-            <command name="vkCmdSetDepthCompareOp"/>
-            <command name="vkCmdSetDepthBoundsTestEnable"/>
-            <command name="vkCmdSetStencilTestEnable"/>
-            <command name="vkCmdSetStencilOp"/>
-        </require>
-        <require comment="Promoted from VK_KHR_shader_integer_dot_product (extension 281)">
-            <enum offset="0" extends="VkStructureType" extnumber="281"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES"/>
-            <enum offset="1" extends="VkStructureType" extnumber="281"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES"/>
-            <type name="VkPhysicalDeviceShaderIntegerDotProductFeatures"/>
-            <type name="VkPhysicalDeviceShaderIntegerDotProductProperties"/>
-        </require>
-        <require comment="Promoted from VK_EXT_texel_buffer_alignment (extension 282)">
-            <enum offset="1" extends="VkStructureType" extnumber="282"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES"/>
-            <type name="VkPhysicalDeviceTexelBufferAlignmentProperties"/>
-        </require>
-        <require comment="Promoted from VK_KHR_format_feature_flags2 (extension 361)">
-            <enum offset="0" extends="VkStructureType" extnumber="361"          name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3"/>
-            <type name="VkFormatFeatureFlags2"/>
-            <type name="VkFormatFeatureFlagBits2"/>
-            <type name="VkFormatProperties3"/>
-        </require>
-        <require comment="Promoted from VK_EXT_extended_dynamic_state2 (Feature struct and optional state are not promoted) (extension 378)">
-            <enum offset="1" extends="VkDynamicState"  extnumber="378"          name="VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE"/>
-            <enum offset="2" extends="VkDynamicState"  extnumber="378"          name="VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE"/>
-            <enum offset="4" extends="VkDynamicState"  extnumber="378"          name="VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE"/>
-            <command name="vkCmdSetRasterizerDiscardEnable"/>
-            <command name="vkCmdSetDepthBiasEnable"/>
-            <command name="vkCmdSetPrimitiveRestartEnable"/>
-        </require>
-        <require comment="Promoted from VK_KHR_maintenance4 (extension 414)">
-            <enum offset="0" extends="VkStructureType" extnumber="414"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES"/>
-            <enum offset="1" extends="VkStructureType" extnumber="414"          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES"/>
-            <enum offset="2" extends="VkStructureType" extnumber="414"          name="VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS"/>
-            <enum offset="3" extends="VkStructureType" extnumber="414"          name="VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS"/>
-            <enum value="0"  extends="VkImageAspectFlagBits"                    name="VK_IMAGE_ASPECT_NONE"/>
-            <type name="VkPhysicalDeviceMaintenance4Features"/>
-            <type name="VkPhysicalDeviceMaintenance4Properties"/>
-            <type name="VkDeviceBufferMemoryRequirements"/>
-            <type name="VkDeviceImageMemoryRequirements"/>
-            <command name="vkGetDeviceBufferMemoryRequirements"/>
-            <command name="vkGetDeviceImageMemoryRequirements"/>
-            <command name="vkGetDeviceImageSparseMemoryRequirements"/>
-        </require>
-    </feature>
-
-    <feature api="vulkansc" name="VKSC_VERSION_1_0" number="1.0" comment="Vulkan SC core API interface definitions">
-        <require>
-            <type name="VKSC_API_VARIANT"/>
-            <type name="VKSC_API_VERSION_1_0"/>
-            <type name="VkPhysicalDeviceVulkanSC10Features"/>
-            <type name="VkPhysicalDeviceVulkanSC10Properties"/>
-            <enum offset="0" extnumber="299" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES"/>
-            <enum offset="1" extnumber="299" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES"/>
-            <enum offset="1" extnumber="12" extends="VkResult" dir="-"  name="VK_ERROR_VALIDATION_FAILED"/>
-        </require>
-        <require comment="static memory functionality">
-            <type name="VkDeviceObjectReservationCreateInfo"/>
-            <type name="VkCommandPoolMemoryReservationCreateInfo"/>
-            <type name="VkCommandPoolMemoryConsumption"/>
-            <type name="VkPipelinePoolSize"/>
-            <command name="vkGetCommandPoolMemoryConsumption"/>
-            <enum offset="2" extnumber="299" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO"/>
-            <enum offset="3" extnumber="299" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO"/>
-            <enum offset="4" extnumber="299" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION"/>
-            <enum offset="5" extnumber="299" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE"/>
-        </require>
-        <require comment="fault handling functionality">
-            <enum offset="7" extnumber="299" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_FAULT_DATA"/>
-            <enum offset="8" extnumber="299" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO"/>
-            <type name="VkFaultData"/>
-            <type name="VkFaultCallbackInfo"/>
-            <type name="VkFaultLevel"/>
-            <type name="VkFaultType"/>
-            <type name="VkFaultQueryBehavior"/>
-            <type name="PFN_vkFaultCallbackFunction"/>
-            <command name="vkGetFaultData"/>
-        </require>
-        <require comment="pipeline offline create info">
-            <enum offset="10" extnumber="299" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO"/>
-            <type name="VkPipelineOfflineCreateInfo"/>
-            <type name="VkPipelineMatchControl"/>
-        </require>
-        <require comment="pipeline cache functionality">
-            <enum offset="0" extnumber="299" extends="VkResult" dir="-" name="VK_ERROR_INVALID_PIPELINE_CACHE_DATA"/>
-            <enum offset="1" extnumber="299" extends="VkResult" dir="-" name="VK_ERROR_NO_PIPELINE_MATCH"/>
-            <enum bitpos="1" extends="VkPipelineCacheCreateFlagBits"    name="VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT"/>
-            <enum bitpos="2" extends="VkPipelineCacheCreateFlagBits"    name="VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT"/>
-            <type name="VkPipelineCacheCreateFlagBits" comment="This should be picked up from the extends= attributes above"/>
-        </require>
-        <require comment="seu safe memory functionality">
-            <enum bitpos="2" extends="VkMemoryHeapFlagBits"             name="VK_MEMORY_HEAP_SEU_SAFE_BIT"/>
-        </require>
-        <require comment="pipeline cache header - These types are part of the API, though not all directly used in API commands or data structures">
-            <enum offset="1" extnumber="299" extends="VkPipelineCacheHeaderVersion"    name="VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE"/>
-            <type name="VkPipelineCacheValidationVersion"/>
-            <type name="VkPipelineCacheStageValidationIndexEntry"/>
-            <type name="VkPipelineCacheSafetyCriticalIndexEntry"/>
-            <type name="VkPipelineCacheHeaderVersionSafetyCriticalOne"/>
-        </require>
-
-        <remove comment="SC 1.0 removes some features from Vulkan 1.0/1.1/1.2">
-            <enum name="VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"/>
-            <!--enum name="VK_OBJECT_TYPE_SHADER_MODULE" comment="leave this present for compatibility"/-->
-            <enum name="VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"/>
-            <enum name="VK_PIPELINE_CREATE_DERIVATIVE_BIT"/>
-            <enum name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"/>
-
-            <!-- Remove Vulkan and deprecated macros -->
-            <type name="VK_API_VERSION"/>
-            <type name="VK_MAKE_VERSION"/>
-            <type name="VK_VERSION_MAJOR"/>
-            <type name="VK_VERSION_MINOR"/>
-            <type name="VK_VERSION_PATCH"/>
-
-            <!--type name="VkShaderModule" comment="leave this present for compatibility"/-->
-            <type name="VkShaderModuleCreateFlags"/>
-            <type name="VkShaderModuleCreateFlagBits"/>
-            <type name="VkShaderModuleCreateInfo"/>
-            <type name="VkCommandPoolTrimFlags"/>
-            <command name="vkCreateShaderModule"/>
-            <command name="vkDestroyShaderModule"/>
-            <command name="vkMergePipelineCaches"/>
-            <command name="vkGetPipelineCacheData"/>
-            <command name="vkTrimCommandPool"/>
-            <command name="vkDestroyCommandPool"/>
-            <command name="vkDestroyDescriptorPool"/>
-            <command name="vkDestroyQueryPool"/>
-            <command name="vkDestroySwapchainKHR"/>
-            <command name="vkFreeMemory"/>
-
-            <!-- Descriptor update templates are unsupported -->
-            <enum name="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"/>
-            <enum name="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"/>
-            <command name="vkCreateDescriptorUpdateTemplate"/>
-            <command name="vkDestroyDescriptorUpdateTemplate"/>
-            <command name="vkUpdateDescriptorSetWithTemplate"/>
-            <type name="VkDescriptorUpdateTemplate"/>
-            <type name="VkDescriptorUpdateTemplateCreateFlags"/>
-            <type name="VkDescriptorUpdateTemplateType"/>
-            <type name="VkDescriptorUpdateTemplateEntry"/>
-            <type name="VkDescriptorUpdateTemplateCreateInfo"/>
-            <enum name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"/>
-
-            <!-- Sparse resources are unsupported -->
-            <enum name="VK_QUEUE_SPARSE_BINDING_BIT"/>
-            <!--type name="VkPhysicalDeviceSparseProperties" comment="needed for VkPhysicalDeviceProperties"/-->
-            <type name="VkSparseImageFormatProperties"/>
-            <type name="VkSparseImageFormatFlagBits"/>
-            <type name="VkSparseImageFormatFlags"/>
-            <command name="vkGetPhysicalDeviceSparseImageFormatProperties"/>
-            <command name="vkGetPhysicalDeviceSparseImageFormatProperties2"/>
-            <type name="VkPhysicalDeviceSparseImageFormatInfo2"/>
-            <enum name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"/>
-            <type name="VkSparseImageFormatProperties2"/>
-            <enum name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"/>
-            <type name="VkSparseImageMemoryRequirements"/>
-            <command name="vkGetImageSparseMemoryRequirements"/>
-            <command name="vkGetImageSparseMemoryRequirements2"/>
-            <type name="VkImageSparseMemoryRequirementsInfo2"/>
-            <enum name="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"/>
-            <type name="VkSparseImageMemoryRequirements2"/>
-            <enum name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"/>
-            <type name="VkSparseMemoryBind"/>
-            <type name="VkSparseMemoryBindFlagBits"/>
-            <type name="VkSparseMemoryBindFlags"/>
-            <type name="VkSparseBufferMemoryBindInfo"/>
-            <type name="VkSparseImageOpaqueMemoryBindInfo"/>
-            <type name="VkSparseImageMemoryBindInfo"/>
-            <type name="VkSparseImageMemoryBind"/>
-            <command name="vkQueueBindSparse"/>
-            <type name="VkBindSparseInfo"/>
-            <enum name="VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"/>
-            <type name="VkDeviceGroupBindSparseInfo"/>
-            <enum name="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"/>
-
-            <command name="vkDestroySemaphoreSciSyncPoolNV"/>
-        </remove>
-    </feature>
-
-    <extensions comment="Vulkan extension interface definitions">
-        <extension name="VK_KHR_surface" number="1" type="instance" author="KHR" contact="James Jones @cubanismo,Ian Elliott @ianelliottus" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="25"                                                name="VK_KHR_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_surface&quot;"                        name="VK_KHR_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkResult" dir="-"                     name="VK_ERROR_SURFACE_LOST_KHR"/>
-                <enum offset="1" extends="VkResult" dir="-"                     name="VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"/>
-                <enum offset="0" extends="VkObjectType"                         name="VK_OBJECT_TYPE_SURFACE_KHR"/>
-                <type name="VkSurfaceKHR"/>
-                <type name="VkSurfaceTransformFlagBitsKHR"/>
-                <type name="VkPresentModeKHR"/>
-                <type name="VkColorSpaceKHR"/>
-                <type name="VkCompositeAlphaFlagBitsKHR"/>
-                <type name="VkCompositeAlphaFlagsKHR"/>
-                <type name="VkSurfaceCapabilitiesKHR"/>
-                <type name="VkSurfaceFormatKHR"/>
-                <command name="vkDestroySurfaceKHR"/>
-                <command name="vkGetPhysicalDeviceSurfaceSupportKHR"/>
-                <command name="vkGetPhysicalDeviceSurfaceCapabilitiesKHR"/>
-                <command name="vkGetPhysicalDeviceSurfaceFormatsKHR"/>
-                <command name="vkGetPhysicalDeviceSurfacePresentModesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_swapchain" number="2" type="device" depends="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo,Ian Elliott @ianelliottus" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="70"                                                name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_swapchain&quot;"                      name="VK_KHR_SWAPCHAIN_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"/>
-                <enum offset="2" extends="VkImageLayout"                        name="VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"/>
-                <enum offset="3" extends="VkResult"                             name="VK_SUBOPTIMAL_KHR"/>
-                <enum offset="4" extends="VkResult" dir="-"                     name="VK_ERROR_OUT_OF_DATE_KHR"/>
-                <enum offset="0" extends="VkObjectType"                         name="VK_OBJECT_TYPE_SWAPCHAIN_KHR"/>
-                <type name="VkSwapchainCreateFlagBitsKHR"/>
-                <type name="VkSwapchainCreateFlagsKHR"/>
-                <type name="VkSwapchainCreateInfoKHR"/>
-                <type name="VkSwapchainKHR"/>
-                <type name="VkPresentInfoKHR"/>
-                <command name="vkCreateSwapchainKHR"/>
-                <command name="vkDestroySwapchainKHR"/>
-                <command name="vkGetSwapchainImagesKHR"/>
-                <command name="vkAcquireNextImageKHR"/>
-                <command name="vkQueuePresentKHR"/>
-            </require>
-            <require depends="VK_VERSION_1_1">
-                <comment>This duplicates definitions in VK_KHR_device_group below</comment>
-                <enum extends="VkStructureType" extnumber="61"  offset="7"      name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"/>
-                <enum extends="VkStructureType" extnumber="61"  offset="8"      name="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"/>
-                <enum extends="VkStructureType" extnumber="61"  offset="9"      name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"/>
-                <enum extends="VkStructureType" extnumber="61"  offset="10"     name="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"/>
-                <enum extends="VkStructureType" extnumber="61"  offset="11"     name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"/>
-                <enum extends="VkStructureType" extnumber="61"  offset="12"     name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"/>
-                <enum bitpos="0" extends="VkSwapchainCreateFlagBitsKHR"         name="VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR" comment="Allow images with VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"/>
-                <type name="VkImageSwapchainCreateInfoKHR"/>
-                <type name="VkBindImageMemorySwapchainInfoKHR"/>
-                <type name="VkAcquireNextImageInfoKHR"/>
-                <type name="VkDeviceGroupPresentModeFlagBitsKHR"/>
-                <type name="VkDeviceGroupPresentModeFlagsKHR"/>
-                <type name="VkDeviceGroupPresentCapabilitiesKHR"/>
-                <type name="VkDeviceGroupPresentInfoKHR"/>
-                <type name="VkDeviceGroupSwapchainCreateInfoKHR"/>
-                <command name="vkGetDeviceGroupPresentCapabilitiesKHR"/>
-                <command name="vkGetDeviceGroupSurfacePresentModesKHR"/>
-                <command name="vkGetPhysicalDevicePresentRectanglesKHR"/>
-                <command name="vkAcquireNextImage2KHR"/>
-                <enum bitpos="1" extends="VkSwapchainCreateFlagBitsKHR"         name="VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"     comment="Swapchain is protected"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_display" number="3" type="instance" depends="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo,Norbert Nopper @FslNopper" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="23"                                                name="VK_KHR_DISPLAY_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_display&quot;"                        name="VK_KHR_DISPLAY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"/>
-                <enum offset="0" extends="VkObjectType"                         name="VK_OBJECT_TYPE_DISPLAY_KHR"/>
-                <enum offset="1" extends="VkObjectType"                         name="VK_OBJECT_TYPE_DISPLAY_MODE_KHR"/>
-                <type name="VkDisplayKHR"/>
-                <type name="VkDisplayModeCreateFlagsKHR"/>
-                <type name="VkDisplayModeCreateInfoKHR"/>
-                <type name="VkDisplayModeKHR"/>
-                <type name="VkDisplayModeParametersKHR"/>
-                <type name="VkDisplayModePropertiesKHR"/>
-                <type name="VkDisplayPlaneAlphaFlagBitsKHR"/>
-                <type name="VkDisplayPlaneAlphaFlagsKHR"/>
-                <type name="VkDisplayPlaneCapabilitiesKHR"/>
-                <type name="VkDisplayPlanePropertiesKHR"/>
-                <type name="VkDisplayPropertiesKHR"/>
-                <type name="VkDisplaySurfaceCreateFlagsKHR"/>
-                <type name="VkDisplaySurfaceCreateInfoKHR"/>
-                <type name="VkSurfaceTransformFlagsKHR"/>
-                <command name="vkGetPhysicalDeviceDisplayPropertiesKHR"/>
-                <command name="vkGetPhysicalDeviceDisplayPlanePropertiesKHR"/>
-                <command name="vkGetDisplayPlaneSupportedDisplaysKHR"/>
-                <command name="vkGetDisplayModePropertiesKHR"/>
-                <command name="vkCreateDisplayModeKHR"/>
-                <command name="vkGetDisplayPlaneCapabilitiesKHR"/>
-                <command name="vkCreateDisplayPlaneSurfaceKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_display_swapchain" number="4" type="device" depends="VK_KHR_swapchain+VK_KHR_display" author="KHR" contact="James Jones @cubanismo" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="10"                                                name="VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_display_swapchain&quot;"              name="VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"/>
-                <enum offset="1" extends="VkResult" dir="-"                     name="VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"/>
-                <type name="VkDisplayPresentInfoKHR"/>
-                <command name="vkCreateSharedSwapchainsKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_xlib_surface" number="5" type="instance" depends="VK_KHR_surface" platform="xlib" author="KHR" contact="Jesse Hall @critsec,Ian Elliott @ianelliottus" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="6"                                                 name="VK_KHR_XLIB_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_xlib_surface&quot;"                   name="VK_KHR_XLIB_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"/>
-                <type name="VkXlibSurfaceCreateFlagsKHR"/>
-                <type name="VkXlibSurfaceCreateInfoKHR"/>
-                <command name="vkCreateXlibSurfaceKHR"/>
-                <command name="vkGetPhysicalDeviceXlibPresentationSupportKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_xcb_surface" number="6" type="instance" depends="VK_KHR_surface" platform="xcb" author="KHR" contact="Jesse Hall @critsec,Ian Elliott @ianelliottus" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="6"                                                 name="VK_KHR_XCB_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_xcb_surface&quot;"                    name="VK_KHR_XCB_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"/>
-                <type name="VkXcbSurfaceCreateFlagsKHR"/>
-                <type name="VkXcbSurfaceCreateInfoKHR"/>
-                <command name="vkCreateXcbSurfaceKHR"/>
-                <command name="vkGetPhysicalDeviceXcbPresentationSupportKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_wayland_surface" number="7" type="instance" depends="VK_KHR_surface" platform="wayland" author="KHR" contact="Jesse Hall @critsec,Ian Elliott @ianelliottus" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="6"                                                 name="VK_KHR_WAYLAND_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_wayland_surface&quot;"                name="VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"/>
-                <type name="VkWaylandSurfaceCreateFlagsKHR"/>
-                <type name="VkWaylandSurfaceCreateInfoKHR"/>
-                <command name="vkCreateWaylandSurfaceKHR"/>
-                <command name="vkGetPhysicalDeviceWaylandPresentationSupportKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_mir_surface" number="8" type="instance" depends="VK_KHR_surface" author="KHR" supported="disabled" comment="Extension permanently disabled. Extension number should not be reused" ratified="vulkan">
-            <require>
-                <enum value="4"                                                 name="VK_KHR_MIR_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_mir_surface&quot;"                    name="VK_KHR_MIR_SURFACE_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_android_surface" number="9" type="instance" depends="VK_KHR_surface" platform="android" author="KHR" contact="Jesse Hall @critsec" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="6"                                                 name="VK_KHR_ANDROID_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_android_surface&quot;"                name="VK_KHR_ANDROID_SURFACE_EXTENSION_NAME"/>
-                <type name="ANativeWindow"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"/>
-                <type name="VkAndroidSurfaceCreateFlagsKHR"/>
-                <type name="VkAndroidSurfaceCreateInfoKHR"/>
-                <command name="vkCreateAndroidSurfaceKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_win32_surface" number="10" type="instance" depends="VK_KHR_surface" platform="win32" author="KHR" contact="Jesse Hall @critsec,Ian Elliott @ianelliottus" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="6"                                                 name="VK_KHR_WIN32_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_win32_surface&quot;"                  name="VK_KHR_WIN32_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"/>
-                <type name="VkWin32SurfaceCreateFlagsKHR"/>
-                <type name="VkWin32SurfaceCreateInfoKHR"/>
-                <command name="vkCreateWin32SurfaceKHR"/>
-                <command name="vkGetPhysicalDeviceWin32PresentationSupportKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_ANDROID_native_buffer" number="11" type="device" author="ANDROID" platform="android" contact="Jesse Hall @critsec" supported="disabled">
-            <require>
-                <comment>VK_ANDROID_native_buffer is used between the Android Vulkan loader and drivers to implement the WSI extensions. It is not exposed to applications and uses types that are not part of Android's stable public API, so it is left disabled to keep it out of the standard Vulkan headers.</comment>
-                <enum value="8"                                                 name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/>
-                <enum value="11"                                                name="VK_ANDROID_NATIVE_BUFFER_NUMBER"/>
-                <enum value="&quot;VK_ANDROID_native_buffer&quot;"              name="VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME"/>
-                <enum                                                           name="VK_ANDROID_NATIVE_BUFFER_NAME" alias="VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID"/>
-                <type name="VkNativeBufferANDROID"/>
-                <type name="VkSwapchainImageCreateInfoANDROID"/>
-                <type name="VkPhysicalDevicePresentationPropertiesANDROID"/>
-                <type name="VkNativeBufferUsage2ANDROID"/>
-                <type name="VkSwapchainImageUsageFlagBitsANDROID"/>
-                <type name="VkSwapchainImageUsageFlagsANDROID"/>
-                <command name="vkGetSwapchainGrallocUsageANDROID"/>
-                <command name="vkAcquireImageANDROID"/>
-                <command name="vkQueueSignalReleaseImageANDROID"/>
-                <command name="vkGetSwapchainGrallocUsage2ANDROID"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_debug_report" number="12" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney-g" specialuse="debugging" supported="vulkan" deprecatedby="VK_EXT_debug_utils">
-            <require>
-                <enum value="10"                                                name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_debug_report&quot;"                   name="VK_EXT_DEBUG_REPORT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"/>
-                <enum alias="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT" deprecated="aliased"/>
-                <enum api="vulkan" offset="1" extends="VkResult" dir="-"        name="VK_ERROR_VALIDATION_FAILED_EXT"/>
-                <enum api="vulkansc" extends="VkResult"                         name="VK_ERROR_VALIDATION_FAILED_EXT" alias="VK_ERROR_VALIDATION_FAILED"/>
-                <enum offset="0" extends="VkObjectType"                         name="VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"/>
-                <type name="VkDebugReportCallbackEXT"/>
-                <type name="PFN_vkDebugReportCallbackEXT"/>
-                <type name="VkDebugReportFlagBitsEXT"/>
-                <type name="VkDebugReportFlagsEXT"/>
-                <type name="VkDebugReportObjectTypeEXT"/>
-                <type name="VkDebugReportCallbackCreateInfoEXT"/>
-                <command name="vkCreateDebugReportCallbackEXT"/>
-                <command name="vkDestroyDebugReportCallbackEXT"/>
-                <command name="vkDebugReportMessageEXT"/>
-            </require>
-            <require depends="VK_VERSION_1_1">
-                <comment>This duplicates definitions in other extensions, below</comment>
-                <enum extends="VkDebugReportObjectTypeEXT" extnumber="157" offset="0"  name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"/>
-                <enum extends="VkDebugReportObjectTypeEXT" extnumber="86"  offset="0"  name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_glsl_shader" number="13" type="device" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan" deprecatedby="">
-            <require>
-                <enum value="1"                                                 name="VK_NV_GLSL_SHADER_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_glsl_shader&quot;"                     name="VK_NV_GLSL_SHADER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkResult" dir="-"                     name="VK_ERROR_INVALID_SHADER_NV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_depth_range_unrestricted" type="device" number="14" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_depth_range_unrestricted&quot;"       name="VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_sampler_mirror_clamp_to_edge" type="device" number="15" author="KHR" contact="Tobias Hector @tobski" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="3"                                                 name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_sampler_mirror_clamp_to_edge&quot;"   name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME"/>
-                <enum value="4" extends="VkSamplerAddressMode"                  name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="Note that this defines what was previously a core enum, and so uses the 'value' attribute rather than 'offset', and does not have a suffix. This is a special case, and should not be repeated"/>
-                <enum           extends="VkSamplerAddressMode"                  name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR" alias="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"  deprecated="aliased" comment="Introduced for consistency with extension suffixing rules"/>
-            </require>
-        </extension>
-        <extension name="VK_IMG_filter_cubic" number="16" type="device" author="IMG" contact="Tobias Hector @tobski" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/>
-                <enum value="&quot;VK_IMG_filter_cubic&quot;"                   name="VK_IMG_FILTER_CUBIC_EXTENSION_NAME"/>
-                <enum extends="VkFilter"                                        name="VK_FILTER_CUBIC_IMG" alias="VK_FILTER_CUBIC_EXT"/>
-                <enum extends="VkFormatFeatureFlagBits"                         name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_17" number="17" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_AMD_EXTENSION_17_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_17&quot;"                   name="VK_AMD_EXTENSION_17_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_18" number="18" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_AMD_EXTENSION_18_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_18&quot;"                   name="VK_AMD_EXTENSION_18_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_rasterization_order" number="19" type="device" author="AMD" contact="Daniel Rakos @drakos-amd" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_rasterization_order&quot;"            name="VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"/>
-                <type name="VkRasterizationOrderAMD"/>
-                <type name="VkPipelineRasterizationStateRasterizationOrderAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_20" number="20" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_AMD_EXTENSION_20_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_20&quot;"                   name="VK_AMD_EXTENSION_20_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_shader_trinary_minmax" number="21" type="device" author="AMD" contact="Qun Lin @linqun" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_shader_trinary_minmax&quot;"          name="VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_shader_explicit_vertex_parameter" number="22" type="device" author="AMD" contact="Qun Lin @linqun" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_shader_explicit_vertex_parameter&quot;" name="VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_debug_marker" number="23" type="device" depends="VK_EXT_debug_report" author="Baldur Karlsson" contact="Baldur Karlsson @baldurk" specialuse="debugging" supported="vulkan" promotedto="VK_EXT_debug_utils">
-            <require>
-                <enum value="4"                                                 name="VK_EXT_DEBUG_MARKER_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_debug_marker&quot;"                   name="VK_EXT_DEBUG_MARKER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"/>
-                <type name="VkDebugReportObjectTypeEXT"/>
-                <type name="VkDebugMarkerObjectNameInfoEXT"/>
-                <type name="VkDebugMarkerObjectTagInfoEXT"/>
-                <type name="VkDebugMarkerMarkerInfoEXT"/>
-                <command name="vkDebugMarkerSetObjectTagEXT"/>
-                <command name="vkDebugMarkerSetObjectNameEXT"/>
-                <command name="vkCmdDebugMarkerBeginEXT"/>
-                <command name="vkCmdDebugMarkerEndEXT"/>
-                <command name="vkCmdDebugMarkerInsertEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_video_queue" number="24" type="device" depends="VK_VERSION_1_1+VK_KHR_synchronization2" author="KHR" contact="Tony Zlatinski @tzlatinski" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="8"                                         name="VK_KHR_VIDEO_QUEUE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_video_queue&quot;"            name="VK_KHR_VIDEO_QUEUE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR"/>
-                <enum offset="3" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR"/>
-                <enum offset="4" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR"/>
-                <enum offset="5" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR"/>
-                <enum offset="6" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR"/>
-                <enum offset="7" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR"/>
-                <enum offset="8" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR"/>
-                <enum offset="9" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR"/>
-                <enum offset="10" extends="VkStructureType"             name="VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR"/>
-                <enum offset="11" extends="VkStructureType"             name="VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR"/>
-                <enum offset="12" extends="VkStructureType"             name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR"/>
-                <enum offset="13" extends="VkStructureType"             name="VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR"/>
-                <enum offset="14" extends="VkStructureType"             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR"/>
-                <enum offset="15" extends="VkStructureType"             name="VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR"/>
-                <enum offset="16" extends="VkStructureType"             name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR"/>
-
-                <enum offset="0"  extends="VkObjectType"                name="VK_OBJECT_TYPE_VIDEO_SESSION_KHR"             comment="VkVideoSessionKHR"/>
-                <enum offset="1"  extends="VkObjectType"                name="VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR"  comment="VkVideoSessionParametersKHR"/>
-
-                <enum offset="0" extends="VkQueryType"                  name="VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR"/>
-                <enum bitpos="4" extends="VkQueryResultFlagBits"        name="VK_QUERY_RESULT_WITH_STATUS_BIT_KHR"/>
-
-                <enum offset="0" extends="VkResult" dir="-"             name="VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR"/>
-                <enum offset="1" extends="VkResult" dir="-"             name="VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR"/>
-                <enum offset="2" extends="VkResult" dir="-"             name="VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR"/>
-                <enum offset="3" extends="VkResult" dir="-"             name="VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR"/>
-                <enum offset="4" extends="VkResult" dir="-"             name="VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR"/>
-                <enum offset="5" extends="VkResult" dir="-"             name="VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR"/>
-
-                <type name="VkVideoSessionKHR"/>
-                <type name="VkVideoSessionParametersKHR"/>
-
-                <type name="VkVideoCodecOperationFlagBitsKHR"/>
-                <type name="VkVideoCodecOperationFlagsKHR"/>
-                <type name="VkVideoChromaSubsamplingFlagBitsKHR"/>
-                <type name="VkVideoChromaSubsamplingFlagsKHR"/>
-                <type name="VkVideoComponentBitDepthFlagBitsKHR"/>
-                <type name="VkVideoComponentBitDepthFlagsKHR"/>
-                <type name="VkVideoCapabilityFlagBitsKHR"/>
-                <type name="VkVideoCapabilityFlagsKHR"/>
-                <type name="VkVideoSessionCreateFlagBitsKHR"/>
-                <type name="VkVideoSessionCreateFlagsKHR"/>
-                <type name="VkVideoSessionParametersCreateFlagsKHR"/>
-                <type name="VkVideoBeginCodingFlagsKHR"/>
-                <type name="VkVideoEndCodingFlagsKHR"/>
-                <type name="VkVideoCodingControlFlagBitsKHR"/>
-                <type name="VkVideoCodingControlFlagsKHR"/>
-
-                <type name="VkQueueFamilyQueryResultStatusPropertiesKHR"/>
-                <type name="VkQueryResultStatusKHR"/>
-
-                <type name="VkQueueFamilyVideoPropertiesKHR"/>
-                <type name="VkVideoProfileInfoKHR"/>
-                <type name="VkVideoProfileListInfoKHR"/>
-                <type name="VkVideoCapabilitiesKHR"/>
-                <type name="VkPhysicalDeviceVideoFormatInfoKHR"/>
-                <type name="VkVideoFormatPropertiesKHR"/>
-                <type name="VkVideoPictureResourceInfoKHR"/>
-                <type name="VkVideoReferenceSlotInfoKHR"/>
-                <type name="VkVideoSessionMemoryRequirementsKHR"/>
-                <type name="VkBindVideoSessionMemoryInfoKHR"/>
-                <type name="VkVideoSessionCreateInfoKHR"/>
-                <type name="VkVideoSessionParametersCreateInfoKHR"/>
-                <type name="VkVideoSessionParametersUpdateInfoKHR"/>
-                <type name="VkVideoBeginCodingInfoKHR"/>
-                <type name="VkVideoEndCodingInfoKHR"/>
-                <type name="VkVideoCodingControlInfoKHR"/>
-
-                <command name="vkGetPhysicalDeviceVideoCapabilitiesKHR"/>
-                <command name="vkGetPhysicalDeviceVideoFormatPropertiesKHR"/>
-
-                <command name="vkCreateVideoSessionKHR"/>
-                <command name="vkDestroyVideoSessionKHR"/>
-                <command name="vkGetVideoSessionMemoryRequirementsKHR"/>
-                <command name="vkBindVideoSessionMemoryKHR"/>
-                <command name="vkCreateVideoSessionParametersKHR"/>
-                <command name="vkUpdateVideoSessionParametersKHR"/>
-                <command name="vkDestroyVideoSessionParametersKHR"/>
-                <command name="vkCmdBeginVideoCodingKHR"/>
-                <command name="vkCmdEndVideoCodingKHR"/>
-                <command name="vkCmdControlVideoCodingKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_video_decode_queue" number="25" type="device" depends="VK_KHR_video_queue+VK_KHR_synchronization2" author="KHR" contact="jake.beju@amd.com" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="7"                                         name="VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_video_decode_queue&quot;"     name="VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR"/>
-                <enum bitpos="5" extends="VkQueueFlagBits"              name="VK_QUEUE_VIDEO_DECODE_BIT_KHR"/>
-                <!-- VkPipelineStageFlagBits bitpos="26" is reserved by this extension, but not used -->
-                <enum bitpos="26" extends="VkPipelineStageFlagBits2"    name="VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR"/>
-                <enum bitpos="35" extends="VkAccessFlagBits2"           name="VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR"/>
-                <enum bitpos="36" extends="VkAccessFlagBits2"           name="VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR"/>
-                <enum bitpos="13" extends="VkBufferUsageFlagBits"       name="VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR"/>
-                <enum bitpos="14" extends="VkBufferUsageFlagBits"       name="VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR"/>
-                <enum bitpos="10" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR"/>
-                <enum bitpos="11" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR"/>
-                <enum bitpos="12" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR"/>
-                <enum bitpos="25" extends="VkFormatFeatureFlagBits"     name="VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR"/>
-                <enum bitpos="26" extends="VkFormatFeatureFlagBits"     name="VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR"/>
-                <enum offset="0" extends="VkImageLayout"                name="VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR"/>
-                <enum offset="1" extends="VkImageLayout"                name="VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR"/>
-                <enum offset="2" extends="VkImageLayout"                name="VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR"/>
-
-                <type name="VkVideoDecodeCapabilityFlagBitsKHR"/>
-                <type name="VkVideoDecodeCapabilityFlagsKHR"/>
-                <type name="VkVideoDecodeCapabilitiesKHR"/>
-
-                <type name="VkVideoDecodeUsageFlagBitsKHR"/>
-                <type name="VkVideoDecodeUsageFlagsKHR"/>
-                <type name="VkVideoDecodeUsageInfoKHR"/>
-
-                <type name="VkVideoDecodeFlagsKHR"/>
-
-                <type name="VkVideoDecodeInfoKHR"/>
-                <command name="vkCmdDecodeVideoKHR"/>
-            </require>
-            <require depends="VK_KHR_format_feature_flags2">
-                <enum bitpos="25" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR"/>
-                <enum bitpos="26" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_gcn_shader" number="26" type="device" author="AMD" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_AMD_GCN_SHADER_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_gcn_shader&quot;"                     name="VK_AMD_GCN_SHADER_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_dedicated_allocation" number="27" type="device" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan" deprecatedby="VK_KHR_dedicated_allocation">
-            <require>
-                <enum value="1"                                                 name="VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_dedicated_allocation&quot;"            name="VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"/>
-                <type name="VkDedicatedAllocationImageCreateInfoNV"/>
-                <type name="VkDedicatedAllocationBufferCreateInfoNV"/>
-                <type name="VkDedicatedAllocationMemoryAllocateInfoNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_28" number="28" author="NV" contact="Piers Daniell @pdaniell-nv" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_EXT_EXTENSION_28_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_28&quot;"                   name="VK_EXT_EXTENSION_28_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_transform_feedback" number="29" type="device" author="NV" contact="Piers Daniell @pdaniell-nv" specialuse="glemulation,d3demulation,devtools" supported="vulkan" depends="VK_KHR_get_physical_device_properties2">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_transform_feedback&quot;"             name="VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME"/>
-                <command name="vkCmdBindTransformFeedbackBuffersEXT"/>
-                <command name="vkCmdBeginTransformFeedbackEXT"/>
-                <command name="vkCmdEndTransformFeedbackEXT"/>
-                <command name="vkCmdBeginQueryIndexedEXT"/>
-                <command name="vkCmdEndQueryIndexedEXT"/>
-                <command name="vkCmdDrawIndirectByteCountEXT"/>
-
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"/>
-
-                <enum offset="4" extends="VkQueryType"                          name="VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"/>
-
-                <enum bitpos="11" extends="VkBufferUsageFlagBits"               name="VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"/>
-                <enum bitpos="12" extends="VkBufferUsageFlagBits"               name="VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"/>
-
-                <enum bitpos="25" extends="VkAccessFlagBits"                    name="VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"/>
-                <enum bitpos="26" extends="VkAccessFlagBits"                    name="VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"/>
-                <enum bitpos="27" extends="VkAccessFlagBits"                    name="VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"/>
-
-                <enum bitpos="24" extends="VkPipelineStageFlagBits"             name="VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"/>
-
-                <type name="VkPhysicalDeviceTransformFeedbackFeaturesEXT"/>
-                <type name="VkPhysicalDeviceTransformFeedbackPropertiesEXT"/>
-                <type name="VkPipelineRasterizationStateStreamCreateInfoEXT"/>
-
-                <type name="VkPipelineRasterizationStateStreamCreateFlagsEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NVX_binary_import" number="30" type="device" author="NVX" contact="Eric Werness @ewerness-nv,Liam Middlebrook @liam-middlebrook" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_NVX_BINARY_IMPORT_SPEC_VERSION"/>
-                <enum value="&quot;VK_NVX_binary_import&quot;"                  name="VK_NVX_BINARY_IMPORT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX"/>
-                <enum offset="0" extends="VkObjectType"                         name="VK_OBJECT_TYPE_CU_MODULE_NVX"/>
-                <enum offset="1" extends="VkObjectType"                         name="VK_OBJECT_TYPE_CU_FUNCTION_NVX"/>
-                <type name="VkCuModuleNVX"/>
-                <type name="VkCuFunctionNVX"/>
-                <type name="VkCuModuleCreateInfoNVX"/>
-                <type name="VkCuFunctionCreateInfoNVX"/>
-                <type name="VkCuLaunchInfoNVX"/>
-                <command name="vkCreateCuModuleNVX"/>
-                <command name="vkCreateCuFunctionNVX"/>
-                <command name="vkDestroyCuModuleNVX"/>
-                <command name="vkDestroyCuFunctionNVX"/>
-                <command name="vkCmdCuLaunchKernelNVX"/>
-            </require>
-            <require depends="VK_EXT_debug_report">
-                <enum offset="0" extends="VkDebugReportObjectTypeEXT"           name="VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT"/>
-                <enum offset="1" extends="VkDebugReportObjectTypeEXT"           name="VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NVX_image_view_handle" number="31" type="device" author="NVX" contact="Eric Werness @ewerness-nv" supported="vulkan">
-            <require>
-                <enum value="2"                                                 name="VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NVX_image_view_handle&quot;"              name="VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"/>
-                <type name="VkImageViewHandleInfoNVX"/>
-                <type name="VkImageViewAddressPropertiesNVX"/>
-                <command name="vkGetImageViewHandleNVX"/>
-                <command name="vkGetImageViewAddressNVX"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_32" number="32" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_AMD_EXTENSION_32_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_32&quot;"                   name="VK_AMD_EXTENSION_32_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_33" number="33" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_AMD_EXTENSION_33_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_33&quot;"                   name="VK_AMD_EXTENSION_33_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_draw_indirect_count" number="34" type="device" author="AMD" contact="Daniel Rakos @drakos-amd" supported="vulkan" promotedto="VK_KHR_draw_indirect_count">
-            <require>
-                <enum value="2"                                                 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>
-        </extension>
-        <extension name="VK_AMD_extension_35" number="35" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_AMD_EXTENSION_35_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_35&quot;"                   name="VK_AMD_EXTENSION_35_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_negative_viewport_height" number="36" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan" obsoletedby="VK_KHR_maintenance1">
-            <require>
-                <enum value="1"                                                 name="VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_negative_viewport_height&quot;"       name="VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_gpu_shader_half_float" number="37" type="device" author="AMD" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan" deprecatedby="VK_KHR_shader_float16_int8">
-            <require>
-                <enum value="2"                                                 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_shader_ballot" number="38" type="device" author="AMD" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_AMD_SHADER_BALLOT_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_shader_ballot&quot;"                  name="VK_AMD_SHADER_BALLOT_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_video_encode_h264" number="39" type="device" depends="VK_KHR_video_encode_queue" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" provisional="true" platform="provisional" supported="vulkan">
-            <require>
-                <enum value="12"                                                name="VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_video_encode_h264&quot;"              name="VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="3" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="4" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="5" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="6" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="7" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="8" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="9" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="10" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="11" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="12" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="13" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="16" extends="VkVideoCodecOperationFlagBitsKHR"    name="VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
-                <type name="VkVideoEncodeH264CapabilityFlagBitsEXT"/>
-                <type name="VkVideoEncodeH264CapabilityFlagsEXT"/>
-                <type name="VkVideoEncodeH264StdFlagBitsEXT"/>
-                <type name="VkVideoEncodeH264StdFlagsEXT"/>
-                <type name="VkVideoEncodeH264CapabilitiesEXT"/>
-                <type name="VkVideoEncodeH264QualityLevelPropertiesEXT"/>
-                <type name="VkVideoEncodeH264SessionCreateInfoEXT"/>
-                <type name="VkVideoEncodeH264SessionParametersCreateInfoEXT"/>
-                <type name="VkVideoEncodeH264SessionParametersAddInfoEXT"/>
-                <type name="VkVideoEncodeH264SessionParametersGetInfoEXT"/>
-                <type name="VkVideoEncodeH264SessionParametersFeedbackInfoEXT"/>
-                <type name="VkVideoEncodeH264PictureInfoEXT"/>
-                <type name="VkVideoEncodeH264DpbSlotInfoEXT"/>
-                <type name="VkVideoEncodeH264NaluSliceInfoEXT"/>
-                <type name="VkVideoEncodeH264ProfileInfoEXT"/>
-                <type name="VkVideoEncodeH264RateControlInfoEXT"/>
-                <type name="VkVideoEncodeH264RateControlFlagBitsEXT"/>
-                <type name="VkVideoEncodeH264RateControlFlagsEXT"/>
-                <type name="VkVideoEncodeH264RateControlLayerInfoEXT"/>
-                <type name="VkVideoEncodeH264QpEXT"/>
-                <type name="VkVideoEncodeH264FrameSizeEXT"/>
-                <type name="VkVideoEncodeH264GopRemainingFrameInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_video_encode_h265" number="40" type="device" depends="VK_KHR_video_encode_queue" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" provisional="true" platform="provisional" supported="vulkan">
-            <require>
-                <enum value="12"                                             name="VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_video_encode_h265&quot;"           name="VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="1" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="2" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="3" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="4" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="5" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="6" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="7" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="9" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="10" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="11" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="12" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="13" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="14" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="17" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
-                <type name="VkVideoEncodeH265CapabilityFlagBitsEXT"/>
-                <type name="VkVideoEncodeH265CapabilityFlagsEXT"/>
-                <type name="VkVideoEncodeH265StdFlagBitsEXT"/>
-                <type name="VkVideoEncodeH265StdFlagsEXT"/>
-                <type name="VkVideoEncodeH265CtbSizeFlagBitsEXT"/>
-                <type name="VkVideoEncodeH265CtbSizeFlagsEXT"/>
-                <type name="VkVideoEncodeH265TransformBlockSizeFlagBitsEXT"/>
-                <type name="VkVideoEncodeH265TransformBlockSizeFlagsEXT"/>
-                <type name="VkVideoEncodeH265CapabilitiesEXT"/>
-                <type name="VkVideoEncodeH265SessionCreateInfoEXT"/>
-                <type name="VkVideoEncodeH265QualityLevelPropertiesEXT"/>
-                <type name="VkVideoEncodeH265SessionParametersCreateInfoEXT"/>
-                <type name="VkVideoEncodeH265SessionParametersAddInfoEXT"/>
-                <type name="VkVideoEncodeH265SessionParametersGetInfoEXT"/>
-                <type name="VkVideoEncodeH265SessionParametersFeedbackInfoEXT"/>
-                <type name="VkVideoEncodeH265PictureInfoEXT"/>
-                <type name="VkVideoEncodeH265DpbSlotInfoEXT"/>
-                <type name="VkVideoEncodeH265NaluSliceSegmentInfoEXT"/>
-                <type name="VkVideoEncodeH265ProfileInfoEXT"/>
-                <type name="VkVideoEncodeH265RateControlInfoEXT"/>
-                <type name="VkVideoEncodeH265RateControlFlagBitsEXT"/>
-                <type name="VkVideoEncodeH265RateControlFlagsEXT"/>
-                <type name="VkVideoEncodeH265RateControlLayerInfoEXT"/>
-                <type name="VkVideoEncodeH265QpEXT"/>
-                <type name="VkVideoEncodeH265FrameSizeEXT"/>
-                <type name="VkVideoEncodeH265GopRemainingFrameInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_video_decode_h264" number="41" type="device" depends="VK_KHR_video_decode_queue" author="KHR" contact="peter.fang@amd.com" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="8"                                              name="VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_video_decode_h264&quot;"           name="VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR"/>
-                <enum offset="1" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR"/>
-                <enum offset="3" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR"/>
-                <enum offset="4" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR"/>
-                <enum offset="5" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR"/>
-                <enum offset="6" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR"/>
-                <enum bitpos="0" extends="VkVideoCodecOperationFlagBitsKHR"  name="VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR"/>
-                <type name="VkVideoDecodeH264PictureLayoutFlagBitsKHR"/>
-                <type name="VkVideoDecodeH264PictureLayoutFlagsKHR"/>
-                <type name="VkVideoDecodeH264ProfileInfoKHR"/>
-                <type name="VkVideoDecodeH264CapabilitiesKHR"/>
-                <type name="VkVideoDecodeH264SessionParametersCreateInfoKHR"/>
-                <type name="VkVideoDecodeH264SessionParametersAddInfoKHR"/>
-                <type name="VkVideoDecodeH264PictureInfoKHR"/>
-                <type name="VkVideoDecodeH264DpbSlotInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_texture_gather_bias_lod" number="42" author="AMD" contact="Rex Xu @amdrexu" supported="vulkan" type="device" depends="VK_KHR_get_physical_device_properties2">
-            <require>
-                <enum value="1"                                                 name="VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_texture_gather_bias_lod&quot;"        name="VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"/>
-                <type name="VkTextureLODGatherFormatPropertiesAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_shader_info" number="43" author="AMD" contact="Jaakko Konttinen @jaakkoamd" supported="vulkan" specialuse="devtools" type="device">
-            <require>
-                <enum value="1"                                                 name="VK_AMD_SHADER_INFO_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_shader_info&quot;"                    name="VK_AMD_SHADER_INFO_EXTENSION_NAME"/>
-                <type name="VkShaderInfoTypeAMD"/>
-                <type name="VkShaderResourceUsageAMD"/>
-                <type name="VkShaderStatisticsInfoAMD"/>
-                <command name="vkGetShaderInfoAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_44" number="44" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_AMD_EXTENSION_44_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_44&quot;"                   name="VK_AMD_EXTENSION_44_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_dynamic_rendering" number="45" author="KHR" type="device" depends="VK_KHR_depth_stencil_resolve+VK_KHR_get_physical_device_properties2" contact="Tobias Hector @tobski" supported="vulkan" promotedto="VK_VERSION_1_3" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_dynamic_rendering&quot;"              name="VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME"/>
-                <command name="vkCmdBeginRenderingKHR"/>
-                <command name="vkCmdEndRenderingKHR"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_RENDERING_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDERING_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR" alias="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO"/>
-                <enum extends="VkAttachmentStoreOp"                             name="VK_ATTACHMENT_STORE_OP_NONE_KHR" alias="VK_ATTACHMENT_STORE_OP_NONE"/>
-                <type name="VkRenderingInfoKHR"/>
-                <type name="VkRenderingAttachmentInfoKHR"/>
-                <type name="VkPipelineRenderingCreateInfoKHR"/>
-                <type name="VkPhysicalDeviceDynamicRenderingFeaturesKHR"/>
-                <type name="VkCommandBufferInheritanceRenderingInfoKHR"/>
-                <type name="VkRenderingFlagsKHR"/>
-                <type name="VkRenderingFlagBitsKHR"/>
-            </require>
-            <require depends="VK_KHR_fragment_shading_rate">
-                <enum bitpos="21" extends="VkPipelineCreateFlagBits"                name="VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-                <enum alias="VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR" deprecated="aliased"/>
-                <enum offset="6" extends="VkStructureType" extnumber="45"           name="VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"/>
-                <type name="VkRenderingFragmentShadingRateAttachmentInfoKHR"/>
-            </require>
-            <require depends="VK_EXT_fragment_density_map">
-                <enum bitpos="22" extends="VkPipelineCreateFlagBits"                name="VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"/>
-                <enum alias="VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT" deprecated="aliased"/>
-                <enum offset="7" extends="VkStructureType" extnumber="45"           name="VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"/>
-                <type name="VkRenderingFragmentDensityMapAttachmentInfoEXT"/>
-            </require>
-            <require depends="VK_AMD_mixed_attachment_samples">
-                <enum offset="8" extends="VkStructureType" extnumber="45"           name="VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"/>
-                <type name="VkAttachmentSampleCountInfoAMD"/>
-            </require>
-            <require depends="VK_NV_framebuffer_mixed_samples">
-                <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV" alias="VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"/>
-                <type name="VkAttachmentSampleCountInfoNV"/>
-            </require>
-            <require depends="VK_NVX_multiview_per_view_attributes">
-                <enum offset="9" extends="VkStructureType" extnumber="45"           name="VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"/>
-                <type name="VkMultiviewPerViewAttributesInfoNVX"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_46" number="46" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_AMD_EXTENSION_46_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_46&quot;"                   name="VK_AMD_EXTENSION_46_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_shader_image_load_store_lod" number="47" author="AMD" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan" type="device">
-            <require>
-                <enum value="1"                                                 name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_shader_image_load_store_lod&quot;"    name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NVX_extension_48" number="48" author="NVX" contact="James Jones @cubanismo" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_NVX_EXTENSION_48_SPEC_VERSION"/>
-                <enum value="&quot;VK_NVX_extension_48&quot;"                   name="VK_NVX_EXTENSION_48_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_extension_49" number="49" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_GOOGLE_EXTENSION_49_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_extension_49&quot;"                name="VK_GOOGLE_EXTENSION_49_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GGP_stream_descriptor_surface" number="50" type="instance" depends="VK_KHR_surface" platform="ggp" author="GGP" contact="Jean-Francois Roy @jfroy" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_GGP_stream_descriptor_surface&quot;"      name="VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"/>
-                <type name="VkStreamDescriptorSurfaceCreateFlagsGGP"/>
-                <type name="VkStreamDescriptorSurfaceCreateInfoGGP"/>
-                <command name="vkCreateStreamDescriptorSurfaceGGP"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_corner_sampled_image" number="51" author="NV" type="device" depends="VK_KHR_get_physical_device_properties2" contact="Daniel Koch @dgkoch" supported="vulkan">
-            <require>
-                <enum value="2"                                                 name="VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_corner_sampled_image&quot;"            name="VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME"/>
-                <enum bitpos="13" extends="VkImageCreateFlagBits"               name="VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"/>
-                <type name="VkPhysicalDeviceCornerSampledImageFeaturesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_private_vendor_info" number="52" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkansc">
-            <require>
-                <enum value="2"                                                 name="VK_NV_PRIVATE_VENDOR_INFO_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_private_vendor_info&quot;"             name="VK_NV_PRIVATE_VENDOR_INFO_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PRIVATE_VENDOR_INFO_PLACEHOLDER_OFFSET_0_NV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_53" number="53" author="NV" contact="Jeff Bolz @jeffbolznv" supported="disabled">
-            <require>
-                <enum value="0"                                                 name="VK_NV_EXTENSION_53_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_53&quot;"                    name="VK_NV_EXTENSION_53_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_multiview" number="54" type="device" author="KHR" depends="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_MULTIVIEW_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_multiview&quot;"                      name="VK_KHR_MULTIVIEW_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"/>
-                <enum extends="VkDependencyFlagBits"                            name="VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR" alias="VK_DEPENDENCY_VIEW_LOCAL_BIT"/>
-                <type name="VkRenderPassMultiviewCreateInfoKHR"/>
-                <type name="VkPhysicalDeviceMultiviewFeaturesKHR"/>
-                <type name="VkPhysicalDeviceMultiviewPropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_IMG_format_pvrtc" number="55" type="device" author="IMG" contact="Stuart Smith" supported="vulkan" deprecatedby="">
-            <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"/>
-                <enum offset="0" extends="VkFormat"                             name="VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"/>
-                <enum offset="1" extends="VkFormat"                             name="VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"/>
-                <enum offset="2" extends="VkFormat"                             name="VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"/>
-                <enum offset="3" extends="VkFormat"                             name="VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"/>
-                <enum offset="4" extends="VkFormat"                             name="VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"/>
-                <enum offset="5" extends="VkFormat"                             name="VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"/>
-                <enum offset="6" extends="VkFormat"                             name="VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"/>
-                <enum offset="7" extends="VkFormat"                             name="VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_external_memory_capabilities" number="56" type="instance" author="NV" contact="James Jones @cubanismo" supported="vulkan" deprecatedby="VK_KHR_external_memory_capabilities">
-            <require>
-                <enum value="1"                                                 name="VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_external_memory_capabilities&quot;"    name="VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"/>
-                <type name="VkExternalMemoryHandleTypeFlagsNV"/>
-                <type name="VkExternalMemoryHandleTypeFlagBitsNV"/>
-                <type name="VkExternalMemoryFeatureFlagsNV"/>
-                <type name="VkExternalMemoryFeatureFlagBitsNV"/>
-                <type name="VkExternalImageFormatPropertiesNV"/>
-                <command name="vkGetPhysicalDeviceExternalImageFormatPropertiesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_external_memory" number="57" type="device" depends="VK_NV_external_memory_capabilities" author="NV" contact="James Jones @cubanismo" supported="vulkan" deprecatedby="VK_KHR_external_memory">
-            <require>
-                <enum value="1"                                                 name="VK_NV_EXTERNAL_MEMORY_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_external_memory&quot;"                 name="VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"/>
-                <type name="VkExternalMemoryImageCreateInfoNV"/>
-                <type name="VkExportMemoryAllocateInfoNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_external_memory_win32" number="58" type="device" depends="VK_NV_external_memory" author="NV" contact="James Jones @cubanismo" platform="win32" supported="vulkan" deprecatedby="VK_KHR_external_memory_win32">
-            <require>
-                <enum value="1"                                                 name="VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_external_memory_win32&quot;"           name="VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"/>
-                <type name="VkImportMemoryWin32HandleInfoNV"/>
-                <type name="VkExportMemoryWin32HandleInfoNV"/>
-                <command name="vkGetMemoryWin32HandleNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_win32_keyed_mutex" number="59" type="device" depends="VK_NV_external_memory_win32" author="NV" contact="Carsten Rohde @crohde" platform="win32" supported="vulkan" promotedto="VK_KHR_win32_keyed_mutex">
-            <require>
-                <enum value="2"                                                 name="VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_win32_keyed_mutex&quot;"               name="VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"/>
-                <type name="VkWin32KeyedMutexAcquireReleaseInfoNV"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_get_physical_device_properties2" number="60" type="instance" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="2"                                                 name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_get_physical_device_properties2&quot;" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"/>
-                <type name="VkPhysicalDeviceFeatures2KHR"/>
-                <type name="VkPhysicalDeviceProperties2KHR"/>
-                <type name="VkFormatProperties2KHR"/>
-                <type name="VkImageFormatProperties2KHR"/>
-                <type name="VkPhysicalDeviceImageFormatInfo2KHR"/>
-                <type name="VkQueueFamilyProperties2KHR"/>
-                <type name="VkPhysicalDeviceMemoryProperties2KHR"/>
-                <type name="VkSparseImageFormatProperties2KHR"/>
-                <type name="VkPhysicalDeviceSparseImageFormatInfo2KHR"/>
-                <command name="vkGetPhysicalDeviceFeatures2KHR"/>
-                <command name="vkGetPhysicalDeviceProperties2KHR"/>
-                <command name="vkGetPhysicalDeviceFormatProperties2KHR"/>
-                <command name="vkGetPhysicalDeviceImageFormatProperties2KHR"/>
-                <command name="vkGetPhysicalDeviceQueueFamilyProperties2KHR"/>
-                <command name="vkGetPhysicalDeviceMemoryProperties2KHR"/>
-                <command name="vkGetPhysicalDeviceSparseImageFormatProperties2KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_device_group" number="61" type="device" author="KHR" depends="VK_KHR_device_group_creation" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="4"                                                 name="VK_KHR_DEVICE_GROUP_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_device_group&quot;"                   name="VK_KHR_DEVICE_GROUP_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"/>
-                <type name="VkPeerMemoryFeatureFlagsKHR"/>
-                <type name="VkPeerMemoryFeatureFlagBitsKHR"/>
-                <enum extends="VkPeerMemoryFeatureFlagBits"                     name="VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"/>
-                <enum extends="VkPeerMemoryFeatureFlagBits"                     name="VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"/>
-                <enum extends="VkPeerMemoryFeatureFlagBits"                     name="VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"/>
-                <enum extends="VkPeerMemoryFeatureFlagBits"                     name="VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"/>
-                <type name="VkMemoryAllocateFlagsKHR"/>
-                <type name="VkMemoryAllocateFlagBitsKHR"/>
-                <enum extends="VkMemoryAllocateFlagBits"                        name="VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR" alias="VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"/>
-                <type name="VkMemoryAllocateFlagsInfoKHR"/>
-                <type name="VkDeviceGroupRenderPassBeginInfoKHR"/>
-                <type name="VkDeviceGroupCommandBufferBeginInfoKHR"/>
-                <type name="VkDeviceGroupSubmitInfoKHR"/>
-                <type name="VkDeviceGroupBindSparseInfoKHR"/>
-                <command name="vkGetDeviceGroupPeerMemoryFeaturesKHR"/>
-                <command name="vkCmdSetDeviceMaskKHR"/>
-                <command name="vkCmdDispatchBaseKHR"/>
-                <enum extends="VkPipelineCreateFlagBits"                        name="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR" alias="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"/>
-                <enum extends="VkPipelineCreateFlagBits"                        name="VK_PIPELINE_CREATE_DISPATCH_BASE_KHR" alias="VK_PIPELINE_CREATE_DISPATCH_BASE"/>
-                <enum extends="VkDependencyFlagBits"                            name="VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR" alias="VK_DEPENDENCY_DEVICE_GROUP_BIT"/>
-            </require>
-            <require depends="VK_KHR_bind_memory2">
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"/>
-                <type name="VkBindBufferMemoryDeviceGroupInfoKHR"/>
-                <type name="VkBindImageMemoryDeviceGroupInfoKHR"/>
-                <enum extends="VkImageCreateFlagBits"                           name="VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR" alias="VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"/>
-            </require>
-            <require depends="VK_KHR_surface">
-                <enum offset="7" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"/>
-                <type name="VkDeviceGroupPresentModeFlagBitsKHR"/>
-                <type name="VkDeviceGroupPresentModeFlagsKHR"/>
-                <type name="VkDeviceGroupPresentCapabilitiesKHR"/>
-                <command name="vkGetDeviceGroupPresentCapabilitiesKHR"/>
-                <command name="vkGetDeviceGroupSurfacePresentModesKHR"/>
-                <command name="vkGetPhysicalDevicePresentRectanglesKHR"/>
-            </require>
-            <require depends="VK_KHR_swapchain">
-                <enum offset="8" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"/>
-                <enum offset="9" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"/>
-                <enum offset="10" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"/>
-                <enum offset="11" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"/>
-                <enum offset="12" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"/>
-                <enum bitpos="0" extends="VkSwapchainCreateFlagBitsKHR"         name="VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR" comment="Allow images with VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"/>
-                <type name="VkImageSwapchainCreateInfoKHR"/>
-                <type name="VkBindImageMemorySwapchainInfoKHR"/>
-                <type name="VkAcquireNextImageInfoKHR"/>
-                <type name="VkDeviceGroupPresentInfoKHR"/>
-                <type name="VkDeviceGroupSwapchainCreateInfoKHR"/>
-                <command name="vkAcquireNextImage2KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_validation_flags" number="62" type="instance" author="GOOGLE" contact="Tobin Ehlis @tobine" specialuse="debugging" supported="vulkan" deprecatedby="VK_EXT_validation_features">
-            <require>
-                <enum value="2"                                                 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"/>
-                <type name="VkValidationCheckEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NN_vi_surface" number="63" type="instance" author="NN" contact="Mathias Heyer gitlab:@mheyer" depends="VK_KHR_surface" platform="vi" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_NN_VI_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NN_vi_surface&quot;"                      name="VK_NN_VI_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"/>
-                <type name="VkViSurfaceCreateFlagsNN"/>
-                <type name="VkViSurfaceCreateInfoNN"/>
-                <command name="vkCreateViSurfaceNN"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shader_draw_parameters" number="64" type="device" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_draw_parameters&quot;"         name="VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_subgroup_ballot" number="65" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan" deprecatedby="VK_VERSION_1_2">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_subgroup_ballot&quot;"         name="VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_subgroup_vote" number="66" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan" deprecatedby="VK_VERSION_1_1">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_subgroup_vote&quot;"           name="VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_texture_compression_astc_hdr" number="67" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_texture_compression_astc_hdr&quot;"   name="VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES"/>
-                <type name="VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK"/>
-                <enum extends="VkFormat"                                        name="VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT" alias="VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_astc_decode_mode" number="68" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_astc_decode_mode&quot;"               name="VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"/>
-                <type name="VkImageViewASTCDecodeModeEXT"/>
-                <type name="VkPhysicalDeviceASTCDecodeFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_pipeline_robustness" depends="VK_KHR_get_physical_device_properties2" number="69" type="device" author="IMG" contact="Jarred Davies" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_pipeline_robustness&quot;"            name="VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT"/>
-                <type name="VkPhysicalDevicePipelineRobustnessFeaturesEXT"/>
-                <type name="VkPhysicalDevicePipelineRobustnessPropertiesEXT"/>
-                <type name="VkPipelineRobustnessCreateInfoEXT"/>
-                <type name="VkPipelineRobustnessBufferBehaviorEXT"/>
-                <type name="VkPipelineRobustnessImageBehaviorEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_maintenance1" number="70" type="device" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="2"                                                 name="VK_KHR_MAINTENANCE_1_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_maintenance1&quot;"                   name="VK_KHR_MAINTENANCE_1_EXTENSION_NAME"/>
-                <enum alias="VK_KHR_MAINTENANCE_1_SPEC_VERSION"                 name="VK_KHR_MAINTENANCE1_SPEC_VERSION" deprecated="aliased"/>
-                <enum alias="VK_KHR_MAINTENANCE_1_EXTENSION_NAME"               name="VK_KHR_MAINTENANCE1_EXTENSION_NAME" deprecated="aliased"/>
-                <enum extends="VkResult"                                        name="VK_ERROR_OUT_OF_POOL_MEMORY_KHR" alias="VK_ERROR_OUT_OF_POOL_MEMORY"/>
-                <enum extends="VkFormatFeatureFlagBits"                         name="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR" alias="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"/>
-                <enum extends="VkFormatFeatureFlagBits"                         name="VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR" alias="VK_FORMAT_FEATURE_TRANSFER_DST_BIT"/>
-                <enum extends="VkImageCreateFlagBits"                           name="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR" alias="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"/>
-                <type name="VkCommandPoolTrimFlagsKHR"/>
-                <command name="vkTrimCommandPoolKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_device_group_creation" number="71" type="instance" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_device_group_creation&quot;"          name="VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"/>
-                <enum name="VK_MAX_DEVICE_GROUP_SIZE_KHR"/>
-                <type name="VkPhysicalDeviceGroupPropertiesKHR"/>
-                <type name="VkDeviceGroupDeviceCreateInfoKHR"/>
-                <command name="vkEnumeratePhysicalDeviceGroupsKHR"/>
-                <enum extends="VkMemoryHeapFlagBits"                            name="VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR" alias="VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_memory_capabilities" number="72" type="instance" author="KHR" depends="VK_KHR_get_physical_device_properties2" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_memory_capabilities&quot;"   name="VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/>
-                <enum name="VK_LUID_SIZE_KHR"/>
-                <type name="VkExternalMemoryHandleTypeFlagsKHR"/>
-                <type name="VkExternalMemoryHandleTypeFlagBitsKHR"/>
-                <enum extends="VkExternalMemoryHandleTypeFlagBits"              name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"/>
-                <enum extends="VkExternalMemoryHandleTypeFlagBits"              name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
-                <enum extends="VkExternalMemoryHandleTypeFlagBits"              name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
-                <enum extends="VkExternalMemoryHandleTypeFlagBits"              name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"/>
-                <enum extends="VkExternalMemoryHandleTypeFlagBits"              name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"/>
-                <enum extends="VkExternalMemoryHandleTypeFlagBits"              name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"/>
-                <enum extends="VkExternalMemoryHandleTypeFlagBits"              name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"/>
-                <type name="VkExternalMemoryFeatureFlagsKHR"/>
-                <type name="VkExternalMemoryFeatureFlagBitsKHR"/>
-                <enum extends="VkExternalMemoryFeatureFlagBits"                 name="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR" alias="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"/>
-                <enum extends="VkExternalMemoryFeatureFlagBits"                 name="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"/>
-                <enum extends="VkExternalMemoryFeatureFlagBits"                 name="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"/>
-                <type name="VkExternalMemoryPropertiesKHR"/>
-                <type name="VkPhysicalDeviceExternalImageFormatInfoKHR"/>
-                <type name="VkExternalImageFormatPropertiesKHR"/>
-                <type name="VkPhysicalDeviceExternalBufferInfoKHR"/>
-                <type name="VkExternalBufferPropertiesKHR"/>
-                <type name="VkPhysicalDeviceIDPropertiesKHR"/>
-                <command name="vkGetPhysicalDeviceExternalBufferPropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_memory" number="73" type="device" depends="VK_KHR_external_memory_capabilities" author="KHR" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_memory&quot;"                name="VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"/>
-                <enum extends="VkResult"                                        name="VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR" alias="VK_ERROR_INVALID_EXTERNAL_HANDLE"/>
-                <enum name="VK_QUEUE_FAMILY_EXTERNAL_KHR"/>
-                <type name="VkExternalMemoryImageCreateInfoKHR"/>
-                <type name="VkExternalMemoryBufferCreateInfoKHR"/>
-                <type name="VkExportMemoryAllocateInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_memory_win32" number="74" type="device" depends="VK_KHR_external_memory" author="KHR" contact="James Jones @cubanismo" platform="win32" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_memory_win32&quot;"          name="VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"/>
-                <enum offset="3" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"/>
-                <type name="VkImportMemoryWin32HandleInfoKHR"/>
-                <type name="VkExportMemoryWin32HandleInfoKHR"/>
-                <type name="VkMemoryWin32HandlePropertiesKHR"/>
-                <type name="VkMemoryGetWin32HandleInfoKHR"/>
-                <command name="vkGetMemoryWin32HandleKHR"/>
-                <command name="vkGetMemoryWin32HandlePropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_memory_fd" number="75" type="device" depends="VK_KHR_external_memory,VK_VERSION_1_1" author="KHR" contact="James Jones @cubanismo" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_memory_fd&quot;"             name="VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"/>
-                <type name="VkImportMemoryFdInfoKHR"/>
-                <type name="VkMemoryFdPropertiesKHR"/>
-                <type name="VkMemoryGetFdInfoKHR"/>
-                <command name="vkGetMemoryFdKHR"/>
-                <command name="vkGetMemoryFdPropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_win32_keyed_mutex" number="76" type="device" depends="VK_KHR_external_memory_win32" author="KHR" contact="Carsten Rohde @crohde" platform="win32" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_win32_keyed_mutex&quot;"              name="VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"/>
-                <type name="VkWin32KeyedMutexAcquireReleaseInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_semaphore_capabilities" number="77" type="instance" author="KHR" depends="VK_KHR_get_physical_device_properties2" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_semaphore_capabilities&quot;" name="VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/>
-                <enum name="VK_LUID_SIZE_KHR"/>
-                <type name="VkExternalSemaphoreHandleTypeFlagsKHR"/>
-                <type name="VkExternalSemaphoreHandleTypeFlagBitsKHR"/>
-                <enum extends="VkExternalSemaphoreHandleTypeFlagBits"       name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"/>
-                <enum extends="VkExternalSemaphoreHandleTypeFlagBits"       name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
-                <enum extends="VkExternalSemaphoreHandleTypeFlagBits"       name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
-                <enum extends="VkExternalSemaphoreHandleTypeFlagBits"       name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"/>
-                <enum extends="VkExternalSemaphoreHandleTypeFlagBits"       name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"/>
-                <type name="VkExternalSemaphoreFeatureFlagsKHR"/>
-                <type name="VkExternalSemaphoreFeatureFlagBitsKHR"/>
-                <enum extends="VkExternalSemaphoreFeatureFlagBits"          name="VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"/>
-                <enum extends="VkExternalSemaphoreFeatureFlagBits"          name="VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"/>
-                <type name="VkPhysicalDeviceExternalSemaphoreInfoKHR"/>
-                <type name="VkExternalSemaphorePropertiesKHR"/>
-                <type name="VkPhysicalDeviceIDPropertiesKHR"/>
-                <command name="vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_semaphore" number="78" type="device" depends="VK_KHR_external_semaphore_capabilities" author="KHR" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_semaphore&quot;"         name="VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"/>
-                <type name="VkSemaphoreImportFlagsKHR"/>
-                <type name="VkSemaphoreImportFlagBitsKHR"/>
-                <enum extends="VkSemaphoreImportFlagBits"                   name="VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR" alias="VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"/>
-                <type name="VkExportSemaphoreCreateInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_semaphore_win32" number="79" type="device" depends="VK_KHR_external_semaphore" author="KHR" contact="James Jones @cubanismo" platform="win32" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_semaphore_win32&quot;"   name="VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"/>
-                <type name="VkImportSemaphoreWin32HandleInfoKHR"/>
-                <type name="VkExportSemaphoreWin32HandleInfoKHR"/>
-                <type name="VkD3D12FenceSubmitInfoKHR"/>
-                <type name="VkSemaphoreGetWin32HandleInfoKHR"/>
-                <command name="vkImportSemaphoreWin32HandleKHR"/>
-                <command name="vkGetSemaphoreWin32HandleKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_semaphore_fd" number="80" type="device" depends="VK_KHR_external_semaphore,VK_VERSION_1_1" author="KHR" contact="James Jones @cubanismo" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_semaphore_fd&quot;"      name="VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"/>
-                <type name="VkImportSemaphoreFdInfoKHR"/>
-                <type name="VkSemaphoreGetFdInfoKHR"/>
-                <command name="vkImportSemaphoreFdKHR"/>
-                <command name="vkGetSemaphoreFdKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_push_descriptor" number="81" type="device" author="KHR" depends="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jeffbolznv" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_push_descriptor&quot;"            name="VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"/>
-                <enum bitpos="0" extends="VkDescriptorSetLayoutCreateFlagBits"   name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"  comment="Descriptors are pushed via flink:vkCmdPushDescriptorSetKHR"/>
-                <command name="vkCmdPushDescriptorSetKHR"/>
-                <type name="VkPhysicalDevicePushDescriptorPropertiesKHR"/>
-            </require>
-            <require depends="VK_VERSION_1_1">
-                <command name="vkCmdPushDescriptorSetWithTemplateKHR"/>
-                <enum value="1" extends="VkDescriptorUpdateTemplateType"    name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR" comment="Create descriptor update template for pushed descriptor updates"/>
-            </require>
-            <require depends="VK_KHR_descriptor_update_template">
-                <command name="vkCmdPushDescriptorSetWithTemplateKHR"/>
-                <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_conditional_rendering" number="82" type="device" author="NV" contact="Vikram Kushwaha @vkushwaha" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="2"                                             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_shader_float16_int8" number="83" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_float16_int8&quot;"        name="VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"/>
-                <type name="VkPhysicalDeviceShaderFloat16Int8FeaturesKHR"/>
-                <type name="VkPhysicalDeviceFloat16Int8FeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_16bit_storage" number="84" type="device" depends="VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class" author="KHR" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_16BIT_STORAGE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_16bit_storage&quot;"              name="VK_KHR_16BIT_STORAGE_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"/>
-                <type name="VkPhysicalDevice16BitStorageFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_incremental_present" number="85" type="device" author="KHR" depends="VK_KHR_swapchain" contact="Ian Elliott @ianelliottus" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                             name="VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_incremental_present&quot;"        name="VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"/>
-                <type name="VkPresentRegionsKHR"/>
-                <type name="VkPresentRegionKHR"/>
-                <type name="VkRectLayerKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_descriptor_update_template" number="86" type="device" author="KHR" contact="Markus Tavenrath @mtavenrath" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_descriptor_update_template&quot;" name="VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"/>
-                <enum extends="VkObjectType"                                name="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR" alias="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"/>
-                <command name="vkCreateDescriptorUpdateTemplateKHR"/>
-                <command name="vkDestroyDescriptorUpdateTemplateKHR"/>
-                <command name="vkUpdateDescriptorSetWithTemplateKHR"/>
-                <type name="VkDescriptorUpdateTemplateKHR"/>
-                <type name="VkDescriptorUpdateTemplateCreateFlagsKHR"/>
-                <type name="VkDescriptorUpdateTemplateTypeKHR"/>
-                <type name="VkDescriptorUpdateTemplateEntryKHR"/>
-                <type name="VkDescriptorUpdateTemplateCreateInfoKHR"/>
-                <enum extends="VkDescriptorUpdateTemplateType"              name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR" alias="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"/>
-            </require>
-            <require depends="VK_KHR_push_descriptor">
-                <command name="vkCmdPushDescriptorSetWithTemplateKHR"/>
-                <enum value="1" extends="VkDescriptorUpdateTemplateType"    name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR" comment="Create descriptor update template for pushed descriptor updates"/>
-            </require>
-            <require depends="VK_EXT_debug_report">
-                <enum extends="VkDebugReportObjectTypeEXT"                  name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NVX_device_generated_commands" number="87" type="device" author="NVX" contact="Christoph Kubisch @pixeljetstream" supported="disabled">
-            <require>
-                <enum value="3"                                             name="VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"/>
-                <enum value="&quot;VK_NVX_device_generated_commands&quot;"  name="VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_clip_space_w_scaling" number="88" type="device" author="NV" contact="Eric Werness @ewerness-nv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_clip_space_w_scaling&quot;"        name="VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"/>
-                <enum offset="0" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"/>
-                <type name="VkViewportWScalingNV"/>
-                <type name="VkPipelineViewportWScalingStateCreateInfoNV"/>
-                <command name="vkCmdSetViewportWScalingNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_direct_mode_display" number="89" type="instance" depends="VK_KHR_display" author="NV" contact="James Jones @cubanismo" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_direct_mode_display&quot;"        name="VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME"/>
-                <command name="vkReleaseDisplayEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_acquire_xlib_display" number="90" type="instance" depends="VK_EXT_direct_mode_display" author="NV" contact="James Jones @cubanismo" platform="xlib_xrandr" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_acquire_xlib_display&quot;"       name="VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME"/>
-                <command name="vkAcquireXlibDisplayEXT"/>
-                <command name="vkGetRandROutputDisplayEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_display_surface_counter" number="91" type="instance" depends="VK_KHR_display" author="NV" contact="James Jones @cubanismo" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_display_surface_counter&quot;"    name="VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME"/>
-                <enum offset="0"                                           extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"/>
-                <enum api="vulkan" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT" alias="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT" deprecated="aliased"/>
-                <type name="VkSurfaceCounterFlagsEXT"/>
-                <type name="VkSurfaceCounterFlagBitsEXT"/>
-                <type name="VkSurfaceCapabilities2EXT"/>
-                <command name="vkGetPhysicalDeviceSurfaceCapabilities2EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_display_control" number="92" type="device" depends="VK_EXT_display_surface_counter+VK_KHR_swapchain" author="NV" contact="James Jones @cubanismo" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_DISPLAY_CONTROL_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_display_control&quot;"            name="VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"/>
-                <type name="VkDisplayPowerStateEXT"/>
-                <type name="VkDeviceEventTypeEXT"/>
-                <type name="VkDisplayEventTypeEXT"/>
-                <type name="VkDisplayPowerInfoEXT"/>
-                <type name="VkDeviceEventInfoEXT"/>
-                <type name="VkDisplayEventInfoEXT"/>
-                <type name="VkSwapchainCounterCreateInfoEXT"/>
-                <command name="vkDisplayPowerControlEXT"/>
-                <command name="vkRegisterDeviceEventEXT"/>
-                <command name="vkRegisterDisplayEventEXT"/>
-                <command name="vkGetSwapchainCounterEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_display_timing" number="93" type="device" author="GOOGLE" depends="VK_KHR_swapchain" contact="Ian Elliott @ianelliottus" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_display_timing&quot;"          name="VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"/>
-                <type name="VkRefreshCycleDurationGOOGLE"/>
-                <type name="VkPastPresentationTimingGOOGLE"/>
-                <type name="VkPresentTimesInfoGOOGLE"/>
-                <type name="VkPresentTimeGOOGLE"/>
-                <command name="vkGetRefreshCycleDurationGOOGLE"/>
-                <command name="vkGetPastPresentationTimingGOOGLE"/>
-            </require>
-        </extension>
-        <extension name="VK_RESERVED_do_not_use_94" number="94" supported="disabled" comment="Used for functionality subsumed into Vulkan 1.1 and not published as an extension">
-            <require>
-                <enum value="1"                                             name="VK_RESERVED_DO_NOT_USE_94_SPEC_VERSION"/>
-                <enum value="&quot;VK_RESERVED_do_not_use_94&quot;"         name="VK_RESERVED_DO_NOT_USE_94_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_sample_mask_override_coverage" number="95" type="device" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_sample_mask_override_coverage&quot;" name="VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME"/>
-                <comment>
-                    enum offset=0 was mistakenly used for the 1.1 core enum
-                    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
-                    (value=1000094000). Fortunately, no conflict resulted.
-                </comment>
-            </require>
-        </extension>
-        <extension name="VK_NV_geometry_shader_passthrough" number="96" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_geometry_shader_passthrough&quot;" name="VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_viewport_array2" number="97" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_viewport_array2&quot;"             name="VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME"/>
-                <enum alias="VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION"           name="VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION" deprecated="aliased"/>
-                <enum alias="VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME"         name="VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME" deprecated="aliased"/>
-            </require>
-        </extension>
-        <extension name="VK_NVX_multiview_per_view_attributes" number="98" type="device" depends="VK_KHR_multiview" author="NVX" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION"/>
-                <enum value="&quot;VK_NVX_multiview_per_view_attributes&quot;" name="VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"/>
-                <enum bitpos="0" extends="VkSubpassDescriptionFlagBits"     name="VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"/>
-                <enum bitpos="1" extends="VkSubpassDescriptionFlagBits"     name="VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"/>
-                <type name="VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_viewport_swizzle" number="99" type="device" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_viewport_swizzle&quot;"            name="VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"/>
-                <type name="VkViewportSwizzleNV"/>
-                <type name="VkViewportCoordinateSwizzleNV"/>
-                <type name="VkPipelineViewportSwizzleStateCreateInfoNV"/>
-                <type name="VkPipelineViewportSwizzleStateCreateFlagsNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_discard_rectangles" number="100" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                             name="VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_discard_rectangles&quot;"         name="VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"/>
-                <enum offset="0" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"/>
-                <enum offset="1" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT"/>
-                <enum offset="2" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT"/>
-                <type name="VkPhysicalDeviceDiscardRectanglePropertiesEXT"/>
-                <type name="VkPipelineDiscardRectangleStateCreateInfoEXT"/>
-                <type name="VkPipelineDiscardRectangleStateCreateFlagsEXT"/>
-                <type name="VkDiscardRectangleModeEXT"/>
-                <command name="vkCmdSetDiscardRectangleEXT"/>
-                <command name="vkCmdSetDiscardRectangleEnableEXT"/>
-                <command name="vkCmdSetDiscardRectangleModeEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_101" number="101" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_NV_EXTENSION_101_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_101&quot;"               name="VK_NV_EXTENSION_101_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_conservative_rasterization" number="102" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_conservative_rasterization&quot;" name="VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"/>
-                <type name="VkPhysicalDeviceConservativeRasterizationPropertiesEXT"/>
-                <type name="VkPipelineRasterizationConservativeStateCreateInfoEXT"/>
-                <type name="VkPipelineRasterizationConservativeStateCreateFlagsEXT"/>
-                <type name="VkConservativeRasterizationModeEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_depth_clip_enable" number="103" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Piers Daniell @pdaniell-nv" specialuse="d3demulation" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_depth_clip_enable&quot;"          name="VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"/>
-                <type name="VkPhysicalDeviceDepthClipEnableFeaturesEXT"/>
-                <type name="VkPipelineRasterizationDepthClipStateCreateInfoEXT"/>
-                <type name="VkPipelineRasterizationDepthClipStateCreateFlagsEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_104" number="104" author="NV" contact="Mathias Schott gitlab:@mschott" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_NV_EXTENSION_104_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_104&quot;"               name="VK_NV_EXTENSION_104_EXTENSION_NAME"/>
-                <enum bitpos="0"  extends="VkPrivateDataSlotCreateFlagBits" name="VK_PRIVATE_DATA_SLOT_CREATE_RESERVED_0_BIT_NV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_swapchain_colorspace" number="105" type="instance" depends="VK_KHR_surface" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney-g" supported="vulkan,vulkansc">
-            <require>
-                <enum value="4"                                             name="VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_swapchain_colorspace&quot;"       name="VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME"/>
-                <enum offset="1" extends="VkColorSpaceKHR"                  name="VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"/>
-                <enum offset="2" extends="VkColorSpaceKHR"                  name="VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"/>
-                <enum offset="3" extends="VkColorSpaceKHR"                  name="VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"/>
-                <enum offset="4" extends="VkColorSpaceKHR"                  name="VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"/>
-                <enum offset="5" extends="VkColorSpaceKHR"                  name="VK_COLOR_SPACE_BT709_LINEAR_EXT"/>
-                <enum offset="6" extends="VkColorSpaceKHR"                  name="VK_COLOR_SPACE_BT709_NONLINEAR_EXT"/>
-                <enum offset="7" extends="VkColorSpaceKHR"                  name="VK_COLOR_SPACE_BT2020_LINEAR_EXT"/>
-                <enum offset="8" extends="VkColorSpaceKHR"                  name="VK_COLOR_SPACE_HDR10_ST2084_EXT"/>
-                <enum offset="9" extends="VkColorSpaceKHR"                  name="VK_COLOR_SPACE_DOLBYVISION_EXT"/>
-                <enum offset="10" extends="VkColorSpaceKHR"                 name="VK_COLOR_SPACE_HDR10_HLG_EXT"/>
-                <enum offset="11" extends="VkColorSpaceKHR"                 name="VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"/>
-                <enum offset="12" extends="VkColorSpaceKHR"                 name="VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"/>
-                <enum offset="13" extends="VkColorSpaceKHR"                 name="VK_COLOR_SPACE_PASS_THROUGH_EXT"/>
-                <enum offset="14" extends="VkColorSpaceKHR"                 name="VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"/>
-                <enum api="vulkan" extends="VkColorSpaceKHR"                name="VK_COLOR_SPACE_DCI_P3_LINEAR_EXT" alias="VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT" deprecated="aliased"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_hdr_metadata" number="106" type="device" depends="VK_KHR_swapchain" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney-g" supported="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                             name="VK_EXT_HDR_METADATA_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_hdr_metadata&quot;"               name="VK_EXT_HDR_METADATA_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_HDR_METADATA_EXT"/>
-                <type name="VkHdrMetadataEXT"/>
-                <type name="VkXYColorEXT"/>
-                <command name="vkSetHdrMetadataEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_IMG_extension_107" number="107" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_IMG_EXTENSION_107_SPEC_VERSION"/>
-                <enum value="&quot;VK_IMG_extension_107&quot;"              name="VK_IMG_EXTENSION_107_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_IMG_extension_108" number="108" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_IMG_EXTENSION_108_SPEC_VERSION"/>
-                <enum value="&quot;VK_IMG_extension_108&quot;"              name="VK_IMG_EXTENSION_108_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_imageless_framebuffer" depends="VK_KHR_maintenance2+VK_KHR_image_format_list+VK_KHR_get_physical_device_properties2" number="109" author="KHR" contact="Tobias Hector @tobias" type="device" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_imageless_framebuffer&quot;"      name="VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME"/>
-                <type name="VkPhysicalDeviceImagelessFramebufferFeaturesKHR"/>
-                <type name="VkFramebufferAttachmentsCreateInfoKHR"/>
-                <type name="VkFramebufferAttachmentImageInfoKHR"/>
-                <type name="VkRenderPassAttachmentBeginInfoKHR"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR" alias="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"/>
-                <enum extends="VkFramebufferCreateFlagBits"                 name="VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR" alias="VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_create_renderpass2" depends="VK_KHR_multiview+VK_KHR_maintenance2" number="110" author="KHR" contact="Tobias Hector @tobias" type="device" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <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 extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR" alias="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR" alias="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_END_INFO"/>
-                <command name="vkCreateRenderPass2KHR"/>
-                <command name="vkCmdBeginRenderPass2KHR"/>
-                <command name="vkCmdNextSubpass2KHR"/>
-                <command name="vkCmdEndRenderPass2KHR"/>
-                <type name="VkRenderPassCreateInfo2KHR"/>
-                <type name="VkAttachmentDescription2KHR"/>
-                <type name="VkAttachmentReference2KHR"/>
-                <type name="VkSubpassDescription2KHR"/>
-                <type name="VkSubpassDependency2KHR"/>
-                <type name="VkSubpassBeginInfoKHR"/>
-                <type name="VkSubpassEndInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_IMG_extension_111" number="111" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_IMG_EXTENSION_111_SPEC_VERSION"/>
-                <enum value="&quot;VK_IMG_extension_111&quot;"              name="VK_IMG_EXTENSION_111_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shared_presentable_image" number="112" type="device" depends="VK_KHR_swapchain+VK_KHR_get_surface_capabilities2+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)" author="KHR" contact="Alon Or-bach @alonorbach" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shared_presentable_image&quot;"   name="VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"/>
-                <enum offset="0" extends="VkPresentModeKHR"                 name="VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"/>
-                <enum offset="1" extends="VkPresentModeKHR"                 name="VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"/>
-                <enum offset="0" extends="VkImageLayout"                    name="VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"/>
-                <type name="VkSharedPresentSurfaceCapabilitiesKHR"/>
-                <command name="vkGetSwapchainStatusKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_fence_capabilities" number="113" type="instance" author="KHR" depends="VK_KHR_get_physical_device_properties2" contact="Jesse Hall @critsec" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_fence_capabilities&quot;" name="VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/>
-                <enum name="VK_LUID_SIZE_KHR"/>
-                <type name="VkExternalFenceHandleTypeFlagsKHR"/>
-                <type name="VkExternalFenceHandleTypeFlagBitsKHR"/>
-                <enum extends="VkExternalFenceHandleTypeFlagBits"           name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"/>
-                <enum extends="VkExternalFenceHandleTypeFlagBits"           name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
-                <enum extends="VkExternalFenceHandleTypeFlagBits"           name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
-                <enum extends="VkExternalFenceHandleTypeFlagBits"           name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"/>
-                <type name="VkExternalFenceFeatureFlagsKHR"/>
-                <type name="VkExternalFenceFeatureFlagBitsKHR"/>
-                <enum extends="VkExternalFenceFeatureFlagBits"              name="VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR" alias="VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"/>
-                <enum extends="VkExternalFenceFeatureFlagBits"              name="VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR" alias="VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"/>
-                <type name="VkPhysicalDeviceExternalFenceInfoKHR"/>
-                <type name="VkExternalFencePropertiesKHR"/>
-                <type name="VkPhysicalDeviceIDPropertiesKHR"/>
-                <command name="vkGetPhysicalDeviceExternalFencePropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_fence" number="114" type="device" depends="VK_KHR_external_fence_capabilities" author="KHR" contact="Jesse Hall @critsec" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_EXTERNAL_FENCE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_fence&quot;"             name="VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"/>
-                <type name="VkFenceImportFlagsKHR"/>
-                <type name="VkFenceImportFlagBitsKHR"/>
-                <enum extends="VkFenceImportFlagBits"                       name="VK_FENCE_IMPORT_TEMPORARY_BIT_KHR" alias="VK_FENCE_IMPORT_TEMPORARY_BIT"/>
-                <type name="VkExportFenceCreateInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_fence_win32" number="115" type="device" depends="VK_KHR_external_fence" author="KHR" contact="Jesse Hall @critsec" platform="win32" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_fence_win32&quot;"       name="VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"/>
-                <type name="VkImportFenceWin32HandleInfoKHR"/>
-                <type name="VkExportFenceWin32HandleInfoKHR"/>
-                <type name="VkFenceGetWin32HandleInfoKHR"/>
-                <command name="vkImportFenceWin32HandleKHR"/>
-                <command name="vkGetFenceWin32HandleKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_external_fence_fd" number="116" type="device" depends="VK_KHR_external_fence,VK_VERSION_1_1" author="KHR" contact="Jesse Hall @critsec" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_external_fence_fd&quot;"          name="VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"/>
-                <type name="VkImportFenceFdInfoKHR"/>
-                <type name="VkFenceGetFdInfoKHR"/>
-                <command name="vkImportFenceFdKHR"/>
-                <command name="vkGetFenceFdKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_performance_query" number="117" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="KHR" contact="Alon Or-bach @alonorbach" specialuse="devtools" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                    name="VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_performance_query&quot;" name="VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkQueryType"             name="VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR"/>
-                <enum offset="0" extends="VkStructureType"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"/>
-                <enum offset="1" extends="VkStructureType"         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"/>
-                <enum offset="2" extends="VkStructureType"         name="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"/>
-                <enum offset="3" extends="VkStructureType"         name="VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"/>
-                <enum offset="4" extends="VkStructureType"         name="VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"/>
-                <enum offset="5" extends="VkStructureType"         name="VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"/>
-                <enum offset="6" extends="VkStructureType"         name="VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"/>
-                <type name="VkPhysicalDevicePerformanceQueryFeaturesKHR"/>
-                <type name="VkPhysicalDevicePerformanceQueryPropertiesKHR"/>
-                <type name="VkPerformanceCounterKHR"/>
-                <type name="VkPerformanceCounterDescriptionKHR"/>
-                <type name="VkPerformanceCounterDescriptionFlagsKHR"/>
-                <type name="VkPerformanceCounterDescriptionFlagBitsKHR"/>
-                <type name="VkQueryPoolPerformanceCreateInfoKHR"/>
-                <type name="VkPerformanceCounterScopeKHR"/>
-                <type name="VkPerformanceCounterStorageKHR"/>
-                <type name="VkPerformanceCounterUnitKHR"/>
-                <type name="VkPerformanceCounterResultKHR"/>
-                <type name="VkAcquireProfilingLockInfoKHR"/>
-                <type name="VkAcquireProfilingLockFlagsKHR"/>
-                <type name="VkAcquireProfilingLockFlagBitsKHR"/>
-                <type name="VkPerformanceQuerySubmitInfoKHR"/>
-                <command name="vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"/>
-                <command name="vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"/>
-                <command name="vkAcquireProfilingLockKHR"/>
-                <command name="vkReleaseProfilingLockKHR"/>
-            </require>
-            <require depends="VKSC_VERSION_1_0" api="vulkansc">
-                <enum offset="7" extends="VkStructureType"         name="VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR"/>
-                <type name="VkPerformanceQueryReservationInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_maintenance2" number="118" type="device" author="KHR" contact="Michael Worcester @michaelworcester" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_MAINTENANCE_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_maintenance2&quot;"               name="VK_KHR_MAINTENANCE_2_EXTENSION_NAME"/>
-                <enum alias="VK_KHR_MAINTENANCE_2_SPEC_VERSION"             name="VK_KHR_MAINTENANCE2_SPEC_VERSION" deprecated="aliased"/>
-                <enum alias="VK_KHR_MAINTENANCE_2_EXTENSION_NAME"           name="VK_KHR_MAINTENANCE2_EXTENSION_NAME" deprecated="aliased"/>
-                <enum extends="VkImageCreateFlagBits"                       name="VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR" alias="VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"/>
-                <enum extends="VkImageCreateFlagBits"                       name="VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR" alias="VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"/>
-                <enum extends="VkImageLayout"                               name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"/>
-                <enum extends="VkImageLayout"                               name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"/>
-                <type name="VkPhysicalDevicePointClippingPropertiesKHR"/>
-                <type name="VkPointClippingBehaviorKHR"/>
-                <enum extends="VkPointClippingBehavior"                     name="VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR" alias="VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"/>
-                <enum extends="VkPointClippingBehavior"                     name="VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR" alias="VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"/>
-                <type name="VkRenderPassInputAttachmentAspectCreateInfoKHR"/>
-                <type name="VkInputAttachmentAspectReferenceKHR"/>
-                <type name="VkImageViewUsageCreateInfoKHR"/>
-                <type name="VkTessellationDomainOriginKHR"/>
-                <enum extends="VkTessellationDomainOrigin"                  name="VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR" alias="VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"/>
-                <enum extends="VkTessellationDomainOrigin"                  name="VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR" alias="VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"/>
-                <type name="VkPipelineTessellationDomainOriginStateCreateInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_119" number="119" author="KHR" contact="Michael Worcester @michaelworcester" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_119_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_119&quot;"              name="VK_KHR_EXTENSION_119_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_get_surface_capabilities2" number="120" type="instance" depends="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_get_surface_capabilities2&quot;"  name="VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"/>
-                <type name="VkPhysicalDeviceSurfaceInfo2KHR"/>
-                <type name="VkSurfaceCapabilities2KHR"/>
-                <type name="VkSurfaceFormat2KHR"/>
-                <command name="vkGetPhysicalDeviceSurfaceCapabilities2KHR"/>
-                <command name="vkGetPhysicalDeviceSurfaceFormats2KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_variable_pointers" number="121" type="device" author="KHR" contact="Jesse Hall @critsec" depends="VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_VARIABLE_POINTERS_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_variable_pointers&quot;"          name="VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR"/>
-                <type name="VkPhysicalDeviceVariablePointerFeaturesKHR"/>
-                <type name="VkPhysicalDeviceVariablePointersFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_get_display_properties2" number="122" type="instance" depends="VK_KHR_display" author="KHR" contact="James Jones @cubanismo" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_get_display_properties2&quot;"    name="VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"/>
-                <type name="VkDisplayProperties2KHR"/>
-                <type name="VkDisplayPlaneProperties2KHR"/>
-                <type name="VkDisplayModeProperties2KHR"/>
-                <type name="VkDisplayPlaneInfo2KHR"/>
-                <type name="VkDisplayPlaneCapabilities2KHR"/>
-                <command name="vkGetPhysicalDeviceDisplayProperties2KHR"/>
-                <command name="vkGetPhysicalDeviceDisplayPlaneProperties2KHR"/>
-                <command name="vkGetDisplayModeProperties2KHR"/>
-                <command name="vkGetDisplayPlaneCapabilities2KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_MVK_ios_surface" number="123" type="instance" depends="VK_KHR_surface" platform="ios" supported="vulkan" author="MVK" contact="Bill Hollings @billhollings" deprecatedby="VK_EXT_metal_surface">
-            <require>
-                <enum value="3"                                             name="VK_MVK_IOS_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_MVK_ios_surface&quot;"                name="VK_MVK_IOS_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"/>
-                <type name="VkIOSSurfaceCreateFlagsMVK"/>
-                <type name="VkIOSSurfaceCreateInfoMVK"/>
-                <command name="vkCreateIOSSurfaceMVK"/>
-            </require>
-        </extension>
-        <extension name="VK_MVK_macos_surface" number="124" type="instance" depends="VK_KHR_surface" platform="macos" supported="vulkan" author="MVK" contact="Bill Hollings @billhollings" deprecatedby="VK_EXT_metal_surface">
-            <require>
-                <enum value="3"                                             name="VK_MVK_MACOS_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_MVK_macos_surface&quot;"              name="VK_MVK_MACOS_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"/>
-                <type name="VkMacOSSurfaceCreateFlagsMVK"/>
-                <type name="VkMacOSSurfaceCreateInfoMVK"/>
-                <command name="vkCreateMacOSSurfaceMVK"/>
-            </require>
-        </extension>
-        <extension name="VK_MVK_moltenvk" number="125" type="instance" author="MVK" contact="Bill Hollings @billhollings" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_MVK_MOLTENVK_SPEC_VERSION"/>
-                <enum value="&quot;VK_MVK_moltenvk&quot;"                   name="VK_MVK_MOLTENVK_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_external_memory_dma_buf" number="126" type="device" depends="VK_KHR_external_memory_fd" author="EXT" contact="Lina Versace @versalinyaa" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_external_memory_dma_buf&quot;"    name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME"/>
-                <enum bitpos="9" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_queue_family_foreign" number="127" type="device" author="EXT" depends="VK_KHR_external_memory,VK_VERSION_1_1" contact="Lina Versace @versalinyaa" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_queue_family_foreign&quot;"       name="VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME"/>
-                <enum                                                       name="VK_QUEUE_FAMILY_FOREIGN_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_dedicated_allocation" number="128" type="device" author="KHR" depends="VK_KHR_get_memory_requirements2" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="3"                                             name="VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_dedicated_allocation&quot;"       name="VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"/>
-                <type name="VkMemoryDedicatedRequirementsKHR"/>
-                <type name="VkMemoryDedicatedAllocateInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_debug_utils" number="129" type="instance" author="EXT" contact="Mark Young @marky-lunarg" specialuse="debugging" supported="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                             name="VK_EXT_DEBUG_UTILS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_debug_utils&quot;"                name="VK_EXT_DEBUG_UTILS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"/>
-                <enum offset="0" extends="VkObjectType"                     name="VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"/>
-                <type name="PFN_vkDebugUtilsMessengerCallbackEXT"/>
-                <type name="VkDebugUtilsLabelEXT"/>
-                <type name="VkDebugUtilsMessageSeverityFlagBitsEXT"/>
-                <type name="VkDebugUtilsMessageSeverityFlagsEXT"/>
-                <type name="VkDebugUtilsMessageTypeFlagBitsEXT"/>
-                <type name="VkDebugUtilsMessageTypeFlagsEXT"/>
-                <type name="VkDebugUtilsMessengerCallbackDataEXT"/>
-                <type name="VkDebugUtilsMessengerCallbackDataFlagsEXT"/>
-                <type name="VkDebugUtilsMessengerCreateFlagsEXT"/>
-                <type name="VkDebugUtilsMessengerCreateInfoEXT"/>
-                <type name="VkDebugUtilsMessengerEXT"/>
-                <type name="VkDebugUtilsObjectNameInfoEXT"/>
-                <type name="VkDebugUtilsObjectTagInfoEXT"/>
-                <command name="vkSetDebugUtilsObjectNameEXT"/>
-                <command name="vkSetDebugUtilsObjectTagEXT"/>
-                <command name="vkQueueBeginDebugUtilsLabelEXT"/>
-                <command name="vkQueueEndDebugUtilsLabelEXT"/>
-                <command name="vkQueueInsertDebugUtilsLabelEXT"/>
-                <command name="vkCmdBeginDebugUtilsLabelEXT"/>
-                <command name="vkCmdEndDebugUtilsLabelEXT"/>
-                <command name="vkCmdInsertDebugUtilsLabelEXT"/>
-                <command name="vkCreateDebugUtilsMessengerEXT"/>
-                <command name="vkDestroyDebugUtilsMessengerEXT"/>
-                <command name="vkSubmitDebugUtilsMessageEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_ANDROID_external_memory_android_hardware_buffer" number="130" type="device" author="ANDROID" depends="VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_EXT_queue_family_foreign+VK_KHR_dedicated_allocation" platform="android" contact="Jesse Hall @critsec" supported="vulkan">
-            <require>
-                <enum value="5"                                             name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION"/>
-                <enum value="&quot;VK_ANDROID_external_memory_android_hardware_buffer&quot;" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME"/>
-                <enum bitpos="10" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"/>
-                <enum offset="5" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"/>
-                <type name="VkAndroidHardwareBufferUsageANDROID"/>
-                <type name="VkAndroidHardwareBufferPropertiesANDROID"/>
-                <type name="VkAndroidHardwareBufferFormatPropertiesANDROID"/>
-                <type name="VkImportAndroidHardwareBufferInfoANDROID"/>
-                <type name="VkMemoryGetAndroidHardwareBufferInfoANDROID"/>
-                <type name="VkExternalFormatANDROID"/>
-                <command name="vkGetAndroidHardwareBufferPropertiesANDROID"/>
-                <command name="vkGetMemoryAndroidHardwareBufferANDROID"/>
-                <type name="AHardwareBuffer"/>
-            </require>
-            <require depends="VK_KHR_format_feature_flags2">
-                <type name="VkAndroidHardwareBufferFormatProperties2ANDROID"/>
-                <enum offset="6" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_sampler_filter_minmax" number="131" type="device" author="NV" depends="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_2">
-            <require>
-                <enum value="2"                                             name="VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_sampler_filter_minmax&quot;"      name="VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"/>
-                <enum extends="VkFormatFeatureFlagBits"                     name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"/>
-                <enum extends="VkSamplerReductionMode"                      name="VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT" alias="VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE"/>
-                <enum extends="VkSamplerReductionMode"                      name="VK_SAMPLER_REDUCTION_MODE_MIN_EXT" alias="VK_SAMPLER_REDUCTION_MODE_MIN"/>
-                <enum extends="VkSamplerReductionMode"                      name="VK_SAMPLER_REDUCTION_MODE_MAX_EXT" alias="VK_SAMPLER_REDUCTION_MODE_MAX"/>
-                <type name="VkSamplerReductionModeEXT"/>
-                <type name="VkSamplerReductionModeCreateInfoEXT"/>
-                <type name="VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_storage_buffer_storage_class" number="132" type="device" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_storage_buffer_storage_class&quot;" name="VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_gpu_shader_int16" number="133" type="device" author="AMD" contact="Qun Lin @linqun" supported="vulkan" deprecatedby="VK_KHR_shader_float16_int8">
-            <require>
-                <enum value="2"                                             name="VK_AMD_GPU_SHADER_INT16_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_gpu_shader_int16&quot;"           name="VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_134" number="134" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_134_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_134&quot;"              name="VK_AMD_EXTENSION_134_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMDX_shader_enqueue" number="135" author="AMD" depends="VK_KHR_get_physical_device_properties2+VK_KHR_synchronization2+VK_KHR_pipeline_library+VK_KHR_spirv_1_4" type="device" contact="Tobias Hector @tobski" provisional="true" platform="provisional" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMDX_shader_enqueue&quot;"             name="VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME"/>
-                <enum                                                       name="VK_SHADER_INDEX_UNUSED_AMDX"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="25" extends="VkBufferUsageFlagBits"           name="VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="0" extends="VkPipelineBindPoint"              name="VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <type name="VkPhysicalDeviceShaderEnqueueFeaturesAMDX"/>
-                <type name="VkPhysicalDeviceShaderEnqueuePropertiesAMDX"/>
-                <type name="VkExecutionGraphPipelineScratchSizeAMDX"/>
-                <type name="VkExecutionGraphPipelineCreateInfoAMDX"/>
-                <type name="VkDispatchGraphInfoAMDX"/>
-                <type name="VkDispatchGraphCountInfoAMDX"/>
-                <type name="VkPipelineShaderStageNodeCreateInfoAMDX"/>
-                <type name="VkDeviceOrHostAddressConstAMDX"/>
-                <command name="vkCreateExecutionGraphPipelinesAMDX"/>
-                <command name="vkGetExecutionGraphPipelineScratchSizeAMDX"/>
-                <command name="vkGetExecutionGraphPipelineNodeIndexAMDX"/>
-                <command name="vkCmdInitializeGraphScratchMemoryAMDX"/>
-                <command name="vkCmdDispatchGraphAMDX"/>
-                <command name="vkCmdDispatchGraphIndirectAMDX"/>
-                <command name="vkCmdDispatchGraphIndirectCountAMDX"/>
-            </require>
-            <require depends="VK_KHR_maintenance5">
-                <enum bitpos="25" extends="VkBufferUsageFlagBits2KHR"       name="VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_136" number="136" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_136_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_136&quot;"              name="VK_AMD_EXTENSION_136_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_mixed_attachment_samples" number="137" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_mixed_attachment_samples&quot;"   name="VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_shader_fragment_mask" number="138" author="AMD" contact="Aaron Hagan @AaronHaganAMD" supported="vulkan" type="device">
-            <require>
-                <enum value="1"                                             name="VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_shader_fragment_mask&quot;"       name="VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_inline_uniform_block" number="139" type="device" author="EXT" depends="VK_KHR_get_physical_device_properties2+VK_KHR_maintenance1" contact="Daniel Rakos @aqnuep" supported="vulkan" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                             name="VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_inline_uniform_block&quot;"       name="VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME"/>
-                <enum extends="VkDescriptorType"                            name="VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT" alias="VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT" alias="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO"/>
-                <type name="VkPhysicalDeviceInlineUniformBlockFeaturesEXT"/>
-                <type name="VkPhysicalDeviceInlineUniformBlockPropertiesEXT"/>
-                <type name="VkWriteDescriptorSetInlineUniformBlockEXT"/>
-                <type name="VkDescriptorPoolInlineUniformBlockCreateInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_140" number="140" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_140_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_140&quot;"              name="VK_AMD_EXTENSION_140_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_stencil_export" number="141" type="device" author="EXT" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_stencil_export&quot;"      name="VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_142" number="142" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_142_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_142&quot;"              name="VK_AMD_EXTENSION_142_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_143" number="143" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_143_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_143&quot;"              name="VK_AMD_EXTENSION_143_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_sample_locations" number="144" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="AMD" contact="Daniel Rakos @drakos-amd" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_sample_locations&quot;"           name="VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME"/>
-                <enum bitpos="12" extends="VkImageCreateFlagBits"           name="VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"/>
-                <enum offset="0" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"/>
-                <type name="VkSampleLocationEXT"/>
-                <type name="VkSampleLocationsInfoEXT"/>
-                <type name="VkAttachmentSampleLocationsEXT"/>
-                <type name="VkSubpassSampleLocationsEXT"/>
-                <type name="VkRenderPassSampleLocationsBeginInfoEXT"/>
-                <type name="VkPipelineSampleLocationsStateCreateInfoEXT"/>
-                <type name="VkPhysicalDeviceSampleLocationsPropertiesEXT"/>
-                <type name="VkMultisamplePropertiesEXT"/>
-                <command name="vkCmdSetSampleLocationsEXT"/>
-                <command name="vkGetPhysicalDeviceMultisamplePropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_relaxed_block_layout" number="145" type="device" author="KHR" contact="John Kessenich @johnkslang" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_relaxed_block_layout&quot;"       name="VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_RESERVED_do_not_use_146" number="146" supported="disabled" comment="Used for functionality subsumed into Vulkan 1.1 and not published as an extension">
-            <require>
-                <enum value="1"                                             name="VK_RESERVED_DO_NOT_USE_146_SPEC_VERSION"/>
-                <enum value="&quot;VK_RESERVED_do_not_use_146&quot;"        name="VK_RESERVED_DO_NOT_USE_146_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_get_memory_requirements2" number="147" type="device" author="KHR" contact="Faith Ekstrand @gfxstrand" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1" name="VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_get_memory_requirements2&quot;"   name="VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR" alias="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"/>
-                <type name="VkBufferMemoryRequirementsInfo2KHR"/>
-                <type name="VkImageMemoryRequirementsInfo2KHR"/>
-                <type name="VkImageSparseMemoryRequirementsInfo2KHR"/>
-                <type name="VkMemoryRequirements2KHR"/>
-                <type name="VkSparseImageMemoryRequirements2KHR"/>
-                <command name="vkGetImageMemoryRequirements2KHR"/>
-                <command name="vkGetBufferMemoryRequirements2KHR"/>
-                <command name="vkGetImageSparseMemoryRequirements2KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_image_format_list" number="148" type="device" author="KHR" contact="Faith Ekstrand @gfxstrand" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_image_format_list&quot;"          name="VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"/>
-                <type name="VkImageFormatListCreateInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_blend_operation_advanced" number="149" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                             name="VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_blend_operation_advanced&quot;"   name="VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"/>
-                <type name="VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT"/>
-                <type name="VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT"/>
-                <type name="VkPipelineColorBlendAdvancedStateCreateInfoEXT"/>
-                <type name="VkBlendOverlapEXT"/>
-                <enum offset="0" extends="VkBlendOp"                        name="VK_BLEND_OP_ZERO_EXT"/>
-                <enum offset="1" extends="VkBlendOp"                        name="VK_BLEND_OP_SRC_EXT"/>
-                <enum offset="2" extends="VkBlendOp"                        name="VK_BLEND_OP_DST_EXT"/>
-                <enum offset="3" extends="VkBlendOp"                        name="VK_BLEND_OP_SRC_OVER_EXT"/>
-                <enum offset="4" extends="VkBlendOp"                        name="VK_BLEND_OP_DST_OVER_EXT"/>
-                <enum offset="5" extends="VkBlendOp"                        name="VK_BLEND_OP_SRC_IN_EXT"/>
-                <enum offset="6" extends="VkBlendOp"                        name="VK_BLEND_OP_DST_IN_EXT"/>
-                <enum offset="7" extends="VkBlendOp"                        name="VK_BLEND_OP_SRC_OUT_EXT"/>
-                <enum offset="8" extends="VkBlendOp"                        name="VK_BLEND_OP_DST_OUT_EXT"/>
-                <enum offset="9" extends="VkBlendOp"                        name="VK_BLEND_OP_SRC_ATOP_EXT"/>
-                <enum offset="10" extends="VkBlendOp"                       name="VK_BLEND_OP_DST_ATOP_EXT"/>
-                <enum offset="11" extends="VkBlendOp"                       name="VK_BLEND_OP_XOR_EXT"/>
-                <enum offset="12" extends="VkBlendOp"                       name="VK_BLEND_OP_MULTIPLY_EXT"/>
-                <enum offset="13" extends="VkBlendOp"                       name="VK_BLEND_OP_SCREEN_EXT"/>
-                <enum offset="14" extends="VkBlendOp"                       name="VK_BLEND_OP_OVERLAY_EXT"/>
-                <enum offset="15" extends="VkBlendOp"                       name="VK_BLEND_OP_DARKEN_EXT"/>
-                <enum offset="16" extends="VkBlendOp"                       name="VK_BLEND_OP_LIGHTEN_EXT"/>
-                <enum offset="17" extends="VkBlendOp"                       name="VK_BLEND_OP_COLORDODGE_EXT"/>
-                <enum offset="18" extends="VkBlendOp"                       name="VK_BLEND_OP_COLORBURN_EXT"/>
-                <enum offset="19" extends="VkBlendOp"                       name="VK_BLEND_OP_HARDLIGHT_EXT"/>
-                <enum offset="20" extends="VkBlendOp"                       name="VK_BLEND_OP_SOFTLIGHT_EXT"/>
-                <enum offset="21" extends="VkBlendOp"                       name="VK_BLEND_OP_DIFFERENCE_EXT"/>
-                <enum offset="22" extends="VkBlendOp"                       name="VK_BLEND_OP_EXCLUSION_EXT"/>
-                <enum offset="23" extends="VkBlendOp"                       name="VK_BLEND_OP_INVERT_EXT"/>
-                <enum offset="24" extends="VkBlendOp"                       name="VK_BLEND_OP_INVERT_RGB_EXT"/>
-                <enum offset="25" extends="VkBlendOp"                       name="VK_BLEND_OP_LINEARDODGE_EXT"/>
-                <enum offset="26" extends="VkBlendOp"                       name="VK_BLEND_OP_LINEARBURN_EXT"/>
-                <enum offset="27" extends="VkBlendOp"                       name="VK_BLEND_OP_VIVIDLIGHT_EXT"/>
-                <enum offset="28" extends="VkBlendOp"                       name="VK_BLEND_OP_LINEARLIGHT_EXT"/>
-                <enum offset="29" extends="VkBlendOp"                       name="VK_BLEND_OP_PINLIGHT_EXT"/>
-                <enum offset="30" extends="VkBlendOp"                       name="VK_BLEND_OP_HARDMIX_EXT"/>
-                <enum offset="31" extends="VkBlendOp"                       name="VK_BLEND_OP_HSL_HUE_EXT"/>
-                <enum offset="32" extends="VkBlendOp"                       name="VK_BLEND_OP_HSL_SATURATION_EXT"/>
-                <enum offset="33" extends="VkBlendOp"                       name="VK_BLEND_OP_HSL_COLOR_EXT"/>
-                <enum offset="34" extends="VkBlendOp"                       name="VK_BLEND_OP_HSL_LUMINOSITY_EXT"/>
-                <enum offset="35" extends="VkBlendOp"                       name="VK_BLEND_OP_PLUS_EXT"/>
-                <enum offset="36" extends="VkBlendOp"                       name="VK_BLEND_OP_PLUS_CLAMPED_EXT"/>
-                <enum offset="37" extends="VkBlendOp"                       name="VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"/>
-                <enum offset="38" extends="VkBlendOp"                       name="VK_BLEND_OP_PLUS_DARKER_EXT"/>
-                <enum offset="39" extends="VkBlendOp"                       name="VK_BLEND_OP_MINUS_EXT"/>
-                <enum offset="40" extends="VkBlendOp"                       name="VK_BLEND_OP_MINUS_CLAMPED_EXT"/>
-                <enum offset="41" extends="VkBlendOp"                       name="VK_BLEND_OP_CONTRAST_EXT"/>
-                <enum offset="42" extends="VkBlendOp"                       name="VK_BLEND_OP_INVERT_OVG_EXT"/>
-                <enum offset="43" extends="VkBlendOp"                       name="VK_BLEND_OP_RED_EXT"/>
-                <enum offset="44" extends="VkBlendOp"                       name="VK_BLEND_OP_GREEN_EXT"/>
-                <enum offset="45" extends="VkBlendOp"                       name="VK_BLEND_OP_BLUE_EXT"/>
-                <enum bitpos="19" extends="VkAccessFlagBits"                name="VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_fragment_coverage_to_color" number="150" type="device" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_fragment_coverage_to_color&quot;"  name="VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"/>
-                <type name="VkPipelineCoverageToColorStateCreateFlagsNV"/>
-                <type name="VkPipelineCoverageToColorStateCreateInfoNV"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_acceleration_structure" number="151" type="device" depends="VK_VERSION_1_1+VK_EXT_descriptor_indexing+VK_KHR_buffer_device_address+VK_KHR_deferred_host_operations" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan" sortorder="1" ratified="vulkan">
-            <require>
-                <enum value="13"                                            name="VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_acceleration_structure&quot;"     name="VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME"/>
-                <enum offset="7"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"/>
-                <enum offset="0"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"/>
-                <enum offset="2"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"/>
-                <enum offset="3"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"/>
-                <enum offset="4"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"/>
-                <enum offset="5"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"/>
-                <enum offset="6"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"/>
-                <enum offset="9"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR"/>
-                <enum offset="10" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"/>
-                <enum offset="11" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"/>
-                <enum offset="12" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"/>
-                <enum offset="13" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"/>
-                <enum offset="14" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"/>
-                <enum offset="17" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"/>
-                <enum offset="20" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"/>
-                <enum bitpos="25" extends="VkPipelineStageFlagBits"         name="VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
-                <enum offset="0"  extends="VkDescriptorType"                name="VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR"/>
-                <enum bitpos="21" extends="VkAccessFlagBits"                name="VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"/>
-                <enum bitpos="22" extends="VkAccessFlagBits"                name="VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"/>
-                <enum offset="0"  extends="VkQueryType"                     name="VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"/>
-                <enum offset="1"  extends="VkQueryType"                     name="VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR"/>
-                <enum offset="0"  extends="VkObjectType"                    name="VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"/>
-                <enum offset="0"  extends="VkIndexType" extnumber="166"     name="VK_INDEX_TYPE_NONE_KHR"/>
-                <enum bitpos="29" extends="VkFormatFeatureFlagBits"         name="VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"/>
-                <enum bitpos="19" extends="VkBufferUsageFlagBits"           name="VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"/>
-                <enum bitpos="20" extends="VkBufferUsageFlagBits"           name="VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"/>
-                <type name="VkAccelerationStructureTypeKHR"/>
-                <type name="VkDeviceOrHostAddressKHR"/>
-                <type name="VkDeviceOrHostAddressConstKHR"/>
-                <type name="VkAccelerationStructureBuildRangeInfoKHR"/>
-                <type name="VkAabbPositionsKHR"/>
-                <type name="VkAccelerationStructureGeometryTrianglesDataKHR"/>
-                <type name="VkTransformMatrixKHR"/>
-                <type name="VkAccelerationStructureBuildGeometryInfoKHR"/>
-                <type name="VkAccelerationStructureBuildTypeKHR"/>
-                <type name="VkAccelerationStructureGeometryAabbsDataKHR"/>
-                <type name="VkAccelerationStructureInstanceKHR"/>
-                <type name="VkAccelerationStructureGeometryInstancesDataKHR"/>
-                <type name="VkAccelerationStructureGeometryDataKHR"/>
-                <type name="VkAccelerationStructureGeometryKHR"/>
-                <type name="VkGeometryFlagsKHR"/>
-                <type name="VkGeometryInstanceFlagsKHR"/>
-                <type name="VkGeometryFlagBitsKHR"/>
-                <type name="VkGeometryInstanceFlagBitsKHR"/>
-                <type name="VkAccelerationStructureCreateInfoKHR"/>
-                <type name="VkAccelerationStructureKHR"/>
-                <type name="VkBuildAccelerationStructureFlagBitsKHR"/>
-                <type name="VkBuildAccelerationStructureFlagsKHR"/>
-                <type name="VkCopyAccelerationStructureModeKHR"/>
-                <type name="VkGeometryTypeKHR"/>
-                <type name="VkWriteDescriptorSetAccelerationStructureKHR"/>
-                <type name="VkPhysicalDeviceAccelerationStructureFeaturesKHR"/>
-                <type name="VkPhysicalDeviceAccelerationStructurePropertiesKHR"/>
-                <type name="VkAccelerationStructureDeviceAddressInfoKHR"/>
-                <type name="VkAccelerationStructureVersionInfoKHR"/>
-                <type name="VkCopyAccelerationStructureToMemoryInfoKHR"/>
-                <type name="VkCopyMemoryToAccelerationStructureInfoKHR"/>
-                <type name="VkCopyAccelerationStructureInfoKHR"/>
-                <type name="VkAccelerationStructureCompatibilityKHR"/>
-                <type name="VkAccelerationStructureCreateFlagBitsKHR"/>
-                <type name="VkAccelerationStructureCreateFlagsKHR"/>
-                <type name="VkBuildAccelerationStructureModeKHR"/>
-                <type name="VkAccelerationStructureBuildSizesInfoKHR"/>
-                <command name="vkCreateAccelerationStructureKHR"/>
-                <command name="vkDestroyAccelerationStructureKHR"/>
-                <command name="vkCmdBuildAccelerationStructuresKHR"/>
-                <command name="vkCmdBuildAccelerationStructuresIndirectKHR"/>
-                <command name="vkBuildAccelerationStructuresKHR"/>
-                <command name="vkCopyAccelerationStructureKHR"/>
-                <command name="vkCopyAccelerationStructureToMemoryKHR"/>
-                <command name="vkCopyMemoryToAccelerationStructureKHR"/>
-                <command name="vkWriteAccelerationStructuresPropertiesKHR"/>
-                <command name="vkCmdCopyAccelerationStructureKHR"/>
-                <command name="vkCmdCopyAccelerationStructureToMemoryKHR"/>
-                <command name="vkCmdCopyMemoryToAccelerationStructureKHR"/>
-                <command name="vkGetAccelerationStructureDeviceAddressKHR"/>
-                <command name="vkCmdWriteAccelerationStructuresPropertiesKHR"/>
-                <command name="vkGetDeviceAccelerationStructureCompatibilityKHR"/>
-                <command name="vkGetAccelerationStructureBuildSizesKHR"/>
-            </require>
-            <require depends="VK_KHR_format_feature_flags2">
-                <enum bitpos="29" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"/>
-            </require>
-            <require depends="VK_EXT_debug_report">
-                <enum offset="0"  extends="VkDebugReportObjectTypeEXT"      name="VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_ray_tracing_pipeline" number="348" type="device" depends="VK_KHR_spirv_1_4+VK_KHR_acceleration_structure" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan" sortorder="1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_ray_tracing_pipeline&quot;"       name="VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME"/>
-                <enum                                                       name="VK_SHADER_UNUSED_KHR"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"/>
-                <enum offset="15" extends="VkStructureType" extnumber="151" name="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"/>
-                <enum offset="16" extends="VkStructureType" extnumber="151" name="VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"/>
-                <enum offset="18" extends="VkStructureType" extnumber="151" name="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"/>
-                <enum bitpos="8"  extends="VkShaderStageFlagBits"           name="VK_SHADER_STAGE_RAYGEN_BIT_KHR"/>
-                <enum bitpos="9"  extends="VkShaderStageFlagBits"           name="VK_SHADER_STAGE_ANY_HIT_BIT_KHR"/>
-                <enum bitpos="10" extends="VkShaderStageFlagBits"           name="VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"/>
-                <enum bitpos="11" extends="VkShaderStageFlagBits"           name="VK_SHADER_STAGE_MISS_BIT_KHR"/>
-                <enum bitpos="12" extends="VkShaderStageFlagBits"           name="VK_SHADER_STAGE_INTERSECTION_BIT_KHR"/>
-                <enum bitpos="13" extends="VkShaderStageFlagBits"           name="VK_SHADER_STAGE_CALLABLE_BIT_KHR"/>
-                <enum bitpos="21" extends="VkPipelineStageFlagBits"         name="VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"/>
-                <enum bitpos="10" extends="VkBufferUsageFlagBits"           name="VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR"/>
-                <enum offset="0"  extends="VkPipelineBindPoint" extnumber="166" name="VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR"/>
-                <enum bitpos="14" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"/>
-                <enum bitpos="15" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"/>
-                <enum bitpos="16" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"/>
-                <enum bitpos="17" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"/>
-                <enum bitpos="12" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"/>
-                <enum bitpos="13" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"/>
-                <enum bitpos="19" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"/>
-                <enum offset="0"  extends="VkDynamicState"                  name="VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR"/>
-                <type name="VkRayTracingShaderGroupCreateInfoKHR"/>
-                <type name="VkRayTracingShaderGroupTypeKHR"/>
-                <type name="VkRayTracingPipelineCreateInfoKHR"/>
-                <type name="VkPhysicalDeviceRayTracingPipelineFeaturesKHR"/>
-                <type name="VkPhysicalDeviceRayTracingPipelinePropertiesKHR"/>
-                <type name="VkStridedDeviceAddressRegionKHR"/>
-                <type name="VkTraceRaysIndirectCommandKHR"/>
-                <type name="VkRayTracingPipelineInterfaceCreateInfoKHR"/>
-                <type name="VkShaderGroupShaderKHR"/>
-                <command name="vkCmdTraceRaysKHR"/>
-                <command name="vkCreateRayTracingPipelinesKHR"/>
-                <command name="vkGetRayTracingShaderGroupHandlesKHR"/>
-                <command name="vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"/>
-                <command name="vkCmdTraceRaysIndirectKHR"/>
-                <command name="vkGetRayTracingShaderGroupStackSizeKHR"/>
-                <command name="vkCmdSetRayTracingPipelineStackSizeKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_ray_query" number="349" type="device" depends="VK_KHR_spirv_1_4+VK_KHR_acceleration_structure" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan" sortorder="1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_RAY_QUERY_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_ray_query&quot;"                  name="VK_KHR_RAY_QUERY_EXTENSION_NAME"/>
-                <enum offset="13" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"/>
-                <type name="VkPhysicalDeviceRayQueryFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_152" number="152" author="NV" contact="Jeff Bolz @jeffbolznv" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_NV_EXTENSION_152_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_152&quot;"               name="VK_NV_EXTENSION_152_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_framebuffer_mixed_samples" number="153" type="device" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_framebuffer_mixed_samples&quot;"   name="VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"/>
-                <type name="VkPipelineCoverageModulationStateCreateInfoNV"/>
-                <type name="VkPipelineCoverageModulationStateCreateFlagsNV"/>
-                <type name="VkCoverageModulationModeNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_fill_rectangle" number="154" type="device" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_FILL_RECTANGLE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_fill_rectangle&quot;"              name="VK_NV_FILL_RECTANGLE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkPolygonMode"                    name="VK_POLYGON_MODE_FILL_RECTANGLE_NV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_shader_sm_builtins" number="155" type="device" depends="VK_VERSION_1_1" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_shader_sm_builtins&quot;"          name="VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"/>
-                <type name="VkPhysicalDeviceShaderSMBuiltinsPropertiesNV"/>
-                <type name="VkPhysicalDeviceShaderSMBuiltinsFeaturesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_post_depth_coverage" number="156" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_post_depth_coverage&quot;"        name="VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_sampler_ycbcr_conversion" number="157" type="device" depends="VK_KHR_maintenance1+VK_KHR_bind_memory2+VK_KHR_get_memory_requirements2+VK_KHR_get_physical_device_properties2" author="KHR" contact="Andrew Garrard @fluppeteer" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="14"                                            name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_sampler_ycbcr_conversion&quot;"   name="VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"/>
-                <enum extends="VkObjectType"                                name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR" alias="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G8B8G8R8_422_UNORM_KHR" alias="VK_FORMAT_G8B8G8R8_422_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_B8G8R8G8_422_UNORM_KHR" alias="VK_FORMAT_B8G8R8G8_422_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR" alias="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR" alias="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR" alias="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR" alias="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR" alias="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_R10X6_UNORM_PACK16_KHR" alias="VK_FORMAT_R10X6_UNORM_PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR" alias="VK_FORMAT_R10X6G10X6_UNORM_2PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR" alias="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_R12X4_UNORM_PACK16_KHR" alias="VK_FORMAT_R12X4_UNORM_PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR" alias="VK_FORMAT_R12X4G12X4_UNORM_2PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR" alias="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G16B16G16R16_422_UNORM_KHR" alias="VK_FORMAT_G16B16G16R16_422_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_B16G16R16G16_422_UNORM_KHR" alias="VK_FORMAT_B16G16R16G16_422_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR" alias="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR" alias="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR" alias="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR" alias="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR" alias="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"/>
-                <enum extends="VkImageAspectFlagBits"                       name="VK_IMAGE_ASPECT_PLANE_0_BIT_KHR" alias="VK_IMAGE_ASPECT_PLANE_0_BIT"/>
-                <enum extends="VkImageAspectFlagBits"                       name="VK_IMAGE_ASPECT_PLANE_1_BIT_KHR" alias="VK_IMAGE_ASPECT_PLANE_1_BIT"/>
-                <enum extends="VkImageAspectFlagBits"                       name="VK_IMAGE_ASPECT_PLANE_2_BIT_KHR" alias="VK_IMAGE_ASPECT_PLANE_2_BIT"/>
-                <enum extends="VkImageCreateFlagBits"                       name="VK_IMAGE_CREATE_DISJOINT_BIT_KHR" alias="VK_IMAGE_CREATE_DISJOINT_BIT"/>
-                <enum extends="VkFormatFeatureFlagBits"                     name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR" alias="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"/>
-                <enum extends="VkFormatFeatureFlagBits"                     name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"/>
-                <enum extends="VkFormatFeatureFlagBits"                     name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"/>
-                <enum extends="VkFormatFeatureFlagBits"                     name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"/>
-                <enum extends="VkFormatFeatureFlagBits"                     name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"/>
-                <enum extends="VkFormatFeatureFlagBits"                     name="VK_FORMAT_FEATURE_DISJOINT_BIT_KHR" alias="VK_FORMAT_FEATURE_DISJOINT_BIT"/>
-                <enum extends="VkFormatFeatureFlagBits"                     name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR" alias="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"/>
-                <type name="VkSamplerYcbcrConversionCreateInfoKHR"/>
-                <type name="VkSamplerYcbcrConversionInfoKHR"/>
-                <type name="VkBindImagePlaneMemoryInfoKHR"/>
-                <type name="VkImagePlaneMemoryRequirementsInfoKHR"/>
-                <type name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"/>
-                <type name="VkSamplerYcbcrConversionImageFormatPropertiesKHR"/>
-                <command name="vkCreateSamplerYcbcrConversionKHR"/>
-                <command name="vkDestroySamplerYcbcrConversionKHR"/>
-                <type name="VkSamplerYcbcrConversionKHR"/>
-                <type name="VkSamplerYcbcrModelConversionKHR"/>
-                <enum extends="VkSamplerYcbcrModelConversion"               name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"/>
-                <enum extends="VkSamplerYcbcrModelConversion"               name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"/>
-                <enum extends="VkSamplerYcbcrModelConversion"               name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"/>
-                <enum extends="VkSamplerYcbcrModelConversion"               name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"/>
-                <enum extends="VkSamplerYcbcrModelConversion"               name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"/>
-                <type name="VkSamplerYcbcrRangeKHR"/>
-                <enum extends="VkSamplerYcbcrRange"                         name="VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR" alias="VK_SAMPLER_YCBCR_RANGE_ITU_FULL"/>
-                <enum extends="VkSamplerYcbcrRange"                         name="VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR" alias="VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"/>
-                <type name="VkChromaLocationKHR"/>
-                <enum extends="VkChromaLocation"                            name="VK_CHROMA_LOCATION_COSITED_EVEN_KHR" alias="VK_CHROMA_LOCATION_COSITED_EVEN"/>
-                <enum extends="VkChromaLocation"                            name="VK_CHROMA_LOCATION_MIDPOINT_KHR" alias="VK_CHROMA_LOCATION_MIDPOINT"/>
-            </require>
-            <require depends="VK_EXT_debug_report">
-                <enum extends="VkDebugReportObjectTypeEXT" offset="0"       name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"/>
-                <enum extends="VkDebugReportObjectTypeEXT"                  name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_bind_memory2" number="158" type="device" author="KHR" contact="Tobias Hector @tobski" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_BIND_MEMORY_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_bind_memory2&quot;"               name="VK_KHR_BIND_MEMORY_2_EXTENSION_NAME"/>
-                <command name="vkBindBufferMemory2KHR"/>
-                <command name="vkBindImageMemory2KHR"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"/>
-                <enum extends="VkImageCreateFlagBits"                       name="VK_IMAGE_CREATE_ALIAS_BIT_KHR" alias="VK_IMAGE_CREATE_ALIAS_BIT"/>
-                <type name="VkBindBufferMemoryInfoKHR"/>
-                <type name="VkBindImageMemoryInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_image_drm_format_modifier" number="159" type="device" depends="((VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion),VK_VERSION_1_1)+(VK_KHR_image_format_list,VK_VERSION_1_2)" author="EXT" contact="Lina Versace @versalinyaa" supported="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                             name="VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_image_drm_format_modifier&quot;"  name="VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME"/>
-                <enum offset="0" dir="-" extends="VkResult"                 name="VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"/>
-                <enum offset="5" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"/>
-                <enum offset="0" extends="VkImageTiling"                    name="VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT"/>
-                <enum bitpos="7"  extends="VkImageAspectFlagBits"           name="VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"/>
-                <enum bitpos="8"  extends="VkImageAspectFlagBits"           name="VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"/>
-                <enum bitpos="9"  extends="VkImageAspectFlagBits"           name="VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"/>
-                <enum bitpos="10" extends="VkImageAspectFlagBits"           name="VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"/>
-                <type name="VkDrmFormatModifierPropertiesListEXT"/>
-                <type name="VkDrmFormatModifierPropertiesEXT"/>
-                <type name="VkPhysicalDeviceImageDrmFormatModifierInfoEXT"/>
-                <type name="VkImageDrmFormatModifierListCreateInfoEXT"/>
-                <type name="VkImageDrmFormatModifierExplicitCreateInfoEXT"/>
-                <type name="VkImageDrmFormatModifierPropertiesEXT"/>
-                <command name="vkGetImageDrmFormatModifierPropertiesEXT"/>
-            </require>
-            <require depends="VK_KHR_format_feature_flags2">
-                <type name="VkDrmFormatModifierPropertiesList2EXT"/>
-                <type name="VkDrmFormatModifierProperties2EXT"/>
-                <enum offset="6" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_160" number="160" author="EXT" contact="Mark Young @marky-lunarg" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_160_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_160&quot;"              name="VK_EXT_EXTENSION_160_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_validation_cache" number="161" type="device" author="GOOGLE" contact="Cort Stratton @cdwfs" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_VALIDATION_CACHE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_validation_cache&quot;"           name="VK_EXT_VALIDATION_CACHE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"/>
-                <enum offset="0" extends="VkObjectType"                     name="VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"/>
-                <type name="VkValidationCacheEXT"/>
-                <type name="VkValidationCacheCreateInfoEXT"/>
-                <type name="VkShaderModuleValidationCacheCreateInfoEXT"/>
-                <type name="VkValidationCacheHeaderVersionEXT"/>
-                <type name="VkValidationCacheCreateFlagsEXT"/>
-                <command name="vkCreateValidationCacheEXT"/>
-                <command name="vkDestroyValidationCacheEXT"/>
-                <command name="vkMergeValidationCachesEXT"/>
-                <command name="vkGetValidationCacheDataEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_descriptor_indexing" number="162" type="device" depends="VK_KHR_get_physical_device_properties2+VK_KHR_maintenance3" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_2">
-            <require>
-                <enum value="2"                                             name="VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_descriptor_indexing&quot;"        name="VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"/>
-                <enum extends="VkDescriptorBindingFlagBits"                 name="VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT" alias="VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"/>
-                <enum extends="VkDescriptorBindingFlagBits"                 name="VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT" alias="VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"/>
-                <enum extends="VkDescriptorBindingFlagBits"                 name="VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT" alias="VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"/>
-                <enum extends="VkDescriptorBindingFlagBits"                 name="VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT" alias="VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"/>
-                <enum extends="VkDescriptorPoolCreateFlagBits"              name="VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT" alias="VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"/>
-                <enum extends="VkDescriptorSetLayoutCreateFlagBits"         name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT" alias="VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"/>
-                <enum extends="VkResult"                                    name="VK_ERROR_FRAGMENTATION_EXT" alias="VK_ERROR_FRAGMENTATION"/>
-                <type name="VkDescriptorSetLayoutBindingFlagsCreateInfoEXT"/>
-                <type name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"/>
-                <type name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT"/>
-                <type name="VkDescriptorSetVariableDescriptorCountAllocateInfoEXT"/>
-                <type name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT"/>
-                <type name="VkDescriptorBindingFlagBitsEXT"/>
-                <type name="VkDescriptorBindingFlagsEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_viewport_index_layer" number="163" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan" promotedto="VK_VERSION_1_2">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_viewport_index_layer&quot;" name="VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_portability_subset" number="164" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Bill Hollings @billhollings" platform="provisional" supported="vulkan" provisional="true" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_portability_subset&quot;"         name="VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <type name="VkPhysicalDevicePortabilitySubsetFeaturesKHR"/>
-                <type name="VkPhysicalDevicePortabilitySubsetPropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_shading_rate_image" number="165" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
-            <require>
-                <enum value="3"                                             name="VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_shading_rate_image&quot;"          name="VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"/>
-                <enum            extends="VkImageLayout"                    name="VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV" alias="VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"/>
-                <enum offset="4" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV"/>
-                <enum            extends="VkAccessFlagBits"                 name="VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV" alias="VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"/>
-                <enum            extends="VkImageUsageFlagBits"             name="VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV" alias="VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-                <enum            extends="VkPipelineStageFlagBits"          name="VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV" alias="VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-                <enum offset="5" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"/>
-                <enum offset="6" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV"/>
-                <type name="VkShadingRatePaletteEntryNV"/>
-                <type name="VkShadingRatePaletteNV"/>
-                <type name="VkPipelineViewportShadingRateImageStateCreateInfoNV"/>
-                <type name="VkPhysicalDeviceShadingRateImageFeaturesNV"/>
-                <type name="VkPhysicalDeviceShadingRateImagePropertiesNV"/>
-                <type name="VkCoarseSampleLocationNV"/>
-                <type name="VkCoarseSampleOrderCustomNV"/>
-                <type name="VkPipelineViewportCoarseSampleOrderStateCreateInfoNV"/>
-                <type name="VkCoarseSampleOrderTypeNV"/>
-                <command name="vkCmdBindShadingRateImageNV"/>
-                <command name="vkCmdSetViewportShadingRatePaletteNV"/>
-                <command name="vkCmdSetCoarseSampleOrderNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_ray_tracing" number="166" type="device" depends="VK_KHR_get_physical_device_properties2+VK_KHR_get_memory_requirements2" author="NV" contact="Eric Werness @ewerness-nv" supported="vulkan">
-            <require>
-                <enum value="3"                               name="VK_NV_RAY_TRACING_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_ray_tracing&quot;"   name="VK_NV_RAY_TRACING_EXTENSION_NAME"/>
-                <enum                                         name="VK_SHADER_UNUSED_NV"/>
-                <enum offset="0"  extends="VkStructureType"   name="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"/>
-                <enum offset="1"  extends="VkStructureType"   name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"/>
-                <enum offset="3"  extends="VkStructureType"   name="VK_STRUCTURE_TYPE_GEOMETRY_NV"/>
-                <enum offset="4"  extends="VkStructureType"   name="VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"/>
-                <enum offset="5"  extends="VkStructureType"   name="VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"/>
-                <enum offset="6"  extends="VkStructureType"   name="VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"/>
-                <enum offset="7"  extends="VkStructureType"   name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"/>
-                <enum offset="8"  extends="VkStructureType"   name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"/>
-                <enum offset="9"  extends="VkStructureType"   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"/>
-                <enum offset="11" extends="VkStructureType"   name="VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"/>
-                <enum offset="12" extends="VkStructureType"   name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"/>
-                <enum extends="VkShaderStageFlagBits"         name="VK_SHADER_STAGE_RAYGEN_BIT_NV" alias="VK_SHADER_STAGE_RAYGEN_BIT_KHR"/>
-                <enum extends="VkShaderStageFlagBits"         name="VK_SHADER_STAGE_ANY_HIT_BIT_NV" alias="VK_SHADER_STAGE_ANY_HIT_BIT_KHR"/>
-                <enum extends="VkShaderStageFlagBits"         name="VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV" alias="VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"/>
-                <enum extends="VkShaderStageFlagBits"         name="VK_SHADER_STAGE_MISS_BIT_NV" alias="VK_SHADER_STAGE_MISS_BIT_KHR"/>
-                <enum extends="VkShaderStageFlagBits"         name="VK_SHADER_STAGE_INTERSECTION_BIT_NV" alias="VK_SHADER_STAGE_INTERSECTION_BIT_KHR"/>
-                <enum extends="VkShaderStageFlagBits"         name="VK_SHADER_STAGE_CALLABLE_BIT_NV" alias="VK_SHADER_STAGE_CALLABLE_BIT_KHR"/>
-                <enum extends="VkPipelineStageFlagBits"       name="VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV" alias="VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"/>
-                <enum extends="VkPipelineStageFlagBits"       name="VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV" alias="VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
-                <enum extends="VkBufferUsageFlagBits"         name="VK_BUFFER_USAGE_RAY_TRACING_BIT_NV" alias="VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR"/>
-                <enum extends="VkPipelineBindPoint"           name="VK_PIPELINE_BIND_POINT_RAY_TRACING_NV" alias="VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR"/>
-                <enum offset="0" extends="VkDescriptorType"   name="VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"/>
-                <enum extends="VkAccessFlagBits"              name="VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV" alias="VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"/>
-                <enum extends="VkAccessFlagBits"              name="VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV" alias="VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"/>
-                <enum offset="0" extends="VkQueryType"        name="VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"/>
-                <enum bitpos="5" extends="VkPipelineCreateFlagBits"      name="VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"/>
-                <enum offset="0" extends="VkObjectType"       name="VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"/>
-                <enum extends="VkIndexType"                   name="VK_INDEX_TYPE_NONE_NV" alias="VK_INDEX_TYPE_NONE_KHR"/>
-                <type name="VkRayTracingShaderGroupCreateInfoNV"/>
-                <type name="VkRayTracingShaderGroupTypeNV"/>
-                <enum extends="VkRayTracingShaderGroupTypeKHR" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV" alias="VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"/>
-                <enum extends="VkRayTracingShaderGroupTypeKHR" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV" alias="VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR"/>
-                <enum extends="VkRayTracingShaderGroupTypeKHR" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV" alias="VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR"/>
-                <type name="VkRayTracingPipelineCreateInfoNV"/>
-                <type name="VkGeometryTypeNV"/>
-                <enum extends="VkGeometryTypeKHR" name="VK_GEOMETRY_TYPE_TRIANGLES_NV" alias="VK_GEOMETRY_TYPE_TRIANGLES_KHR"/>
-                <enum extends="VkGeometryTypeKHR" name="VK_GEOMETRY_TYPE_AABBS_NV" alias="VK_GEOMETRY_TYPE_AABBS_KHR"/>
-                <type name="VkAccelerationStructureTypeNV"/>
-                <enum extends="VkAccelerationStructureTypeKHR" name="VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV" alias="VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"/>
-                <enum extends="VkAccelerationStructureTypeKHR" name="VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV" alias="VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"/>
-                <type name="VkGeometryTrianglesNV"/>
-                <type name="VkGeometryAABBNV"/>
-                <type name="VkGeometryDataNV"/>
-                <type name="VkGeometryNV"/>
-                <type name="VkGeometryFlagsNV"/>
-                <type name="VkGeometryFlagBitsNV"/>
-                <enum extends="VkGeometryFlagBitsKHR" name="VK_GEOMETRY_OPAQUE_BIT_NV" alias="VK_GEOMETRY_OPAQUE_BIT_KHR"/>
-                <enum extends="VkGeometryFlagBitsKHR" name="VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV" alias="VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"/>
-                <type name="VkGeometryInstanceFlagsNV"/>
-                <type name="VkGeometryInstanceFlagBitsNV"/>
-                <enum extends="VkGeometryInstanceFlagBitsKHR" name="VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV" alias="VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"/>
-                <enum extends="VkGeometryInstanceFlagBitsKHR" name="VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV" alias="VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR"/>
-                <enum extends="VkGeometryInstanceFlagBitsKHR" name="VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV" alias="VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"/>
-                <enum extends="VkGeometryInstanceFlagBitsKHR" name="VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV" alias="VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"/>
-                <type name="VkAccelerationStructureInfoNV"/>
-                <type name="VkAccelerationStructureCreateInfoNV"/>
-                <type name="VkAccelerationStructureNV"/>
-                <type name="VkBuildAccelerationStructureFlagBitsNV"/>
-                <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"/>
-                <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"/>
-                <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"/>
-                <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"/>
-                <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"/>
-                <type name="VkBuildAccelerationStructureFlagsNV"/>
-                <type name="VkCopyAccelerationStructureModeNV"/>
-                <enum extends="VkCopyAccelerationStructureModeKHR" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV" alias="VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"/>
-                <enum extends="VkCopyAccelerationStructureModeKHR" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV" alias="VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"/>
-                <type name="VkBindAccelerationStructureMemoryInfoNV"/>
-                <type name="VkWriteDescriptorSetAccelerationStructureNV"/>
-                <type name="VkAccelerationStructureMemoryRequirementsInfoNV"/>
-                <type name="VkPhysicalDeviceRayTracingPropertiesNV"/>
-                <type name="VkAccelerationStructureMemoryRequirementsTypeNV"/>
-                <type name="VkTransformMatrixNV"/>
-                <type name="VkAabbPositionsNV"/>
-                <type name="VkAccelerationStructureInstanceNV"/>
-                <command name="vkCreateAccelerationStructureNV"/>
-                <command name="vkDestroyAccelerationStructureNV"/>
-                <command name="vkGetAccelerationStructureMemoryRequirementsNV"/>
-                <command name="vkBindAccelerationStructureMemoryNV"/>
-                <command name="vkCmdBuildAccelerationStructureNV"/>
-                <command name="vkCmdCopyAccelerationStructureNV"/>
-                <command name="vkCmdTraceRaysNV"/>
-                <command name="vkCreateRayTracingPipelinesNV"/>
-                <command name="vkGetRayTracingShaderGroupHandlesNV"/>
-                <command name="vkGetAccelerationStructureHandleNV"/>
-                <command name="vkCmdWriteAccelerationStructuresPropertiesNV"/>
-                <command name="vkCompileDeferredNV"/>
-            </require>
-            <require depends="VK_KHR_get_memory_requirements2">
-                <type name="VkMemoryRequirements2KHR"/>
-            </require>
-            <require depends="VK_EXT_debug_report">
-                <enum offset="0" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_representative_fragment_test" number="167" type="device" author="NV" contact="Kedarnath Thangudu @kthangudu" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_representative_fragment_test&quot;" name="VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"  name="VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"/>
-                <type name="VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV"/>
-                <type name="VkPipelineRepresentativeFragmentTestStateCreateInfoNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_168" number="168" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_NV_EXTENSION_168_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_168&quot;"               name="VK_NV_EXTENSION_168_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_maintenance3" number="169" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_MAINTENANCE_3_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_maintenance3&quot;"               name="VK_KHR_MAINTENANCE_3_EXTENSION_NAME"/>
-                <enum alias="VK_KHR_MAINTENANCE_3_SPEC_VERSION"             name="VK_KHR_MAINTENANCE3_SPEC_VERSION" deprecated="aliased"/>
-                <enum alias="VK_KHR_MAINTENANCE_3_EXTENSION_NAME"           name="VK_KHR_MAINTENANCE3_EXTENSION_NAME" deprecated="aliased"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"/>
-                <type name="VkPhysicalDeviceMaintenance3PropertiesKHR"/>
-                <type name="VkDescriptorSetLayoutSupportKHR"/>
-                <command name="vkGetDescriptorSetLayoutSupportKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_draw_indirect_count" number="170" type="device" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_draw_indirect_count&quot;"        name="VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME"/>
-                <command name="vkCmdDrawIndirectCountKHR"/>
-                <command name="vkCmdDrawIndexedIndirectCountKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_filter_cubic" number="171" type="device" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="vulkan,vulkansc">
-            <require>
-                <enum value="3"                                             name="VK_EXT_FILTER_CUBIC_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_filter_cubic&quot;"               name="VK_EXT_FILTER_CUBIC_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkFilter" extnumber="16"          name="VK_FILTER_CUBIC_EXT"/>
-                <enum bitpos="13" extends="VkFormatFeatureFlagBits"         name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"/>
-                <type name="VkPhysicalDeviceImageViewImageFormatInfoEXT"/>
-                <type name="VkFilterCubicImageViewImageFormatPropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_render_pass_shader_resolve" number="172" type="device" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="vulkan">
-            <require>
-                <enum value="4"                                                 name="VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_render_pass_shader_resolve&quot;"    name="VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME"/>
-                <enum bitpos="2" extends="VkSubpassDescriptionFlagBits"         name="VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"/>
-                <enum bitpos="3" extends="VkSubpassDescriptionFlagBits"         name="VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_173" number="173" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_QCOM_EXTENSION_173_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_173&quot;"             name="VK_QCOM_EXTENSION_173_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_174" number="174" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_QCOM_EXTENSION_174_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_174&quot;"             name="VK_QCOM_EXTENSION_174_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_global_priority" number="175" type="device" author="EXT" contact="Andres Rodriguez @lostgoat" supported="vulkan,vulkansc" promotedto="VK_KHR_global_priority">
-            <require>
-                <enum value="2"                                             name="VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_global_priority&quot;"            name="VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME"/>
-                <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR"/>
-                <enum extends="VkResult" name="VK_ERROR_NOT_PERMITTED_EXT" alias="VK_ERROR_NOT_PERMITTED_KHR"/>
-                <type name="VkDeviceQueueGlobalPriorityCreateInfoEXT"/>
-                <type name="VkQueueGlobalPriorityEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shader_subgroup_extended_types" number="176" type="device" depends="VK_VERSION_1_1" author="KHR" contact="Neil Henning @sheredom" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_subgroup_extended_types&quot;" name="VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"/>
-                <type name="VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_177" number="177" author="EXT" contact="Neil Henning @sheredom" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_177_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_177&quot;"              name="VK_EXT_EXTENSION_177_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_8bit_storage" number="178" type="device" depends="VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <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 extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"/>
-                <type name="VkPhysicalDevice8BitStorageFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_external_memory_host" number="179" type="device" author="EXT" depends="VK_KHR_external_memory,VK_VERSION_1_1" contact="Daniel Rakos @drakos-amd" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_external_memory_host&quot;"       name="VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"/>
-                <enum bitpos="7" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"/>
-                <enum bitpos="8" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"/>
-                <type name="VkImportMemoryHostPointerInfoEXT"/>
-                <type name="VkMemoryHostPointerPropertiesEXT"/>
-                <type name="VkPhysicalDeviceExternalMemoryHostPropertiesEXT"/>
-                <command name="vkGetMemoryHostPointerPropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_buffer_marker" number="180" type="device" author="AMD" contact="Daniel Rakos @drakos-amd" specialuse="devtools" supported="vulkan">
-            <require>
-                <enum value="1"                                          name="VK_AMD_BUFFER_MARKER_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_buffer_marker&quot;"           name="VK_AMD_BUFFER_MARKER_EXTENSION_NAME"/>
-                <command name="vkCmdWriteBufferMarkerAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shader_atomic_int64" number="181" type="device" author="KHR" depends="VK_KHR_get_physical_device_properties2" contact="Aaron Hagan @ahagan" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_atomic_int64&quot;"        name="VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"/>
-                <type name="VkPhysicalDeviceShaderAtomicInt64FeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shader_clock" number="182" type="device" author="KHR" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" contact="Aaron Hagan @ahagan" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                          name="VK_KHR_SHADER_CLOCK_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_clock&quot;"            name="VK_KHR_SHADER_CLOCK_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"               name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"/>
-                <type name="VkPhysicalDeviceShaderClockFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_183" number="183" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_183_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_183&quot;"              name="VK_AMD_EXTENSION_183_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_pipeline_compiler_control" number="184" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_pipeline_compiler_control&quot;"  name="VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"/>
-                <type name="VkPipelineCompilerControlFlagBitsAMD"/>
-                <type name="VkPipelineCompilerControlFlagsAMD"/>
-                <type name="VkPipelineCompilerControlCreateInfoAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_calibrated_timestamps" number="185" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Daniel Rakos @drakos-amd" supported="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                             name="VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_calibrated_timestamps&quot;"      name="VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"/>
-                <type name="VkTimeDomainEXT"/>
-                <type name="VkCalibratedTimestampInfoEXT"/>
-                <command name="vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"/>
-                <command name="vkGetCalibratedTimestampsEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_shader_core_properties" number="186" type="device" author="AMD" depends="VK_KHR_get_physical_device_properties2" contact="Martin Dinkov @mdinkov" supported="vulkan">
-            <require>
-                <enum value="2"                                          name="VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_shader_core_properties&quot;"  name="VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"               name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"/>
-                <type name="VkPhysicalDeviceShaderCorePropertiesAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_187" number="187" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_187_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_187&quot;"              name="VK_AMD_EXTENSION_187_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_video_decode_h265" number="188" type="device" depends="VK_KHR_video_decode_queue" author="KHR" contact="peter.fang@amd.com" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="7"                                             name="VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_video_decode_h265&quot;"          name="VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR"/>
-                <enum offset="5" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR"/>
-                <enum bitpos="1" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR"/>
-
-                <type name="VkVideoDecodeH265ProfileInfoKHR"/>
-                <type name="VkVideoDecodeH265CapabilitiesKHR"/>
-
-                <type name="VkVideoDecodeH265SessionParametersCreateInfoKHR"/>
-                <type name="VkVideoDecodeH265SessionParametersAddInfoKHR"/>
-                <type name="VkVideoDecodeH265PictureInfoKHR"/>
-                <type name="VkVideoDecodeH265DpbSlotInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_global_priority" number="189" type="device" author="KHR" contact="Tobias Hector @tobski" depends="VK_KHR_get_physical_device_properties2" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_global_priority&quot;"            name="VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType" extnumber="175"  name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR"/>
-                <enum offset="0" extends="VkStructureType" extnumber="389"  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR"/>
-                <enum offset="1" extends="VkStructureType" extnumber="389"  name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR"/>
-                <enum extends="VkResult" extnumber="175" offset="1" dir="-" name="VK_ERROR_NOT_PERMITTED_KHR"/>
-                <enum                                                       name="VK_MAX_GLOBAL_PRIORITY_SIZE_KHR"/>
-                <type                                                       name="VkDeviceQueueGlobalPriorityCreateInfoKHR"/>
-                <type                                                       name="VkQueueGlobalPriorityKHR"/>
-                <type                                                       name="VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR"/>
-                <type                                                       name="VkQueueFamilyGlobalPriorityPropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_memory_overallocation_behavior" number="190" type="device" author="AMD" contact="Martin Dinkov @mdinkov" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_memory_overallocation_behavior&quot;"    name="VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"/>
-                <type name="VkMemoryOverallocationBehaviorAMD"/>
-                <type name="VkDeviceMemoryOverallocationCreateInfoAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_vertex_attribute_divisor" number="191" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="NV" contact="Vikram Kushwaha @vkushwaha" supported="vulkan,vulkansc">
-            <require>
-                <enum value="3"                                         name="VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_vertex_attribute_divisor&quot;"   name="VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT"/>
-                <type name="VkVertexInputBindingDivisorDescriptionEXT"/>
-                <type name="VkPipelineVertexInputDivisorStateCreateInfoEXT"/>
-                <type name="VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_GGP_frame_token" number="192" type="device" depends="VK_KHR_swapchain+VK_GGP_stream_descriptor_surface" platform="ggp" author="GGP" contact="Jean-Francois Roy @jfroy" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_GGP_FRAME_TOKEN_SPEC_VERSION"/>
-                <enum value="&quot;VK_GGP_frame_token&quot;"                    name="VK_GGP_FRAME_TOKEN_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"/>
-                <type name="VkPresentFrameTokenGGP"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_pipeline_creation_feedback" number="193" type="device" author="GOOGLE" contact="Jean-Francois Roy @jfroy" specialuse="devtools" supported="vulkan" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                             name="VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_pipeline_creation_feedback&quot;" name="VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO"/>
-                <type name="VkPipelineCreationFeedbackFlagBitsEXT"/>
-                <type name="VkPipelineCreationFeedbackFlagsEXT"/>
-                <type name="VkPipelineCreationFeedbackCreateInfoEXT"/>
-                <type name="VkPipelineCreationFeedbackEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_extension_194" number="194" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GOOGLE_EXTENSION_194_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_extension_194&quot;"       name="VK_GOOGLE_EXTENSION_194_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_extension_195" number="195" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GOOGLE_EXTENSION_195_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_extension_195&quot;"       name="VK_GOOGLE_EXTENSION_195_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_extension_196" number="196" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GOOGLE_EXTENSION_196_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_extension_196&quot;"       name="VK_GOOGLE_EXTENSION_196_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_driver_properties" number="197" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Daniel Rakos @drakos-amd" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_driver_properties&quot;"          name="VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"/>
-                <enum name="VK_MAX_DRIVER_NAME_SIZE_KHR"/>
-                <enum name="VK_MAX_DRIVER_INFO_SIZE_KHR"/>
-                <type name="VkDriverIdKHR"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_AMD_PROPRIETARY_KHR" alias="VK_DRIVER_ID_AMD_PROPRIETARY"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR" alias="VK_DRIVER_ID_AMD_OPEN_SOURCE"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_MESA_RADV_KHR" alias="VK_DRIVER_ID_MESA_RADV"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR" alias="VK_DRIVER_ID_NVIDIA_PROPRIETARY"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR" alias="VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR" alias="VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR" alias="VK_DRIVER_ID_IMAGINATION_PROPRIETARY"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR" alias="VK_DRIVER_ID_QUALCOMM_PROPRIETARY"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_ARM_PROPRIETARY_KHR" alias="VK_DRIVER_ID_ARM_PROPRIETARY"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR" alias="VK_DRIVER_ID_GOOGLE_SWIFTSHADER"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_GGP_PROPRIETARY_KHR" alias="VK_DRIVER_ID_GGP_PROPRIETARY"/>
-                <enum extends="VkDriverId"                                  name="VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR" alias="VK_DRIVER_ID_BROADCOM_PROPRIETARY"/>
-                <type name="VkConformanceVersionKHR"/>
-                <type name="VkPhysicalDeviceDriverPropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shader_float_controls" number="198" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="4"                                             name="VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_float_controls&quot;"      name="VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"/>
-                <type name="VkPhysicalDeviceFloatControlsPropertiesKHR"/>
-                <type name="VkShaderFloatControlsIndependenceKHR"/>
-                <enum extends="VkShaderFloatControlsIndependence"           name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR" alias="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY"/>
-                <enum extends="VkShaderFloatControlsIndependence"           name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR"         alias="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL"/>
-                <enum extends="VkShaderFloatControlsIndependence"           name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR"        alias="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_shader_subgroup_partitioned" number="199" type="device" depends="VK_VERSION_1_1" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_shader_subgroup_partitioned&quot;" name="VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME"/>
-                <enum bitpos="8" extends="VkSubgroupFeatureFlagBits"        name="VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_depth_stencil_resolve" number="200" type="device" depends="VK_KHR_create_renderpass2" author="KHR" contact="Jan-Harald Fredriksen @janharald" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_depth_stencil_resolve&quot;"      name="VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"/>
-                <type name="VkSubpassDescriptionDepthStencilResolveKHR"/>
-                <type name="VkPhysicalDeviceDepthStencilResolvePropertiesKHR"/>
-                <type name="VkResolveModeFlagBitsKHR"/>
-                <type name="VkResolveModeFlagsKHR"/>
-                <enum extends="VkResolveModeFlagBits"                       name="VK_RESOLVE_MODE_NONE_KHR" alias="VK_RESOLVE_MODE_NONE"/>
-                <enum extends="VkResolveModeFlagBits"                       name="VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR" alias="VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"/>
-                <enum extends="VkResolveModeFlagBits"                       name="VK_RESOLVE_MODE_AVERAGE_BIT_KHR" alias="VK_RESOLVE_MODE_AVERAGE_BIT"/>
-                <enum extends="VkResolveModeFlagBits"                       name="VK_RESOLVE_MODE_MIN_BIT_KHR" alias="VK_RESOLVE_MODE_MIN_BIT"/>
-                <enum extends="VkResolveModeFlagBits"                       name="VK_RESOLVE_MODE_MAX_BIT_KHR" alias="VK_RESOLVE_MODE_MAX_BIT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_swapchain_mutable_format" number="201" type="device" author="KHR" depends="VK_KHR_swapchain+(VK_KHR_maintenance2,VK_VERSION_1_1)+(VK_KHR_image_format_list,VK_VERSION_1_2)" contact="Daniel Rakos @drakos-amd" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                         name="VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_swapchain_mutable_format&quot;" name="VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME"/>
-                <enum bitpos="2" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_compute_shader_derivatives" number="202" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_compute_shader_derivatives&quot;" name="VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"/>
-                <type name="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_mesh_shader" number="203" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_NV_MESH_SHADER_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_mesh_shader&quot;"             name="VK_NV_MESH_SHADER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"/>
-                <enum extends="VkShaderStageFlagBits"                   name="VK_SHADER_STAGE_TASK_BIT_NV" alias="VK_SHADER_STAGE_TASK_BIT_EXT"/>
-                <enum extends="VkShaderStageFlagBits"                   name="VK_SHADER_STAGE_MESH_BIT_NV" alias="VK_SHADER_STAGE_MESH_BIT_EXT"/>
-                <enum extends="VkPipelineStageFlagBits"                 name="VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV" alias="VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT"/>
-                <enum extends="VkPipelineStageFlagBits"                 name="VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV" alias="VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT"/>
-                <command name="vkCmdDrawMeshTasksNV"/>
-                <command name="vkCmdDrawMeshTasksIndirectNV"/>
-                <command name="vkCmdDrawMeshTasksIndirectCountNV"/>
-                <type name="VkPhysicalDeviceMeshShaderFeaturesNV"/>
-                <type name="VkPhysicalDeviceMeshShaderPropertiesNV"/>
-                <type name="VkDrawMeshTasksIndirectCommandNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_fragment_shader_barycentric" number="204" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan" promotedto="VK_KHR_fragment_shader_barycentric">
-            <require>
-                <enum value="1"                                         name="VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_fragment_shader_barycentric&quot;" name="VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME"/>
-                <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR"/>
-                <type name="VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_shader_image_footprint" number="205" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
-            <require>
-                <enum value="2"                                         name="VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_shader_image_footprint&quot;"  name="VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"/>
-                <type name="VkPhysicalDeviceShaderImageFootprintFeaturesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_scissor_exclusive" number="206" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
-            <require>
-                <enum value="2"                                         name="VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_scissor_exclusive&quot;"       name="VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"/>
-                <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"/>
-                <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV"/>
-                <enum offset="1" extends="VkDynamicState" name="VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV"/>
-                <type name="VkPipelineViewportExclusiveScissorStateCreateInfoNV"/>
-                <type name="VkPhysicalDeviceExclusiveScissorFeaturesNV"/>
-                <command name="vkCmdSetExclusiveScissorEnableNV"/>
-                <command name="vkCmdSetExclusiveScissorNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_device_diagnostic_checkpoints" type="device" number="207" depends="VK_KHR_get_physical_device_properties2" author="NVIDIA" contact="Nuno Subtil @nsubtil" supported="vulkan">
-            <require>
-                <enum value="2"                                         name="VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_device_diagnostic_checkpoints&quot;" name="VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"/>
-                <type name="VkQueueFamilyCheckpointPropertiesNV"/>
-                <type name="VkCheckpointDataNV"/>
-                <command name="vkCmdSetCheckpointNV"/>
-                <command name="vkGetQueueCheckpointDataNV"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_timeline_semaphore" number="208" type="device" author="KHR" depends="VK_KHR_get_physical_device_properties2" contact="Faith Ekstrand @gfxstrand" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="2"                                         name="VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_timeline_semaphore&quot;"     name="VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR" alias="VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR" alias="VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR" alias="VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"/>
-                <enum extends="VkSemaphoreType"                             name="VK_SEMAPHORE_TYPE_BINARY_KHR" alias="VK_SEMAPHORE_TYPE_BINARY"/>
-                <enum extends="VkSemaphoreType"                             name="VK_SEMAPHORE_TYPE_TIMELINE_KHR" alias="VK_SEMAPHORE_TYPE_TIMELINE"/>
-                <enum extends="VkSemaphoreWaitFlagBits"                     name="VK_SEMAPHORE_WAIT_ANY_BIT_KHR" alias="VK_SEMAPHORE_WAIT_ANY_BIT"/>
-                <type name="VkSemaphoreTypeKHR"/>
-                <type name="VkPhysicalDeviceTimelineSemaphoreFeaturesKHR"/>
-                <type name="VkPhysicalDeviceTimelineSemaphorePropertiesKHR"/>
-                <type name="VkSemaphoreTypeCreateInfoKHR"/>
-                <type name="VkTimelineSemaphoreSubmitInfoKHR"/>
-                <type name="VkSemaphoreWaitFlagBitsKHR"/>
-                <type name="VkSemaphoreWaitFlagsKHR"/>
-                <type name="VkSemaphoreWaitInfoKHR"/>
-                <type name="VkSemaphoreSignalInfoKHR"/>
-                <command name="vkGetSemaphoreCounterValueKHR"/>
-                <command name="vkWaitSemaphoresKHR"/>
-                <command name="vkSignalSemaphoreKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_209" number="209" type="device" author="KHR" contact="Ian Elliott @ianelliott" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_209_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_209&quot;"          name="VK_KHR_EXTENSION_209_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_INTEL_shader_integer_functions2" number="210" type="device" depends="VK_KHR_get_physical_device_properties2" author="INTEL" contact="Ian Romanick @ianromanick" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_INTEL_shader_integer_functions2&quot;" name="VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"/>
-                <type name="VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL"/>
-            </require>
-        </extension>
-        <extension name="VK_INTEL_performance_query" number="211" type="device" author="INTEL" contact="Lionel Landwerlin @llandwerlin" specialuse="devtools" supported="vulkan">
-            <require>
-                <enum value="2"                                         name="VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION"/>
-                <enum value="&quot;VK_INTEL_performance_query&quot;"    name="VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"/>
-                <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL" alias="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL" deprecated="aliased"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"/>
-                <enum offset="3" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"/>
-                <enum offset="4" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"/>
-                <enum offset="5" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"/>
-                <enum offset="0" extends="VkQueryType"                  name="VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL"/>
-                <enum offset="0" extends="VkObjectType"                 name="VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"/>
-                <type name="VkPerformanceConfigurationTypeINTEL"/>
-                <type name="VkQueryPoolSamplingModeINTEL"/>
-                <type name="VkPerformanceOverrideTypeINTEL"/>
-                <type name="VkPerformanceParameterTypeINTEL"/>
-                <type name="VkPerformanceValueTypeINTEL"/>
-                <type name="VkPerformanceValueDataINTEL"/>
-                <type name="VkPerformanceValueINTEL"/>
-                <type name="VkInitializePerformanceApiInfoINTEL"/>
-                <type name="VkQueryPoolCreateInfoINTEL"/>
-                <type name="VkQueryPoolPerformanceQueryCreateInfoINTEL"/>
-                <type name="VkPerformanceMarkerInfoINTEL"/>
-                <type name="VkPerformanceStreamMarkerInfoINTEL"/>
-                <type name="VkPerformanceOverrideInfoINTEL"/>
-                <type name="VkPerformanceConfigurationAcquireInfoINTEL"/>
-                <type name="VkPerformanceConfigurationINTEL"/>
-                <command name="vkInitializePerformanceApiINTEL"/>
-                <command name="vkUninitializePerformanceApiINTEL"/>
-                <command name="vkCmdSetPerformanceMarkerINTEL"/>
-                <command name="vkCmdSetPerformanceStreamMarkerINTEL"/>
-                <command name="vkCmdSetPerformanceOverrideINTEL"/>
-                <command name="vkAcquirePerformanceConfigurationINTEL"/>
-                <command name="vkReleasePerformanceConfigurationINTEL"/>
-                <command name="vkQueueSetPerformanceConfigurationINTEL"/>
-                <command name="vkGetPerformanceParameterINTEL"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_vulkan_memory_model" number="212" type="device" author="KHR" contact="Jeff Bolz @jeffbolznv" depends="VK_KHR_get_physical_device_properties2" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="3"                                         name="VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_vulkan_memory_model&quot;"    name="VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"/>
-                <type name="VkPhysicalDeviceVulkanMemoryModelFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_pci_bus_info" number="213" type="device" author="EXT" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" contact="Matthaeus G. Chajdas @anteru" supported="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                         name="VK_EXT_PCI_BUS_INFO_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_pci_bus_info&quot;"           name="VK_EXT_PCI_BUS_INFO_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"/>
-                <type name="VkPhysicalDevicePCIBusInfoPropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_display_native_hdr" number="214" type="device" author="AMD" depends="VK_KHR_get_physical_device_properties2+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_display_native_hdr&quot;"     name="VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"/>
-                <enum offset="0" extends="VkColorSpaceKHR"              name="VK_COLOR_SPACE_DISPLAY_NATIVE_AMD"/>
-                <type name="VkDisplayNativeHdrSurfaceCapabilitiesAMD"/>
-                <type name="VkSwapchainDisplayNativeHdrCreateInfoAMD"/>
-                <command name="vkSetLocalDimmingAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_FUCHSIA_imagepipe_surface" number="215" type="instance" author="FUCHSIA" depends="VK_KHR_surface" platform="fuchsia" contact="Craig Stout @cdotstout" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_FUCHSIA_imagepipe_surface&quot;"  name="VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"/>
-                <type name="VkImagePipeSurfaceCreateFlagsFUCHSIA"/>
-                <type name="VkImagePipeSurfaceCreateInfoFUCHSIA"/>
-                <command name="vkCreateImagePipeSurfaceFUCHSIA"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shader_terminate_invocation" number="216" type="device" author="KHR" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" contact="Jesse Hall @critsec" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_terminate_invocation&quot;"    name="VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES"/>
-                <type name="VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_extension_217" number="217" author="GOOGLE" contact="Jesse Hall @critsec" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_GOOGLE_EXTENSION_217_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_extension_217&quot;"           name="VK_GOOGLE_EXTENSION_217_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_metal_surface" number="218" type="instance" depends="VK_KHR_surface" platform="metal" supported="vulkan" author="EXT" contact="Dzmitry Malyshau @kvark">
-            <require>
-                <enum value="1"                                             name="VK_EXT_METAL_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_metal_surface&quot;"              name="VK_EXT_METAL_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"/>
-                <type name="VkMetalSurfaceCreateFlagsEXT"/>
-                <type name="VkMetalSurfaceCreateInfoEXT"/>
-                <command name="vkCreateMetalSurfaceEXT"/>
-                <type name="CAMetalLayer"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_fragment_density_map" number="219" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Matthew Netsch @mnetsch" supported="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_fragment_density_map&quot;"       name="VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"/>
-                <enum offset="1"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"/>
-                <enum offset="2"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"/>
-                <enum bitpos="14" extends="VkImageCreateFlagBits"           name="VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT"/>
-                <enum offset="0"  extends="VkImageLayout"                   name="VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"/>
-                <enum bitpos="24" extends="VkAccessFlagBits"                name="VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"/>
-                <enum bitpos="24" extends="VkFormatFeatureFlagBits"         name="VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"/>
-                <enum bitpos="9"  extends="VkImageUsageFlagBits"            name="VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"/>
-                <enum bitpos="0"  extends="VkImageViewCreateFlagBits"       name="VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"/>
-                <enum bitpos="23" extends="VkPipelineStageFlagBits"         name="VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"/>
-                <enum bitpos="0"  extends="VkSamplerCreateFlagBits"         name="VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"/>
-                <enum bitpos="1"  extends="VkSamplerCreateFlagBits"         name="VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"/>
-                <type name="VkPhysicalDeviceFragmentDensityMapFeaturesEXT"/>
-                <type name="VkPhysicalDeviceFragmentDensityMapPropertiesEXT"/>
-                <type name="VkRenderPassFragmentDensityMapCreateInfoEXT"/>
-            </require>
-            <require depends="VK_KHR_format_feature_flags2">
-                <enum bitpos="24" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_220" number="220" author="EXT" contact="Dzmitry Malyshau @kvark" supported="disabled">
-            <require>
-                <enum value="0"                                              name="VK_EXT_EXTENSION_220_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_220&quot;"               name="VK_EXT_EXTENSION_220_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_221" number="221" author="KHR" contact="Tobias Hector @tobski" supported="disabled">
-            <require>
-                <enum value="0"                                              name="VK_KHR_EXTENSION_221_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_221&quot;"               name="VK_KHR_EXTENSION_221_EXTENSION_NAME"/>
-                <enum bitpos="0" extends="VkRenderPassCreateFlagBits"        name="VK_RENDER_PASS_CREATE_RESERVED_0_BIT_KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_scalar_block_layout" number="222" depends="VK_KHR_get_physical_device_properties2" type="device" author="EXT" contact="Tobias Hector @tobski" supported="vulkan" promotedto="VK_VERSION_1_2">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_scalar_block_layout&quot;"        name="VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME"/>
-                <type name="VkPhysicalDeviceScalarBlockLayoutFeaturesEXT"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_223" number="223" author="EXT" contact="Tobias Hector @tobski" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_223_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_223&quot;"              name="VK_EXT_EXTENSION_223_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_hlsl_functionality1" number="224" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_hlsl_functionality1&quot;"     name="VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME"/>
-                <enum alias="VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION"   name="VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION" deprecated="aliased"/>
-                <enum alias="VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME" deprecated="aliased"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_decorate_string" number="225" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_GOOGLE_DECORATE_STRING_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_decorate_string&quot;"         name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_subgroup_size_control" number="226" type="device" depends="VK_VERSION_1_1" author="EXT" contact="Neil Henning @sheredom" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="2"                                             name="VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_subgroup_size_control&quot;"      name="VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME"/>
-                <type                                                       name="VkPhysicalDeviceSubgroupSizeControlFeaturesEXT"/>
-                <type                                                       name="VkPhysicalDeviceSubgroupSizeControlPropertiesEXT"/>
-                <type                                                       name="VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES"/>
-                <enum extends="VkPipelineShaderStageCreateFlagBits"         name="VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT" alias="VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT"/>
-                <enum extends="VkPipelineShaderStageCreateFlagBits"         name="VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT" alias="VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_fragment_shading_rate" number="227" type="device" depends="(VK_KHR_create_renderpass2,VK_VERSION_1_2)+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)" author="KHR" contact="Tobias Hector @tobski" supported="vulkan,vulkansc" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                                 name="VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_fragment_shading_rate&quot;" name="VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME"/>
-                <type name="VkFragmentShadingRateCombinerOpKHR"/>
-                <type name="VkFragmentShadingRateAttachmentInfoKHR"/>
-                <type name="VkPipelineFragmentShadingRateStateCreateInfoKHR"/>
-                <type name="VkPhysicalDeviceFragmentShadingRateFeaturesKHR"/>
-                <type name="VkPhysicalDeviceFragmentShadingRatePropertiesKHR"/>
-                <type name="VkPhysicalDeviceFragmentShadingRateKHR"/>
-                <command name="vkGetPhysicalDeviceFragmentShadingRatesKHR"/>
-                <command name="vkCmdSetFragmentShadingRateKHR"/>
-                <enum offset="3" extends="VkImageLayout" extnumber="165"        name="VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"/>
-                <enum offset="0" extends="VkDynamicState"                       name="VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"/>
-                <enum offset="3" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"/>
-                <enum offset="4" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"/>
-                <enum bitpos="23" extends="VkAccessFlagBits"                    name="VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"/>
-                <enum bitpos="8" extends="VkImageUsageFlagBits"                 name="VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-                <enum bitpos="22" extends="VkPipelineStageFlagBits"             name="VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-                <enum bitpos="30" extends="VkFormatFeatureFlagBits"             name="VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-            </require>
-            <require depends="VK_KHR_format_feature_flags2">
-                <enum bitpos="30" extends="VkFormatFeatureFlagBits2"            name="VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_shader_core_properties2" number="228" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan" depends="VK_AMD_shader_core_properties">
-            <require>
-                <enum value="1"                                             name="VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_shader_core_properties2&quot;"    name="VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"/>
-                <type                                                       name="VkPhysicalDeviceShaderCoreProperties2AMD"/>
-                <type                                                       name="VkShaderCorePropertiesFlagBitsAMD"/>
-                <type                                                       name="VkShaderCorePropertiesFlagsAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_229" number="229" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_229_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_229&quot;"              name="VK_AMD_EXTENSION_229_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_device_coherent_memory" number="230" type="device" author="AMD" contact="Tobias Hector @tobski" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_device_coherent_memory&quot;"     name="VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME"/>
-                <enum bitpos="6" extends="VkMemoryPropertyFlagBits"         name="VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"/>
-                <enum bitpos="7" extends="VkMemoryPropertyFlagBits"         name="VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"/>
-                <type                                                       name="VkPhysicalDeviceCoherentMemoryFeaturesAMD"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_231" number="231" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_231_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_231&quot;"              name="VK_AMD_EXTENSION_231_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_232" number="232" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_232_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_232&quot;"              name="VK_AMD_EXTENSION_232_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_233" number="233" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_233_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_233&quot;"              name="VK_AMD_EXTENSION_233_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_234" number="234" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_234_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_234&quot;"              name="VK_AMD_EXTENSION_234_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_image_atomic_int64" number="235" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Tobias Hector @tobski" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_image_atomic_int64&quot;"  name="VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_236" number="236" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_236_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_236&quot;"              name="VK_AMD_EXTENSION_236_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_spirv_1_4" number="237" type="device" depends="VK_VERSION_1_1+VK_KHR_shader_float_controls" author="KHR" contact="Jesse Hall @critsec" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_SPIRV_1_4_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_spirv_1_4&quot;"                  name="VK_KHR_SPIRV_1_4_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_memory_budget" number="238" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_MEMORY_BUDGET_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_memory_budget&quot;"              name="VK_EXT_MEMORY_BUDGET_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"/>
-                <type name="VkPhysicalDeviceMemoryBudgetPropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_memory_priority" number="239" type="device" depends="VK_KHR_get_physical_device_properties2"  author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_MEMORY_PRIORITY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_memory_priority&quot;"            name="VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"/>
-                <type name="VkPhysicalDeviceMemoryPriorityFeaturesEXT"/>
-                <type name="VkMemoryPriorityAllocateInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_surface_protected_capabilities" number="240" type="instance" depends="VK_VERSION_1_1+VK_KHR_get_surface_capabilities2" author="KHR" contact="Sandeep Shinde @sashinde" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_surface_protected_capabilities&quot;"   name="VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"/>
-                <type name="VkSurfaceProtectedCapabilitiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_dedicated_allocation_image_aliasing" number="241" type="device" depends="VK_KHR_dedicated_allocation+VK_KHR_get_physical_device_properties2" author="NVIDIA" contact="Nuno Subtil @nsubtil" supported="vulkan">
-            <require>
-                <enum value="1"                                                         name="VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_dedicated_allocation_image_aliasing&quot;"     name="VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"/>
-                <type name="VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_separate_depth_stencil_layouts" number="242" type="device" depends="VK_KHR_get_physical_device_properties2+VK_KHR_create_renderpass2" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                                   name="VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_separate_depth_stencil_layouts&quot;"   name="VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR" alias="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR" alias="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"/>
-                <enum extends="VkImageLayout"                               name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"/>
-                <enum extends="VkImageLayout"                               name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"/>
-                <enum extends="VkImageLayout"                               name="VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"/>
-                <enum extends="VkImageLayout"                               name="VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"/>
-                <type name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR"/>
-                <type name="VkAttachmentReferenceStencilLayoutKHR"/>
-                <type name="VkAttachmentDescriptionStencilLayoutKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_INTEL_extension_243" number="243" author="INTEL" contact="Slawek Grajewski @sgrajewski" supported="disabled">
-            <require>
-                <enum value="0"                                              name="VK_INTEL_EXTENSION_243_SPEC_VERSION"/>
-                <enum value="&quot;VK_INTEL_extension_243&quot;"             name="VK_INTEL_EXTENSION_243_EXTENSION_NAME"/>
-                <enum bitpos="46" extends="VkAccessFlagBits2"                name="VK_ACCESS_2_RESERVED_46_BIT_INTEL"/>
-            </require>
-        </extension>
-        <extension name="VK_MESA_extension_244" number="244" author="MESA" contact="Andres Rodriguez @lostgoat" supported="disabled">
-            <require>
-                <enum value="0"                                              name="VK_MESA_EXTENSION_244_SPEC_VERSION"/>
-                <enum value="&quot;VK_MESA_extension_244&quot;"              name="VK_MESA_EXTENSION_244_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_buffer_device_address" number="245" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Jeff Bolz @jeffbolznv"  deprecatedby="VK_KHR_buffer_device_address" supported="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_buffer_device_address&quot;"      name="VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT" alias="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"/>
-                <enum extends="VkBufferUsageFlagBits"                       name="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT" alias="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"/>
-                <enum extends="VkBufferCreateFlagBits"                      name="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT" alias="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
-                <enum extends="VkResult"                                    name="VK_ERROR_INVALID_DEVICE_ADDRESS_EXT" alias="VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"/>
-                <type name="VkPhysicalDeviceBufferAddressFeaturesEXT"/>
-                <type name="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT"/>
-                <type name="VkBufferDeviceAddressInfoEXT"/>
-                <type name="VkBufferDeviceAddressCreateInfoEXT"/>
-                <command name="vkGetBufferDeviceAddressEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_tooling_info" number="246" type="device" author="EXT" contact="Tobias Hector @tobski" supported="vulkan" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                             name="VK_EXT_TOOLING_INFO_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_tooling_info&quot;"               name="VK_EXT_TOOLING_INFO_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES"/>
-                <type                                                       name="VkToolPurposeFlagBitsEXT"/>
-                <type                                                       name="VkToolPurposeFlagsEXT"/>
-                <type                                                       name="VkPhysicalDeviceToolPropertiesEXT"/>
-                <command                                                    name="vkGetPhysicalDeviceToolPropertiesEXT"/>
-            </require>
-            <require depends="VK_EXT_debug_report">
-                <enum bitpos="5" extends="VkToolPurposeFlagBits"            name="VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_debug_marker">
-                <enum bitpos="6" extends="VkToolPurposeFlagBits"            name="VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_debug_utils">
-                <enum bitpos="5" extends="VkToolPurposeFlagBits"            name="VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"/>
-                <enum bitpos="6" extends="VkToolPurposeFlagBits"            name="VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_separate_stencil_usage" number="247" type="device" author="EXT" contact="Daniel Rakos @drakos-amd" supported="vulkan" promotedto="VK_VERSION_1_2">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_separate_stencil_usage&quot;"     name="VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"/>
-                <type name="VkImageStencilUsageCreateInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_validation_features" number="248" type="instance" author="LUNARG" contact="Karl Schultz @karl-lunarg" specialuse="debugging" supported="vulkan,vulkansc">
-            <require>
-                <enum value="5"                                             name="VK_EXT_VALIDATION_FEATURES_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_validation_features&quot;"        name="VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"/>
-                <type name="VkValidationFeaturesEXT"/>
-                <type name="VkValidationFeatureEnableEXT"/>
-                <type name="VkValidationFeatureDisableEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_present_wait" number="249" type="device" depends="VK_KHR_swapchain+VK_KHR_present_id" author="KHR" contact="Keith Packard @keithp" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_KHR_PRESENT_WAIT_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_present_wait&quot;"           name="VK_KHR_PRESENT_WAIT_EXTENSION_NAME"/>
-                <command name="vkWaitForPresentKHR"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR"/>
-                <type name="VkPhysicalDevicePresentWaitFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_cooperative_matrix" number="250" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
-            <require>
-                <enum value="1"                                              name="VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_cooperative_matrix&quot;"           name="VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"/>
-                <enum offset="2" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"/>
-                <type name="VkCooperativeMatrixPropertiesNV"/>
-                <type name="VkScopeNV"/>
-                <enum extends="VkScopeKHR" name="VK_SCOPE_DEVICE_NV"         alias="VK_SCOPE_DEVICE_KHR"/>
-                <enum extends="VkScopeKHR" name="VK_SCOPE_WORKGROUP_NV"      alias="VK_SCOPE_WORKGROUP_KHR"/>
-                <enum extends="VkScopeKHR" name="VK_SCOPE_SUBGROUP_NV"       alias="VK_SCOPE_SUBGROUP_KHR"/>
-                <enum extends="VkScopeKHR" name="VK_SCOPE_QUEUE_FAMILY_NV"   alias="VK_SCOPE_QUEUE_FAMILY_KHR"/>
-                <type name="VkComponentTypeNV"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_FLOAT16_NV"  alias="VK_COMPONENT_TYPE_FLOAT16_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_FLOAT32_NV"  alias="VK_COMPONENT_TYPE_FLOAT32_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_FLOAT64_NV"  alias="VK_COMPONENT_TYPE_FLOAT64_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_SINT8_NV"    alias="VK_COMPONENT_TYPE_SINT8_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_SINT16_NV"   alias="VK_COMPONENT_TYPE_SINT16_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_SINT32_NV"   alias="VK_COMPONENT_TYPE_SINT32_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_SINT64_NV"   alias="VK_COMPONENT_TYPE_SINT64_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_UINT8_NV"    alias="VK_COMPONENT_TYPE_UINT8_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_UINT16_NV"   alias="VK_COMPONENT_TYPE_UINT16_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_UINT32_NV"   alias="VK_COMPONENT_TYPE_UINT32_KHR"/>
-                <enum extends="VkComponentTypeKHR" name="VK_COMPONENT_TYPE_UINT64_NV"   alias="VK_COMPONENT_TYPE_UINT64_KHR"/>
-                <type name="VkPhysicalDeviceCooperativeMatrixFeaturesNV"/>
-                <type name="VkPhysicalDeviceCooperativeMatrixPropertiesNV"/>
-                <command name="vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_coverage_reduction_mode" number="251" depends="VK_NV_framebuffer_mixed_samples+VK_KHR_get_physical_device_properties2" type="device" author="NV" contact="Kedarnath Thangudu @kthangudu" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_coverage_reduction_mode&quot;"     name="VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"/>
-                <type name="VkPhysicalDeviceCoverageReductionModeFeaturesNV"/>
-                <type name="VkPipelineCoverageReductionStateCreateInfoNV"/>
-                <type name="VkPipelineCoverageReductionStateCreateFlagsNV"/>
-                <type name="VkCoverageReductionModeNV"/>
-                <type name="VkFramebufferMixedSamplesCombinationNV"/>
-                <command name="vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_fragment_shader_interlock" number="252" author="EXT" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" contact="Piers Daniell @pdaniell-nv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_fragment_shader_interlock&quot;"      name="VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_ycbcr_image_arrays" number="253" type="device" depends="VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_ycbcr_image_arrays&quot;"         name="VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceYcbcrImageArraysFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_uniform_buffer_standard_layout" number="254" depends="VK_KHR_get_physical_device_properties2" type="device" author="KHR" contact="Graeme Leese @gnl21" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_uniform_buffer_standard_layout&quot;" name="VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME"/>
-                <type                                                           name="VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_provoking_vertex" number="255" type="device" author="EXT" depends="VK_KHR_get_physical_device_properties2" contact="Jesse Hall @jessehall" specialuse="glemulation" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_PROVOKING_VERTEX_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_provoking_vertex&quot;"           name="VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"/>
-                <type name="VkPhysicalDeviceProvokingVertexFeaturesEXT"/>
-                <type name="VkPhysicalDeviceProvokingVertexPropertiesEXT"/>
-                <type name="VkPipelineRasterizationProvokingVertexStateCreateInfoEXT"/>
-                <type name="VkProvokingVertexModeEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_full_screen_exclusive" number="256" type="device" author="EXT" depends="VK_KHR_get_physical_device_properties2+VK_KHR_surface+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain" platform="win32" contact="James Jones @cubanismo" supported="vulkan">
-            <require>
-                <enum value="4"                                             name="VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_full_screen_exclusive&quot;"      name="VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"/>
-                <enum offset="0" extends="VkResult" dir="-"                 name="VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"/>
-                <type name="VkFullScreenExclusiveEXT"/>
-                <type name="VkSurfaceFullScreenExclusiveInfoEXT"/>
-                <type name="VkSurfaceCapabilitiesFullScreenExclusiveEXT"/>
-                <command name="vkGetPhysicalDeviceSurfacePresentModes2EXT"/>
-                <command name="vkAcquireFullScreenExclusiveModeEXT"/>
-                <command name="vkReleaseFullScreenExclusiveModeEXT"/>
-            </require>
-            <require depends="VK_KHR_win32_surface">
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"/>
-                <type name="VkSurfaceFullScreenExclusiveWin32InfoEXT"/>
-            </require>
-            <require depends="VK_KHR_device_group">
-                <command name="vkGetDeviceGroupSurfacePresentModes2EXT"/>
-            </require>
-            <require depends="VK_VERSION_1_1">
-                <command name="vkGetDeviceGroupSurfacePresentModes2EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_headless_surface" number="257" type="instance" depends="VK_KHR_surface" author="EXT" contact="Lisa Wu @chengtianww" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_HEADLESS_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_headless_surface&quot;"               name="VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"/>
-                <type name="VkHeadlessSurfaceCreateFlagsEXT"/>
-                <type name="VkHeadlessSurfaceCreateInfoEXT"/>
-                <command name="vkCreateHeadlessSurfaceEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_buffer_device_address" number="258" type="device" depends="(VK_KHR_get_physical_device_properties2+VK_KHR_device_group),VK_VERSION_1_1" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_2" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_buffer_device_address&quot;"      name="VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"/>
-                <enum extends="VkBufferUsageFlagBits"                       name="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR" alias="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"/>
-                <enum extends="VkBufferCreateFlagBits"                      name="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR" alias="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
-                <enum extends="VkMemoryAllocateFlagBits"                    name="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR" alias="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"/>
-                <enum extends="VkMemoryAllocateFlagBits"                    name="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR" alias="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
-                <enum extends="VkResult"                                    name="VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR" alias="VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"/>
-                <type name="VkPhysicalDeviceBufferDeviceAddressFeaturesKHR"/>
-                <type name="VkBufferDeviceAddressInfoKHR"/>
-                <type name="VkBufferOpaqueCaptureAddressCreateInfoKHR"/>
-                <type name="VkMemoryOpaqueCaptureAddressAllocateInfoKHR"/>
-                <type name="VkDeviceMemoryOpaqueCaptureAddressInfoKHR"/>
-                <command name="vkGetBufferDeviceAddressKHR"/>
-                <command name="vkGetBufferOpaqueCaptureAddressKHR"/>
-                <command name="vkGetDeviceMemoryOpaqueCaptureAddressKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_259" number="259" author="EXT" contact="Jeff Leger @jackohound" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_259_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_259&quot;"              name="VK_EXT_EXTENSION_259_EXTENSION_NAME"/>
-                <enum bitpos="9"  extends="VkQueueFlagBits"                 name="VK_QUEUE_RESERVED_9_BIT_EXT"/>
-                <enum bitpos="44" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_RESERVED_44_BIT_EXT"/>
-                <enum bitpos="45" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_RESERVED_45_BIT_EXT"/>
-                <enum bitpos="19" extends="VkImageCreateFlagBits"           name="VK_IMAGE_CREATE_RESERVED_19_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_line_rasterization" number="260" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Jeff Bolz @jeffbolznv" specialuse="cadsupport" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_LINE_RASTERIZATION_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_line_rasterization&quot;"         name="VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"/>
-                <enum offset="0" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_LINE_STIPPLE_EXT"/>
-                <type name="VkPhysicalDeviceLineRasterizationFeaturesEXT"/>
-                <type name="VkPhysicalDeviceLineRasterizationPropertiesEXT"/>
-                <type name="VkPipelineRasterizationLineStateCreateInfoEXT"/>
-                <type name="VkLineRasterizationModeEXT"/>
-                <command name="vkCmdSetLineStippleEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_atomic_float" number="261" type="device" author="NV" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" contact="Vikram Kushwaha @vkushwaha-nv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_atomic_float&quot;"        name="VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_host_query_reset" number="262" author="EXT" contact="Bas Nieuwenhuizen @BNieuwenhuizen" supported="vulkan" type="device" depends="VK_KHR_get_physical_device_properties2" promotedto="VK_VERSION_1_2">
-            <require>
-                <enum value="1"                                             name="VK_EXT_HOST_QUERY_RESET_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_host_query_reset&quot;"           name="VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"/>
-                <type name="VkPhysicalDeviceHostQueryResetFeaturesEXT"/>
-                <command name="vkResetQueryPoolEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_GGP_extension_263" number="263" author="GGP" contact="Jean-Francois Roy @jfroy" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_GGP_EXTENSION_263_SPEC_VERSION"/>
-                <enum value="&quot;VK_GGP_extension_263&quot;"              name="VK_GGP_EXTENSION_263_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_BRCM_extension_264" number="264" author="BRCM" contact="Graeme Leese @gnl21" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_BRCM_EXTENSION_264_SPEC_VERSION"/>
-                <enum value="&quot;VK_BRCM_extension_264&quot;"             name="VK_BRCM_EXTENSION_264_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_BRCM_extension_265" number="265" author="BRCM" contact="Graeme Leese @gnl21" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_BRCM_EXTENSION_265_SPEC_VERSION"/>
-                <enum value="&quot;VK_BRCM_extension_265&quot;"             name="VK_BRCM_EXTENSION_265_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_index_type_uint8" number="266" type="device" author="EXT" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" contact="Piers Daniell @pdaniell-nv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_index_type_uint8&quot;"           name="VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"/>
-                <enum offset="0" extends="VkIndexType"                      name="VK_INDEX_TYPE_UINT8_EXT"/>
-                <type name="VkPhysicalDeviceIndexTypeUint8FeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_267" number="267" type="device" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_267_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_267&quot;"              name="VK_EXT_EXTENSION_267_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extended_dynamic_state" number="268" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                             name="VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extended_dynamic_state&quot;"     name="VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT" comment="Not promoted to 1.3"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_CULL_MODE_EXT" alias="VK_DYNAMIC_STATE_CULL_MODE"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_FRONT_FACE_EXT" alias="VK_DYNAMIC_STATE_FRONT_FACE"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT" alias="VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT" alias="VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT" alias="VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT" alias="VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT" alias="VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT" alias="VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT" alias="VK_DYNAMIC_STATE_DEPTH_COMPARE_OP"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT" alias="VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT" alias="VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_STENCIL_OP_EXT" alias="VK_DYNAMIC_STATE_STENCIL_OP"/>
-                <type name="VkPhysicalDeviceExtendedDynamicStateFeaturesEXT" comment="Not promoted to 1.3"/>
-                <command name="vkCmdSetCullModeEXT"/>
-                <command name="vkCmdSetFrontFaceEXT"/>
-                <command name="vkCmdSetPrimitiveTopologyEXT"/>
-                <command name="vkCmdSetViewportWithCountEXT"/>
-                <command name="vkCmdSetScissorWithCountEXT"/>
-                <command name="vkCmdBindVertexBuffers2EXT"/>
-                <command name="vkCmdSetDepthTestEnableEXT"/>
-                <command name="vkCmdSetDepthWriteEnableEXT"/>
-                <command name="vkCmdSetDepthCompareOpEXT"/>
-                <command name="vkCmdSetDepthBoundsTestEnableEXT"/>
-                <command name="vkCmdSetStencilTestEnableEXT"/>
-                <command name="vkCmdSetStencilOpEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_deferred_host_operations" number="269" type="device" author="KHR" contact="Josh Barczak @jbarczak" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="4"                                             name="VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_deferred_host_operations&quot;"   name="VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkObjectType"                     name="VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"/>
-                <type name="VkDeferredOperationKHR"/>
-                <command name="vkCreateDeferredOperationKHR"/>
-                <command name="vkDestroyDeferredOperationKHR"/>
-                <command name="vkGetDeferredOperationMaxConcurrencyKHR"/>
-                <command name="vkGetDeferredOperationResultKHR"/>
-                <command name="vkDeferredOperationJoinKHR" />
-                <enum extends="VkResult"       offset="0"       name="VK_THREAD_IDLE_KHR" />
-                <enum extends="VkResult"       offset="1"       name="VK_THREAD_DONE_KHR" />
-                <enum extends="VkResult"       offset="2"       name="VK_OPERATION_DEFERRED_KHR" />
-                <enum extends="VkResult"       offset="3"       name="VK_OPERATION_NOT_DEFERRED_KHR" />
-            </require>
-        </extension>
-        <extension name="VK_KHR_pipeline_executable_properties" number="270" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Faith Ekstrand @gfxstrand" specialuse="devtools" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_pipeline_executable_properties&quot;"   name="VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"/>
-                <enum offset="3" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"/>
-                <enum offset="4" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"/>
-                <enum offset="5" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"/>
-                <enum bitpos="6" extends="VkPipelineCreateFlagBits"     name="VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"/>
-                <enum bitpos="7" extends="VkPipelineCreateFlagBits"     name="VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"/>
-                <type name="VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR"/>
-                <type name="VkPipelineInfoKHR"/>
-                <type name="VkPipelineExecutablePropertiesKHR"/>
-                <type name="VkPipelineExecutableInfoKHR"/>
-                <type name="VkPipelineExecutableStatisticFormatKHR"/>
-                <type name="VkPipelineExecutableStatisticValueKHR"/>
-                <type name="VkPipelineExecutableStatisticKHR"/>
-                <type name="VkPipelineExecutableInternalRepresentationKHR"/>
-                <command name="vkGetPipelineExecutablePropertiesKHR"/>
-                <command name="vkGetPipelineExecutableStatisticsKHR"/>
-                <command name="vkGetPipelineExecutableInternalRepresentationsKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_host_image_copy" number="271" type="device" depends="VK_KHR_get_physical_device_properties2+VK_KHR_copy_commands2+VK_KHR_format_feature_flags2" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_host_image_copy&quot;"        name="VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT"/>
-                <enum offset="1"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT"/>
-                <enum offset="2"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT"/>
-                <enum offset="3"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT"/>
-                <enum offset="4"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT"/>
-                <enum offset="5"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT"/>
-                <enum offset="6"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT"/>
-                <enum offset="7"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT"/>
-                <enum offset="8"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT"/>
-                <enum offset="9"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT"/>
-                <enum bitpos="22" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT"               comment="Can be used with host image copies"/>
-                <enum bitpos="46" extends="VkFormatFeatureFlagBits2"    name="VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT"    comment="Host image copies are supported"/>
-                <type name="VkPhysicalDeviceHostImageCopyFeaturesEXT"/>
-                <type name="VkPhysicalDeviceHostImageCopyPropertiesEXT"/>
-                <type name="VkHostImageCopyFlagBitsEXT"/>
-                <type name="VkHostImageCopyFlagsEXT"/>
-                <type name="VkMemoryToImageCopyEXT"/>
-                <type name="VkImageToMemoryCopyEXT"/>
-                <type name="VkCopyMemoryToImageInfoEXT"/>
-                <type name="VkCopyImageToMemoryInfoEXT"/>
-                <type name="VkCopyImageToImageInfoEXT"/>
-                <type name="VkHostImageLayoutTransitionInfoEXT"/>
-                <type name="VkSubresourceHostMemcpySizeEXT"/>
-                <type name="VkHostImageCopyDevicePerformanceQueryEXT"/>
-                <command name="vkCopyMemoryToImageEXT"/>
-                <command name="vkCopyImageToMemoryEXT"/>
-                <command name="vkCopyImageToImageEXT"/>
-                <command name="vkTransitionImageLayoutEXT"/>
-
-                <type name="VkSubresourceLayout2EXT"/>
-                <type name="VkImageSubresource2EXT"/>
-                <command name="vkGetImageSubresourceLayout2EXT" comment="Taken from VK_EXT_image_compression_control. VkStructureType enums defined in that extension"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_map_memory2" number="272" type="device" author="KHR" contact="Faith Ekstrand @gfxstrand" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                               name="VK_KHR_MAP_MEMORY_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_map_memory2&quot;"  name="VK_KHR_MAP_MEMORY_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"    name="VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR"/>
-                <enum offset="1" extends="VkStructureType"    name="VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR"/>
-                <type name="VkMemoryMapInfoKHR"/>
-                <type name="VkMemoryUnmapInfoKHR"/>
-                <type name="VkMemoryUnmapFlagsKHR"/>
-                <command name="vkMapMemory2KHR"/>
-                <command name="vkUnmapMemory2KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_INTEL_extension_273" number="273" type="device" author="INTEL" contact="Faith Ekstrand @gfxstrand" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_INTEL_EXTENSION_273_SPEC_VERSION"/>
-                <enum value="&quot;VK_INTEL_extension_273&quot;"            name="VK_INTEL_EXTENSION_273_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_atomic_float2" number="274" type="device" depends="VK_EXT_shader_atomic_float" author="EXT" contact="Faith Ekstrand @gfxstrand" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_atomic_float2&quot;"       name="VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_surface_maintenance1" number="275" type="instance" depends="VK_KHR_surface+VK_KHR_get_surface_capabilities2" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_surface_maintenance1&quot;"       name="VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT"/>
-                <type name="VkSurfacePresentModeEXT"/>
-                <type name="VkPresentScalingFlagBitsEXT"/>
-                <type name="VkPresentScalingFlagsEXT"/>
-                <type name="VkPresentGravityFlagBitsEXT"/>
-                <type name="VkPresentGravityFlagsEXT"/>
-                <type name="VkSurfacePresentScalingCapabilitiesEXT"/>
-                <type name="VkSurfacePresentModeCompatibilityEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_swapchain_maintenance1" number="276" type="device" depends="VK_KHR_swapchain+VK_EXT_surface_maintenance1+VK_KHR_get_physical_device_properties2" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_swapchain_maintenance1&quot;"     name="VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT"/>
-                <enum offset="5" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT"/>
-                <enum bitpos="3" extends="VkSwapchainCreateFlagBitsKHR"     name="VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT"/>
-                <type name="VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT"/>
-                <type name="VkSwapchainPresentFenceInfoEXT"/>
-                <type name="VkSwapchainPresentModesCreateInfoEXT"/>
-                <type name="VkSwapchainPresentModeInfoEXT"/>
-                <type name="VkSwapchainPresentScalingCreateInfoEXT"/>
-                <type name="VkReleaseSwapchainImagesInfoEXT"/>
-                <command name="vkReleaseSwapchainImagesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_demote_to_helper_invocation" number="277" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_demote_to_helper_invocation&quot;" name="VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES"/>
-                <type name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_device_generated_commands" number="278" type="device" depends="VK_VERSION_1_1+VK_KHR_buffer_device_address" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="vulkan">
-            <require>
-                <comment>
-                    This extension requires buffer_device_address functionality.
-                    VK_EXT_buffer_device_address is also acceptable, but since it is deprecated the KHR version is preferred.
-                </comment>
-                <enum value="3"                                             name="VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_device_generated_commands&quot;"   name="VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"/>
-                <enum offset="5" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"/>
-                <enum offset="6" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"/>
-                <enum offset="7" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"/>
-                <enum bitpos="18" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"/>
-                <enum bitpos="17" extends="VkPipelineStageFlagBits"         name="VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"/>
-                <enum bitpos="17" extends="VkAccessFlagBits"                name="VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"/>
-                <enum bitpos="18" extends="VkAccessFlagBits"                name="VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"/>
-                <enum offset="0" extends="VkObjectType"                     name="VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"/>
-                <type name="VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV"/>
-                <type name="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV"/>
-                <type name="VkGraphicsShaderGroupCreateInfoNV"/>
-                <type name="VkGraphicsPipelineShaderGroupsCreateInfoNV"/>
-                <type name="VkBindShaderGroupIndirectCommandNV"/>
-                <type name="VkBindIndexBufferIndirectCommandNV"/>
-                <type name="VkBindVertexBufferIndirectCommandNV"/>
-                <type name="VkSetStateFlagsIndirectCommandNV"/>
-                <type name="VkIndirectStateFlagBitsNV"/>
-                <type name="VkIndirectStateFlagsNV"/>
-                <type name="VkIndirectCommandsLayoutNV"/>
-                <type name="VkIndirectCommandsTokenTypeNV"/>
-                <type name="VkIndirectCommandsLayoutUsageFlagBitsNV"/>
-                <type name="VkIndirectCommandsLayoutUsageFlagsNV"/>
-                <type name="VkIndirectCommandsStreamNV"/>
-                <type name="VkIndirectCommandsLayoutTokenNV"/>
-                <type name="VkIndirectCommandsLayoutCreateInfoNV"/>
-                <type name="VkGeneratedCommandsInfoNV"/>
-                <type name="VkGeneratedCommandsMemoryRequirementsInfoNV"/>
-                <command name="vkGetGeneratedCommandsMemoryRequirementsNV"/>
-                <command name="vkCmdPreprocessGeneratedCommandsNV"/>
-                <command name="vkCmdExecuteGeneratedCommandsNV"/>
-                <command name="vkCmdBindPipelineShaderGroupNV"/>
-                <command name="vkCreateIndirectCommandsLayoutNV"/>
-                <command name="vkDestroyIndirectCommandsLayoutNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_inherited_viewport_scissor" number="279" type="device" author="NV" contact="David Zhao Akeley @akeley98" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_inherited_viewport_scissor&quot;"  name="VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"/>
-                <type name="VkPhysicalDeviceInheritedViewportScissorFeaturesNV"/>
-                <type name="VkCommandBufferInheritanceViewportScissorInfoNV"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_280" number="280" type="device" author="KHR" contact="Kevin Petit @kpet" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_280_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_280&quot;"              name="VK_KHR_EXTENSION_280_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shader_integer_dot_product" number="281" type="device" author="KHR" depends="VK_KHR_get_physical_device_properties2" contact="Kevin Petit @kpet" supported="vulkan" promotedto="VK_VERSION_1_3" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_integer_dot_product&quot;" name="VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES"/>
-                <type name="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR"/>
-                <type name="VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_texel_buffer_alignment" number="282" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                             name="VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_texel_buffer_alignment&quot;"     name="VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT" comment="Not promoted to 1.3"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES"/>
-                <type name="VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT" comment="Not promoted to 1.3"/>
-                <type name="VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_render_pass_transform" number="283" type="device" depends="VK_KHR_swapchain+VK_KHR_surface" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
-            <require>
-                <enum value="3"                                             name="VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_render_pass_transform&quot;"     name="VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"/>
-                <enum bitpos="1" extends="VkRenderPassCreateFlagBits"       name="VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"/>
-                <type name="VkRenderPassTransformBeginInfoQCOM"/>
-                <type name="VkCommandBufferInheritanceRenderPassTransformInfoQCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_depth_bias_control" number="284" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Joshua Ashton @Joshua-Ashton" specialuse="d3demulation" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_depth_bias_control&quot;"         name="VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT"/>
-                <type name="VkPhysicalDeviceDepthBiasControlFeaturesEXT"/>
-                <type name="VkDepthBiasInfoEXT"/>
-                <type name="VkDepthBiasRepresentationEXT"/>
-                <type name="VkDepthBiasRepresentationInfoEXT"/>
-                <command name="vkCmdSetDepthBias2EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_device_memory_report" number="285" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Yiwei Zhang @zhangyiwei" specialuse="devtools" supported="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_device_memory_report&quot;"       name="VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"/>
-                <type name="VkPhysicalDeviceDeviceMemoryReportFeaturesEXT"/>
-                <type name="VkDeviceDeviceMemoryReportCreateInfoEXT"/>
-                <type name="VkDeviceMemoryReportCallbackDataEXT"/>
-                <type name="VkDeviceMemoryReportFlagsEXT"/>
-                <type name="VkDeviceMemoryReportEventTypeEXT"/>
-                <type name="PFN_vkDeviceMemoryReportCallbackEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_acquire_drm_display" number="286" type="instance" depends="VK_EXT_direct_mode_display" author="EXT" contact="Drew DeVault sir@cmpwn.com" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_acquire_drm_display&quot;"        name="VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME"/>
-                <command name="vkAcquireDrmDisplayEXT"/>
-                <command name="vkGetDrmDisplayEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_robustness2" number="287"  type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Liam Middlebrook @liam-middlebrook" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_ROBUSTNESS_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_robustness2&quot;"                    name="VK_EXT_ROBUSTNESS_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"/>
-                <type name="VkPhysicalDeviceRobustness2FeaturesEXT"/>
-                <type name="VkPhysicalDeviceRobustness2PropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_custom_border_color" number="288" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Liam Middlebrook @liam-middlebrook" specialuse="glemulation,d3demulation" supported="vulkan,vulkansc">
-            <require>
-                <enum value="12"                                            name="VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_custom_border_color&quot;"        name="VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"/>
-                <enum offset="3" extends="VkBorderColor"                    name="VK_BORDER_COLOR_FLOAT_CUSTOM_EXT"/>
-                <enum offset="4" extends="VkBorderColor"                    name="VK_BORDER_COLOR_INT_CUSTOM_EXT"/>
-                <type name="VkSamplerCustomBorderColorCreateInfoEXT"/>
-                <type name="VkPhysicalDeviceCustomBorderColorPropertiesEXT"/>
-                <type name="VkPhysicalDeviceCustomBorderColorFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_289" number="289" author="EXT" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
-            <require>
-                <comment>
-                    These enums are present only to inform downstream
-                    consumers like KTX2. There is no actual Vulkan extension
-                    corresponding to the enums.
-                </comment>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_289_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_289&quot;"              name="VK_EXT_EXTENSION_289_EXTENSION_NAME"/>
-                <enum extends="VkFormat" extnumber="289" offset="0" name="VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="1" name="VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="2" name="VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="3" name="VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="4" name="VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="5" name="VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="6" name="VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="7" name="VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="8" name="VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="9" name="VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="10" name="VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="11" name="VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="12" name="VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="13" name="VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="14" name="VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="15" name="VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="16" name="VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="17" name="VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="18" name="VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="19" name="VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="20" name="VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="21" name="VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="22" name="VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="23" name="VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="24" name="VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="25" name="VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="26" name="VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="27" name="VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="28" name="VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT"/>
-                <enum extends="VkFormat" extnumber="289" offset="29" name="VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_user_type" number="290" type="device" author="GOOGLE" contact="Kaye Mason @chaleur" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_GOOGLE_USER_TYPE_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_user_type&quot;"               name="VK_GOOGLE_USER_TYPE_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_pipeline_library" number="291" type="device" author="KHR" contact="Christoph Kubisch @pixeljetstream" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_pipeline_library&quot;"           name="VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME"/>
-                <enum bitpos="11" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"/>
-                <type name="VkPipelineLibraryCreateInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_292" number="292" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_NV_EXTENSION_292_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_292&quot;"               name="VK_NV_EXTENSION_292_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_present_barrier" number="293" type="device" author="NV" depends="VK_KHR_get_physical_device_properties2+VK_KHR_surface+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain" contact="Liya Li @liyli" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_PRESENT_BARRIER_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_present_barrier&quot;"             name="VK_NV_PRESENT_BARRIER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV"/>
-                <type name="VkPhysicalDevicePresentBarrierFeaturesNV"/>
-                <type name="VkSurfaceCapabilitiesPresentBarrierNV"/>
-                <type name="VkSwapchainPresentBarrierCreateInfoNV"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shader_non_semantic_info" number="294" type="device" author="KHR" contact="Baldur Karlsson @baldurk" supported="vulkan" promotedto="VK_VERSION_1_3" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_non_semantic_info&quot;"   name="VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_present_id" number="295" type="device" depends="VK_KHR_swapchain+VK_KHR_get_physical_device_properties2" author="KHR" contact="Keith Packard @keithp" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_KHR_PRESENT_ID_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_present_id&quot;"             name="VK_KHR_PRESENT_ID_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PRESENT_ID_KHR"/>
-                <type name="VkPresentIdKHR"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR"/>
-                <type name="VkPhysicalDevicePresentIdFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_private_data" number="296" type="device" author="NV" contact="Matthew Rusch @mattruschnv" supported="vulkan" depends="VK_KHR_get_physical_device_properties2" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                             name="VK_EXT_PRIVATE_DATA_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_private_data&quot;"               name="VK_EXT_PRIVATE_DATA_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO"/>
-                <enum extends="VkObjectType"                                name="VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT" alias="VK_OBJECT_TYPE_PRIVATE_DATA_SLOT"/>
-                <type name="VkPhysicalDevicePrivateDataFeaturesEXT"/>
-                <type name="VkDevicePrivateDataCreateInfoEXT"/>
-                <type name="VkPrivateDataSlotCreateInfoEXT"/>
-                <type name="VkPrivateDataSlotEXT"/>
-                <type name="VkPrivateDataSlotCreateFlagsEXT" comment="Will add VkPrivateDataSlotCreateFlagBits when bits are defined in the future"/>
-                <command name="vkCreatePrivateDataSlotEXT"/>
-                <command name="vkDestroyPrivateDataSlotEXT"/>
-                <command name="vkSetPrivateDataEXT"/>
-                <command name="vkGetPrivateDataEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_297" number="297" author="KHR" contact="Corentin Wallez @Kangz" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_297_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_297&quot;"              name="VK_KHR_EXTENSION_297_EXTENSION_NAME"/>
-                <enum bitpos="3" extends="VkPipelineShaderStageCreateFlagBits"  name="VK_PIPELINE_SHADER_STAGE_CREATE_RESERVED_3_BIT_KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_pipeline_creation_cache_control" number="298" type="device" author="AMD" contact="Gregory Grebe @grgrebe_amd" depends="VK_KHR_get_physical_device_properties2" supported="vulkan" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="3"                                             name="VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_pipeline_creation_cache_control&quot;"    name="VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES"/>
-                <type name="VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT"/>
-                <enum extends="VkPipelineCreateFlagBits"                    name="VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT" alias="VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT"/>
-                <enum extends="VkPipelineCreateFlagBits"                    name="VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT" alias="VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT"/>
-                <enum extends="VkResult"                                    name="VK_PIPELINE_COMPILE_REQUIRED_EXT" alias="VK_PIPELINE_COMPILE_REQUIRED"/>
-                <enum extends="VkResult"                                    name="VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT" alias="VK_PIPELINE_COMPILE_REQUIRED"/>
-                <enum extends="VkPipelineCacheCreateFlagBits"               name="VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT" alias="VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT"/>
-                <type name="VkPipelineCacheCreateFlagBits" comment="This is a temporary workaround for processors not recognizing that VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT above also requires this type"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_299" number="299" type="device" author="KHR" contact="Mark Bellamy @mark.bellamy_arm" supported="disabled">
-            <require comment="used for Vulkan SC 1.0 namespace">
-                <enum value="0"                                         name="VK_KHR_EXTENSION_299_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_299&quot;"          name="VK_KHR_EXTENSION_299_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_video_encode_queue" number="300"  type="device" depends="VK_KHR_video_queue+VK_KHR_synchronization2" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" provisional="true" platform="provisional" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="10"                                        name="VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_video_encode_queue&quot;"     name="VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME"/>
-                <!-- VkPipelineStageFlagBits bitpos="27" is reserved by this extension, but not used -->
-                <enum bitpos="27" extends="VkPipelineStageFlagBits2"    name="VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS" />
-                <enum bitpos="37" extends="VkAccessFlagBits2"           name="VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS" />
-                <enum bitpos="38" extends="VkAccessFlagBits2"           name="VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="3" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="4" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="5" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="6" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="7" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="8" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="9" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="10" extends="VkStructureType"             name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="6" extends="VkQueueFlagBits"              name="VK_QUEUE_VIDEO_ENCODE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="1" extends="VkVideoCodingControlFlagBitsKHR" name="VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="2" extends="VkVideoCodingControlFlagBitsKHR" name="VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="15" extends="VkBufferUsageFlagBits"       name="VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="16" extends="VkBufferUsageFlagBits"       name="VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="13" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="14" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="15" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="27" extends="VkFormatFeatureFlagBits"     name="VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="28" extends="VkFormatFeatureFlagBits"     name="VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="1" extends="VkVideoSessionCreateFlagBitsKHR" name="VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="0" extends="VkImageLayout"                name="VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="1" extends="VkImageLayout"                name="VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="2" extends="VkImageLayout"                name="VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="0" extends="VkQueryType"                  name="VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="0" extends="VkQueryResultStatusKHR" dir="-" name="VK_QUERY_RESULT_STATUS_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR"/>
-
-                <enum offset="0" extends="VkResult" dir="-"             name="VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
-                <type name="VkVideoEncodeFlagsKHR"/>
-                <type name="VkVideoEncodeInfoKHR"/>
-
-                <type name="VkVideoEncodeCapabilityFlagBitsKHR"/>
-                <type name="VkVideoEncodeCapabilityFlagsKHR"/>
-                <type name="VkVideoEncodeCapabilitiesKHR"/>
-
-                <type name="VkQueryPoolVideoEncodeFeedbackCreateInfoKHR"/>
-                <type name="VkVideoEncodeFeedbackFlagBitsKHR"/>
-                <type name="VkVideoEncodeFeedbackFlagsKHR"/>
-
-                <type name="VkVideoEncodeUsageFlagBitsKHR"/>
-                <type name="VkVideoEncodeUsageFlagsKHR"/>
-                <type name="VkVideoEncodeContentFlagBitsKHR"/>
-                <type name="VkVideoEncodeContentFlagsKHR"/>
-                <type name="VkVideoEncodeTuningModeKHR"/>
-                <type name="VkVideoEncodeUsageInfoKHR"/>
-
-                <type name="VkVideoEncodeRateControlFlagsKHR"/>
-                <type name="VkVideoEncodeRateControlModeFlagBitsKHR"/>
-                <type name="VkVideoEncodeRateControlModeFlagsKHR"/>
-                <type name="VkVideoEncodeRateControlInfoKHR"/>
-                <type name="VkVideoEncodeRateControlLayerInfoKHR"/>
-
-                <type name="VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR"/>
-                <type name="VkVideoEncodeQualityLevelPropertiesKHR"/>
-                <type name="VkVideoEncodeQualityLevelInfoKHR"/>
-
-                <type name="VkVideoEncodeSessionParametersGetInfoKHR"/>
-                <type name="VkVideoEncodeSessionParametersFeedbackInfoKHR"/>
-
-                <command name="vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR"/>
-                <command name="vkGetEncodedVideoSessionParametersKHR"/>
-                <command name="vkCmdEncodeVideoKHR"/>
-            </require>
-            <require depends="VK_KHR_format_feature_flags2">
-                <enum bitpos="27" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="28" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_device_diagnostics_config" number="301" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Kedarnath Thangudu @kthangudu" supported="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_device_diagnostics_config&quot;"   name="VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"/>
-                <type name="VkPhysicalDeviceDiagnosticsConfigFeaturesNV"/>
-                <type name="VkDeviceDiagnosticsConfigCreateInfoNV"/>
-                <type name="VkDeviceDiagnosticsConfigFlagsNV"/>
-                <type name="VkDeviceDiagnosticsConfigFlagBitsNV"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_render_pass_store_ops" number="302" type="device" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_render_pass_store_ops&quot;"     name="VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME"/>
-                <enum extends="VkAttachmentStoreOp"                         name="VK_ATTACHMENT_STORE_OP_NONE_QCOM" alias="VK_ATTACHMENT_STORE_OP_NONE"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_303" number="303" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_QCOM_EXTENSION_303_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_303&quot;"             name="VK_QCOM_EXTENSION_303_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_304" number="304" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_QCOM_EXTENSION_304_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_304&quot;"             name="VK_QCOM_EXTENSION_304_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_305" number="305" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_QCOM_EXTENSION_305_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_305&quot;"             name="VK_QCOM_EXTENSION_305_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_306" number="306" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_QCOM_EXTENSION_306_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_306&quot;"             name="VK_QCOM_EXTENSION_306_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_307" number="307" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_QCOM_EXTENSION_307_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_307&quot;"             name="VK_QCOM_EXTENSION_307_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_cuda_kernel_launch" number="308" type="device" author="NV" contact="Tristan Lorach @tlorach" supported="vulkan" provisional="true">
-            <require>
-                <enum value="2"                                             name="VK_NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_cuda_kernel_launch&quot;"          name="VK_NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV"/>
-                <enum offset="0" extends="VkObjectType"                     name="VK_OBJECT_TYPE_CUDA_MODULE_NV"/>
-                <enum offset="1" extends="VkObjectType"                     name="VK_OBJECT_TYPE_CUDA_FUNCTION_NV"/>
-                <enum offset="0" extends="VkDebugReportObjectTypeEXT"       name="VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV"/>
-                <enum offset="1" extends="VkDebugReportObjectTypeEXT"       name="VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV"/>
-                <type name="VkCudaModuleNV"/>
-                <type name="VkCudaFunctionNV"/>
-                <type name="VkCudaModuleCreateInfoNV"/>
-                <type name="VkCudaFunctionCreateInfoNV"/>
-                <type name="VkCudaLaunchInfoNV"/>
-                <type name="VkPhysicalDeviceCudaKernelLaunchFeaturesNV"/>
-                <type name="VkPhysicalDeviceCudaKernelLaunchPropertiesNV"/>
-                <command name="vkCreateCudaModuleNV"/>
-                <command name="vkGetCudaModuleCacheNV"/>
-                <command name="vkCreateCudaFunctionNV"/>
-                <command name="vkDestroyCudaModuleNV"/>
-                <command name="vkDestroyCudaFunctionNV"/>
-                <command name="vkCmdCudaLaunchKernelNV"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_object_refresh" number="309" type="device" author="KHR" contact="Aidan Fabius @afabius" supported="vulkansc" ratified="vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_KHR_OBJECT_REFRESH_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_object_refresh&quot;"             name="VK_KHR_OBJECT_REFRESH_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR"/>
-                <type name="VkRefreshObjectListKHR"/>
-                <type name="VkRefreshObjectKHR"/>
-                <type name="VkRefreshObjectFlagBitsKHR"/>
-                <type name="VkRefreshObjectFlagsKHR"/>
-                <command name="vkCmdRefreshObjectsKHR"/>
-                <command name="vkGetPhysicalDeviceRefreshableObjectTypesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_310" number="310" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_QCOM_EXTENSION_310_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_310&quot;"             name="VK_QCOM_EXTENSION_310_EXTENSION_NAME"/>
-                <enum bitpos="27" extends="VkBufferUsageFlagBits"           name="VK_BUFFER_USAGE_RESERVED_27_BIT_QCOM"/>
-                <enum bitpos="27" extends="VkBufferUsageFlagBits2KHR"       name="VK_BUFFER_USAGE_2_RESERVED_27_BIT_QCOM"/>
-                <enum bitpos="51" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_RESERVED_51_BIT_QCOM"/>
-                <enum bitpos="52" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_RESERVED_52_BIT_QCOM"/>
-                <enum bitpos="53" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_RESERVED_53_BIT_QCOM"/>
-                <enum bitpos="54" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_RESERVED_54_BIT_QCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_low_latency" number="311" author="NV" type="device" supported="vulkan" contact="Charles Hansen @cshansen" >
-            <require>
-                <enum value="1"                                             name="VK_NV_LOW_LATENCY_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_low_latency&quot;"                 name="VK_NV_LOW_LATENCY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV"/>
-                <type name="VkQueryLowLatencySupportNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_metal_objects" number="312" type="device" platform="metal" supported="vulkan" author="EXT" contact="Bill Hollings @billhollings">
-            <require>
-                <enum value="1"                                             name="VK_EXT_METAL_OBJECTS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_metal_objects&quot;"              name="VK_EXT_METAL_OBJECTS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT"/>
-                <enum offset="5" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT"/>
-                <enum offset="6" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT"/>
-                <enum offset="7" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT"/>
-                <enum offset="8" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT"/>
-                <enum offset="9" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT"/>
-                <enum offset="10" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT"/>
-                <enum offset="11" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT"/>
-                <type name="VkExportMetalObjectTypeFlagBitsEXT"/>
-                <type name="VkExportMetalObjectTypeFlagsEXT"/>
-                <type name="VkExportMetalObjectCreateInfoEXT"/>
-                <type name="VkExportMetalObjectsInfoEXT"/>
-                <type name="VkExportMetalDeviceInfoEXT"/>
-                <type name="VkExportMetalCommandQueueInfoEXT"/>
-                <type name="VkExportMetalBufferInfoEXT"/>
-                <type name="VkImportMetalBufferInfoEXT"/>
-                <type name="VkExportMetalTextureInfoEXT"/>
-                <type name="VkImportMetalTextureInfoEXT"/>
-                <type name="VkExportMetalIOSurfaceInfoEXT"/>
-                <type name="VkImportMetalIOSurfaceInfoEXT"/>
-                <type name="VkExportMetalSharedEventInfoEXT"/>
-                <type name="VkImportMetalSharedEventInfoEXT"/>
-                <type name="MTLDevice_id"/>
-                <type name="MTLCommandQueue_id"/>
-                <type name="MTLBuffer_id"/>
-                <type name="MTLTexture_id"/>
-                <type name="MTLSharedEvent_id"/>
-                <type name="IOSurfaceRef"/>
-                <command name="vkExportMetalObjectsEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_313" number="313" author="MVK" contact="Bill Hollings @billhollings" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_313_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_313&quot;"              name="VK_EXT_EXTENSION_313_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_314" number="314" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_314_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_314&quot;"              name="VK_AMD_EXTENSION_314_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_synchronization2" number="315" type="device" author="KHR" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" contact="Tobias Hector @tobski" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_synchronization2&quot;"           name="VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_BARRIER_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEPENDENCY_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_SUBMIT_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR" alias="VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR" alias="VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES"/>
-                <enum extends="VkEventCreateFlagBits"                       name="VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR" alias="VK_EVENT_CREATE_DEVICE_ONLY_BIT"/>
-                <enum extends="VkImageLayout"                               name="VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL"/>
-                <enum extends="VkImageLayout"                               name="VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL"/>
-                <enum extends="VkPipelineStageFlagBits"                     name="VK_PIPELINE_STAGE_NONE_KHR" alias="VK_PIPELINE_STAGE_NONE"/>
-                <enum extends="VkAccessFlagBits"                            name="VK_ACCESS_NONE_KHR" alias="VK_ACCESS_NONE"/>
-                <type name="VkFlags64"/>
-                <type name="VkPipelineStageFlags2KHR"/>
-                <type name="VkPipelineStageFlagBits2KHR"/>
-                <type name="VkAccessFlags2KHR"/>
-                <type name="VkAccessFlagBits2KHR"/>
-                <type name="VkMemoryBarrier2KHR"/>
-                <type name="VkBufferMemoryBarrier2KHR"/>
-                <type name="VkImageMemoryBarrier2KHR"/>
-                <type name="VkDependencyInfoKHR"/>
-                <type name="VkSubmitInfo2KHR"/>
-                <type name="VkSemaphoreSubmitInfoKHR"/>
-                <type name="VkCommandBufferSubmitInfoKHR"/>
-                <type name="VkSubmitFlagBitsKHR"/>
-                <type name="VkSubmitFlagsKHR"/>
-                <type name="VkPhysicalDeviceSynchronization2FeaturesKHR"/>
-                <command name="vkCmdSetEvent2KHR"/>
-                <command name="vkCmdResetEvent2KHR"/>
-                <command name="vkCmdWaitEvents2KHR"/>
-                <command name="vkCmdPipelineBarrier2KHR"/>
-                <command name="vkCmdWriteTimestamp2KHR"/>
-                <command name="vkQueueSubmit2KHR"/>
-            </require>
-            <require depends="VK_EXT_transform_feedback">
-                <enum bitpos="24" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT"/>
-                <enum bitpos="25" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"/>
-                <enum bitpos="26" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"/>
-                <enum bitpos="27" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_conditional_rendering">
-                <enum bitpos="18" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT" comment="A pipeline stage for conditional rendering predicate fetch"/>
-                <enum bitpos="20" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT"  comment="read access flag for reading conditional rendering predicate"/>
-            </require>
-            <require depends="VK_NV_device_generated_commands">
-                <enum bitpos="17" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV"/>
-                <enum bitpos="17" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV"/>
-                <enum bitpos="18" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV"/>
-            </require>
-            <require depends="VK_KHR_fragment_shading_rate">
-                <enum bitpos="22" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-                <enum bitpos="23" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"/>
-            </require>
-            <require depends="VK_NV_shading_rate_image">
-                <enum extends="VkPipelineStageFlagBits2"                    name="VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV" alias="VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-                <enum extends="VkAccessFlagBits2"                           name="VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV"    alias="VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"/>
-            </require>
-            <require depends="VK_KHR_acceleration_structure">
-                <enum bitpos="25" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
-                <enum bitpos="21" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR"/>
-                <enum bitpos="22" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"/>
-            </require>
-            <require depends="VK_KHR_ray_tracing_pipeline">
-                <enum bitpos="21" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR"/>
-            </require>
-            <require depends="VK_NV_ray_tracing">
-                <enum extends="VkPipelineStageFlagBits2"                    name="VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV" alias="VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR"/>
-                <enum extends="VkPipelineStageFlagBits2"                    name="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV" alias="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
-                <enum extends="VkAccessFlagBits2"                           name="VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV" alias="VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR"/>
-                <enum extends="VkAccessFlagBits2"                           name="VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV" alias="VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"/>
-            </require>
-            <require depends="VK_EXT_fragment_density_map">
-                <enum bitpos="23" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT"/>
-                <enum bitpos="24" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_blend_operation_advanced">
-                <enum bitpos="19" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"/>
-            </require>
-            <require depends="VK_NV_mesh_shader">
-                <enum extends="VkPipelineStageFlagBits2"                    name="VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV" alias="VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT"/>
-                <enum extends="VkPipelineStageFlagBits2"                    name="VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV" alias="VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT"/>
-            </require>
-            <require depends="VK_AMD_buffer_marker">
-                <command name="vkCmdWriteBufferMarker2AMD"/>
-            </require>
-            <require depends="VK_NV_device_diagnostic_checkpoints">
-                <type name="VkQueueFamilyCheckpointProperties2NV"/>
-                <type name="VkCheckpointData2NV"/>
-                <command name="vkGetQueueCheckpointData2NV"/>
-                <enum offset="8" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV"/>
-                <enum offset="9" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV"/>
-            </require>
-            <require depends="VK_EXT_mesh_shader">
-                <enum bitpos="19" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT"/>
-                <enum bitpos="20" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_316" number="316" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_316_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_316&quot;"              name="VK_AMD_EXTENSION_316_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_descriptor_buffer" number="317" type="device" author="EXT" depends="VK_KHR_get_physical_device_properties2+VK_KHR_buffer_device_address+VK_KHR_synchronization2+VK_EXT_descriptor_indexing" contact="Tobias Hector @tobski" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_descriptor_buffer&quot;"              name="VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT"/>
-                <enum offset="3" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT"/>
-                <enum offset="4" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT"/>
-                <enum offset="5" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"/>
-                <enum offset="6" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"/>
-                <enum offset="7" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"/>
-                <enum offset="8" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"/>
-                <enum offset="10" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT"/>
-                <enum offset="11" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT"/>
-                <enum offset="12" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT"/>
-                <enum bitpos="4" extends="VkDescriptorSetLayoutCreateFlagBits"  name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT"/>
-                <enum bitpos="5" extends="VkDescriptorSetLayoutCreateFlagBits"  name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT"/>
-                <enum bitpos="21" extends="VkBufferUsageFlagBits"               name="VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT"/>
-                <enum bitpos="22" extends="VkBufferUsageFlagBits"               name="VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT"/>
-                <enum bitpos="26" extends="VkBufferUsageFlagBits"               name="VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT"/>
-                <enum bitpos="5" extends="VkBufferCreateFlagBits"               name="VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"/>
-                <enum bitpos="16" extends="VkImageCreateFlagBits"               name="VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"/>
-                <enum bitpos="2" extends="VkImageViewCreateFlagBits"            name="VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"/>
-                <enum bitpos="3" extends="VkSamplerCreateFlagBits"              name="VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"/>
-                <enum bitpos="3" extends="VkAccelerationStructureCreateFlagBitsKHR" name="VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"/>
-                <enum bitpos="41" extends="VkAccessFlagBits2"                   name="VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT"/>
-                <enum bitpos="29"  extends="VkPipelineCreateFlagBits"           name="VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT"/>
-                <type name="VkPhysicalDeviceDescriptorBufferPropertiesEXT"/>
-                <type name="VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT"/>
-                <type name="VkPhysicalDeviceDescriptorBufferFeaturesEXT"/>
-                <type name="VkDescriptorAddressInfoEXT"/>
-                <type name="VkDescriptorBufferBindingInfoEXT"/>
-                <type name="VkDescriptorBufferBindingPushDescriptorBufferHandleEXT"/>
-                <type name="VkDescriptorDataEXT"/>
-                <type name="VkDescriptorGetInfoEXT"/>
-                <type name="VkBufferCaptureDescriptorDataInfoEXT"/>
-                <type name="VkImageCaptureDescriptorDataInfoEXT"/>
-                <type name="VkImageViewCaptureDescriptorDataInfoEXT"/>
-                <type name="VkSamplerCaptureDescriptorDataInfoEXT"/>
-                <type name="VkOpaqueCaptureDescriptorDataCreateInfoEXT"/>
-                <command name="vkGetDescriptorSetLayoutSizeEXT"/>
-                <command name="vkGetDescriptorSetLayoutBindingOffsetEXT"/>
-                <command name="vkGetDescriptorEXT"/>
-                <command name="vkCmdBindDescriptorBuffersEXT"/>
-                <command name="vkCmdSetDescriptorBufferOffsetsEXT"/>
-                <command name="vkCmdBindDescriptorBufferEmbeddedSamplersEXT"/>
-                <command name="vkGetBufferOpaqueCaptureDescriptorDataEXT"/>
-                <command name="vkGetImageOpaqueCaptureDescriptorDataEXT"/>
-                <command name="vkGetImageViewOpaqueCaptureDescriptorDataEXT"/>
-                <command name="vkGetSamplerOpaqueCaptureDescriptorDataEXT"/>
-            </require>
-            <require depends="VK_KHR_acceleration_structure,VK_NV_ray_tracing">
-                <enum offset="9" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"/>
-                <type name="VkAccelerationStructureCaptureDescriptorDataInfoEXT"/>
-                <command name="vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_318" number="318" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_318_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_318&quot;"              name="VK_AMD_EXTENSION_318_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_319" number="319" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_319_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_319&quot;"              name="VK_AMD_EXTENSION_319_EXTENSION_NAME"/>
-                <enum bitpos="3" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_3_BIT_AMD"/>
-                <enum bitpos="0" extends="VkPipelineLayoutCreateFlagBits" name="VK_PIPELINE_LAYOUT_CREATE_RESERVED_0_BIT_AMD"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_320" number="320" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_AMD_EXTENSION_320_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_320&quot;"              name="VK_AMD_EXTENSION_320_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_graphics_pipeline_library" number="321" type="device" depends="VK_KHR_get_physical_device_properties2+VK_KHR_pipeline_library" author="AMD" contact="Tobias Hector @tobski" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_graphics_pipeline_library&quot;"  name="VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME"/>
-                <type name="VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT"/>
-                <type name="VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT"/>
-                <type name="VkGraphicsPipelineLibraryCreateInfoEXT"/>
-                <type name="VkGraphicsPipelineLibraryFlagBitsEXT"/>
-                <type name="VkGraphicsPipelineLibraryFlagsEXT"/>
-                <type name="VkPipelineLayoutCreateFlagBits"/>
-                <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT"/>
-                <enum bitpos="23" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"/>
-                <enum bitpos="10" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT"/>
-                <enum bitpos="1" extends="VkPipelineLayoutCreateFlagBits" name="VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_shader_early_and_late_fragment_tests" number="322" author="EXT" contact="Tobias Hector @tobski" type="device" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_shader_early_and_late_fragment_tests&quot;" name="VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME"/>
-                <type name="VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD"/>
-                <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_fragment_shader_barycentric" number="323" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Stu Smith" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                              name="VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_fragment_shader_barycentric&quot;" name="VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType" extnumber="204"   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR"/>
-                <enum offset="0" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR"/>
-                <type name="VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR"/>
-                <type name="VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_shader_subgroup_uniform_control_flow" number="324" type="device" depends="VK_VERSION_1_1" author="KHR" contact="Alan Baker @alan-baker" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1" name="VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_shader_subgroup_uniform_control_flow&quot;" name="VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"/>
-                <type name="VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_325" number="325" author="KHR" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_325_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_325&quot;"              name="VK_KHR_EXTENSION_325_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_zero_initialize_workgroup_memory" number="326" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Alan Baker @alan-baker" supported="vulkan" promotedto="VK_VERSION_1_3" ratified="vulkan">
-            <require>
-                <enum value="1"                                                   name="VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_zero_initialize_workgroup_memory&quot;" name="VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES"/>
-                <type name="VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_fragment_shading_rate_enums" number="327" type="device" depends="VK_KHR_fragment_shading_rate" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_fragment_shading_rate_enums&quot;" name="VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"/>
-                <enum offset="1" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"/>
-                <enum offset="2" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"/>
-                <type name="VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV"/>
-                <type name="VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV"/>
-                <type name="VkPipelineFragmentShadingRateEnumStateCreateInfoNV"/>
-                <type name="VkFragmentShadingRateNV"/>
-                <type name="VkFragmentShadingRateTypeNV"/>
-                <command name="vkCmdSetFragmentShadingRateEnumNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_ray_tracing_motion_blur" number="328" type="device" depends="VK_KHR_ray_tracing_pipeline" author="NV" contact="Eric Werness" supported="vulkan">
-            <require>
-                <enum value="1"                                                    name="VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_ray_tracing_motion_blur&quot;"            name="VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                         name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"/>
-                <enum offset="1" extends="VkStructureType"                         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"/>
-                <enum offset="2" extends="VkStructureType"                         name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV"/>
-                <enum bitpos="5" extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"/>
-                <enum bitpos="2" extends="VkAccelerationStructureCreateFlagBitsKHR" name="VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"/>
-                <enum bitpos="20" extends="VkPipelineCreateFlagBits"               name="VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV"/>
-                <type name="VkAccelerationStructureGeometryMotionTrianglesDataNV"/>
-                <type name="VkAccelerationStructureMotionInfoNV"/>
-                <type name="VkAccelerationStructureMotionInstanceNV"/>
-                <type name="VkAccelerationStructureMotionInstanceDataNV"/>
-                <type name="VkAccelerationStructureMatrixMotionInstanceNV"/>
-                <type name="VkAccelerationStructureSRTMotionInstanceNV"/>
-                <type name="VkSRTDataNV"/>
-                <type name="VkAccelerationStructureMotionInstanceTypeNV"/>
-                <type name="VkPhysicalDeviceRayTracingMotionBlurFeaturesNV"/>
-                <type name="VkAccelerationStructureMotionInfoFlagsNV"/>
-                <type name="VkAccelerationStructureMotionInstanceFlagsNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_mesh_shader" number="329" type="device" depends="VK_KHR_spirv_1_4" author="EXT" sortorder="1" contact="Christoph Kubisch @pixeljetstream" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_EXT_MESH_SHADER_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_mesh_shader&quot;"            name="VK_EXT_MESH_SHADER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT"/>
-                <enum bitpos="6" extends="VkShaderStageFlagBits"        name="VK_SHADER_STAGE_TASK_BIT_EXT"/>
-                <enum bitpos="7" extends="VkShaderStageFlagBits"        name="VK_SHADER_STAGE_MESH_BIT_EXT"/>
-                <enum bitpos="19" extends="VkPipelineStageFlagBits"     name="VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT"/>
-                <enum bitpos="20" extends="VkPipelineStageFlagBits"     name="VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT"/>
-                <enum offset="0" extends="VkQueryType"                  name="VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT"/>
-                <enum bitpos="11" extends="VkQueryPipelineStatisticFlagBits" name="VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT"/>
-                <enum bitpos="12" extends="VkQueryPipelineStatisticFlagBits" name="VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT"/>
-                <command name="vkCmdDrawMeshTasksEXT"/>
-                <command name="vkCmdDrawMeshTasksIndirectEXT"/>
-                <command name="vkCmdDrawMeshTasksIndirectCountEXT"/>
-                <type name="VkPhysicalDeviceMeshShaderFeaturesEXT"/>
-                <type name="VkPhysicalDeviceMeshShaderPropertiesEXT"/>
-                <type name="VkDrawMeshTasksIndirectCommandEXT"/>
-            </require>
-            <require depends="VK_NV_device_generated_commands">
-                <enum offset="0" extends="VkIndirectCommandsTokenTypeNV" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_330" number="330" author="NV" contact="Liam Middlebrook @liam-middlebrook" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_NV_EXTENSION_330_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_330&quot;"               name="VK_NV_EXTENSION_330_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_ycbcr_2plane_444_formats" number="331" type="device" depends="VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1" author="EXT" contact="Tony Zlatinski @tzlatinski" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3">
-            <require>
-                <comment>
-                    VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT and
-                    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
-                    were not promoted to Vulkan 1.3.
-                </comment>
-                <enum value="1"                                           name="VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_ycbcr_2plane_444_formats&quot;" name="VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"/>
-                <enum extends="VkFormat"                                  name="VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT" alias="VK_FORMAT_G8_B8R8_2PLANE_444_UNORM"/>
-                <enum extends="VkFormat"                                  name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT" alias="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                  name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT" alias="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16"/>
-                <enum extends="VkFormat"                                  name="VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT" alias="VK_FORMAT_G16_B16R16_2PLANE_444_UNORM"/>
-                <type name="VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_332" number="332" author="NV" contact="Tony Zlatinski @tzlatinski" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_NV_EXTENSION_332_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_332&quot;"               name="VK_NV_EXTENSION_332_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_fragment_density_map2" number="333" type="device" depends="VK_EXT_fragment_density_map" author="EXT" contact="Matthew Netsch @mnetsch" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_fragment_density_map2&quot;"      name="VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"/>
-                <enum offset="1"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"/>
-                <enum bitpos="1"  extends="VkImageViewCreateFlagBits"       name="VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT"/>
-                <type name="VkPhysicalDeviceFragmentDensityMap2FeaturesEXT"/>
-                <type name="VkPhysicalDeviceFragmentDensityMap2PropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_rotated_copy_commands" number="334" type="device" depends="VK_KHR_swapchain+VK_KHR_copy_commands2" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_rotated_copy_commands&quot;"     name="VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"/>
-                <type name="VkCopyCommandTransformInfoQCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_335" number="335" type="device" author="KHR" contact="Mark Bellamy @mark.bellamy_arm" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_335_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_335&quot;"              name="VK_KHR_EXTENSION_335_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_image_robustness" number="336" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Graeme Leese @gnl21" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                             name="VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_image_robustness&quot;"           name="VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES"/>
-                <type name="VkPhysicalDeviceImageRobustnessFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_workgroup_memory_explicit_layout" number="337" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Caio Marcelo de Oliveira Filho @cmarcelo" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                                      name="VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_workgroup_memory_explicit_layout&quot;"    name="VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                           name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR"/>
-                <type name="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_copy_commands2" number="338" author="KHR" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" contact="Jeff Leger @jackohound" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3" ratified="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_KHR_COPY_COMMANDS_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_copy_commands2&quot;"             name="VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_COPY_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_COPY_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_BLIT_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2"/>
-                <type name="VkCopyBufferInfo2KHR"/>
-                <type name="VkCopyImageInfo2KHR"/>
-                <type name="VkCopyBufferToImageInfo2KHR"/>
-                <type name="VkCopyImageToBufferInfo2KHR"/>
-                <type name="VkBlitImageInfo2KHR"/>
-                <type name="VkResolveImageInfo2KHR"/>
-                <type name="VkBufferCopy2KHR"/>
-                <type name="VkImageCopy2KHR"/>
-                <type name="VkImageBlit2KHR"/>
-                <type name="VkBufferImageCopy2KHR"/>
-                <type name="VkImageResolve2KHR"/>
-                <command name="vkCmdCopyBuffer2KHR"/>
-                <command name="vkCmdCopyImage2KHR"/>
-                <command name="vkCmdCopyBufferToImage2KHR"/>
-                <command name="vkCmdCopyImageToBuffer2KHR"/>
-                <command name="vkCmdBlitImage2KHR"/>
-                <command name="vkCmdResolveImage2KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_image_compression_control" number="339" type="device" author="EXT" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_image_compression_control&quot;"  name="VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceImageCompressionControlFeaturesEXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT"/>
-                <type name="VkImageCompressionControlEXT"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT" alias="VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR"/>
-                <type name="VkSubresourceLayout2EXT"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT" alias="VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR"/>
-                <type name="VkImageSubresource2EXT"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT"/>
-                <type name="VkImageCompressionPropertiesEXT"/>
-                <type                                                       name="VkImageCompressionFlagBitsEXT"/>
-                <type                                                       name="VkImageCompressionFlagsEXT"/>
-                <type                                                       name="VkImageCompressionFixedRateFlagBitsEXT"/>
-                <type                                                       name="VkImageCompressionFixedRateFlagsEXT"/>
-                <enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_COMPRESSION_EXHAUSTED_EXT"/>
-                <command name="vkGetImageSubresourceLayout2EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_attachment_feedback_loop_layout" number="340" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="vulkan">
-            <require>
-                <enum value="2"                                                    name="VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_attachment_feedback_loop_layout&quot;"   name="VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT"/>
-                <enum offset="0" extends="VkImageLayout"                           name="VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT"/>
-                <enum bitpos="19" extends="VkImageUsageFlagBits"                   name="VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"/>
-                <enum bitpos="25" extends="VkPipelineCreateFlagBits"               name="VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"/>
-                <enum bitpos="26" extends="VkPipelineCreateFlagBits"               name="VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"/>
-                <enum bitpos="3"  extends="VkDependencyFlagBits"                   name="VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT" comment="Dependency may be a feedback loop"/>
-                <type name="VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_4444_formats" number="341" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3">
-            <require>
-                <comment>
-                    VkPhysicalDevice4444FormatsFeaturesEXT and
-                    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
-                    were not promoted to Vulkan 1.3.
-                </comment>
-                <enum value="1"                                             name="VK_EXT_4444_FORMATS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_4444_formats&quot;"               name="VK_EXT_4444_FORMATS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT" alias="VK_FORMAT_A4R4G4B4_UNORM_PACK16"/>
-                <enum extends="VkFormat"                                    name="VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT" alias="VK_FORMAT_A4B4G4R4_UNORM_PACK16"/>
-                <type name="VkPhysicalDevice4444FormatsFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_device_fault" number="342" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Ralph Potter gitlab:@r_potter" supported="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_EXT_DEVICE_FAULT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_device_fault&quot;"               name="VK_EXT_DEVICE_FAULT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT"/>
-                <type name="VkPhysicalDeviceFaultFeaturesEXT"/>
-                <type name="VkDeviceFaultCountsEXT"/>
-                <type name="VkDeviceFaultInfoEXT"/>
-                <type name="VkDeviceFaultAddressInfoEXT"/>
-                <type name="VkDeviceFaultAddressTypeEXT"/>
-                <type name="VkDeviceFaultVendorInfoEXT"/>
-                <type name="VkDeviceFaultVendorBinaryHeaderVersionEXT"/>
-                <type name="VkDeviceFaultVendorBinaryHeaderVersionOneEXT"/>
-                <command name="vkGetDeviceFaultInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_ARM_rasterization_order_attachment_access" number="343" type="device" depends="VK_KHR_get_physical_device_properties2" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan" promotedto="VK_EXT_rasterization_order_attachment_access">
-            <require>
-                <enum value="1"                                                        name="VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION"/>
-                <enum value="&quot;VK_ARM_rasterization_order_attachment_access&quot;" name="VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM"/>
-                <enum extends="VkPipelineColorBlendStateCreateFlagBits"     name="VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM" alias="VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT"/>
-                <enum extends="VkPipelineDepthStencilStateCreateFlagBits"   name="VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM" alias="VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"/>
-                <enum extends="VkPipelineDepthStencilStateCreateFlagBits"   name="VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM" alias="VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"/>
-                <enum extends="VkSubpassDescriptionFlagBits"                name="VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM" alias="VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT"/>
-                <enum extends="VkSubpassDescriptionFlagBits"                name="VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM" alias="VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"/>
-                <enum extends="VkSubpassDescriptionFlagBits"                name="VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM" alias="VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_ARM_extension_344" number="344" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_ARM_EXTENSION_344_SPEC_VERSION"/>
-                <enum value="&quot;VK_ARM_extension_344&quot;"              name="VK_ARM_EXTENSION_344_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_rgba10x6_formats" number="345" type="device" depends="VK_KHR_sampler_ycbcr_conversion" author="EXT" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan">
-             <require>
-                    <enum value="1"                                                name="VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION"/>
-                    <enum value="&quot;VK_EXT_rgba10x6_formats&quot;"              name="VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME"/>
-                    <enum offset="0" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT"/>
-                    <type name="VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_acquire_winrt_display" number="346" type="device" depends="VK_EXT_direct_mode_display" author="NV" contact="Jeff Juliano @jjuliano" platform="win32" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_acquire_winrt_display&quot;"       name="VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME"/>
-                <command name="vkAcquireWinrtDisplayNV"/>
-                <command name="vkGetWinrtDisplayNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_directfb_surface" number="347" type="instance" depends="VK_KHR_surface" platform="directfb" supported="vulkan" author="EXT" contact="Nicolas Caramelli @caramelli">
-            <require>
-                <enum value="1"                                             name="VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_directfb_surface&quot;"           name="VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"/>
-                <type name="VkDirectFBSurfaceCreateFlagsEXT"/>
-                <type name="VkDirectFBSurfaceCreateInfoEXT"/>
-                <command name="vkCreateDirectFBSurfaceEXT"/>
-                <command name="vkGetPhysicalDeviceDirectFBPresentationSupportEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_350" number="350" type="device" author="KHR" contact="Mark Bellamy @mark.bellamy_arm" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_350_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_350&quot;"              name="VK_KHR_EXTENSION_350_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_351" number="351" author="NV" contact="Liam Middlebrook @liam-middlebrook" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_NV_EXTENSION_351_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_351&quot;"               name="VK_NV_EXTENSION_351_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_VALVE_mutable_descriptor_type" number="352" type="device" supported="vulkan" author="VALVE" contact="Joshua Ashton @Joshua-Ashton,Hans-Kristian Arntzen @HansKristian-Work" specialuse="d3demulation" depends="VK_KHR_maintenance3" promotedto="VK_EXT_mutable_descriptor_type">
-            <require>
-                <enum value="1"                                                name="VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION"/>
-                <enum value="&quot;VK_VALVE_mutable_descriptor_type&quot;"     name="VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                                name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"/>
-                <enum extends="VkStructureType"                                name="VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE" alias="VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT"/>
-                <enum extends="VkDescriptorType"                               name="VK_DESCRIPTOR_TYPE_MUTABLE_VALVE" alias="VK_DESCRIPTOR_TYPE_MUTABLE_EXT"/>
-                <enum extends="VkDescriptorPoolCreateFlagBits"                 name="VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE" alias="VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT"/>
-                <enum extends="VkDescriptorSetLayoutCreateFlagBits"            name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE" alias="VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT"/>
-                <type name="VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE"/>
-                <type name="VkMutableDescriptorTypeListVALVE"/>
-                <type name="VkMutableDescriptorTypeCreateInfoVALVE"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_vertex_input_dynamic_state" number="353" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan,vulkansc">
-            <require>
-                <enum value="2"                                             name="VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_vertex_input_dynamic_state&quot;" name="VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"/>
-                <enum offset="0" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_VERTEX_INPUT_EXT"/>
-                <type name="VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT"/>
-                <type name="VkVertexInputBindingDescription2EXT"/>
-                <type name="VkVertexInputAttributeDescription2EXT"/>
-                <command name="vkCmdSetVertexInputEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_physical_device_drm" number="354" author="EXT" type="device" contact="Simon Ser @emersion" supported="vulkan" depends="VK_KHR_get_physical_device_properties2">
-            <require>
-                <enum value="1"                                             name="VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_physical_device_drm&quot;"        name="VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME"/>
-
-                <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"/>
-
-                <type name="VkPhysicalDeviceDrmPropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_device_address_binding_report" number="355" type="device" depends="VK_KHR_get_physical_device_properties2+VK_EXT_debug_utils" author="EXT" contact="Ralph Potter gitlab:@r_potter" specialuse="debugging,devtools" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_device_address_binding_report&quot;"  name="VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT"/>
-                <enum bitpos="3" extends="VkDebugUtilsMessageTypeFlagBitsEXT"   name="VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT"/>
-                <type name="VkPhysicalDeviceAddressBindingReportFeaturesEXT" />
-                <type name="VkDeviceAddressBindingCallbackDataEXT" />
-                <type name="VkDeviceAddressBindingFlagsEXT" />
-                <type name="VkDeviceAddressBindingFlagBitsEXT" />
-                <type name="VkDeviceAddressBindingTypeEXT" />
-            </require>
-        </extension>
-        <extension name="VK_EXT_depth_clip_control" number="356" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="vulkan" specialuse="glemulation">
-            <require>
-                <enum value="1"                                             name="VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_depth_clip_control&quot;"         name="VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT"/>
-                <type name="VkPhysicalDeviceDepthClipControlFeaturesEXT"/>
-                <type name="VkPipelineViewportDepthClipControlCreateInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_primitive_topology_list_restart" number="357" type="device" author="EXT" contact="Shahbaz Youssefi @syoussefi" depends="VK_KHR_get_physical_device_properties2" supported="vulkan" specialuse="glemulation">
-            <require>
-                <enum value="1"                                             name="VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_primitive_topology_list_restart&quot;"           name="VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"/>
-                <type name="VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_358" number="358" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_358_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_358&quot;"              name="VK_KHR_EXTENSION_358_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_359" number="359" author="EXT" contact="Bill Hollings @billhollings" supported="disabled" specialuse="glemulation">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_359_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_359&quot;"              name="VK_EXT_EXTENSION_359_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_360" number="360" author="EXT" contact="Bill Hollings @billhollings" supported="disabled" specialuse="glemulation">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_360_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_360&quot;"              name="VK_EXT_EXTENSION_360_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_format_feature_flags2" number="361" author="KHR" type="device" depends="VK_KHR_get_physical_device_properties2" contact="Lionel Landwerlin @llandwerlin" supported="vulkan" promotedto="VK_VERSION_1_3" ratified="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_format_feature_flags2&quot;"      name="VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR" alias="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3"/>
-                <type                                                       name="VkFormatFeatureFlags2KHR"/>
-                <type                                                       name="VkFormatFeatureFlagBits2KHR"/>
-                <type                                                       name="VkFormatProperties3KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_362" number="362" author="EXT" contact="Lionel Duc @nvlduc" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_362_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_362&quot;"              name="VK_EXT_EXTENSION_362_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_363" number="363" author="EXT" contact="Kaye Mason @chaleur" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_363_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_363&quot;"              name="VK_EXT_EXTENSION_363_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_FUCHSIA_extension_364" number="364" author="FUCHSIA" contact="Craig Stout @cdotstout" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_FUCHSIA_EXTENSION_364_SPEC_VERSION"/>
-                <enum value="&quot;VK_FUCHSIA_extension_364&quot;"          name="VK_FUCHSIA_EXTENSION_364_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_FUCHSIA_external_memory" number="365" type="device" depends="VK_KHR_external_memory_capabilities+VK_KHR_external_memory" author="FUCHSIA" contact="John Rosasco @rosasco" platform="fuchsia" supported="vulkan">
-            <require>
-                <enum value="1"                                                name="VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION"/>
-                <enum value="&quot;VK_FUCHSIA_external_memory&quot;"           name="VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"/>
-                <enum offset="1" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"/>
-                <enum offset="2" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"/>
-                <enum bitpos="11" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA"/>
-                <type name="VkImportMemoryZirconHandleInfoFUCHSIA"/>
-                <type name="VkMemoryZirconHandlePropertiesFUCHSIA"/>
-                <type name="VkMemoryGetZirconHandleInfoFUCHSIA"/>
-                <command name="vkGetMemoryZirconHandleFUCHSIA"/>
-                <command name="vkGetMemoryZirconHandlePropertiesFUCHSIA"/>
-            </require>
-        </extension>
-        <extension name="VK_FUCHSIA_external_semaphore" number="366" type="device" depends="VK_KHR_external_semaphore_capabilities+VK_KHR_external_semaphore" author="FUCHSIA" contact="John Rosasco @rosasco" platform="fuchsia" supported="vulkan">
-            <require>
-                <enum value="1"                                                name="VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION"/>
-                <enum value="&quot;VK_FUCHSIA_external_semaphore&quot;"        name="VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"/>
-                <enum offset="1" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"/>
-                <enum bitpos="7" extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA"/>
-                <type name="VkImportSemaphoreZirconHandleInfoFUCHSIA"/>
-                <type name="VkSemaphoreGetZirconHandleInfoFUCHSIA"/>
-                <command name="vkImportSemaphoreZirconHandleFUCHSIA"/>
-                <command name="vkGetSemaphoreZirconHandleFUCHSIA"/>
-            </require>
-        </extension>
-        <extension name="VK_FUCHSIA_buffer_collection" number="367" type="device" depends="VK_FUCHSIA_external_memory+VK_KHR_sampler_ycbcr_conversion" author="FUCHSIA" contact="John Rosasco @rosasco" supported="vulkan" platform="fuchsia">
-            <require>
-                <enum value="2"                                         name="VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION"/>
-                <enum value="&quot;VK_FUCHSIA_buffer_collection&quot;"  name="VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"/>
-                <enum offset="0" extends="VkObjectType"                 name="VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA" comment="VkBufferCollectionFUCHSIA"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA"/>
-                <enum offset="3" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA"/>
-                <enum offset="4" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA"/>
-                <enum offset="5" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA"/>
-                <enum offset="6" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA"/>
-                <enum offset="7" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"/>
-                <enum offset="8" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA"/>
-                <enum offset="9" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA"/>
-                <type name="VkBufferCollectionFUCHSIA"/>
-                <type name="VkBufferCollectionCreateInfoFUCHSIA"/>
-                <type name="VkImportMemoryBufferCollectionFUCHSIA"/>
-                <type name="VkBufferCollectionImageCreateInfoFUCHSIA"/>
-                <type name="VkBufferConstraintsInfoFUCHSIA"/>
-                <type name="VkBufferCollectionBufferCreateInfoFUCHSIA"/>
-                <type name="VkBufferCollectionPropertiesFUCHSIA"/>
-                <type name="VkImageFormatConstraintsFlagsFUCHSIA" comment="Will add VkImageFormatConstraintsFlagBitsFUCHSIA when bits are defined in the future"/>
-                <type name="VkSysmemColorSpaceFUCHSIA"/>
-                <type name="VkImageConstraintsInfoFlagBitsFUCHSIA"/>
-                <type name="VkImageConstraintsInfoFlagsFUCHSIA"/>
-                <type name="VkImageConstraintsInfoFUCHSIA"/>
-                <type name="VkImageFormatConstraintsInfoFUCHSIA"/>
-                <type name="VkBufferCollectionConstraintsInfoFUCHSIA"/>
-                <command name="vkCreateBufferCollectionFUCHSIA"/>
-                <command name="vkSetBufferCollectionImageConstraintsFUCHSIA"/>
-                <command name="vkSetBufferCollectionBufferConstraintsFUCHSIA"/>
-                <command name="vkDestroyBufferCollectionFUCHSIA"/>
-                <command name="vkGetBufferCollectionPropertiesFUCHSIA"/>
-            </require>
-            <require depends="VK_EXT_debug_report">
-                <enum offset="0" extends="VkDebugReportObjectTypeEXT"   name="VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_FUCHSIA_extension_368" number="368" author="FUCHSIA" contact="Craig Stout @cdotstout" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_FUCHSIA_EXTENSION_368_SPEC_VERSION"/>
-                <enum value="&quot;VK_FUCHSIA_extension_368&quot;"          name="VK_FUCHSIA_EXTENSION_368_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_369" number="369" author="QCOM" contact="Matthew Netsch @mnetsch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_QCOM_EXTENSION_369_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_369&quot;"         name="VK_QCOM_EXTENSION_369_EXTENSION_NAME"/>
-                <enum bitpos="4" extends="VkDescriptorBindingFlagBits"  name="VK_DESCRIPTOR_BINDING_RESERVED_4_BIT_QCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_HUAWEI_subpass_shading" number="370" type="device" author="HUAWEI" contact="Pan Gao @PanGao-h" depends="VK_KHR_create_renderpass2+VK_KHR_synchronization2" supported="vulkan">
-            <require>
-                <enum value="3"                                         name="VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION"/>
-                <enum value="&quot;VK_HUAWEI_subpass_shading&quot;"         name="VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI"/>
-                <enum offset="3" extends="VkPipelineBindPoint" extnumber="370" name="VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI"/>
-                <enum bitpos="39" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI"/>
-                <enum             extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI" alias="VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI" deprecated="aliased"/>
-                <enum bitpos="14" extends="VkShaderStageFlagBits"           name="VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI"/>
-                <type name="VkSubpassShadingPipelineCreateInfoHUAWEI"/>
-                <type name="VkPhysicalDeviceSubpassShadingFeaturesHUAWEI"/>
-                <type name="VkPhysicalDeviceSubpassShadingPropertiesHUAWEI"/>
-                <command name="vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"/>
-                <command name="vkCmdSubpassShadingHUAWEI"/>
-            </require>
-        </extension>
-        <extension name="VK_HUAWEI_invocation_mask" number="371" type="device" depends="VK_KHR_ray_tracing_pipeline+VK_KHR_synchronization2" author="Huawei" contact="Pan Gao @PanGao-h" supported="vulkan">
-            <require>
-                <enum value="1"                                              name="VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION"/>
-                <enum value="&quot;VK_HUAWEI_invocation_mask&quot;"        name="VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI"/>
-                <enum bitpos="39" extends="VkAccessFlagBits2"                name="VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI"/>
-                <enum bitpos="18" extends="VkImageUsageFlagBits"             name="VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI"/>
-                <enum bitpos="40" extends="VkPipelineStageFlagBits2"         name="VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI"/>
-                <type name="VkPhysicalDeviceInvocationMaskFeaturesHUAWEI"/>
-                <command name="vkCmdBindInvocationMaskHUAWEI"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_external_memory_rdma" number="372" type="device" depends="VK_KHR_external_memory" author="NV" contact="Carsten Rohde @crohde" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_external_memory_rdma&quot;"            name="VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"/>
-                <enum bitpos="8" extends="VkMemoryPropertyFlagBits"             name="VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV"/>
-                <enum bitpos="12" extends="VkExternalMemoryHandleTypeFlagBits"  name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV"/>
-                <type name="VkRemoteAddressNV"/>
-                <type name="VkMemoryGetRemoteAddressInfoNV"/>
-                <type name="VkPhysicalDeviceExternalMemoryRDMAFeaturesNV"/>
-                <command name="vkGetMemoryRemoteAddressNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_pipeline_properties" number="373" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Mukund Keshava @mkeshavanv" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_pipeline_properties&quot;"        name="VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT"/>
-                <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT" alias="VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"/>
-                <type name="VkPipelineInfoEXT"/>
-                <type name="VkPipelinePropertiesIdentifierEXT"/>
-                <type name="VkPhysicalDevicePipelinePropertiesFeaturesEXT"/>
-                <command name="vkGetPipelinePropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_external_sci_sync" number="374" depends="VK_VERSION_1_1" platform="sci" type="device" author="NV" contact="Kai Zhang @kazhang" supported="vulkansc" deprecatedby="VK_NV_external_sci_sync2">
-            <require>
-                <enum value="2"                                         name="VK_NV_EXTERNAL_SCI_SYNC_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_external_sci_sync&quot;"       name="VK_NV_EXTERNAL_SCI_SYNC_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV"/>
-                <enum offset="3" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV"/>
-                <enum offset="4" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV"/>
-                <enum offset="5" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV"/>
-                <enum offset="6" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV"/>
-                <enum offset="7" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV"/>
-                <enum bitpos="4" extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV"/>
-                <enum bitpos="5" extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV"/>
-                <enum bitpos="5" extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV"/>
-                <type name="VkSciSyncClientTypeNV"/>
-                <type name="VkSciSyncPrimitiveTypeNV"/>
-                <type name="VkExportFenceSciSyncInfoNV"/>
-                <type name="VkImportFenceSciSyncInfoNV"/>
-                <type name="VkFenceGetSciSyncInfoNV"/>
-                <type name="VkSciSyncAttributesInfoNV"/>
-                <type name="VkExportSemaphoreSciSyncInfoNV"/>
-                <type name="VkImportSemaphoreSciSyncInfoNV"/>
-                <type name="VkSemaphoreGetSciSyncInfoNV"/>
-                <type name="VkPhysicalDeviceExternalSciSyncFeaturesNV"/>
-                <command name="vkGetFenceSciSyncFenceNV"/>
-                <command name="vkGetFenceSciSyncObjNV"/>
-                <command name="vkImportFenceSciSyncFenceNV"/>
-                <command name="vkImportFenceSciSyncObjNV"/>
-                <command name="vkGetPhysicalDeviceSciSyncAttributesNV"/>
-                <command name="vkGetSemaphoreSciSyncObjNV"/>
-                <command name="vkImportSemaphoreSciSyncObjNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_external_memory_sci_buf" number="375" depends="VK_VERSION_1_1" platform="sci" type="device" author="NV" contact="Kai Zhang @kazhang" supported="vulkansc">
-            <require>
-                <enum value="2"                                         name="VK_NV_EXTERNAL_MEMORY_SCI_BUF_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_external_memory_sci_buf&quot;" name="VK_NV_EXTERNAL_MEMORY_SCI_BUF_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV"/>
-                <enum offset="3" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV"/>
-                <enum offset="4" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV"/>
-                <enum extends="VkStructureType"                         name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_BUF_FEATURES_NV" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV"/>
-                <enum bitpos="13" extends="VkExternalMemoryHandleTypeFlagBits"  name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV"/>
-                <type name="VkExportMemorySciBufInfoNV"/>
-                <type name="VkImportMemorySciBufInfoNV"/>
-                <type name="VkMemoryGetSciBufInfoNV"/>
-                <type name="VkMemorySciBufPropertiesNV"/>
-                <type name="VkPhysicalDeviceExternalMemorySciBufFeaturesNV"/>
-                <type name="VkPhysicalDeviceExternalSciBufFeaturesNV"/>
-                <command name="vkGetMemorySciBufNV"/>
-                <command name="vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV"/>
-                <command name="vkGetPhysicalDeviceSciBufAttributesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_frame_boundary" number="376" type="device" author="EXT" contact="James Fitzpatrick @jamesfitzpatrick" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_EXT_FRAME_BOUNDARY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_frame_boundary&quot;"         name="VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT"/>
-                <type name="VkPhysicalDeviceFrameBoundaryFeaturesEXT"/>
-                <type name="VkFrameBoundaryEXT"/>
-                <type name="VkFrameBoundaryFlagBitsEXT"/>
-                <type name="VkFrameBoundaryFlagsEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_multisampled_render_to_single_sampled" number="377" type="device" depends="VK_KHR_create_renderpass2+VK_KHR_depth_stencil_resolve" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_multisampled_render_to_single_sampled&quot;"   name="VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT"/>
-                <enum offset="2" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT"/>
-                <enum bitpos="18" extends="VkImageCreateFlagBits"               name="VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT"/>
-                <type name="VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT"/>
-                <type name="VkSubpassResolvePerformanceQueryEXT"/>
-                <type name="VkMultisampledRenderToSingleSampledInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extended_dynamic_state2" number="378" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Vikram Kushwaha @vkushwaha-nv" supported="vulkan,vulkansc" promotedto="VK_VERSION_1_3">
-            <require>
-                <enum value="1"                                             name="VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extended_dynamic_state2&quot;"    name="VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT" comment="Not promoted to 1.3"/>
-                <enum offset="0" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT" comment="Not promoted to 1.3"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT" alias="VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT" alias="VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE"/>
-                <enum offset="3" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_LOGIC_OP_EXT" comment="Not promoted to 1.3"/>
-                <enum extends="VkDynamicState"                              name="VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT" alias="VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE"/>
-                <type name="VkPhysicalDeviceExtendedDynamicState2FeaturesEXT" comment="Not promoted to 1.3"/>
-                <command name="vkCmdSetPatchControlPointsEXT" comment="Not promoted to 1.3"/>
-                <command name="vkCmdSetRasterizerDiscardEnableEXT"/>
-                <command name="vkCmdSetDepthBiasEnableEXT"/>
-                <command name="vkCmdSetLogicOpEXT" comment="Not promoted to 1.3"/>
-                <command name="vkCmdSetPrimitiveRestartEnableEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_QNX_screen_surface" number="379" type="instance" depends="VK_KHR_surface" platform="screen" author="QNX" contact="Mike Gorchak @mgorchak-blackberry" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_QNX_SCREEN_SURFACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_QNX_screen_surface&quot;"         name="VK_QNX_SCREEN_SURFACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"/>
-                <type name="VkScreenSurfaceCreateFlagsQNX"/>
-                <type name="VkScreenSurfaceCreateInfoQNX"/>
-                <command name="vkCreateScreenSurfaceQNX"/>
-                <command name="vkGetPhysicalDeviceScreenPresentationSupportQNX"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_380" number="380" author="KHR" contact="James Jones @cubanismo" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_380_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_380&quot;"          name="VK_KHR_EXTENSION_380_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_381" number="381" author="KHR" contact="James Jones @cubanismo" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_381_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_381&quot;"          name="VK_KHR_EXTENSION_381_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_color_write_enable" number="382" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="EXT" contact="Sharif Elcott @selcott" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                         name="VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_color_write_enable&quot;"     name="VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"/>
-                <enum offset="0" extends="VkDynamicState"               name="VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT"/>
-                <type name="VkPhysicalDeviceColorWriteEnableFeaturesEXT"/>
-                <type name="VkPipelineColorWriteCreateInfoEXT"/>
-                <command name="vkCmdSetColorWriteEnableEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_primitives_generated_query" number="383" type="device" depends="VK_EXT_transform_feedback" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="vulkan" specialuse="glemulation">
-            <require>
-                <enum value="1"                                                 name="VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_primitives_generated_query&quot;"     name="VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT"/>
-                <enum offset="0" extends="VkQueryType"                          name="VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT"/>
-                <type name="VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_384" number="384" type="instance" author="EXT" contact="Chia-I Wu @olvaffe1" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_384_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_384&quot;"          name="VK_EXT_EXTENSION_384_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_MESA_extension_385" number="385" type="instance" author="MESA" contact="Chia-I Wu @olvaffe1" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_MESA_EXTENSION_385_SPEC_VERSION"/>
-                <enum value="&quot;VK_MESA_extension_385&quot;"         name="VK_MESA_EXTENSION_385_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_extension_386" number="386" author="GOOGLE" contact="Chia-I Wu @olvaffe1" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GOOGLE_EXTENSION_386_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_extension_386&quot;"       name="VK_GOOGLE_EXTENSION_386_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_ray_tracing_maintenance1" number="387" type="device" depends="VK_KHR_acceleration_structure" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_ray_tracing_maintenance1&quot;"   name="VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR"/>
-                <enum offset="0" extends="VkQueryType"                      name="VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR"/>
-                <enum offset="1" extends="VkQueryType"                      name="VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR"/>
-                <type name="VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR"/>
-            </require>
-            <require depends="VK_KHR_synchronization2">
-                <!-- VkPipelineStageFlagBits bitpos="28" is reserved by this extension, but not used -->
-                <enum bitpos="28" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR"/>
-            </require>
-            <require depends="VK_KHR_synchronization2+VK_KHR_ray_tracing_pipeline">
-                <enum bitpos="40" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR"/>
-            </require>
-            <require depends="VK_KHR_ray_tracing_pipeline">
-                <type name="VkTraceRaysIndirectCommand2KHR"/>
-                <command name="vkCmdTraceRaysIndirect2KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_388" number="388" author="EXT" contact="Alan Baker @alan-baker" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_388_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_388&quot;"              name="VK_EXT_EXTENSION_388_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_global_priority_query" number="389" type="device" depends="VK_EXT_global_priority+VK_KHR_get_physical_device_properties2" author="EXT" contact="Yiwei Zhang @zhangyiwei" supported="vulkan" promotedto="VK_KHR_global_priority">
-            <require>
-                <enum value="1"                                         name="VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_global_priority_query&quot;"  name="VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME"/>
-                <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR"/>
-                <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT" alias="VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR"/>
-                <enum                                                   name="VK_MAX_GLOBAL_PRIORITY_SIZE_EXT"/>
-                <type                                                   name="VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT"/>
-                <type                                                   name="VkQueueFamilyGlobalPriorityPropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_390" number="390" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_390_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_390&quot;"              name="VK_EXT_EXTENSION_390_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_391" number="391" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_391_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_391&quot;"              name="VK_EXT_EXTENSION_391_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_image_view_min_lod" number="392" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_image_view_min_lod&quot;"         name="VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT"/>
-                <type                                                       name="VkPhysicalDeviceImageViewMinLodFeaturesEXT"/>
-                <type                                                       name="VkImageViewMinLodCreateInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_multi_draw" number="393" author="EXT" contact="Mike Blumenkrantz @zmike" type="device" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_EXT_MULTI_DRAW_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_multi_draw&quot;"             name="VK_EXT_MULTI_DRAW_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"/>
-                <type name="VkPhysicalDeviceMultiDrawFeaturesEXT"/>
-                <type name="VkPhysicalDeviceMultiDrawPropertiesEXT"/>
-                <command name="vkCmdDrawMultiEXT"/>
-                <command name="vkCmdDrawMultiIndexedEXT"/>
-                <type name="VkMultiDrawInfoEXT"/>
-                <type name="VkMultiDrawIndexedInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_image_2d_view_of_3d" number="394" depends="VK_KHR_maintenance1+VK_KHR_get_physical_device_properties2" author="EXT" contact="Mike Blumenkrantz @zmike" specialuse="glemulation" type="device" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_image_2d_view_of_3d&quot;"              name="VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceImage2DViewOf3DFeaturesEXT"/>
-                <enum extends="VkImageCreateFlagBits" bitpos="17"  name="VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT" comment="Image is created with a layout where individual slices are capable of being used as 2D images"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_portability_enumeration" number="395" author="KHR" contact="Charles Giessen @charles-lunarg" type="instance" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_portability_enumeration&quot;"    name="VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME"/>
-                <enum bitpos="0" extends="VkInstanceCreateFlagBits"         name="VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_tile_image" number="396" type="device" author="EXT" depends="VK_VERSION_1_3" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_tile_image&quot;"          name="VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT"/>
-                <type name="VkPhysicalDeviceShaderTileImageFeaturesEXT"/>
-                <type name="VkPhysicalDeviceShaderTileImagePropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_opacity_micromap" number="397" type="device"  depends="VK_KHR_acceleration_structure+VK_KHR_synchronization2" author="EXT" contact="Christoph Kubisch @pixeljetstream, Eric Werness" supported="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_EXT_OPACITY_MICROMAP_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_opacity_micromap&quot;"           name="VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT"/>
-                <enum offset="1"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT"/>
-                <enum offset="2"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT"/>
-                <enum offset="3"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT"/>
-                <enum offset="4"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT"/>
-                <enum offset="5"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT"/>
-                <enum offset="6"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT"/>
-                <enum offset="7"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT"/>
-                <enum offset="8"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT"/>
-                <enum offset="9"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT"/>
-                <enum bitpos="30" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT"/>
-                <enum bitpos="44" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_MICROMAP_READ_BIT_EXT"/>
-                <enum bitpos="45" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT"/>
-                <enum offset="0"  extends="VkQueryType"                     name="VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT"/>
-                <enum offset="1"  extends="VkQueryType"                     name="VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT"/>
-                <enum offset="0"  extends="VkObjectType"                    name="VK_OBJECT_TYPE_MICROMAP_EXT"/>
-                <enum bitpos="23" extends="VkBufferUsageFlagBits"           name="VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"/>
-                <enum bitpos="24" extends="VkBufferUsageFlagBits"           name="VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT"/>
-                <enum bitpos="24" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"/>
-                <enum bitpos="4"  extends="VkGeometryInstanceFlagBitsKHR"   name="VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT"/>
-                <enum bitpos="5"  extends="VkGeometryInstanceFlagBitsKHR"   name="VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT"/>
-                <enum bitpos="6"  extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT"/>
-                <enum bitpos="7"  extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT"/>
-                <enum bitpos="8"  extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT"/>
-                <type name="VkMicromapTypeEXT"/>
-                <type name="VkMicromapBuildInfoEXT"/>
-                <type name="VkMicromapUsageEXT"/>
-                <type name="VkMicromapCreateInfoEXT"/>
-                <type name="VkMicromapEXT"/>
-                <type name="VkBuildMicromapFlagBitsEXT"/>
-                <type name="VkBuildMicromapFlagsEXT"/>
-                <type name="VkCopyMicromapModeEXT"/>
-                <type name="VkPhysicalDeviceOpacityMicromapFeaturesEXT"/>
-                <type name="VkPhysicalDeviceOpacityMicromapPropertiesEXT"/>
-                <type name="VkMicromapVersionInfoEXT"/>
-                <type name="VkCopyMicromapToMemoryInfoEXT"/>
-                <type name="VkCopyMemoryToMicromapInfoEXT"/>
-                <type name="VkCopyMicromapInfoEXT"/>
-                <type name="VkMicromapCreateFlagBitsEXT"/>
-                <type name="VkMicromapCreateFlagsEXT"/>
-                <type name="VkBuildMicromapModeEXT"/>
-                <type name="VkMicromapBuildSizesInfoEXT"/>
-                <type name="VkOpacityMicromapFormatEXT"/>
-                <type name="VkAccelerationStructureTrianglesOpacityMicromapEXT"/>
-                <type name="VkMicromapTriangleEXT"/>
-                <type name="VkOpacityMicromapSpecialIndexEXT"/>
-                <command name="vkCreateMicromapEXT"/>
-                <command name="vkDestroyMicromapEXT"/>
-                <command name="vkCmdBuildMicromapsEXT"/>
-                <command name="vkBuildMicromapsEXT"/>
-                <command name="vkCopyMicromapEXT"/>
-                <command name="vkCopyMicromapToMemoryEXT"/>
-                <command name="vkCopyMemoryToMicromapEXT"/>
-                <command name="vkWriteMicromapsPropertiesEXT"/>
-                <command name="vkCmdCopyMicromapEXT"/>
-                <command name="vkCmdCopyMicromapToMemoryEXT"/>
-                <command name="vkCmdCopyMemoryToMicromapEXT"/>
-                <command name="vkCmdWriteMicromapsPropertiesEXT"/>
-                <command name="vkGetDeviceMicromapCompatibilityEXT"/>
-                <command name="vkGetMicromapBuildSizesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_displacement_micromap" number="398" type="device" depends="VK_EXT_opacity_micromap" author="NV" contact="Christoph Kubisch @pixeljetstream, Eric Werness @ewerness-nv" supported="vulkan" provisional="true" platform="provisional">
-            <require>
-                <enum value="2"                                        name="VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_displacement_micromap&quot;"  name="VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"            name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="1"  extends="VkStructureType"            name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="2"  extends="VkStructureType"            name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="28" extends="VkPipelineCreateFlagBits"   name="VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="9"  extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum offset="0"  extends="VkMicromapTypeEXT"          name="VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <type name="VkPhysicalDeviceDisplacementMicromapFeaturesNV"/>
-                <type name="VkPhysicalDeviceDisplacementMicromapPropertiesNV"/>
-                <type name="VkAccelerationStructureTrianglesDisplacementMicromapNV"/>
-                <type name="VkDisplacementMicromapFormatNV"/>
-            </require>
-        </extension>
-        <extension name="VK_JUICE_extension_399" number="399" author="JUICE" contact="Dean Beeler @canadacow" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_JUICE_EXTENSION_399_SPEC_VERSION"/>
-                <enum value="&quot;VK_JUICE_extension_399&quot;"        name="VK_JUICE_EXTENSION_399_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_JUICE_extension_400" number="400" author="JUICE" contact="David McCloskey @damcclos" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_JUICE_EXTENSION_400_SPEC_VERSION"/>
-                <enum value="&quot;VK_JUICE_extension_400&quot;"        name="VK_JUICE_EXTENSION_400_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_load_store_op_none" number="401" author="EXT" type="device" contact="Shahbaz Youssefi @syoussefi" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_load_store_op_none&quot;"          name="VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkAttachmentLoadOp" name="VK_ATTACHMENT_LOAD_OP_NONE_EXT"/>
-                <enum extends="VkAttachmentStoreOp" name="VK_ATTACHMENT_STORE_OP_NONE_EXT" alias="VK_ATTACHMENT_STORE_OP_NONE"/>
-            </require>
-        </extension>
-        <extension name="VK_FB_extension_402" number="402" author="FB" contact="Artem Bolgar @artyom17" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_FB_EXTENSION_402_SPEC_VERSION"/>
-                <enum value="&quot;VK_FB_extension_402&quot;"           name="VK_FB_EXTENSION_402_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_FB_extension_403" number="403" author="FB" contact="Artem Bolgar @artyom17" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_FB_EXTENSION_403_SPEC_VERSION"/>
-                <enum value="&quot;VK_FB_extension_403&quot;"           name="VK_FB_EXTENSION_403_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_FB_extension_404" number="404" author="FB" contact="Artem Bolgar @artyom17" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_FB_EXTENSION_404_SPEC_VERSION"/>
-                <enum value="&quot;VK_FB_extension_404&quot;"           name="VK_FB_EXTENSION_404_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_HUAWEI_cluster_culling_shader" number="405" type="device" depends="VK_KHR_get_physical_device_properties2" author="HUAWEI" contact="Yuchang Wang @richard_Wang2" supported="vulkan">
-            <require>
-                <enum value="2"                                              name="VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION"/>
-                <enum value="&quot;VK_HUAWEI_cluster_culling_shader&quot;"   name="VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"/>
-                <enum offset="1" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"/>
-                <enum bitpos="41" extends="VkPipelineStageFlagBits2"         name="VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-                <enum bitpos="19" extends="VkShaderStageFlagBits"            name="VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI"/>
-                <enum bitpos="13" extends="VkQueryPipelineStatisticFlagBits" name="VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI"/>
-                <command name="vkCmdDrawClusterHUAWEI"/>
-                <command name="vkCmdDrawClusterIndirectHUAWEI"/>
-                <type name="VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI"/>
-                <type name="VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI"/>
-            </require>
-        </extension>
-        <extension name="VK_HUAWEI_extension_406" number="406" author="HUAWEI" contact="Hueilong Wang @wyvernathuawei" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_HUAWEI_EXTENSION_406_SPEC_VERSION"/>
-                <enum value="&quot;VK_HUAWEI_extension_406&quot;"           name="VK_HUAWEI_EXTENSION_406_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GGP_extension_407" number="407" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GGP_EXTENSION_407_SPEC_VERSION"/>
-                <enum value="&quot;VK_GGP_extension_407&quot;"          name="VK_GGP_EXTENSION_407_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GGP_extension_408" number="408" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GGP_EXTENSION_408_SPEC_VERSION"/>
-                <enum value="&quot;VK_GGP_extension_408&quot;"          name="VK_GGP_EXTENSION_408_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GGP_extension_409" number="409" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GGP_EXTENSION_409_SPEC_VERSION"/>
-                <enum value="&quot;VK_GGP_extension_409&quot;"          name="VK_GGP_EXTENSION_409_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GGP_extension_410" number="410" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GGP_EXTENSION_410_SPEC_VERSION"/>
-                <enum value="&quot;VK_GGP_extension_410&quot;"          name="VK_GGP_EXTENSION_410_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GGP_extension_411" number="411" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GGP_EXTENSION_411_SPEC_VERSION"/>
-                <enum value="&quot;VK_GGP_extension_411&quot;"          name="VK_GGP_EXTENSION_411_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_border_color_swizzle" number="412" type="device" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan" depends="VK_EXT_custom_border_color" specialuse="glemulation,d3demulation">
-            <require>
-                <enum value="1"                                         name="VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_border_color_swizzle&quot;"   name="VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT"/>
-                <type name="VkPhysicalDeviceBorderColorSwizzleFeaturesEXT"/>
-                <type name="VkSamplerBorderColorComponentMappingCreateInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_pageable_device_local_memory" number="413" author="EXT" contact="Piers Daniell @pdaniell-nv" type="device" depends="VK_EXT_memory_priority" supported="vulkan">
-            <require>
-                <enum value="1"                                                  name="VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_pageable_device_local_memory&quot;"    name="VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                       name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"/>
-                <type                                                            name="VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT"/>
-                <command                                                         name="vkSetDeviceMemoryPriorityEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_maintenance4" number="414" type="device" depends="VK_VERSION_1_1" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="vulkan" promotedto="VK_VERSION_1_3" ratified="vulkan">
-            <require>
-                <enum value="2"                                             name="VK_KHR_MAINTENANCE_4_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_maintenance4&quot;"               name="VK_KHR_MAINTENANCE_4_EXTENSION_NAME"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS"/>
-                <enum extends="VkStructureType"                             name="VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS"/>
-                <enum extends="VkImageAspectFlagBits"                       name="VK_IMAGE_ASPECT_NONE_KHR" alias="VK_IMAGE_ASPECT_NONE"/>
-                <type name="VkPhysicalDeviceMaintenance4FeaturesKHR"/>
-                <type name="VkPhysicalDeviceMaintenance4PropertiesKHR"/>
-                <type name="VkDeviceBufferMemoryRequirementsKHR"/>
-                <type name="VkDeviceImageMemoryRequirementsKHR"/>
-                <command name="vkGetDeviceBufferMemoryRequirementsKHR"/>
-                <command name="vkGetDeviceImageMemoryRequirementsKHR"/>
-                <command name="vkGetDeviceImageSparseMemoryRequirementsKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_HUAWEI_extension_415" number="415" author="HUAWEI" contact="Hueilong Wang @wyvernathuawei" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_HUAWEI_EXTENSION_415_SPEC_VERSION"/>
-                <enum value="&quot;VK_HUAWEI_extension_415&quot;"         name="VK_HUAWEI_EXTENSION_415_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_ARM_shader_core_properties" number="416" type="device" depends="VK_VERSION_1_1" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_ARM_shader_core_properties&quot;" name="VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM"/>
-                <type name="VkPhysicalDeviceShaderCorePropertiesARM"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_417" number="417" author="KHR" contact="Kevin Petit @kpet" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_417_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_417&quot;"          name="VK_KHR_EXTENSION_417_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_ARM_scheduling_controls" number="418" author="ARM" contact="Kevin Petit @kpet" type="device" depends="VK_ARM_shader_core_builtins" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION"/>
-                <enum value="&quot;VK_ARM_scheduling_controls&quot;"    name="VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME"/>
-                <enum extends="VkStructureType" offset="0"              name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM"/>
-                <enum extends="VkStructureType" offset="1"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM"/>
-                <enum extends="VkStructureType" offset="2"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM"/>
-                <type name="VkDeviceQueueShaderCoreControlCreateInfoARM"/>
-                <type name="VkPhysicalDeviceSchedulingControlsFeaturesARM"/>
-                <type name="VkPhysicalDeviceSchedulingControlsPropertiesARM"/>
-                <type name="VkPhysicalDeviceSchedulingControlsFlagsARM"/>
-                <type name="VkPhysicalDeviceSchedulingControlsFlagBitsARM"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_image_sliced_view_of_3d" number="419" depends="VK_KHR_maintenance1+VK_KHR_get_physical_device_properties2" author="EXT" contact="Mike Blumenkrantz @zmike" specialuse="d3demulation" type="device" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_image_sliced_view_of_3d&quot;"    name="VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT"/>
-                <enum name="VK_REMAINING_3D_SLICES_EXT"/>
-                <type name="VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT"/>
-                <type name="VkImageViewSlicedCreateInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_420" number="420" author="EXT" contact="Mike Blumenkrantz @zmike" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_420_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_420&quot;"              name="VK_EXT_EXTENSION_420_EXTENSION_NAME"/>
-                <enum bitpos="4" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_RESERVED_4_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_VALVE_descriptor_set_host_mapping" number="421" type="device" author="VALVE" contact="Hans-Kristian Arntzen @HansKristian-Work" specialuse="d3demulation" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION"/>
-                <enum value="&quot;VK_VALVE_descriptor_set_host_mapping&quot;"  name="VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"/>
-                <enum offset="1"  extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"/>
-                <enum offset="2"  extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"/>
-                <type name="VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE"/>
-                <type name="VkDescriptorSetBindingReferenceVALVE"/>
-                <type name="VkDescriptorSetLayoutHostMappingInfoVALVE"/>
-                <command name="vkGetDescriptorSetLayoutHostMappingInfoVALVE"/>
-                <command name="vkGetDescriptorSetHostMappingVALVE"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_depth_clamp_zero_one" number="422" author="EXT" type="device" contact="Graeme Leese @gnl21" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_depth_clamp_zero_one&quot;"       name="VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceDepthClampZeroOneFeaturesEXT" />
-            </require>
-        </extension>
-        <extension name="VK_EXT_non_seamless_cube_map" number="423" author="EXT" type="device" contact="Georg Lehmann @DadSchoorse" specialuse="d3demulation,glemulation" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_non_seamless_cube_map&quot;"      name="VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME"/>
-                <enum bitpos="2" extends="VkSamplerCreateFlagBits"          name="VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_ARM_extension_424" number="424" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_ARM_EXTENSION_424_SPEC_VERSION"/>
-                <enum value="&quot;VK_ARM_extension_424&quot;"          name="VK_ARM_EXTENSION_424_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_ARM_extension_425" number="425" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_ARM_EXTENSION_425_SPEC_VERSION"/>
-                <enum value="&quot;VK_ARM_extension_425&quot;"          name="VK_ARM_EXTENSION_425_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_fragment_density_map_offset" number="426" type="device" depends="VK_KHR_get_physical_device_properties2+VK_EXT_fragment_density_map" author="QCOM" contact="Matthew Netsch @mnetsch" supported="vulkan">
-            <require>
-                <enum value="1"                                               name="VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_fragment_density_map_offset&quot;" name="VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM"/>
-                <enum offset="1"  extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM"/>
-                <enum offset="2"  extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM"/>
-                <enum bitpos="15" extends="VkImageCreateFlagBits"             name="VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM"/>
-                <type name="VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM"/>
-                <type name="VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM"/>
-                <type name="VkSubpassFragmentDensityMapOffsetEndInfoQCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_copy_memory_indirect" number="427" type="device" depends="VK_KHR_get_physical_device_properties2+VK_KHR_buffer_device_address" author="NV" contact="Vikram Kushwaha @vkushwaha-nv" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_copy_memory_indirect&quot;"    name="VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV"/>
-                <type name="VkCopyMemoryIndirectCommandNV"/>
-                <type name="VkCopyMemoryToImageIndirectCommandNV"/>
-                <type name="VkPhysicalDeviceCopyMemoryIndirectFeaturesNV"/>
-                <type name="VkPhysicalDeviceCopyMemoryIndirectPropertiesNV"/>
-                <command name="vkCmdCopyMemoryIndirectNV"/>
-                <command name="vkCmdCopyMemoryToImageIndirectNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_memory_decompression" number="428" type="device" depends="VK_KHR_get_physical_device_properties2+VK_KHR_buffer_device_address" author="NV" contact="Vikram Kushwaha @vkushwaha-nv" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_memory_decompression&quot;"       name="VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV"/>
-                <type name="VkMemoryDecompressionMethodFlagBitsNV"/>
-                <type name="VkMemoryDecompressionMethodFlagsNV"/>
-                <type name="VkDecompressMemoryRegionNV"/>
-                <type name="VkPhysicalDeviceMemoryDecompressionFeaturesNV"/>
-                <type name="VkPhysicalDeviceMemoryDecompressionPropertiesNV"/>
-                <command name="vkCmdDecompressMemoryNV"/>
-                <command name="vkCmdDecompressMemoryIndirectCountNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_device_generated_commands_compute" number="429" type="device" depends="VK_NV_device_generated_commands" author="NV" contact="Vikram Kushwaha @vkushwaha-nv" supported="vulkan">
-            <require>
-                <enum value="2"                                           name="VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_device_generated_commands_compute&quot;"  name="VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"                name="VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV"/>
-                <enum offset="2" extends="VkStructureType"                name="VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV"/>
-                <enum offset="3" extends="VkIndirectCommandsTokenTypeNV"  name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV"/>
-                <enum offset="4" extends="VkIndirectCommandsTokenTypeNV"  name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV"/>
-                <enum bitpos="7" extends="VkDescriptorSetLayoutCreateFlagBits"  name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV"/>
-                <type name="VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV"/>
-                <type name="VkComputePipelineIndirectBufferInfoNV"/>
-                <type name="VkPipelineIndirectDeviceAddressInfoNV"/>
-                <type name="VkBindPipelineIndirectCommandNV"/>
-                <command name="vkGetPipelineIndirectMemoryRequirementsNV"/>
-                <command name="vkCmdUpdatePipelineIndirectBufferNV"/>
-                <command name="vkGetPipelineIndirectDeviceAddressNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_430" number="430" author="NV" contact="Vikram Kushwaha @vkushwaha-nv" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_NV_EXTENSION_430_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_430&quot;"           name="VK_NV_EXTENSION_430_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_linear_color_attachment" number="431" type="device" author="NVIDIA" contact="sourav parmar @souravpNV" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_linear_color_attachment&quot;" name="VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV"/>
-                <type                                                   name="VkPhysicalDeviceLinearColorAttachmentFeaturesNV"/>
-            </require>
-            <require depends="VK_KHR_format_feature_flags2">
-                <enum bitpos="38" extends="VkFormatFeatureFlagBits2"    name="VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV" comment="Format support linear image as render target, it cannot be mixed with non linear attachment"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_432" number="432" author="NV" contact="Sourav Parmar @souravpNV" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_NV_EXTENSION_432_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_432&quot;"           name="VK_NV_EXTENSION_432_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_433" number="433" author="NV" contact="Sourav Parmar @souravpNV" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_NV_EXTENSION_433_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_433&quot;"           name="VK_NV_EXTENSION_433_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_surfaceless_query" number="434" type="instance" depends="VK_KHR_surface" author="GOOGLE" contact="Shahbaz Youssefi @syoussefi" specialuse="glemulation" supported="vulkan">
-            <require>
-                <enum value="2"                                         name="VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_surfaceless_query&quot;"   name="VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_435" number="435" author="KHR" contact="Alan Baker @alan-baker" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_435_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_435&quot;"          name="VK_KHR_EXTENSION_435_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_application_parameters" number="436" type="instance" author="EXT" contact="Daniel Koch @dgkoch" supported="vulkansc">
-            <require>
-                <enum value="1"                                         name="VK_EXT_APPLICATION_PARAMETERS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_application_parameters&quot;" name="VK_EXT_APPLICATION_PARAMETERS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT"/>
-                <type name="VkApplicationParametersEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_437" number="437" author="EXT" contact="Jonathan Weinstein @Jonathan-Weinstein" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_437_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_437&quot;"          name="VK_EXT_EXTENSION_437_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_image_compression_control_swapchain" number="438" type="device" depends="VK_EXT_image_compression_control" author="EXT" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_image_compression_control_swapchain&quot;"  name="VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_SEC_extension_439" number="439" author="SEC" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_SEC_EXTENSION_439_SPEC_VERSION"/>
-                <enum value="&quot;VK_SEC_extension_439&quot;"          name="VK_SEC_EXTENSION_439_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_440" number="440" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_QCOM_EXTENSION_440_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_440&quot;"         name="VK_QCOM_EXTENSION_440_EXTENSION_NAME"/>
-                <enum bitpos="7" extends="VkQueueFlagBits"              name="VK_QUEUE_RESERVED_7_BIT_QCOM"/>
-                <enum bitpos="1" extends="VkDeviceQueueCreateFlagBits"  name="VK_DEVICE_QUEUE_CREATE_RESERVED_1_BIT_QCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_image_processing" number="441" type="device" depends="VK_KHR_format_feature_flags2" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_image_processing&quot;"      name="VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM"/>
-                <enum offset="2" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"/>
-                <enum bitpos="4" extends="VkSamplerCreateFlagBits"      name="VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM"/>
-                <enum bitpos="20" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM"/>
-                <enum bitpos="21" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM"/>
-                <enum offset="0" extends="VkDescriptorType"             name="VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM"/>
-                <enum offset="1" extends="VkDescriptorType"             name="VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM"/>
-                <type name="VkImageViewSampleWeightCreateInfoQCOM"/>
-                <type name="VkPhysicalDeviceImageProcessingFeaturesQCOM"/>
-                <type name="VkPhysicalDeviceImageProcessingPropertiesQCOM"/>
-            </require>
-            <require depends="VK_KHR_format_feature_flags2">
-                <enum bitpos="34" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM"/>
-                <enum bitpos="35" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM"/>
-                <enum bitpos="36" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM"/>
-                <enum bitpos="37" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_COREAVI_extension_442" number="442" author="COREAVI" contact="Aidan Fabius @afabius" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_COREAVI_EXTENSION_442_SPEC_VERSION"/>
-                <enum value="&quot;VK_COREAVI_extension_442&quot;"          name="VK_COREAVI_EXTENSION_442_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_COREAVI_extension_443" number="443" author="COREAVI" contact="Aidan Fabius @afabius" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_COREAVI_EXTENSION_443_SPEC_VERSION"/>
-                <enum value="&quot;VK_COREAVI_extension_443&quot;"          name="VK_COREAVI_EXTENSION_443_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_COREAVI_extension_444" number="444" author="COREAVI" contact="Aidan Fabius @afabius" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_COREAVI_EXTENSION_444_SPEC_VERSION"/>
-                <enum value="&quot;VK_COREAVI_extension_444&quot;"          name="VK_COREAVI_EXTENSION_444_EXTENSION_NAME"/>
-                <enum extends="VkCommandPoolResetFlagBits" bitpos="1"       name="VK_COMMAND_POOL_RESET_RESERVED_1_BIT_COREAVI"/>
-            </require>
-        </extension>
-        <extension name="VK_COREAVI_extension_445" number="445" author="COREAVI" contact="Aidan Fabius @afabius" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_COREAVI_EXTENSION_445_SPEC_VERSION"/>
-                <enum value="&quot;VK_COREAVI_extension_445&quot;"          name="VK_COREAVI_EXTENSION_445_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_COREAVI_extension_446" number="446" author="COREAVI" contact="Aidan Fabius @afabius" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_COREAVI_EXTENSION_446_SPEC_VERSION"/>
-                <enum value="&quot;VK_COREAVI_extension_446&quot;"          name="VK_COREAVI_EXTENSION_446_EXTENSION_NAME"/>
-                <enum bitpos="24" extends="VkImageUsageFlagBits"            name="VK_IMAGE_USAGE_RESERVED_24_BIT_COREAVI"/>
-            </require>
-        </extension>
-        <extension name="VK_COREAVI_extension_447" number="447" author="COREAVI" contact="Aidan Fabius @afabius" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_COREAVI_EXTENSION_447_SPEC_VERSION"/>
-                <enum value="&quot;VK_COREAVI_extension_447&quot;"          name="VK_COREAVI_EXTENSION_447_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_SEC_extension_448" number="448" author="SEC" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_SEC_EXTENSION_448_SPEC_VERSION"/>
-                <enum value="&quot;VK_SEC_extension_448&quot;"          name="VK_SEC_EXTENSION_448_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_SEC_extension_449" number="449" author="SEC" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_SEC_EXTENSION_449_SPEC_VERSION"/>
-                <enum value="&quot;VK_SEC_extension_449&quot;"          name="VK_SEC_EXTENSION_449_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_SEC_extension_450" number="450" author="SEC" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_SEC_EXTENSION_450_SPEC_VERSION"/>
-                <enum value="&quot;VK_SEC_extension_450&quot;"          name="VK_SEC_EXTENSION_450_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_SEC_extension_451" number="451" author="SEC" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_SEC_EXTENSION_451_SPEC_VERSION"/>
-                <enum value="&quot;VK_SEC_extension_451&quot;"          name="VK_SEC_EXTENSION_451_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_nested_command_buffer" number="452" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_nested_command_buffer&quot;"  name="VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT"/>
-                <enum offset="0" extends="VkSubpassContents"            name="VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT"/>
-                <enum bitpos="4" extends="VkRenderingFlagBits"          name="VK_RENDERING_CONTENTS_INLINE_BIT_EXT"/>
-                <type                                                   name="VkPhysicalDeviceNestedCommandBufferFeaturesEXT"/>
-                <type                                                   name="VkPhysicalDeviceNestedCommandBufferPropertiesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_ARM_extension_453" number="453" author="Arm" contact="Kevin Petit @kpet" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_ARM_EXTENSION_453_SPEC_VERSION"/>
-                <enum value="&quot;VK_ARM_extension_453&quot;"          name="VK_ARM_EXTENSION_453_EXTENSION_NAME"/>
-                <enum bitpos="11" extends="VkQueueFlagBits"             name="VK_QUEUE_RESERVED_11_BIT_ARM"/>
-                <enum bitpos="43" extends="VkPipelineStageFlagBits2"    name="VK_PIPELINE_STAGE_2_RESERVED_43_BIT_ARM"/>
-                <enum bitpos="49" extends="VkAccessFlagBits2"           name="VK_ACCESS_2_RESERVED_49_BIT_ARM"/>
-                <enum bitpos="50" extends="VkAccessFlagBits2"           name="VK_ACCESS_2_RESERVED_50_BIT_ARM"/>
-                <enum bitpos="47" extends="VkFormatFeatureFlagBits2"    name="VK_FORMAT_FEATURE_2_RESERVED_47_BIT_ARM" />
-            </require>
-        </extension>
-        <extension name="VK_EXT_external_memory_acquire_unmodified" number="454" type="device" depends="VK_KHR_external_memory" author="EXT" contact="Lina Versace @versalinyaa" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                                         name="VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_external_memory_acquire_unmodified&quot;"     name="VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                              name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT"/>
-                <type name="VkExternalMemoryAcquireUnmodifiedEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_GOOGLE_extension_455" number="455" author="GOOGLE" contact="Lina Versace @versalinyaa" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_GOOGLE_EXTENSION_455_SPEC_VERSION"/>
-                <enum value="&quot;VK_GOOGLE_extension_455&quot;"       name="VK_GOOGLE_EXTENSION_455_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extended_dynamic_state3" number="456" type="device" depends="VK_KHR_get_physical_device_properties2" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
-            <require>
-                <enum value="2"                                              name="VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extended_dynamic_state3&quot;"     name="VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkDynamicState"                    name="VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT"/>
-                <enum offset="3" extends="VkDynamicState"                    name="VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT"/>
-                <enum offset="4" extends="VkDynamicState"                    name="VK_DYNAMIC_STATE_POLYGON_MODE_EXT"/>
-                <enum offset="5" extends="VkDynamicState"                    name="VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT"/>
-                <enum offset="6" extends="VkDynamicState"                    name="VK_DYNAMIC_STATE_SAMPLE_MASK_EXT"/>
-                <enum offset="7" extends="VkDynamicState"                    name="VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT"/>
-                <enum offset="8" extends="VkDynamicState"                    name="VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT"/>
-                <enum offset="9" extends="VkDynamicState"                    name="VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT"/>
-                <enum offset="10" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT"/>
-                <enum offset="11" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT"/>
-                <enum offset="12" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT"/>
-                <enum offset="13" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT"/>
-                <enum offset="14" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT"/>
-                <enum offset="15" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT"/>
-                <enum offset="16" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT"/>
-                <enum offset="17" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT"/>
-                <enum offset="18" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT"/>
-                <enum offset="19" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT"/>
-                <enum offset="20" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT"/>
-                <enum offset="21" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT"/>
-                <enum offset="22" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT"/>
-                <type name="VkPhysicalDeviceExtendedDynamicState3FeaturesEXT"/>
-                <type name="VkPhysicalDeviceExtendedDynamicState3PropertiesEXT"/>
-                <type name="VkColorBlendEquationEXT"/>
-                <type name="VkColorBlendAdvancedEXT"/>
-                <command name="vkCmdSetTessellationDomainOriginEXT"/>
-                <command name="vkCmdSetDepthClampEnableEXT"/>
-                <command name="vkCmdSetPolygonModeEXT"/>
-                <command name="vkCmdSetRasterizationSamplesEXT"/>
-                <command name="vkCmdSetSampleMaskEXT"/>
-                <command name="vkCmdSetAlphaToCoverageEnableEXT"/>
-                <command name="vkCmdSetAlphaToOneEnableEXT"/>
-                <command name="vkCmdSetLogicOpEnableEXT"/>
-                <command name="vkCmdSetColorBlendEnableEXT"/>
-                <command name="vkCmdSetColorBlendEquationEXT"/>
-                <command name="vkCmdSetColorWriteMaskEXT"/>
-                <command name="vkCmdSetRasterizationStreamEXT"/>
-                <command name="vkCmdSetConservativeRasterizationModeEXT"/>
-                <command name="vkCmdSetExtraPrimitiveOverestimationSizeEXT"/>
-                <command name="vkCmdSetDepthClipEnableEXT"/>
-                <command name="vkCmdSetSampleLocationsEnableEXT"/>
-                <command name="vkCmdSetColorBlendAdvancedEXT"/>
-                <command name="vkCmdSetProvokingVertexModeEXT"/>
-                <command name="vkCmdSetLineRasterizationModeEXT"/>
-                <command name="vkCmdSetLineStippleEnableEXT"/>
-                <command name="vkCmdSetDepthClipNegativeOneToOneEXT"/>
-            </require>
-            <require depends="VK_NV_clip_space_w_scaling">
-                <enum offset="23" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV"/>
-                <command name="vkCmdSetViewportWScalingEnableNV"/>
-            </require>
-            <require depends="VK_NV_viewport_swizzle">
-                <enum offset="24" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV"/>
-                <command name="vkCmdSetViewportSwizzleNV"/>
-            </require>
-            <require depends="VK_NV_fragment_coverage_to_color">
-                <enum offset="25" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV"/>
-                <enum offset="26" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV"/>
-                <command name="vkCmdSetCoverageToColorEnableNV"/>
-                <command name="vkCmdSetCoverageToColorLocationNV"/>
-            </require>
-            <require depends="VK_NV_framebuffer_mixed_samples">
-                <enum offset="27" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV"/>
-                <enum offset="28" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV"/>
-                <enum offset="29" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV"/>
-                <command name="vkCmdSetCoverageModulationModeNV"/>
-                <command name="vkCmdSetCoverageModulationTableEnableNV"/>
-                <command name="vkCmdSetCoverageModulationTableNV"/>
-            </require>
-            <require depends="VK_NV_shading_rate_image">
-                <enum offset="30" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV"/>
-                <command name="vkCmdSetShadingRateImageEnableNV"/>
-            </require>
-            <require depends="VK_NV_representative_fragment_test">
-                <enum offset="31" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV"/>
-                <command name="vkCmdSetRepresentativeFragmentTestEnableNV"/>
-            </require>
-            <require depends="VK_NV_coverage_reduction_mode">
-                <enum offset="32" extends="VkDynamicState"                   name="VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV"/>
-                <command name="vkCmdSetCoverageReductionModeNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_457" number="457" author="RASTERGRID" contact="Daniel Rakos @aqnuep" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_457_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_457&quot;"          name="VK_EXT_EXTENSION_457_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_458" number="458" author="RASTERGRID" contact="Daniel Rakos @aqnuep" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_458_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_458&quot;"          name="VK_EXT_EXTENSION_458_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_subpass_merge_feedback" number="459" type="device" author="EXT" contact="Ting Wei @catweiting" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="2"                                              name="VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_subpass_merge_feedback&quot;"      name="VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT"/>
-                <enum offset="2" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT"/>
-                <enum offset="3" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT"/>
-                <type name="VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT"/>
-                <type name="VkRenderPassCreationControlEXT"/>
-                <type name="VkRenderPassCreationFeedbackInfoEXT"/>
-                <type name="VkRenderPassCreationFeedbackCreateInfoEXT"/>
-                <type name="VkRenderPassSubpassFeedbackInfoEXT"/>
-                <type name="VkRenderPassSubpassFeedbackCreateInfoEXT"/>
-                <type name="VkSubpassMergeStatusEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_LUNARG_direct_driver_loading" number="460" type="instance" author="LUNARG" contact="Charles Giessen @charles-lunarg" supported="vulkan">
-            <require>
-                <enum value="1"                                           name="VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION"/>
-                <enum value="&quot;VK_LUNARG_direct_driver_loading&quot;" name="VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                name="VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG"/>
-                <enum offset="1" extends="VkStructureType"                name="VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG"/>
-                <type name="VkDirectDriverLoadingFlagsLUNARG" comment="Will add VkDirectDriverLoadingFlagBitsLUNARG when bits are defined in the future"/>
-                <type name="VkDirectDriverLoadingModeLUNARG"/>
-                <type name="VkDirectDriverLoadingInfoLUNARG"/>
-                <type name="VkDirectDriverLoadingListLUNARG"/>
-                <type name="PFN_vkGetInstanceProcAddrLUNARG"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_461" number="461" author="EXT" contact="Kevin Petit @kpet" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_461_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_461&quot;"          name="VK_EXT_EXTENSION_461_EXTENSION_NAME"/>
-                <enum bitpos="39" extends="VkFormatFeatureFlagBits2"    name="VK_FORMAT_FEATURE_2_RESERVED_39_BIT_EXT"/>
-                <enum bitpos="23" extends="VkImageUsageFlagBits"        name="VK_IMAGE_USAGE_RESERVED_23_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_462" number="462" author="EXT" contact="Joshua Ashton @Joshua-Ashton,Liam Middlebrook @liam-middlebrook" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_462_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_462&quot;"          name="VK_EXT_EXTENSION_462_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_module_identifier" number="463" type="device" depends="VK_KHR_get_physical_device_properties2+VK_EXT_pipeline_creation_cache_control" author="EXT" contact="Hans-Kristian Arntzen @HansKristian-Work" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_module_identifier&quot;"   name="VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT"/>
-                <enum name="VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT"/>
-                <type name="VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT"/>
-                <type name="VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT"/>
-                <type name="VkPipelineShaderStageModuleIdentifierCreateInfoEXT"/>
-                <type name="VkShaderModuleIdentifierEXT"/>
-                <command name="vkGetShaderModuleIdentifierEXT"/>
-                <command name="vkGetShaderModuleCreateInfoIdentifierEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_rasterization_order_attachment_access" number="464" type="device" depends="VK_KHR_get_physical_device_properties2" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan">
-            <require>
-                <enum value="1"                                                        name="VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_rasterization_order_attachment_access&quot;" name="VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType" extnumber="343" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT"/>
-                <type name="VkPipelineColorBlendStateCreateFlagBits"/>
-                <type name="VkPipelineDepthStencilStateCreateFlagBits"/>
-                <enum bitpos="0" extends="VkPipelineColorBlendStateCreateFlagBits"   name="VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT"/>
-                <enum bitpos="0" extends="VkPipelineDepthStencilStateCreateFlagBits" name="VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"/>
-                <enum bitpos="1" extends="VkPipelineDepthStencilStateCreateFlagBits" name="VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"/>
-                <enum bitpos="4" extends="VkSubpassDescriptionFlagBits"              name="VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT"/>
-                <enum bitpos="5" extends="VkSubpassDescriptionFlagBits"              name="VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"/>
-                <enum bitpos="6" extends="VkSubpassDescriptionFlagBits"              name="VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_optical_flow" number="465" depends="VK_KHR_get_physical_device_properties2+VK_KHR_format_feature_flags2+VK_KHR_synchronization2" type="device" author="NV" contact="Carsten Rohde @crohde" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_OPTICAL_FLOW_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_optical_flow&quot;"                name="VK_NV_OPTICAL_FLOW_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV"/>
-                <enum offset="1"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV"/>
-                <enum offset="2"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV"/>
-                <enum offset="3"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV"/>
-                <enum offset="4"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV"/>
-                <enum offset="5"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV"/>
-                <enum offset="10"  extends="VkStructureType"                name="VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV"/><comment>NV internal use only</comment>
-                <enum offset="0"  extends="VkFormat"                        name="VK_FORMAT_R16G16_S10_5_NV"/>
-                <enum offset="0"  extends="VkObjectType"                    name="VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV"/>
-                <enum bitpos="8"  extends="VkQueueFlagBits"                 name="VK_QUEUE_OPTICAL_FLOW_BIT_NV"/>
-                <enum bitpos="29" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV"/>
-                <enum bitpos="42" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV"/>
-                <enum bitpos="43" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV"/>
-                <enum bitpos="40" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV"/>
-                <enum bitpos="41" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV"/>
-                <enum bitpos="42" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV"/>
-                <type name="VkPhysicalDeviceOpticalFlowFeaturesNV"/>
-                <type name="VkPhysicalDeviceOpticalFlowPropertiesNV"/>
-                <type name="VkOpticalFlowUsageFlagBitsNV"/>
-                <type name="VkOpticalFlowUsageFlagsNV"/>
-                <type name="VkOpticalFlowImageFormatInfoNV"/>
-                <type name="VkOpticalFlowImageFormatPropertiesNV"/>
-                <type name="VkOpticalFlowGridSizeFlagBitsNV"/>
-                <type name="VkOpticalFlowGridSizeFlagsNV"/>
-                <type name="VkOpticalFlowPerformanceLevelNV"/>
-                <type name="VkOpticalFlowSessionBindingPointNV"/>
-                <type name="VkOpticalFlowSessionCreateFlagBitsNV"/>
-                <type name="VkOpticalFlowSessionCreateFlagsNV"/>
-                <type name="VkOpticalFlowExecuteFlagBitsNV"/>
-                <type name="VkOpticalFlowExecuteFlagsNV"/>
-                <type name="VkOpticalFlowSessionNV"/>
-                <type name="VkOpticalFlowSessionCreateInfoNV"/>
-                <type name="VkOpticalFlowSessionCreatePrivateDataInfoNV"/><comment>NV internal use only</comment>
-                <type name="VkOpticalFlowExecuteInfoNV"/>
-                <command name="vkGetPhysicalDeviceOpticalFlowImageFormatsNV"/>
-                <command name="vkCreateOpticalFlowSessionNV"/>
-                <command name="vkDestroyOpticalFlowSessionNV"/>
-                <command name="vkBindOpticalFlowSessionImageNV"/>
-                <command name="vkCmdOpticalFlowExecuteNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_legacy_dithering" number="466" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="vulkan" specialuse="glemulation">
-            <require>
-                <enum value="1"                                         name="VK_EXT_LEGACY_DITHERING_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_legacy_dithering&quot;"       name="VK_EXT_LEGACY_DITHERING_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT"/>
-                <enum bitpos="7" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT"/>
-                <type name="VkPhysicalDeviceLegacyDitheringFeaturesEXT"/>
-            </require>
-            <require depends="VK_VERSION_1_3">
-                <enum bitpos="3" extends="VkRenderingFlagBits"          name="VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT"/>
-            </require>
-            <require depends="VK_KHR_dynamic_rendering">
-                <enum bitpos="3" extends="VkRenderingFlagBits"          name="VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_pipeline_protected_access" number="467" type="device" depends="VK_KHR_get_physical_device_properties2" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_pipeline_protected_access&quot;"  name="VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT"/>
-                <enum bitpos="27" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT"/>
-                <enum bitpos="30" extends="VkPipelineCreateFlagBits"        name="VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT"/>
-                <type name="VkPhysicalDevicePipelineProtectedAccessFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_468" number="468" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_468_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_468&quot;"          name="VK_EXT_EXTENSION_468_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_ANDROID_external_format_resolve" number="469" type="device" depends="VK_ANDROID_external_memory_android_hardware_buffer" platform="android" author="ANDROID" contact="Chris Forbes @chrisforbes" specialuse="glemulation" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_SPEC_VERSION"/>
-                <enum value="&quot;VK_ANDROID_external_format_resolve&quot;"  name="VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID"/>
-                <type name="VkPhysicalDeviceExternalFormatResolveFeaturesANDROID"/>
-                <type name="VkPhysicalDeviceExternalFormatResolvePropertiesANDROID"/>
-                <type name="VkAndroidHardwareBufferFormatResolvePropertiesANDROID"/>
-            </require>
-            <require depends="VK_KHR_dynamic_rendering">
-                <enum bitpos="4" extends="VkResolveModeFlagBits"            name="VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_470" number="470" author="AMD" contact="Stu Smith" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_470_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_470&quot;"          name="VK_AMD_EXTENSION_470_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_maintenance5" number="471" type="device" depends="VK_VERSION_1_1+VK_KHR_dynamic_rendering" author="KHR" contact="Stu Smith @stu-s" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_KHR_MAINTENANCE_5_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_maintenance5&quot;"           name="VK_KHR_MAINTENANCE_5_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR"/>
-                <enum offset="1" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR"/>
-                <enum offset="3" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR"/>
-                <enum offset="4" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR"/>
-                <type name="VkPhysicalDeviceMaintenance5FeaturesKHR"/>
-                <type name="VkPhysicalDeviceMaintenance5PropertiesKHR"/>
-                <enum offset="0" extends="VkFormat"                     name="VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR"/>
-                <enum offset="1" extends="VkFormat"                     name="VK_FORMAT_A8_UNORM_KHR"/>
-                <command name="vkCmdBindIndexBuffer2KHR"/>
-                <command name="vkGetRenderingAreaGranularityKHR"/>
-                <type name="VkRenderingAreaInfoKHR"/>
-                <command name="vkGetDeviceImageSubresourceLayoutKHR"/>
-                <command name="vkGetImageSubresourceLayout2KHR"/>
-                <type name="VkDeviceImageSubresourceInfoKHR"/>
-                <type name="VkImageSubresource2KHR"/>
-                <type name="VkSubresourceLayout2KHR"/>
-                <enum offset="2" extends="VkStructureType" extnumber="339" name="VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR"/>
-                <enum offset="3" extends="VkStructureType" extnumber="339" name="VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR"/>
-            </require>
-            <require comment="Split off new 64-bit flags separately, for the moment">
-                <type name="VkPipelineCreateFlags2KHR"/>
-                <type name="VkPipelineCreateFlagBits2KHR"/>
-                <type name="VkPipelineCreateFlags2CreateInfoKHR"/>
-                <type name="VkBufferUsageFlags2KHR"/>
-                <type name="VkBufferUsageFlagBits2KHR"/>
-                <type name="VkBufferUsageFlags2CreateInfoKHR"/>
-                <enum offset="5" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR"/>
-                <enum offset="6" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR"/>
-            </require>
-            <require depends="VK_VERSION_1_1,VK_KHR_device_group">
-                <enum bitpos="3"  extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"/>
-                <enum bitpos="4"  extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR"/>
-            </require>
-            <require depends="VK_NV_ray_tracing">
-                <enum bitpos="5"  extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV"/>
-            </require>
-            <require depends="VK_KHR_pipeline_executable_properties">
-                <enum bitpos="6"  extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR"/>
-                <enum bitpos="7"  extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"/>
-            </require>
-            <require depends="VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control">
-                <enum bitpos="8"  extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR"/>
-                <enum bitpos="9"  extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR"/>
-            </require>
-            <require depends="VK_EXT_graphics_pipeline_library">
-                <enum bitpos="10" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT"/>
-                <enum bitpos="23" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"/>
-            </require>
-            <require depends="VK_KHR_pipeline_library">
-                <enum bitpos="11" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR"/>
-            </require>
-            <require depends="VK_KHR_ray_tracing_pipeline">
-                <enum bitpos="12" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"/>
-                <enum bitpos="13" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR"/>
-                <enum bitpos="14" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"/>
-                <enum bitpos="15" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"/>
-                <enum bitpos="16" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"/>
-                <enum bitpos="17" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"/>
-                <enum bitpos="19" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"/>
-            </require>
-            <require depends="VK_NV_device_generated_commands">
-                <enum bitpos="18" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV"/>
-            </require>
-            <require depends="VK_NV_ray_tracing_motion_blur">
-                <enum bitpos="20" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV"/>
-            </require>
-            <require depends="VK_KHR_dynamic_rendering+VK_KHR_fragment_shading_rate">
-                <enum bitpos="21" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-            </require>
-            <require depends="VK_KHR_dynamic_rendering+VK_EXT_fragment_density_map">
-                <enum bitpos="22" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_opacity_micromap">
-                <enum bitpos="24" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_attachment_feedback_loop_layout">
-                <enum bitpos="25" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"/>
-                <enum bitpos="26" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_pipeline_protected_access">
-                <enum bitpos="27" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT"/>
-                <enum bitpos="30" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT"/>
-            </require>
-            <require depends="VK_NV_displacement_micromap">
-                <enum bitpos="28" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"/>
-            </require>
-            <require depends="VK_EXT_descriptor_buffer">
-                <enum bitpos="29" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_conditional_rendering">
-                <enum bitpos="9"  extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT"/>
-            </require>
-            <require depends="VK_KHR_ray_tracing_pipeline">
-                <enum bitpos="10" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR"/>
-            </require>
-            <require depends="VK_NV_ray_tracing">
-                <enum extends="VkBufferUsageFlagBits2KHR"                name="VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV" alias="VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR"/>
-            </require>
-            <require depends="VK_EXT_transform_feedback">
-                <enum bitpos="11" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"/>
-                <enum bitpos="12" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"/>
-            </require>
-            <require depends="VK_KHR_video_decode_queue">
-                <enum bitpos="13" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR"/>
-                <enum bitpos="14" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR"/>
-            </require>
-            <require depends="VK_KHR_video_encode_queue">
-                <enum bitpos="15" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-                <enum bitpos="16" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-            </require>
-            <require depends="VK_VERSION_1_2,VK_KHR_buffer_device_address,VK_EXT_buffer_device_address">
-                <enum bitpos="17" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR"/>
-            </require>
-            <require depends="VK_KHR_acceleration_structure">
-                <enum bitpos="19" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"/>
-                <enum bitpos="20" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"/>
-            </require>
-            <require depends="VK_EXT_descriptor_buffer">
-                <enum bitpos="21" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT"/>
-                <enum bitpos="22" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT"/>
-                <enum bitpos="26" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_opacity_micromap">
-                <enum bitpos="23" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"/>
-                <enum bitpos="24" extends="VkBufferUsageFlagBits2KHR"    name="VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_472" number="472" author="AMD" contact="Stu Smith" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_472_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_472&quot;"          name="VK_AMD_EXTENSION_472_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_473" number="473" author="AMD" contact="Stu Smith" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_473_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_473&quot;"          name="VK_AMD_EXTENSION_473_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_474" number="474" author="AMD" contact="Stu Smith" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_474_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_474&quot;"          name="VK_AMD_EXTENSION_474_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_475" number="475" author="AMD" contact="Stu Smith" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_475_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_475&quot;"          name="VK_AMD_EXTENSION_475_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_476" number="476" author="AMD" contact="Stu Smith" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_476_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_476&quot;"          name="VK_AMD_EXTENSION_476_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_477" number="477" author="AMD" contact="Stu Smith" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_477_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_477&quot;"          name="VK_AMD_EXTENSION_477_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_478" number="478" author="AMD" contact="Stu Smith" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_478_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_478&quot;"          name="VK_AMD_EXTENSION_478_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_AMD_extension_479" number="479" author="AMD" contact="Stu Smith" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_AMD_EXTENSION_479_SPEC_VERSION"/>
-                <enum value="&quot;VK_AMD_extension_479&quot;"          name="VK_AMD_EXTENSION_479_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_480" number="480" author="EXT" contact="Daniel Stone" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_480_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_480&quot;"          name="VK_EXT_EXTENSION_480_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_481" number="481" author="EXT" contact="Daniel Stone" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_481_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_481&quot;"          name="VK_EXT_EXTENSION_481_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_ray_tracing_position_fetch" number="482" type="device" depends="VK_KHR_acceleration_structure" author="KHR" contact="Eric Werness" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                                     name="VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_ray_tracing_position_fetch&quot;"         name="VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR"/>
-                <enum bitpos="11" extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR"/>
-                <type name="VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_shader_object" number="483" depends="(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+(VK_KHR_dynamic_rendering,VK_VERSION_1_3)" type="device" author="EXT" contact="Daniel Story @daniel-story" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                            name="VK_EXT_SHADER_OBJECT_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_shader_object&quot;"             name="VK_EXT_SHADER_OBJECT_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT"/>
-                <enum offset="1" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                 name="VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT"/>
-                <enum extnumber="353" offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"/>
-                <enum extnumber="353" offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"/>
-                <enum extends="VkStructureType"                            name="VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO"/>
-                <enum offset="0" extends="VkObjectType"                    name="VK_OBJECT_TYPE_SHADER_EXT"/>
-                <enum offset="0" extends="VkResult"                        name="VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT"/>
-                <type name="VkShaderEXT"/>
-                <type name="VkShaderCreateFlagBitsEXT"/>
-                <type name="VkShaderCreateFlagsEXT"/>
-                <type name="VkShaderCodeTypeEXT"/>
-                <type name="VkPhysicalDeviceShaderObjectFeaturesEXT"/>
-                <type name="VkPhysicalDeviceShaderObjectPropertiesEXT"/>
-                <type name="VkShaderCreateInfoEXT"/>
-                <type name="VkShaderRequiredSubgroupSizeCreateInfoEXT"/>
-                <type name="VkVertexInputBindingDescription2EXT"/>
-                <type name="VkVertexInputAttributeDescription2EXT"/>
-                <type name="VkColorBlendEquationEXT"/>
-                <type name="VkColorBlendAdvancedEXT"/>
-                <command name="vkCreateShadersEXT"/>
-                <command name="vkDestroyShaderEXT"/>
-                <command name="vkGetShaderBinaryDataEXT"/>
-                <command name="vkCmdBindShadersEXT"/>
-                <command name="vkCmdSetCullModeEXT"/>
-                <command name="vkCmdSetFrontFaceEXT"/>
-                <command name="vkCmdSetPrimitiveTopologyEXT"/>
-                <command name="vkCmdSetViewportWithCountEXT"/>
-                <command name="vkCmdSetScissorWithCountEXT"/>
-                <command name="vkCmdBindVertexBuffers2EXT"/>
-                <command name="vkCmdSetDepthTestEnableEXT"/>
-                <command name="vkCmdSetDepthWriteEnableEXT"/>
-                <command name="vkCmdSetDepthCompareOpEXT"/>
-                <command name="vkCmdSetDepthBoundsTestEnableEXT"/>
-                <command name="vkCmdSetStencilTestEnableEXT"/>
-                <command name="vkCmdSetStencilOpEXT"/>
-                <command name="vkCmdSetVertexInputEXT"/>
-                <command name="vkCmdSetPatchControlPointsEXT"/>
-                <command name="vkCmdSetRasterizerDiscardEnableEXT"/>
-                <command name="vkCmdSetDepthBiasEnableEXT"/>
-                <command name="vkCmdSetLogicOpEXT"/>
-                <command name="vkCmdSetPrimitiveRestartEnableEXT"/>
-                <command name="vkCmdSetTessellationDomainOriginEXT"/>
-                <command name="vkCmdSetDepthClampEnableEXT"/>
-                <command name="vkCmdSetPolygonModeEXT"/>
-                <command name="vkCmdSetRasterizationSamplesEXT"/>
-                <command name="vkCmdSetSampleMaskEXT"/>
-                <command name="vkCmdSetAlphaToCoverageEnableEXT"/>
-                <command name="vkCmdSetAlphaToOneEnableEXT"/>
-                <command name="vkCmdSetLogicOpEnableEXT"/>
-                <command name="vkCmdSetColorBlendEnableEXT"/>
-                <command name="vkCmdSetColorBlendEquationEXT"/>
-                <command name="vkCmdSetColorWriteMaskEXT"/>
-                <command name="vkCmdSetRasterizationStreamEXT"/>
-                <command name="vkCmdSetConservativeRasterizationModeEXT"/>
-                <command name="vkCmdSetExtraPrimitiveOverestimationSizeEXT"/>
-                <command name="vkCmdSetDepthClipEnableEXT"/>
-                <command name="vkCmdSetSampleLocationsEnableEXT"/>
-                <command name="vkCmdSetColorBlendAdvancedEXT"/>
-                <command name="vkCmdSetProvokingVertexModeEXT"/>
-                <command name="vkCmdSetLineRasterizationModeEXT"/>
-                <command name="vkCmdSetLineStippleEnableEXT"/>
-                <command name="vkCmdSetDepthClipNegativeOneToOneEXT"/>
-            </require>
-            <require depends="VK_EXT_subgroup_size_control,VK_VERSION_1_3">
-                <enum bitpos="1" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"/>
-                <enum bitpos="2" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_mesh_shader,VK_NV_mesh_shader">
-                <enum bitpos="3" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT"/>
-            </require>
-            <require depends="VK_KHR_device_group,VK_VERSION_1_1">
-                <enum bitpos="4" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT"/>
-            </require>
-            <require depends="VK_KHR_fragment_shading_rate">
-                <enum bitpos="5" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT"/>
-            </require>
-            <require depends="VK_EXT_fragment_density_map">
-                <enum bitpos="6" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"/>
-            </require>
-            <require depends="VK_NV_clip_space_w_scaling">
-                <command name="vkCmdSetViewportWScalingEnableNV"/>
-            </require>
-            <require depends="VK_NV_viewport_swizzle">
-                <command name="vkCmdSetViewportSwizzleNV"/>
-            </require>
-            <require depends="VK_NV_fragment_coverage_to_color">
-                <command name="vkCmdSetCoverageToColorEnableNV"/>
-                <command name="vkCmdSetCoverageToColorLocationNV"/>
-            </require>
-            <require depends="VK_NV_framebuffer_mixed_samples">
-                <command name="vkCmdSetCoverageModulationModeNV"/>
-                <command name="vkCmdSetCoverageModulationTableEnableNV"/>
-                <command name="vkCmdSetCoverageModulationTableNV"/>
-            </require>
-            <require depends="VK_NV_shading_rate_image">
-                <command name="vkCmdSetShadingRateImageEnableNV"/>
-            </require>
-            <require depends="VK_NV_representative_fragment_test">
-                <command name="vkCmdSetRepresentativeFragmentTestEnableNV"/>
-            </require>
-            <require depends="VK_NV_coverage_reduction_mode">
-                <command name="vkCmdSetCoverageReductionModeNV"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_484" number="484" author="KHR" contact="Chris Glover @cdglove" supported="disabled">
-            <require>
-                <enum value="0"                                          name="VK_EXT_EXTENSION_484_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_484&quot;"           name="VK_EXT_EXTENSION_484_EXTENSION_NAME"/>
-                <enum bitpos="31" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_RESERVED_31_BIT_KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_tile_properties" number="485" type="device" depends="VK_KHR_get_physical_device_properties2" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
-            <require>
-                <enum value="1"                                               name="VK_QCOM_TILE_PROPERTIES_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_tile_properties&quot;"             name="VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME"/>
-                <command name="vkGetFramebufferTilePropertiesQCOM"/>
-                <command name="vkGetDynamicRenderingTilePropertiesQCOM"/>
-                <enum offset="0" extends="VkStructureType"                    name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM"/>
-                <enum offset="1" extends="VkStructureType"                    name="VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM"/>
-                <type name="VkPhysicalDeviceTilePropertiesFeaturesQCOM"/>
-                <type name="VkTilePropertiesQCOM"/>
-            </require>
-            <require depends="VK_KHR_dynamic_rendering">
-                <type name="VkRenderingInfoKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_SEC_amigo_profiling" number="486" type="device" depends="VK_KHR_get_physical_device_properties2" author="SEC" contact="Ralph Potter gitlab:@r_potter" supported="vulkan">
-            <require>
-                <enum value="1"                                               name="VK_SEC_AMIGO_PROFILING_SPEC_VERSION"/>
-                <enum value="&quot;VK_SEC_amigo_profiling&quot;"              name="VK_SEC_AMIGO_PROFILING_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                    name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC"/>
-                <enum offset="1" extends="VkStructureType"                    name="VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC"/>
-                <type name="VkPhysicalDeviceAmigoProfilingFeaturesSEC"/>
-                <type name="VkAmigoProfilingSubmitInfoSEC"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_487" number="487" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_487_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_487&quot;"          name="VK_EXT_EXTENSION_487_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_488" number="488" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_488_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_488&quot;"          name="VK_EXT_EXTENSION_488_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_multiview_per_view_viewports" number="489" type="device" author="QCOM" contact="Jeff Leger @jackohound" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="1"                                                name="VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_multiview_per_view_viewports&quot;" name="VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM"/>
-                <type name="VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_external_sci_sync2" number="490" author="NV" depends="VK_VERSION_1_1" platform="sci" type="device" contact="Kai Zhang @kazhang" supported="vulkansc">
-            <require>
-                <enum value="1"                                         name="VK_NV_EXTERNAL_SCI_SYNC_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_external_sci_sync2&quot;"      name="VK_NV_EXTERNAL_SCI_SYNC_2_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkObjectType"                name="VK_OBJECT_TYPE_SEMAPHORE_SCI_SYNC_POOL_NV"   comment="VkSemaphoreSciSyncPoolNV"/>
-                <enum offset="0"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV"/>
-                <enum offset="1"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV"/>
-                <enum offset="2"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV"/>
-                <type name="VkSemaphoreSciSyncPoolNV"/>
-                <type name="VkPhysicalDeviceExternalSciSync2FeaturesNV"/>
-                <type name="VkSemaphoreSciSyncPoolCreateInfoNV"/>
-                <type name="VkSemaphoreSciSyncCreateInfoNV"/>
-                <command name="vkCreateSemaphoreSciSyncPoolNV"/>
-                <command name="vkDestroySemaphoreSciSyncPoolNV"/>
-            </require>
-            <require comment="functionality re-used unmodified from VK_NV_external_sci_sync">
-                <enum extnumber="374" offset="0" extends="VkStructureType"   name="VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV"/>
-                <enum extnumber="374" offset="1" extends="VkStructureType"   name="VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV"/>
-                <enum extnumber="374" offset="2" extends="VkStructureType"   name="VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV"/>
-                <enum extnumber="374" offset="3" extends="VkStructureType"   name="VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV"/>
-                <enum bitpos="4" extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV"/>
-                <enum bitpos="5" extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV"/>
-                <type name="VkSciSyncClientTypeNV"/>
-                <type name="VkSciSyncPrimitiveTypeNV"/>
-                <type name="VkExportFenceSciSyncInfoNV"/>
-                <type name="VkImportFenceSciSyncInfoNV"/>
-                <type name="VkFenceGetSciSyncInfoNV"/>
-                <type name="VkSciSyncAttributesInfoNV"/>
-                <command name="vkGetFenceSciSyncFenceNV"/>
-                <command name="vkGetFenceSciSyncObjNV"/>
-                <command name="vkImportFenceSciSyncFenceNV"/>
-                <command name="vkImportFenceSciSyncObjNV"/>
-                <command name="vkGetPhysicalDeviceSciSyncAttributesNV"/>
-            </require>
-            <require depends="VKSC_VERSION_1_0" api="vulkansc">
-                <enum offset="3" extends="VkStructureType"         name="VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV"/>
-                <type name="VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_ray_tracing_invocation_reorder" number="491" type="device" depends="VK_KHR_ray_tracing_pipeline" author="NV" contact="Eric Werness @ewerness-nv" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_ray_tracing_invocation_reorder&quot;"  name="VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV"/>
-                <type name="VkRayTracingInvocationReorderModeNV"/>
-                <type name="VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV"/>
-                <type name="VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_492" number="492" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_NV_EXTENSION_492_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_492&quot;"           name="VK_NV_EXTENSION_492_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extended_sparse_address_space" number="493" type="device" author="NV" contact="Russell Chou @russellcnv" supported="vulkan">
-            <require>
-                <enum value="1"                                               name="VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extended_sparse_address_space&quot;" name="VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                    name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV"/>
-                <enum offset="1" extends="VkStructureType"                    name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV"/>
-                <type name="VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV"/>
-                <type name="VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_494" number="494" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_NV_EXTENSION_494_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_494&quot;"           name="VK_NV_EXTENSION_494_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_mutable_descriptor_type" number="495" type="device" supported="vulkan" author="EXT" contact="Joshua Ashton @Joshua-Ashton,Hans-Kristian Arntzen @HansKristian-Work" specialuse="d3demulation" depends="VK_KHR_maintenance3">
-            <require>
-                <enum value="1"                                                name="VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_mutable_descriptor_type&quot;"       name="VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType" extnumber="352"     name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"/>
-                <enum offset="2" extends="VkStructureType" extnumber="352"     name="VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT"/>
-                <enum offset="0" extends="VkDescriptorType" extnumber="352"    name="VK_DESCRIPTOR_TYPE_MUTABLE_EXT"/>
-                <enum bitpos="2" extends="VkDescriptorPoolCreateFlagBits"      name="VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT"/>
-                <enum bitpos="2" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT"/>
-                <type name="VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT"/>
-                <type name="VkMutableDescriptorTypeListEXT"/>
-                <type name="VkMutableDescriptorTypeCreateInfoEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_496" number="496" author="EXT" contact="Mike Blumenkrantz @zmike" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_496_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_496&quot;"              name="VK_EXT_EXTENSION_496_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_497" number="497" author="EXT" contact="Christophe Riccio @christophe" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_497_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_497&quot;"              name="VK_EXT_EXTENSION_497_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_ARM_shader_core_builtins" number="498" author="ARM" contact="Kevin Petit @kpet" type="device" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">
-            <require>
-                <enum value="2"                                         name="VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION"/>
-                <enum value="&quot;VK_ARM_shader_core_builtins&quot;"   name="VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM"/>
-                <enum offset="1"  extends="VkStructureType"             name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM"/>
-                <type name="VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM"/>
-                <type name="VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_pipeline_library_group_handles" number="499" type="device" depends="VK_KHR_ray_tracing_pipeline+VK_KHR_pipeline_library" author="EXT" contact="Hans-Kristian Arntzen @HansKristian-Work" supported="vulkan">
-            <require>
-                <enum value="1"                                                  name="VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_pipeline_library_group_handles&quot;"  name="VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                       name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT"/>
-                <type name="VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_dynamic_rendering_unused_attachments" number="500" author="EXT" contact="Piers Daniell @pdaniell-nv" type="device" depends="(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+(VK_KHR_dynamic_rendering,VK_VERSION_1_3)" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                                        name="VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_dynamic_rendering_unused_attachments&quot;"  name="VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME"/>
-                <enum offset="0"  extends="VkStructureType"                            name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT"/>
-                <type name="VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_501" number="501" author="SEC" contact="Chris Hambacher @chambacher" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_501_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_501&quot;"              name="VK_EXT_EXTENSION_501_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_502" number="502" author="HUAWEI" contact="Pan Gao @PanGao-h" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_502_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_502&quot;"              name="VK_EXT_EXTENSION_502_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_503" number="503" author="HUAWEI" contact="Pan Gao @PanGao-h" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_503_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_503&quot;"              name="VK_EXT_EXTENSION_503_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_504" number="504" author="NV" contact="Piers Daniell @pdaniell-nv" type="instance" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_NV_EXTENSION_504_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_504&quot;"               name="VK_NV_EXTENSION_504_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_505" number="505" author="EXT" contact="Jamie Madill @jmadill" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_505_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_505&quot;"              name="VK_EXT_EXTENSION_505_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_low_latency2" number="506" author="NV" contact="Charles Hansen @cshansen" type="device" supported="vulkan">
-            <require>
-                <enum value="1"                                             name="VK_NV_LOW_LATENCY_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_low_latency2&quot;"                name="VK_NV_LOW_LATENCY_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV"/>
-                <enum offset="5" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV"/>
-                <enum offset="6" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV"/>
-                <enum offset="7" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV"/>
-                <enum offset="8" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV"/>
-                <type name="VkLatencySleepModeInfoNV"/>
-                <type name="VkLatencySleepInfoNV"/>
-                <type name="VkSetLatencyMarkerInfoNV"/>
-                <type name="VkGetLatencyMarkerInfoNV"/>
-                <type name="VkLatencyTimingsFrameReportNV"/>
-                <type name="VkLatencyMarkerNV"/>
-                <type name="VkLatencySubmissionPresentIdNV"/>
-                <type name="VkSwapchainLatencyCreateInfoNV"/>
-                <type name="VkOutOfBandQueueTypeInfoNV"/>
-                <type name="VkOutOfBandQueueTypeNV"/>
-                <type name="VkLatencySurfaceCapabilitiesNV"/>
-                <command name="vkSetLatencySleepModeNV"/>
-                <command name="vkLatencySleepNV"/>
-                <command name="vkSetLatencyMarkerNV"/>
-                <command name="vkGetLatencyTimingsNV"/>
-                <command name="vkQueueNotifyOutOfBandNV"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_cooperative_matrix" number="507" type="device" depends="VK_KHR_get_physical_device_properties2" author="KHR" contact="Kevin Petit @kpet" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="2"                                              name="VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_cooperative_matrix&quot;"          name="VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR"/>
-                <enum offset="1" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR"/>
-                <enum offset="2" extends="VkStructureType"                   name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR"/>
-                <type name="VkCooperativeMatrixPropertiesKHR"/>
-                <type name="VkScopeKHR"/>
-                <type name="VkComponentTypeKHR"/>
-                <type name="VkPhysicalDeviceCooperativeMatrixFeaturesKHR"/>
-                <type name="VkPhysicalDeviceCooperativeMatrixPropertiesKHR"/>
-                <command name="vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_508" number="508" author="EXT" contact="Kevin Petit @kpet" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_508_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_508&quot;"              name="VK_EXT_EXTENSION_508_EXTENSION_NAME"/>
-                <enum bitpos="10" extends="VkQueueFlagBits"                 name="VK_QUEUE_RESERVED_10_BIT_EXT" />
-                <enum bitpos="42" extends="VkPipelineStageFlagBits2"        name="VK_PIPELINE_STAGE_2_RESERVED_42_BIT_EXT" />
-                <enum bitpos="47" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_RESERVED_47_BIT_EXT" />
-                <enum bitpos="48" extends="VkAccessFlagBits2"               name="VK_ACCESS_2_RESERVED_48_BIT_EXT" />
-                <enum bitpos="48" extends="VkFormatFeatureFlagBits2"        name="VK_FORMAT_FEATURE_2_RESERVED_48_BIT_EXT" />
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_509" number="509" author="EXT" contact="Kevin Petit @kpet" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_509_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_509&quot;"              name="VK_EXT_EXTENSION_509_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_MESA_extension_510" number="510" author="MESA" contact="Dave Airlie @airlied" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_MESA_EXTENSION_510_SPEC_VERSION"/>
-                <enum value="&quot;VK_MESA_extension_510&quot;"             name="VK_MESA_EXTENSION_510_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_multiview_per_view_render_areas" number="511" type="device" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
-            <require>
-                <enum value="1"                                                   name="VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_multiview_per_view_render_areas&quot;" name="VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                        name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM"/>
-                <enum offset="1" extends="VkStructureType"                        name="VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM"/>
-                <type name="VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM"/>
-               <type name="VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_512" number="512" author="EXT" contact="Jean-Noe Morissette @MagicPoncho" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_512_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_512&quot;"              name="VK_EXT_EXTENSION_512_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_513" number="513" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_513_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_513&quot;"              name="VK_KHR_EXTENSION_513_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_514" number="514" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_514_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_514&quot;"              name="VK_KHR_EXTENSION_514_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_515" number="515" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_515_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_515&quot;"              name="VK_KHR_EXTENSION_515_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_516" number="516" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_KHR_EXTENSION_516_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_516&quot;"              name="VK_KHR_EXTENSION_516_EXTENSION_NAME"/>
-                <enum bitpos="20" extends="VkImageCreateFlagBits"           name="VK_IMAGE_CREATE_RESERVED_20_BIT_KHR"/>
-                <enum bitpos="6" extends="VkBufferCreateFlagBits"           name="VK_BUFFER_CREATE_RESERVED_6_BIT_KHR"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_517" number="517" author="EXT" contact="Daniel Story" supported="disabled">
-            <require>
-                <enum value="0"                                                name="VK_EXT_EXTENSION_517_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_517&quot;"                 name="VK_EXT_EXTENSION_517_EXTENSION_NAME"/>
-                <enum bitpos="6" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_6_BIT_EXT"/>
-            </require>
-        </extension>
-        <extension name="VK_MESA_extension_518" number="518" author="MESA" contact="Dave Airlie @airlied" type="device" supported="disabled">
-            <require>
-                <enum value="0"                                             name="VK_MESA_EXTENSION_518_SPEC_VERSION"/>
-                <enum value="&quot;VK_MESA_extension_518&quot;"             name="VK_MESA_EXTENSION_518_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_image_processing2" number="519" type="device" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan" depends="VK_QCOM_image_processing">
-            <require>
-                <enum value="1"                                                   name="VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_image_processing2&quot;"               name="VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                        name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM"/>
-                <enum offset="1" extends="VkStructureType"                        name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM"/>
-                <enum offset="2" extends="VkStructureType"                        name="VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM"/>
-                <type name="VkPhysicalDeviceImageProcessing2FeaturesQCOM"/>
-                <type name="VkPhysicalDeviceImageProcessing2PropertiesQCOM"/>
-                <type name="VkSamplerBlockMatchWindowCreateInfoQCOM"/>
-                <type name="VkBlockMatchWindowCompareModeQCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_filter_cubic_weights" number="520" type="device" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan" depends="VK_EXT_filter_cubic">
-            <require>
-                <enum value="1"                                             name="VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_filter_cubic_weights&quot;"      name="VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM"/>
-                <type name="VkPhysicalDeviceCubicWeightsFeaturesQCOM"/>
-                <type name="VkSamplerCubicWeightsCreateInfoQCOM"/>
-                <type name="VkBlitImageCubicWeightsInfoQCOM"/>
-                <type name="VkCubicFilterWeightsQCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_ycbcr_degamma" number="521" type="device" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
-            <require>
-                <enum value="1"                                                   name="VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_ycbcr_degamma&quot;"                   name="VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                        name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM"/>
-                <enum offset="1" extends="VkStructureType"                        name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM"/>
-                <type name="VkPhysicalDeviceYcbcrDegammaFeaturesQCOM"/>
-                <type name="VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_filter_cubic_clamp" number="522" type="device" author="QCOM" depends="(VK_EXT_filter_cubic)+(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)" contact="Jeff Leger @jackohound" supported="vulkan">
-            <require>
-                <enum value="1"                                                   name="VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_filter_cubic_clamp&quot;"              name="VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                        name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM"/>
-                <enum offset="0" extends="VkSamplerReductionMode"                 name="VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM"/>
-                <type name="VkPhysicalDeviceCubicClampFeaturesQCOM"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_523" number="523" author="EXT" contact="Kevin Petit @kpet" supported="disabled">
-            <require>
-                <enum value="0"                                                name="VK_EXT_EXTENSION_523_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_523&quot;"                 name="VK_EXT_EXTENSION_523_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_524" number="524" author="EXT" contact="Tony Zlatinski @tzlatinski" supported="disabled">
-            <require>
-                <enum value="0"                                                name="VK_EXT_EXTENSION_524_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_524&quot;"                 name="VK_EXT_EXTENSION_524_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_attachment_feedback_loop_dynamic_state" number="525" type="device" author="EXT" depends="VK_KHR_get_physical_device_properties2+VK_EXT_attachment_feedback_loop_layout" contact="Mike Blumenkrantz @zmike" supported="vulkan" ratified="vulkan">
-            <require>
-                <enum value="1"                                                                name="VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_attachment_feedback_loop_dynamic_state&quot;" name="VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                                     name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT"/>
-                <enum offset="0" extends="VkDynamicState"                                      name="VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT"/>
-                <type name="VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT"/>
-                <command name="vkCmdSetAttachmentFeedbackLoopEnableEXT"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_526" number="526" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_526_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_526&quot;"          name="VK_EXT_EXTENSION_526_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_527" number="527" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_527_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_527&quot;"          name="VK_EXT_EXTENSION_527_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_528" number="528" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_528_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_528&quot;"          name="VK_EXT_EXTENSION_528_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_529" number="529" author="KHR" contact="Graeme Leese @gnl21" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_529_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_529&quot;"          name="VK_KHR_EXTENSION_529_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QNX_external_memory_screen_buffer" number="530" type="device" author="QNX" depends="((VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_KHR_dedicated_allocation),VK_VERSION_1_1)+VK_EXT_queue_family_foreign" platform="screen" contact="Mike Gorchak @mgorchak-blackberry, Aaron Ruby @aruby-blackberry" supported="vulkan,vulkansc">
-            <require>
-                <enum value="1"                                             name="VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION"/>
-                <enum value="&quot;VK_QNX_external_memory_screen_buffer&quot;" name="VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME"/>
-                <enum bitpos="14" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX"/>
-                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX"/>
-                <enum offset="4" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX"/>
-                <type name="VkScreenBufferPropertiesQNX"/>
-                <type name="VkScreenBufferFormatPropertiesQNX"/>
-                <type name="VkImportScreenBufferInfoQNX"/>
-                <type name="VkExternalFormatQNX"/>
-                <type name="VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX"/>
-                <command name="vkGetScreenBufferPropertiesQNX"/>
-            </require>
-        </extension>
-        <extension name="VK_MSFT_layered_driver" number="531" type="device" depends="VK_KHR_get_physical_device_properties2" author="MSFT" contact="Jesse Natalie @jenatali" supported="vulkan">
-            <require>
-                <enum value="1"                                         name="VK_MSFT_LAYERED_DRIVER_SPEC_VERSION"/>
-                <enum value="&quot;VK_MSFT_layered_driver&quot;"        name="VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT"/>
-                <type name="VkLayeredDriverUnderlyingApiMSFT"/>
-                <type name="VkPhysicalDeviceLayeredDriverPropertiesMSFT"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_532" number="532" author="KHR" contact="Tobias Hector @tobias" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_532_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_532&quot;"         name="VK_KHR_EXTENSION_532_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_533" number="533" author="EXT" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_533_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_533&quot;"          name="VK_EXT_EXTENSION_533_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_534" number="534" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_534_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_534&quot;"          name="VK_KHR_EXTENSION_534_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_535" number="535" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_535_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_535&quot;"          name="VK_KHR_EXTENSION_535_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_536" number="536" type="device" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
-            <require>
-                <enum value="0"                                                   name="VK_QCOM_EXTENSION_536_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_536&quot;"                   name="VK_QCOM_EXTENSION_536_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_537" number="537" author="EXT" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_537_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_537&quot;"          name="VK_EXT_EXTENSION_537_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_538" number="538" author="EXT" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_538_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_538&quot;"          name="VK_EXT_EXTENSION_538_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_539" number="539" author="EXT" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_539_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_539&quot;"          name="VK_EXT_EXTENSION_539_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_540" number="540" author="EXT" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_540_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_540&quot;"          name="VK_EXT_EXTENSION_540_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_541" number="541" author="EXT" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_541_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_541&quot;"          name="VK_EXT_EXTENSION_541_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_542" number="542" author="EXT" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_542_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_542&quot;"          name="VK_EXT_EXTENSION_542_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_extension_543" number="543" author="EXT" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_EXT_EXTENSION_543_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_543&quot;"          name="VK_EXT_EXTENSION_543_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_544" number="544" author="KHR" contact="Daniel Rakos @aqnuep" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_544_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_544&quot;"          name="VK_KHR_EXTENSION_544_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_545" number="545" author="KHR" contact="Kevin Petit @kpet" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_545_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_545&quot;"          name="VK_KHR_EXTENSION_545_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_KHR_extension_546" number="546" author="KHR" contact="Jon Leech @oddhack" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_KHR_EXTENSION_546_SPEC_VERSION"/>
-                <enum value="&quot;VK_KHR_extension_546&quot;"          name="VK_KHR_EXTENSION_546_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_descriptor_pool_overallocation" number="547" type="device" author="NV" depends="VK_VERSION_1_1" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
-            <require>
-                <enum value="1"                                                 name="VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_descriptor_pool_overallocation&quot;"  name="VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                      name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV"/>
-                <enum bitpos="3" extends="VkDescriptorPoolCreateFlagBits"       name="VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV"/>
-                <enum bitpos="4" extends="VkDescriptorPoolCreateFlagBits"       name="VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV"/>
-                <type name="VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV"/>
-            </require>
-        </extension>
-        <extension name="VK_QCOM_extension_548" number="548" type="device" author="QCOM" contact="Patrick Boyle @pboyleQCOM" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_QCOM_EXTENSION_548_SPEC_VERSION"/>
-                <enum value="&quot;VK_QCOM_extension_548&quot;"         name="VK_QCOM_EXTENSION_548_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_549" number="549" author="NV" contact="Piers Daniell @pdaniell-nv" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_NV_EXTENSION_549_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_549&quot;"           name="VK_NV_EXTENSION_549_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_550" number="550" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_NV_EXTENSION_550_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_550&quot;"           name="VK_NV_EXTENSION_550_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_NV_extension_551" number="551" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
-            <require>
-                <enum value="0"                                         name="VK_NV_EXTENSION_551_SPEC_VERSION"/>
-                <enum value="&quot;VK_NV_extension_551&quot;"           name="VK_NV_EXTENSION_551_EXTENSION_NAME"/>
-            </require>
-        </extension>
-        <extension name="VK_EXT_external_memory_metal" number="602" type="device" depends="VK_KHR_external_memory,VK_VERSION_1_1" author="EXT" contact="Aitor Camacho Larrondo @aitor-lunarg" platform="metal" supported="vulkan">
-            <require>
-                <enum value="1"                                                name="VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_external_memory_metal&quot;"         name="VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME"/>
-                <enum offset="0" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT"/>
-                <enum offset="1" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT"/>
-                <enum offset="2" extends="VkStructureType"                     name="VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT"/>
-                <enum bitpos="16" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT"/>
-                <enum bitpos="17" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT"/>
-                <type name="VkImportMemoryMetalHandleInfoEXT"/>
-                <type name="VkMemoryMetalHandlePropertiesEXT"/>
-                <type name="VkMemoryGetMetalHandleInfoEXT"/>
-                <type name="MTLResource_id"/>
-                <command name="vkGetMemoryMetalHandleEXT"/>
-                <command name="vkGetMemoryMetalHandlePropertiesEXT"/>
-            </require>
-        </extension>
-    </extensions>
-    <formats>
-        <format name="VK_FORMAT_R4G4_UNORM_PACK8" class="8-bit" blockSize="1" texelsPerBlock="1" packed="8">
-            <component name="R" bits="4" numericFormat="UNORM"/>
-            <component name="G" bits="4" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R4G4B4A4_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="R" bits="4" numericFormat="UNORM"/>
-            <component name="G" bits="4" numericFormat="UNORM"/>
-            <component name="B" bits="4" numericFormat="UNORM"/>
-            <component name="A" bits="4" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_B4G4R4A4_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="B" bits="4" numericFormat="UNORM"/>
-            <component name="G" bits="4" numericFormat="UNORM"/>
-            <component name="R" bits="4" numericFormat="UNORM"/>
-            <component name="A" bits="4" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R5G6B5_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="R" bits="5" numericFormat="UNORM"/>
-            <component name="G" bits="6" numericFormat="UNORM"/>
-            <component name="B" bits="5" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_B5G6R5_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="B" bits="5" numericFormat="UNORM"/>
-            <component name="G" bits="6" numericFormat="UNORM"/>
-            <component name="R" bits="5" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R5G5B5A1_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="R" bits="5" numericFormat="UNORM"/>
-            <component name="G" bits="5" numericFormat="UNORM"/>
-            <component name="B" bits="5" numericFormat="UNORM"/>
-            <component name="A" bits="1" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_B5G5R5A1_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="B" bits="5" numericFormat="UNORM"/>
-            <component name="G" bits="5" numericFormat="UNORM"/>
-            <component name="R" bits="5" numericFormat="UNORM"/>
-            <component name="A" bits="1" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_A1R5G5B5_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="A" bits="1" numericFormat="UNORM"/>
-            <component name="R" bits="5" numericFormat="UNORM"/>
-            <component name="G" bits="5" numericFormat="UNORM"/>
-            <component name="B" bits="5" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="A" bits="1" numericFormat="UNORM"/>
-            <component name="B" bits="5" numericFormat="UNORM"/>
-            <component name="G" bits="5" numericFormat="UNORM"/>
-            <component name="R" bits="5" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_A8_UNORM_KHR" class="8-bit alpha" blockSize="1" texelsPerBlock="1">
-            <component name="A" bits="8" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R8_UNORM" class="8-bit" blockSize="1" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="UNORM"/>
-            <spirvimageformat name="R8"/>
-        </format>
-        <format name="VK_FORMAT_R8_SNORM" class="8-bit" blockSize="1" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SNORM"/>
-            <spirvimageformat name="R8Snorm"/>
-        </format>
-        <format name="VK_FORMAT_R8_USCALED" class="8-bit" blockSize="1" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_R8_SSCALED" class="8-bit" blockSize="1" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_R8_UINT" class="8-bit" blockSize="1" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="UINT"/>
-            <spirvimageformat name="R8ui"/>
-        </format>
-        <format name="VK_FORMAT_R8_SINT" class="8-bit" blockSize="1" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SINT"/>
-            <spirvimageformat name="R8i"/>
-        </format>
-        <format name="VK_FORMAT_R8_SRGB" class="8-bit" blockSize="1" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_R8G8_UNORM" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="UNORM"/>
-            <component name="G" bits="8" numericFormat="UNORM"/>
-            <spirvimageformat name="Rg8"/>
-        </format>
-        <format name="VK_FORMAT_R8G8_SNORM" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SNORM"/>
-            <component name="G" bits="8" numericFormat="SNORM"/>
-            <spirvimageformat name="Rg8Snorm"/>
-        </format>
-        <format name="VK_FORMAT_R8G8_USCALED" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="USCALED"/>
-            <component name="G" bits="8" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_R8G8_SSCALED" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SSCALED"/>
-            <component name="G" bits="8" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_R8G8_UINT" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="UINT"/>
-            <component name="G" bits="8" numericFormat="UINT"/>
-            <spirvimageformat name="Rg8ui"/>
-        </format>
-        <format name="VK_FORMAT_R8G8_SINT" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SINT"/>
-            <component name="G" bits="8" numericFormat="SINT"/>
-            <spirvimageformat name="Rg8i"/>
-        </format>
-        <format name="VK_FORMAT_R8G8_SRGB" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SRGB"/>
-            <component name="G" bits="8" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8_UNORM" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="UNORM"/>
-            <component name="G" bits="8" numericFormat="UNORM"/>
-            <component name="B" bits="8" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8_SNORM" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SNORM"/>
-            <component name="G" bits="8" numericFormat="SNORM"/>
-            <component name="B" bits="8" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8_USCALED" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="USCALED"/>
-            <component name="G" bits="8" numericFormat="USCALED"/>
-            <component name="B" bits="8" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8_SSCALED" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SSCALED"/>
-            <component name="G" bits="8" numericFormat="SSCALED"/>
-            <component name="B" bits="8" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8_UINT" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="UINT"/>
-            <component name="G" bits="8" numericFormat="UINT"/>
-            <component name="B" bits="8" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8_SINT" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SINT"/>
-            <component name="G" bits="8" numericFormat="SINT"/>
-            <component name="B" bits="8" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8_SRGB" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SRGB"/>
-            <component name="G" bits="8" numericFormat="SRGB"/>
-            <component name="B" bits="8" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8_UNORM" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="UNORM"/>
-            <component name="G" bits="8" numericFormat="UNORM"/>
-            <component name="R" bits="8" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8_SNORM" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="SNORM"/>
-            <component name="G" bits="8" numericFormat="SNORM"/>
-            <component name="R" bits="8" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8_USCALED" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="USCALED"/>
-            <component name="G" bits="8" numericFormat="USCALED"/>
-            <component name="R" bits="8" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8_SSCALED" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="SSCALED"/>
-            <component name="G" bits="8" numericFormat="SSCALED"/>
-            <component name="R" bits="8" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8_UINT" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="UINT"/>
-            <component name="G" bits="8" numericFormat="UINT"/>
-            <component name="R" bits="8" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8_SINT" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="SINT"/>
-            <component name="G" bits="8" numericFormat="SINT"/>
-            <component name="R" bits="8" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8_SRGB" class="24-bit" blockSize="3" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="SRGB"/>
-            <component name="G" bits="8" numericFormat="SRGB"/>
-            <component name="R" bits="8" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8A8_UNORM" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="UNORM"/>
-            <component name="G" bits="8" numericFormat="UNORM"/>
-            <component name="B" bits="8" numericFormat="UNORM"/>
-            <component name="A" bits="8" numericFormat="UNORM"/>
-            <spirvimageformat name="Rgba8"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8A8_SNORM" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SNORM"/>
-            <component name="G" bits="8" numericFormat="SNORM"/>
-            <component name="B" bits="8" numericFormat="SNORM"/>
-            <component name="A" bits="8" numericFormat="SNORM"/>
-            <spirvimageformat name="Rgba8Snorm"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8A8_USCALED" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="USCALED"/>
-            <component name="G" bits="8" numericFormat="USCALED"/>
-            <component name="B" bits="8" numericFormat="USCALED"/>
-            <component name="A" bits="8" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8A8_SSCALED" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SSCALED"/>
-            <component name="G" bits="8" numericFormat="SSCALED"/>
-            <component name="B" bits="8" numericFormat="SSCALED"/>
-            <component name="A" bits="8" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8A8_UINT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="UINT"/>
-            <component name="G" bits="8" numericFormat="UINT"/>
-            <component name="B" bits="8" numericFormat="UINT"/>
-            <component name="A" bits="8" numericFormat="UINT"/>
-            <spirvimageformat name="Rgba8ui"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8A8_SINT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SINT"/>
-            <component name="G" bits="8" numericFormat="SINT"/>
-            <component name="B" bits="8" numericFormat="SINT"/>
-            <component name="A" bits="8" numericFormat="SINT"/>
-            <spirvimageformat name="Rgba8i"/>
-        </format>
-        <format name="VK_FORMAT_R8G8B8A8_SRGB" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="8" numericFormat="SRGB"/>
-            <component name="G" bits="8" numericFormat="SRGB"/>
-            <component name="B" bits="8" numericFormat="SRGB"/>
-            <component name="A" bits="8" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8A8_UNORM" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="UNORM"/>
-            <component name="G" bits="8" numericFormat="UNORM"/>
-            <component name="R" bits="8" numericFormat="UNORM"/>
-            <component name="A" bits="8" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8A8_SNORM" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="SNORM"/>
-            <component name="G" bits="8" numericFormat="SNORM"/>
-            <component name="R" bits="8" numericFormat="SNORM"/>
-            <component name="A" bits="8" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8A8_USCALED" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="USCALED"/>
-            <component name="G" bits="8" numericFormat="USCALED"/>
-            <component name="R" bits="8" numericFormat="USCALED"/>
-            <component name="A" bits="8" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8A8_SSCALED" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="SSCALED"/>
-            <component name="G" bits="8" numericFormat="SSCALED"/>
-            <component name="R" bits="8" numericFormat="SSCALED"/>
-            <component name="A" bits="8" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8A8_UINT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="UINT"/>
-            <component name="G" bits="8" numericFormat="UINT"/>
-            <component name="R" bits="8" numericFormat="UINT"/>
-            <component name="A" bits="8" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8A8_SINT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="SINT"/>
-            <component name="G" bits="8" numericFormat="SINT"/>
-            <component name="R" bits="8" numericFormat="SINT"/>
-            <component name="A" bits="8" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8A8_SRGB" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="B" bits="8" numericFormat="SRGB"/>
-            <component name="G" bits="8" numericFormat="SRGB"/>
-            <component name="R" bits="8" numericFormat="SRGB"/>
-            <component name="A" bits="8" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_A8B8G8R8_UNORM_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="8" numericFormat="UNORM"/>
-            <component name="B" bits="8" numericFormat="UNORM"/>
-            <component name="G" bits="8" numericFormat="UNORM"/>
-            <component name="R" bits="8" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_A8B8G8R8_SNORM_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="8" numericFormat="SNORM"/>
-            <component name="B" bits="8" numericFormat="SNORM"/>
-            <component name="G" bits="8" numericFormat="SNORM"/>
-            <component name="R" bits="8" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_A8B8G8R8_USCALED_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="8" numericFormat="USCALED"/>
-            <component name="B" bits="8" numericFormat="USCALED"/>
-            <component name="G" bits="8" numericFormat="USCALED"/>
-            <component name="R" bits="8" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_A8B8G8R8_SSCALED_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="8" numericFormat="SSCALED"/>
-            <component name="B" bits="8" numericFormat="SSCALED"/>
-            <component name="G" bits="8" numericFormat="SSCALED"/>
-            <component name="R" bits="8" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_A8B8G8R8_UINT_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="8" numericFormat="UINT"/>
-            <component name="B" bits="8" numericFormat="UINT"/>
-            <component name="G" bits="8" numericFormat="UINT"/>
-            <component name="R" bits="8" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_A8B8G8R8_SINT_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="8" numericFormat="SINT"/>
-            <component name="B" bits="8" numericFormat="SINT"/>
-            <component name="G" bits="8" numericFormat="SINT"/>
-            <component name="R" bits="8" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_A8B8G8R8_SRGB_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="8" numericFormat="SRGB"/>
-            <component name="B" bits="8" numericFormat="SRGB"/>
-            <component name="G" bits="8" numericFormat="SRGB"/>
-            <component name="R" bits="8" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_A2R10G10B10_UNORM_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="UNORM"/>
-            <component name="R" bits="10" numericFormat="UNORM"/>
-            <component name="G" bits="10" numericFormat="UNORM"/>
-            <component name="B" bits="10" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_A2R10G10B10_SNORM_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="SNORM"/>
-            <component name="R" bits="10" numericFormat="SNORM"/>
-            <component name="G" bits="10" numericFormat="SNORM"/>
-            <component name="B" bits="10" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_A2R10G10B10_USCALED_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="USCALED"/>
-            <component name="R" bits="10" numericFormat="USCALED"/>
-            <component name="G" bits="10" numericFormat="USCALED"/>
-            <component name="B" bits="10" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_A2R10G10B10_SSCALED_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="SSCALED"/>
-            <component name="R" bits="10" numericFormat="SSCALED"/>
-            <component name="G" bits="10" numericFormat="SSCALED"/>
-            <component name="B" bits="10" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_A2R10G10B10_UINT_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="UINT"/>
-            <component name="R" bits="10" numericFormat="UINT"/>
-            <component name="G" bits="10" numericFormat="UINT"/>
-            <component name="B" bits="10" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_A2R10G10B10_SINT_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="SINT"/>
-            <component name="R" bits="10" numericFormat="SINT"/>
-            <component name="G" bits="10" numericFormat="SINT"/>
-            <component name="B" bits="10" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_A2B10G10R10_UNORM_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="UNORM"/>
-            <component name="B" bits="10" numericFormat="UNORM"/>
-            <component name="G" bits="10" numericFormat="UNORM"/>
-            <component name="R" bits="10" numericFormat="UNORM"/>
-            <spirvimageformat name="Rgb10A2"/>
-        </format>
-        <format name="VK_FORMAT_A2B10G10R10_SNORM_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="SNORM"/>
-            <component name="B" bits="10" numericFormat="SNORM"/>
-            <component name="G" bits="10" numericFormat="SNORM"/>
-            <component name="R" bits="10" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_A2B10G10R10_USCALED_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="USCALED"/>
-            <component name="B" bits="10" numericFormat="USCALED"/>
-            <component name="G" bits="10" numericFormat="USCALED"/>
-            <component name="R" bits="10" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_A2B10G10R10_SSCALED_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="SSCALED"/>
-            <component name="B" bits="10" numericFormat="SSCALED"/>
-            <component name="G" bits="10" numericFormat="SSCALED"/>
-            <component name="R" bits="10" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_A2B10G10R10_UINT_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="UINT"/>
-            <component name="B" bits="10" numericFormat="UINT"/>
-            <component name="G" bits="10" numericFormat="UINT"/>
-            <component name="R" bits="10" numericFormat="UINT"/>
-            <spirvimageformat name="Rgb10a2ui"/>
-        </format>
-        <format name="VK_FORMAT_A2B10G10R10_SINT_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="A" bits="2" numericFormat="SINT"/>
-            <component name="B" bits="10" numericFormat="SINT"/>
-            <component name="G" bits="10" numericFormat="SINT"/>
-            <component name="R" bits="10" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_R16_UNORM" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="UNORM"/>
-            <spirvimageformat name="R16"/>
-        </format>
-        <format name="VK_FORMAT_R16_SNORM" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SNORM"/>
-            <spirvimageformat name="R16Snorm"/>
-        </format>
-        <format name="VK_FORMAT_R16_USCALED" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_R16_SSCALED" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_R16_UINT" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="UINT"/>
-            <spirvimageformat name="R16ui"/>
-        </format>
-        <format name="VK_FORMAT_R16_SINT" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SINT"/>
-            <spirvimageformat name="R16i"/>
-        </format>
-        <format name="VK_FORMAT_R16_SFLOAT" class="16-bit" blockSize="2" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SFLOAT"/>
-            <spirvimageformat name="R16f"/>
-        </format>
-        <format name="VK_FORMAT_R16G16_UNORM" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="UNORM"/>
-            <component name="G" bits="16" numericFormat="UNORM"/>
-            <spirvimageformat name="Rg16"/>
-        </format>
-        <format name="VK_FORMAT_R16G16_SNORM" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SNORM"/>
-            <component name="G" bits="16" numericFormat="SNORM"/>
-            <spirvimageformat name="Rg16Snorm"/>
-        </format>
-        <format name="VK_FORMAT_R16G16_USCALED" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="USCALED"/>
-            <component name="G" bits="16" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_R16G16_SSCALED" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SSCALED"/>
-            <component name="G" bits="16" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_R16G16_UINT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="UINT"/>
-            <component name="G" bits="16" numericFormat="UINT"/>
-            <spirvimageformat name="Rg16ui"/>
-        </format>
-        <format name="VK_FORMAT_R16G16_SINT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SINT"/>
-            <component name="G" bits="16" numericFormat="SINT"/>
-            <spirvimageformat name="Rg16i"/>
-        </format>
-        <format name="VK_FORMAT_R16G16_SFLOAT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SFLOAT"/>
-            <component name="G" bits="16" numericFormat="SFLOAT"/>
-            <spirvimageformat name="Rg16f"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16_UNORM" class="48-bit" blockSize="6" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="UNORM"/>
-            <component name="G" bits="16" numericFormat="UNORM"/>
-            <component name="B" bits="16" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16_SNORM" class="48-bit" blockSize="6" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SNORM"/>
-            <component name="G" bits="16" numericFormat="SNORM"/>
-            <component name="B" bits="16" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16_USCALED" class="48-bit" blockSize="6" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="USCALED"/>
-            <component name="G" bits="16" numericFormat="USCALED"/>
-            <component name="B" bits="16" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16_SSCALED" class="48-bit" blockSize="6" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SSCALED"/>
-            <component name="G" bits="16" numericFormat="SSCALED"/>
-            <component name="B" bits="16" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16_UINT" class="48-bit" blockSize="6" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="UINT"/>
-            <component name="G" bits="16" numericFormat="UINT"/>
-            <component name="B" bits="16" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16_SINT" class="48-bit" blockSize="6" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SINT"/>
-            <component name="G" bits="16" numericFormat="SINT"/>
-            <component name="B" bits="16" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16_SFLOAT" class="48-bit" blockSize="6" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SFLOAT"/>
-            <component name="G" bits="16" numericFormat="SFLOAT"/>
-            <component name="B" bits="16" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16A16_UNORM" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="UNORM"/>
-            <component name="G" bits="16" numericFormat="UNORM"/>
-            <component name="B" bits="16" numericFormat="UNORM"/>
-            <component name="A" bits="16" numericFormat="UNORM"/>
-            <spirvimageformat name="Rgba16"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16A16_SNORM" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SNORM"/>
-            <component name="G" bits="16" numericFormat="SNORM"/>
-            <component name="B" bits="16" numericFormat="SNORM"/>
-            <component name="A" bits="16" numericFormat="SNORM"/>
-            <spirvimageformat name="Rgba16Snorm"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16A16_USCALED" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="USCALED"/>
-            <component name="G" bits="16" numericFormat="USCALED"/>
-            <component name="B" bits="16" numericFormat="USCALED"/>
-            <component name="A" bits="16" numericFormat="USCALED"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16A16_SSCALED" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SSCALED"/>
-            <component name="G" bits="16" numericFormat="SSCALED"/>
-            <component name="B" bits="16" numericFormat="SSCALED"/>
-            <component name="A" bits="16" numericFormat="SSCALED"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16A16_UINT" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="UINT"/>
-            <component name="G" bits="16" numericFormat="UINT"/>
-            <component name="B" bits="16" numericFormat="UINT"/>
-            <component name="A" bits="16" numericFormat="UINT"/>
-            <spirvimageformat name="Rgba16ui"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16A16_SINT" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SINT"/>
-            <component name="G" bits="16" numericFormat="SINT"/>
-            <component name="B" bits="16" numericFormat="SINT"/>
-            <component name="A" bits="16" numericFormat="SINT"/>
-            <spirvimageformat name="Rgba16i"/>
-        </format>
-        <format name="VK_FORMAT_R16G16B16A16_SFLOAT" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SFLOAT"/>
-            <component name="G" bits="16" numericFormat="SFLOAT"/>
-            <component name="B" bits="16" numericFormat="SFLOAT"/>
-            <component name="A" bits="16" numericFormat="SFLOAT"/>
-            <spirvimageformat name="Rgba16f"/>
-        </format>
-        <format name="VK_FORMAT_R32_UINT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="UINT"/>
-            <spirvimageformat name="R32ui"/>
-        </format>
-        <format name="VK_FORMAT_R32_SINT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="SINT"/>
-            <spirvimageformat name="R32i"/>
-        </format>
-        <format name="VK_FORMAT_R32_SFLOAT" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="SFLOAT"/>
-            <spirvimageformat name="R32f"/>
-        </format>
-        <format name="VK_FORMAT_R32G32_UINT" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="UINT"/>
-            <component name="G" bits="32" numericFormat="UINT"/>
-            <spirvimageformat name="Rg32ui"/>
-        </format>
-        <format name="VK_FORMAT_R32G32_SINT" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="SINT"/>
-            <component name="G" bits="32" numericFormat="SINT"/>
-            <spirvimageformat name="Rg32i"/>
-        </format>
-        <format name="VK_FORMAT_R32G32_SFLOAT" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="SFLOAT"/>
-            <component name="G" bits="32" numericFormat="SFLOAT"/>
-            <spirvimageformat name="Rg32f"/>
-        </format>
-        <format name="VK_FORMAT_R32G32B32_UINT" class="96-bit" blockSize="12" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="UINT"/>
-            <component name="G" bits="32" numericFormat="UINT"/>
-            <component name="B" bits="32" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_R32G32B32_SINT" class="96-bit" blockSize="12" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="SINT"/>
-            <component name="G" bits="32" numericFormat="SINT"/>
-            <component name="B" bits="32" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_R32G32B32_SFLOAT" class="96-bit" blockSize="12" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="SFLOAT"/>
-            <component name="G" bits="32" numericFormat="SFLOAT"/>
-            <component name="B" bits="32" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_R32G32B32A32_UINT" class="128-bit" blockSize="16" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="UINT"/>
-            <component name="G" bits="32" numericFormat="UINT"/>
-            <component name="B" bits="32" numericFormat="UINT"/>
-            <component name="A" bits="32" numericFormat="UINT"/>
-            <spirvimageformat name="Rgba32ui"/>
-        </format>
-        <format name="VK_FORMAT_R32G32B32A32_SINT" class="128-bit" blockSize="16" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="SINT"/>
-            <component name="G" bits="32" numericFormat="SINT"/>
-            <component name="B" bits="32" numericFormat="SINT"/>
-            <component name="A" bits="32" numericFormat="SINT"/>
-            <spirvimageformat name="Rgba32i"/>
-        </format>
-        <format name="VK_FORMAT_R32G32B32A32_SFLOAT" class="128-bit" blockSize="16" texelsPerBlock="1">
-            <component name="R" bits="32" numericFormat="SFLOAT"/>
-            <component name="G" bits="32" numericFormat="SFLOAT"/>
-            <component name="B" bits="32" numericFormat="SFLOAT"/>
-            <component name="A" bits="32" numericFormat="SFLOAT"/>
-            <spirvimageformat name="Rgba32f"/>
-        </format>
-        <format name="VK_FORMAT_R64_UINT" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="UINT"/>
-            <spirvimageformat name="R64ui"/>
-        </format>
-        <format name="VK_FORMAT_R64_SINT" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="SINT"/>
-            <spirvimageformat name="R64i"/>
-        </format>
-        <format name="VK_FORMAT_R64_SFLOAT" class="64-bit" blockSize="8" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_R64G64_UINT" class="128-bit" blockSize="16" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="UINT"/>
-            <component name="G" bits="64" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_R64G64_SINT" class="128-bit" blockSize="16" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="SINT"/>
-            <component name="G" bits="64" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_R64G64_SFLOAT" class="128-bit" blockSize="16" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="SFLOAT"/>
-            <component name="G" bits="64" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_R64G64B64_UINT" class="192-bit" blockSize="24" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="UINT"/>
-            <component name="G" bits="64" numericFormat="UINT"/>
-            <component name="B" bits="64" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_R64G64B64_SINT" class="192-bit" blockSize="24" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="SINT"/>
-            <component name="G" bits="64" numericFormat="SINT"/>
-            <component name="B" bits="64" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_R64G64B64_SFLOAT" class="192-bit" blockSize="24" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="SFLOAT"/>
-            <component name="G" bits="64" numericFormat="SFLOAT"/>
-            <component name="B" bits="64" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_R64G64B64A64_UINT" class="256-bit" blockSize="32" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="UINT"/>
-            <component name="G" bits="64" numericFormat="UINT"/>
-            <component name="B" bits="64" numericFormat="UINT"/>
-            <component name="A" bits="64" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_R64G64B64A64_SINT" class="256-bit" blockSize="32" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="SINT"/>
-            <component name="G" bits="64" numericFormat="SINT"/>
-            <component name="B" bits="64" numericFormat="SINT"/>
-            <component name="A" bits="64" numericFormat="SINT"/>
-        </format>
-        <format name="VK_FORMAT_R64G64B64A64_SFLOAT" class="256-bit" blockSize="32" texelsPerBlock="1">
-            <component name="R" bits="64" numericFormat="SFLOAT"/>
-            <component name="G" bits="64" numericFormat="SFLOAT"/>
-            <component name="B" bits="64" numericFormat="SFLOAT"/>
-            <component name="A" bits="64" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_B10G11R11_UFLOAT_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="B" bits="10" numericFormat="UFLOAT"/>
-            <component name="G" bits="11" numericFormat="UFLOAT"/>
-            <component name="R" bits="11" numericFormat="UFLOAT"/>
-            <spirvimageformat name="R11fG11fB10f"/>
-        </format>
-        <format name="VK_FORMAT_E5B9G9R9_UFLOAT_PACK32" class="32-bit" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="B" bits="9" numericFormat="UFLOAT"/>
-            <component name="G" bits="9" numericFormat="UFLOAT"/>
-            <component name="R" bits="9" numericFormat="UFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_D16_UNORM" class="D16" blockSize="2" texelsPerBlock="1">
-            <component name="D" bits="16" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_X8_D24_UNORM_PACK32" class="D24" blockSize="4" texelsPerBlock="1" packed="32">
-            <component name="D" bits="24" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_D32_SFLOAT" class="D32" blockSize="4" texelsPerBlock="1">
-            <component name="D" bits="32" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_S8_UINT" class="S8" blockSize="1" texelsPerBlock="1">
-            <component name="S" bits="8" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_D16_UNORM_S8_UINT" class="D16S8" blockSize="3" texelsPerBlock="1">
-            <component name="D" bits="16" numericFormat="UNORM"/>
-            <component name="S" bits="8" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_D24_UNORM_S8_UINT" class="D24S8" blockSize="4" texelsPerBlock="1">
-            <component name="D" bits="24" numericFormat="UNORM"/>
-            <component name="S" bits="8" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_D32_SFLOAT_S8_UINT" class="D32S8" blockSize="5" texelsPerBlock="1">
-            <component name="D" bits="32" numericFormat="SFLOAT"/>
-            <component name="S" bits="8" numericFormat="UINT"/>
-        </format>
-        <format name="VK_FORMAT_BC1_RGB_UNORM_BLOCK" class="BC1_RGB" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_BC1_RGB_SRGB_BLOCK" class="BC1_RGB" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_BC1_RGBA_UNORM_BLOCK" class="BC1_RGBA" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_BC1_RGBA_SRGB_BLOCK" class="BC1_RGBA" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_BC2_UNORM_BLOCK" class="BC2" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_BC2_SRGB_BLOCK" class="BC2" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_BC3_UNORM_BLOCK" class="BC3" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_BC3_SRGB_BLOCK" class="BC3" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_BC4_UNORM_BLOCK" class="BC4" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_BC4_SNORM_BLOCK" class="BC4" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_BC5_UNORM_BLOCK" class="BC5" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_BC5_SNORM_BLOCK" class="BC5" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="SNORM"/>
-            <component name="G" bits="compressed" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_BC6H_UFLOAT_BLOCK" class="BC6H" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="UFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="UFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="UFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_BC6H_SFLOAT_BLOCK" class="BC6H" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_BC7_UNORM_BLOCK" class="BC7" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_BC7_SRGB_BLOCK" class="BC7" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="BC">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK" class="ETC2_RGB" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="ETC2">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK" class="ETC2_RGB" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="ETC2">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK" class="ETC2_RGBA" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="ETC2">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK" class="ETC2_RGBA" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="ETC2">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK" class="ETC2_EAC_RGBA" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="ETC2">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK" class="ETC2_EAC_RGBA" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="ETC2">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_EAC_R11_UNORM_BLOCK" class="EAC_R" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="EAC">
-            <component name="R" bits="11" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_EAC_R11_SNORM_BLOCK" class="EAC_R" blockSize="8" texelsPerBlock="16" blockExtent="4,4,1" compressed="EAC">
-            <component name="R" bits="11" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_EAC_R11G11_UNORM_BLOCK" class="EAC_RG" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="EAC">
-            <component name="R" bits="11" numericFormat="UNORM"/>
-            <component name="G" bits="11" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_EAC_R11G11_SNORM_BLOCK" class="EAC_RG" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="EAC">
-            <component name="R" bits="11" numericFormat="SNORM"/>
-            <component name="G" bits="11" numericFormat="SNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_4x4_UNORM_BLOCK" class="ASTC_4x4" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_4x4_SRGB_BLOCK" class="ASTC_4x4" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_5x4_UNORM_BLOCK" class="ASTC_5x4" blockSize="16" texelsPerBlock="20" blockExtent="5,4,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_5x4_SRGB_BLOCK" class="ASTC_5x4" blockSize="16" texelsPerBlock="20" blockExtent="5,4,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_5x5_UNORM_BLOCK" class="ASTC_5x5" blockSize="16" texelsPerBlock="25" blockExtent="5,5,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_5x5_SRGB_BLOCK" class="ASTC_5x5" blockSize="16" texelsPerBlock="25" blockExtent="5,5,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_6x5_UNORM_BLOCK" class="ASTC_6x5" blockSize="16" texelsPerBlock="30" blockExtent="6,5,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_6x5_SRGB_BLOCK" class="ASTC_6x5" blockSize="16" texelsPerBlock="30" blockExtent="6,5,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_6x6_UNORM_BLOCK" class="ASTC_6x6" blockSize="16" texelsPerBlock="36" blockExtent="6,6,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_6x6_SRGB_BLOCK" class="ASTC_6x6" blockSize="16" texelsPerBlock="36" blockExtent="6,6,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_8x5_UNORM_BLOCK" class="ASTC_8x5" blockSize="16" texelsPerBlock="40" blockExtent="8,5,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_8x5_SRGB_BLOCK" class="ASTC_8x5" blockSize="16" texelsPerBlock="40" blockExtent="8,5,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_8x6_UNORM_BLOCK" class="ASTC_8x6" blockSize="16" texelsPerBlock="48" blockExtent="8,6,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_8x6_SRGB_BLOCK" class="ASTC_8x6" blockSize="16" texelsPerBlock="48" blockExtent="8,6,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_8x8_UNORM_BLOCK" class="ASTC_8x8" blockSize="16" texelsPerBlock="64" blockExtent="8,8,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_8x8_SRGB_BLOCK" class="ASTC_8x8" blockSize="16" texelsPerBlock="64" blockExtent="8,8,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x5_UNORM_BLOCK" class="ASTC_10x5" blockSize="16" texelsPerBlock="50" blockExtent="10,5,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x5_SRGB_BLOCK" class="ASTC_10x5" blockSize="16" texelsPerBlock="50" blockExtent="10,5,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x6_UNORM_BLOCK" class="ASTC_10x6" blockSize="16" texelsPerBlock="60" blockExtent="10,6,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x6_SRGB_BLOCK" class="ASTC_10x6" blockSize="16" texelsPerBlock="60" blockExtent="10,6,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x8_UNORM_BLOCK" class="ASTC_10x8" blockSize="16" texelsPerBlock="80" blockExtent="10,8,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x8_SRGB_BLOCK" class="ASTC_10x8" blockSize="16" texelsPerBlock="80" blockExtent="10,8,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x10_UNORM_BLOCK" class="ASTC_10x10" blockSize="16" texelsPerBlock="100" blockExtent="10,10,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x10_SRGB_BLOCK" class="ASTC_10x10" blockSize="16" texelsPerBlock="100" blockExtent="10,10,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_12x10_UNORM_BLOCK" class="ASTC_12x10" blockSize="16" texelsPerBlock="120" blockExtent="12,10,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_12x10_SRGB_BLOCK" class="ASTC_12x10" blockSize="16" texelsPerBlock="120" blockExtent="12,10,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_12x12_UNORM_BLOCK" class="ASTC_12x12" blockSize="16" texelsPerBlock="144" blockExtent="12,12,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_12x12_SRGB_BLOCK" class="ASTC_12x12" blockSize="16" texelsPerBlock="144" blockExtent="12,12,1" compressed="ASTC LDR">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_G8B8G8R8_422_UNORM" class="32-bit G8B8G8R8" blockSize="4" texelsPerBlock="1" blockExtent="2,1,1" chroma="422">
-            <component name="G" bits="8" numericFormat="UNORM"/>
-            <component name="B" bits="8" numericFormat="UNORM"/>
-            <component name="G" bits="8" numericFormat="UNORM"/>
-            <component name="R" bits="8" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_B8G8R8G8_422_UNORM" class="32-bit B8G8R8G8" blockSize="4" texelsPerBlock="1" blockExtent="2,1,1" chroma="422">
-            <component name="B" bits="8" numericFormat="UNORM"/>
-            <component name="G" bits="8" numericFormat="UNORM"/>
-            <component name="R" bits="8" numericFormat="UNORM"/>
-            <component name="G" bits="8" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM" class="8-bit 3-plane 420" blockSize="3" texelsPerBlock="1" chroma="420">
-            <component name="G" bits="8" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="8" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="8" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-            <plane index="1" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R8_UNORM"/>
-            <plane index="2" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R8_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM" class="8-bit 2-plane 420" blockSize="3" texelsPerBlock="1" chroma="420">
-            <component name="G" bits="8" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="8" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="8" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-            <plane index="1" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R8G8_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM" class="8-bit 3-plane 422" blockSize="3" texelsPerBlock="1" chroma="422">
-            <component name="G" bits="8" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="8" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="8" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-            <plane index="1" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-            <plane index="2" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM" class="8-bit 2-plane 422" blockSize="3" texelsPerBlock="1" chroma="422">
-            <component name="G" bits="8" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="8" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="8" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-            <plane index="1" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R8G8_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM" class="8-bit 3-plane 444" blockSize="3" texelsPerBlock="1" chroma="444">
-            <component name="G" bits="8" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="8" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="8" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-            <plane index="1" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-            <plane index="2" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R10X6_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="R" bits="10" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16" class="32-bit" blockSize="4" texelsPerBlock="1" packed="16">
-            <component name="R" bits="10" numericFormat="UNORM"/>
-            <component name="G" bits="10" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16" class="64-bit R10G10B10A10" blockSize="8" texelsPerBlock="1" packed="16" chroma="444">
-            <component name="R" bits="10" numericFormat="UNORM"/>
-            <component name="G" bits="10" numericFormat="UNORM"/>
-            <component name="B" bits="10" numericFormat="UNORM"/>
-            <component name="A" bits="10" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16" class="64-bit G10B10G10R10" blockSize="8" texelsPerBlock="1" blockExtent="2,1,1" packed="16" chroma="422">
-            <component name="G" bits="10" numericFormat="UNORM"/>
-            <component name="B" bits="10" numericFormat="UNORM"/>
-            <component name="G" bits="10" numericFormat="UNORM"/>
-            <component name="R" bits="10" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16" class="64-bit B10G10R10G10" blockSize="8" texelsPerBlock="1" blockExtent="2,1,1" packed="16" chroma="422">
-            <component name="B" bits="10" numericFormat="UNORM"/>
-            <component name="G" bits="10" numericFormat="UNORM"/>
-            <component name="R" bits="10" numericFormat="UNORM"/>
-            <component name="G" bits="10" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16" class="10-bit 3-plane 420" blockSize="6" texelsPerBlock="1" packed="16" chroma="420">
-            <component name="G" bits="10" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="10" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="10" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <plane index="2" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16" class="10-bit 2-plane 420" blockSize="6" texelsPerBlock="1" packed="16" chroma="420">
-            <component name="G" bits="10" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="10" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="10" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R10X6G10X6_UNORM_2PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16" class="10-bit 3-plane 422" blockSize="6" texelsPerBlock="1" packed="16" chroma="422">
-            <component name="G" bits="10" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="10" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="10" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <plane index="2" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16" class="10-bit 2-plane 422" blockSize="6" texelsPerBlock="1" packed="16" chroma="422">
-            <component name="G" bits="10" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="10" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="10" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R10X6G10X6_UNORM_2PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16" class="10-bit 3-plane 444" blockSize="6" texelsPerBlock="1" packed="16" chroma="444">
-            <component name="G" bits="10" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="10" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="10" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <plane index="2" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-        </format>
-        <format name="VK_FORMAT_R12X4_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="R" bits="12" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16" class="32-bit" blockSize="4" texelsPerBlock="1" packed="16">
-            <component name="R" bits="12" numericFormat="UNORM"/>
-            <component name="G" bits="12" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16" class="64-bit R12G12B12A12" blockSize="8" texelsPerBlock="1" packed="16" chroma="444">
-            <component name="R" bits="12" numericFormat="UNORM"/>
-            <component name="G" bits="12" numericFormat="UNORM"/>
-            <component name="B" bits="12" numericFormat="UNORM"/>
-            <component name="A" bits="12" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16" class="64-bit G12B12G12R12" blockSize="8" texelsPerBlock="1" blockExtent="2,1,1" packed="16" chroma="422">
-            <component name="G" bits="12" numericFormat="UNORM"/>
-            <component name="B" bits="12" numericFormat="UNORM"/>
-            <component name="G" bits="12" numericFormat="UNORM"/>
-            <component name="R" bits="12" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16" class="64-bit B12G12R12G12" blockSize="8" texelsPerBlock="1" blockExtent="2,1,1" packed="16" chroma="422">
-            <component name="B" bits="12" numericFormat="UNORM"/>
-            <component name="G" bits="12" numericFormat="UNORM"/>
-            <component name="R" bits="12" numericFormat="UNORM"/>
-            <component name="G" bits="12" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16" class="12-bit 3-plane 420" blockSize="6" texelsPerBlock="1" packed="16" chroma="420">
-            <component name="G" bits="12" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="12" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="12" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <plane index="2" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16" class="12-bit 2-plane 420" blockSize="6" texelsPerBlock="1" packed="16" chroma="420">
-            <component name="G" bits="12" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="12" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="12" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R12X4G12X4_UNORM_2PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16" class="12-bit 3-plane 422" blockSize="6" texelsPerBlock="1" packed="16" chroma="422">
-            <component name="G" bits="12" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="12" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="12" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <plane index="2" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16" class="12-bit 2-plane 422" blockSize="6" texelsPerBlock="1" packed="16" chroma="422">
-            <component name="G" bits="12" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="12" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="12" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R12X4G12X4_UNORM_2PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16" class="12-bit 3-plane 444" blockSize="6" texelsPerBlock="1" packed="16" chroma="444">
-            <component name="G" bits="12" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="12" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="12" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <plane index="2" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G16B16G16R16_422_UNORM" class="64-bit G16B16G16R16" blockSize="8" texelsPerBlock="1" blockExtent="2,1,1" chroma="422">
-            <component name="G" bits="16" numericFormat="UNORM"/>
-            <component name="B" bits="16" numericFormat="UNORM"/>
-            <component name="G" bits="16" numericFormat="UNORM"/>
-            <component name="R" bits="16" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_B16G16R16G16_422_UNORM" class="64-bit B16G16R16G16" blockSize="8" texelsPerBlock="1" blockExtent="2,1,1" chroma="422">
-            <component name="B" bits="16" numericFormat="UNORM"/>
-            <component name="G" bits="16" numericFormat="UNORM"/>
-            <component name="R" bits="16" numericFormat="UNORM"/>
-            <component name="G" bits="16" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM" class="16-bit 3-plane 420" blockSize="6" texelsPerBlock="1" chroma="420">
-            <component name="G" bits="16" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="16" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="16" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-            <plane index="1" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R16_UNORM"/>
-            <plane index="2" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R16_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM" class="16-bit 2-plane 420" blockSize="6" texelsPerBlock="1" chroma="420">
-            <component name="G" bits="16" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="16" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="16" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-            <plane index="1" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R16G16_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM" class="16-bit 3-plane 422" blockSize="6" texelsPerBlock="1" chroma="422">
-            <component name="G" bits="16" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="16" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="16" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-            <plane index="1" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-            <plane index="2" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM" class="16-bit 2-plane 422" blockSize="6" texelsPerBlock="1" chroma="422">
-            <component name="G" bits="16" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="16" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="16" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-            <plane index="1" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R16G16_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM" class="16-bit 3-plane 444" blockSize="6" texelsPerBlock="1" chroma="444">
-            <component name="G" bits="16" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="16" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="16" numericFormat="UNORM" planeIndex="2"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-            <plane index="1" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-            <plane index="2" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG" class="PVRTC1_2BPP" blockSize="8" texelsPerBlock="1" blockExtent="8,4,1" compressed="PVRTC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG" class="PVRTC1_4BPP" blockSize="8" texelsPerBlock="1" blockExtent="4,4,1" compressed="PVRTC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG" class="PVRTC2_2BPP" blockSize="8" texelsPerBlock="1" blockExtent="8,4,1" compressed="PVRTC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG" class="PVRTC2_4BPP" blockSize="8" texelsPerBlock="1" blockExtent="4,4,1" compressed="PVRTC">
-            <component name="R" bits="compressed" numericFormat="UNORM"/>
-            <component name="G" bits="compressed" numericFormat="UNORM"/>
-            <component name="B" bits="compressed" numericFormat="UNORM"/>
-            <component name="A" bits="compressed" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG" class="PVRTC1_2BPP" blockSize="8" texelsPerBlock="1" blockExtent="8,4,1" compressed="PVRTC">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG" class="PVRTC1_4BPP" blockSize="8" texelsPerBlock="1" blockExtent="4,4,1" compressed="PVRTC">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG" class="PVRTC2_2BPP" blockSize="8" texelsPerBlock="1" blockExtent="8,4,1" compressed="PVRTC">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG" class="PVRTC2_4BPP" blockSize="8" texelsPerBlock="1" blockExtent="4,4,1" compressed="PVRTC">
-            <component name="R" bits="compressed" numericFormat="SRGB"/>
-            <component name="G" bits="compressed" numericFormat="SRGB"/>
-            <component name="B" bits="compressed" numericFormat="SRGB"/>
-            <component name="A" bits="compressed" numericFormat="SRGB"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK" class="ASTC_4x4" blockSize="16" texelsPerBlock="16" blockExtent="4,4,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK" class="ASTC_5x4" blockSize="16" texelsPerBlock="20" blockExtent="5,4,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK" class="ASTC_5x5" blockSize="16" texelsPerBlock="25" blockExtent="5,5,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK" class="ASTC_6x5" blockSize="16" texelsPerBlock="30" blockExtent="6,5,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK" class="ASTC_6x6" blockSize="16" texelsPerBlock="36" blockExtent="6,6,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK" class="ASTC_8x5" blockSize="16" texelsPerBlock="40" blockExtent="8,5,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK" class="ASTC_8x6" blockSize="16" texelsPerBlock="48" blockExtent="8,6,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK" class="ASTC_8x8" blockSize="16" texelsPerBlock="64" blockExtent="8,8,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK" class="ASTC_10x5" blockSize="16" texelsPerBlock="50" blockExtent="10,5,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK" class="ASTC_10x6" blockSize="16" texelsPerBlock="60" blockExtent="10,6,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK" class="ASTC_10x8" blockSize="16" texelsPerBlock="80" blockExtent="10,8,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK" class="ASTC_10x10" blockSize="16" texelsPerBlock="100" blockExtent="10,10,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK" class="ASTC_12x10" blockSize="16" texelsPerBlock="120" blockExtent="12,10,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK" class="ASTC_12x12" blockSize="16" texelsPerBlock="144" blockExtent="12,12,1" compressed="ASTC HDR">
-            <component name="R" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="G" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="B" bits="compressed" numericFormat="SFLOAT"/>
-            <component name="A" bits="compressed" numericFormat="SFLOAT"/>
-        </format>
-        <format name="VK_FORMAT_G8_B8R8_2PLANE_444_UNORM" class="8-bit 2-plane 444" blockSize="3" texelsPerBlock="1" chroma="444">
-            <component name="G" bits="8" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="8" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="8" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R8_UNORM"/>
-            <plane index="1" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R8G8_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16" class="10-bit 2-plane 444" blockSize="6" texelsPerBlock="1" packed="16" chroma="444">
-            <component name="G" bits="10" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="10" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="10" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R10X6_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R10X6G10X6_UNORM_2PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16" class="12-bit 2-plane 444" blockSize="6" texelsPerBlock="1" packed="16" chroma="444">
-            <component name="G" bits="12" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="12" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="12" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R12X4_UNORM_PACK16"/>
-            <plane index="1" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R12X4G12X4_UNORM_2PACK16"/>
-        </format>
-        <format name="VK_FORMAT_G16_B16R16_2PLANE_444_UNORM" class="16-bit 2-plane 444" blockSize="6" texelsPerBlock="1" chroma="444">
-            <component name="G" bits="16" numericFormat="UNORM" planeIndex="0"/>
-            <component name="B" bits="16" numericFormat="UNORM" planeIndex="1"/>
-            <component name="R" bits="16" numericFormat="UNORM" planeIndex="1"/>
-            <plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R16_UNORM"/>
-            <plane index="1" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R16G16_UNORM"/>
-        </format>
-        <format name="VK_FORMAT_A4R4G4B4_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="A" bits="4" numericFormat="UNORM"/>
-            <component name="R" bits="4" numericFormat="UNORM"/>
-            <component name="G" bits="4" numericFormat="UNORM"/>
-            <component name="B" bits="4" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_A4B4G4R4_UNORM_PACK16" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
-            <component name="A" bits="4" numericFormat="UNORM"/>
-            <component name="B" bits="4" numericFormat="UNORM"/>
-            <component name="G" bits="4" numericFormat="UNORM"/>
-            <component name="R" bits="4" numericFormat="UNORM"/>
-        </format>
-        <format name="VK_FORMAT_R16G16_S10_5_NV" class="32-bit" blockSize="4" texelsPerBlock="1">
-            <component name="R" bits="16" numericFormat="SINT"/>
-            <component name="G" bits="16" numericFormat="SINT"/>
-        </format>
-    </formats>
-    <spirvextensions comment="SPIR-V Extensions allowed in Vulkan and what is required to use it">
-        <spirvextension name="SPV_KHR_variable_pointers">
-            <enable version="VK_VERSION_1_1"/>
-            <enable extension="VK_KHR_variable_pointers"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_shader_explicit_vertex_parameter">
-            <enable extension="VK_AMD_shader_explicit_vertex_parameter"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_gcn_shader">
-            <enable extension="VK_AMD_gcn_shader"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_gpu_shader_half_float">
-            <enable extension="VK_AMD_gpu_shader_half_float"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_gpu_shader_int16">
-            <enable extension="VK_AMD_gpu_shader_int16"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_shader_ballot">
-            <enable extension="VK_AMD_shader_ballot"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_shader_fragment_mask">
-            <enable extension="VK_AMD_shader_fragment_mask"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_shader_image_load_store_lod">
-            <enable extension="VK_AMD_shader_image_load_store_lod"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_shader_trinary_minmax">
-            <enable extension="VK_AMD_shader_trinary_minmax"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_texture_gather_bias_lod">
-            <enable extension="VK_AMD_texture_gather_bias_lod"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMD_shader_early_and_late_fragment_tests">
-            <enable extension="VK_AMD_shader_early_and_late_fragment_tests"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_shader_draw_parameters">
-            <enable version="VK_VERSION_1_1"/>
-            <enable extension="VK_KHR_shader_draw_parameters"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_8bit_storage">
-            <enable version="VK_VERSION_1_2"/>
-            <enable extension="VK_KHR_8bit_storage"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_16bit_storage">
-            <enable version="VK_VERSION_1_1"/>
-            <enable extension="VK_KHR_16bit_storage"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_shader_clock">
-            <enable extension="VK_KHR_shader_clock"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_float_controls">
-            <enable version="VK_VERSION_1_2"/>
-            <enable extension="VK_KHR_shader_float_controls"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_storage_buffer_storage_class">
-            <enable version="VK_VERSION_1_1"/>
-            <enable extension="VK_KHR_storage_buffer_storage_class"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_post_depth_coverage">
-            <enable extension="VK_EXT_post_depth_coverage"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_shader_stencil_export">
-            <enable extension="VK_EXT_shader_stencil_export"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_shader_ballot">
-            <enable extension="VK_EXT_shader_subgroup_ballot"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_subgroup_vote">
-            <enable extension="VK_EXT_shader_subgroup_vote"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_sample_mask_override_coverage">
-            <enable extension="VK_NV_sample_mask_override_coverage"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_geometry_shader_passthrough">
-            <enable extension="VK_NV_geometry_shader_passthrough"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_mesh_shader">
-            <enable extension="VK_NV_mesh_shader"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_viewport_array2">
-            <enable extension="VK_NV_viewport_array2"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_shader_subgroup_partitioned">
-            <enable extension="VK_NV_shader_subgroup_partitioned"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_shader_invocation_reorder">
-            <enable extension="VK_NV_ray_tracing_invocation_reorder"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_shader_viewport_index_layer">
-            <enable version="VK_VERSION_1_2"/>
-            <enable extension="VK_EXT_shader_viewport_index_layer"/>
-        </spirvextension>
-        <spirvextension name="SPV_NVX_multiview_per_view_attributes">
-            <enable extension="VK_NVX_multiview_per_view_attributes"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_descriptor_indexing">
-            <enable version="VK_VERSION_1_2"/>
-            <enable extension="VK_EXT_descriptor_indexing"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_vulkan_memory_model">
-            <enable version="VK_VERSION_1_2"/>
-            <enable extension="VK_KHR_vulkan_memory_model"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_compute_shader_derivatives">
-            <enable extension="VK_NV_compute_shader_derivatives"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_fragment_shader_barycentric">
-            <enable extension="VK_NV_fragment_shader_barycentric"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_shader_image_footprint">
-            <enable extension="VK_NV_shader_image_footprint"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_shading_rate">
-            <enable extension="VK_NV_shading_rate_image"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_ray_tracing">
-            <enable extension="VK_NV_ray_tracing"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_ray_tracing">
-            <enable extension="VK_KHR_ray_tracing_pipeline"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_ray_query">
-            <enable extension="VK_KHR_ray_query"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_ray_cull_mask">
-            <enable extension="VK_KHR_ray_tracing_maintenance1"/>
-        </spirvextension>
-        <spirvextension name="SPV_GOOGLE_hlsl_functionality1">
-            <enable extension="VK_GOOGLE_hlsl_functionality1"/>
-        </spirvextension>
-        <spirvextension name="SPV_GOOGLE_user_type">
-            <enable extension="VK_GOOGLE_user_type"/>
-        </spirvextension>
-        <spirvextension name="SPV_GOOGLE_decorate_string">
-            <enable extension="VK_GOOGLE_decorate_string"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_fragment_invocation_density">
-            <enable extension="VK_EXT_fragment_density_map"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_physical_storage_buffer">
-            <enable version="VK_VERSION_1_2"/>
-            <enable extension="VK_KHR_buffer_device_address"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_physical_storage_buffer">
-            <enable extension="VK_EXT_buffer_device_address"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_cooperative_matrix">
-            <enable extension="VK_NV_cooperative_matrix"/>
-        </spirvextension>
-        <spirvextension name="SPV_NV_shader_sm_builtins">
-            <enable extension="VK_NV_shader_sm_builtins"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_fragment_shader_interlock">
-            <enable extension="VK_EXT_fragment_shader_interlock"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_demote_to_helper_invocation">
-            <enable version="VK_VERSION_1_3"/>
-            <enable extension="VK_EXT_shader_demote_to_helper_invocation"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_fragment_shading_rate">
-            <enable extension="VK_KHR_fragment_shading_rate"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_non_semantic_info">
-            <enable version="VK_VERSION_1_3"/>
-            <enable extension="VK_KHR_shader_non_semantic_info"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_shader_image_int64">
-            <enable extension="VK_EXT_shader_image_atomic_int64"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_terminate_invocation">
-            <enable version="VK_VERSION_1_3"/>
-            <enable extension="VK_KHR_shader_terminate_invocation"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_multiview">
-            <enable version="VK_VERSION_1_1"/>
-            <enable extension="VK_KHR_multiview"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_workgroup_memory_explicit_layout">
-            <enable extension="VK_KHR_workgroup_memory_explicit_layout"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_shader_atomic_float_add">
-            <enable extension="VK_EXT_shader_atomic_float"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_fragment_shader_barycentric">
-            <enable extension="VK_KHR_fragment_shader_barycentric"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_subgroup_uniform_control_flow">
-            <enable version="VK_VERSION_1_3"/>
-            <enable extension="VK_KHR_shader_subgroup_uniform_control_flow"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_shader_atomic_float_min_max">
-            <enable extension="VK_EXT_shader_atomic_float2"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_shader_atomic_float16_add">
-            <enable extension="VK_EXT_shader_atomic_float2"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_fragment_fully_covered">
-            <enable extension="VK_EXT_conservative_rasterization"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_integer_dot_product">
-            <enable version="VK_VERSION_1_3"/>
-            <enable extension="VK_KHR_shader_integer_dot_product"/>
-        </spirvextension>
-        <spirvextension name="SPV_INTEL_shader_integer_functions2">
-            <enable extension="VK_INTEL_shader_integer_functions2"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_device_group">
-            <enable version="VK_VERSION_1_1"/>
-            <enable extension="VK_KHR_device_group"/>
-        </spirvextension>
-        <spirvextension name="SPV_QCOM_image_processing">
-            <enable extension="VK_QCOM_image_processing"/>
-        </spirvextension>
-        <spirvextension name="SPV_QCOM_image_processing2">
-            <enable extension="VK_QCOM_image_processing2"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_mesh_shader">
-            <enable extension="VK_EXT_mesh_shader"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_ray_tracing_position_fetch">
-            <enable extension="VK_KHR_ray_tracing_position_fetch"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_shader_tile_image">
-            <enable extension="VK_EXT_shader_tile_image"/>
-        </spirvextension>
-        <spirvextension name="SPV_EXT_opacity_micromap">
-            <enable extension="VK_EXT_opacity_micromap"/>
-        </spirvextension>
-        <spirvextension name="SPV_KHR_cooperative_matrix">
-            <enable extension="VK_KHR_cooperative_matrix"/>
-        </spirvextension>
-        <spirvextension name="SPV_ARM_core_builtins">
-            <enable extension="VK_ARM_shader_core_builtins"/>
-        </spirvextension>
-        <spirvextension name="SPV_AMDX_shader_enqueue">
-            <enable extension="VK_AMDX_shader_enqueue"/>
-        </spirvextension>
-    </spirvextensions>
-    <spirvcapabilities comment="SPIR-V Capabilities allowed in Vulkan and what is required to use it">
-        <spirvcapability name="Matrix">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="Shader">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="InputAttachment">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="Sampled1D">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="Image1D">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="SampledBuffer">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="ImageBuffer">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="ImageQuery">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="DerivativeControl">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="Geometry">
-            <enable struct="VkPhysicalDeviceFeatures" feature="geometryShader" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="Tessellation">
-            <enable struct="VkPhysicalDeviceFeatures" feature="tessellationShader" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="Float64">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderFloat64" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="Int64">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderInt64" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="Int64Atomics">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderBufferInt64Atomics" requires="VK_VERSION_1_2,VK_KHR_shader_atomic_int64"/>
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderSharedInt64Atomics" requires="VK_VERSION_1_2,VK_KHR_shader_atomic_int64"/>
-            <enable struct="VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT" feature="shaderImageInt64Atomics" requires="VK_EXT_shader_image_atomic_int64"/>
-        </spirvcapability>
-        <spirvcapability name="AtomicFloat16AddEXT">
-            <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderBufferFloat16AtomicAdd" requires="VK_EXT_shader_atomic_float2"/>
-            <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderSharedFloat16AtomicAdd" requires="VK_EXT_shader_atomic_float2"/>
-        </spirvcapability>
-        <spirvcapability name="AtomicFloat32AddEXT">
-            <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderBufferFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
-            <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderSharedFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
-            <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderImageFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
-        </spirvcapability>
-        <spirvcapability name="AtomicFloat64AddEXT">
-            <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderBufferFloat64AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
-            <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderSharedFloat64AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
-        </spirvcapability>
-        <spirvcapability name="AtomicFloat16MinMaxEXT">
-            <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderBufferFloat16AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
-            <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderSharedFloat16AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
-        </spirvcapability>
-        <spirvcapability name="AtomicFloat32MinMaxEXT">
-            <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderBufferFloat32AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
-            <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderSharedFloat32AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
-            <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderImageFloat32AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
-        </spirvcapability>
-        <spirvcapability name="AtomicFloat64MinMaxEXT">
-            <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderBufferFloat64AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
-            <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderSharedFloat64AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
-        </spirvcapability>
-        <spirvcapability name="Int64ImageEXT">
-            <enable struct="VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT" feature="shaderImageInt64Atomics" requires="VK_EXT_shader_image_atomic_int64"/>
-        </spirvcapability>
-        <spirvcapability name="Int16">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderInt16" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="TessellationPointSize">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderTessellationAndGeometryPointSize" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="GeometryPointSize">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderTessellationAndGeometryPointSize" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="ImageGatherExtended">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderImageGatherExtended" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="StorageImageMultisample">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageMultisample" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="UniformBufferArrayDynamicIndexing">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderUniformBufferArrayDynamicIndexing" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="SampledImageArrayDynamicIndexing">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderSampledImageArrayDynamicIndexing" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="StorageBufferArrayDynamicIndexing">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageBufferArrayDynamicIndexing" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="StorageImageArrayDynamicIndexing">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageArrayDynamicIndexing" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="ClipDistance">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderClipDistance" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="CullDistance">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderCullDistance" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="ImageCubeArray">
-            <enable struct="VkPhysicalDeviceFeatures" feature="imageCubeArray" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="SampleRateShading">
-            <enable struct="VkPhysicalDeviceFeatures" feature="sampleRateShading" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="SparseResidency">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderResourceResidency" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="MinLod">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderResourceMinLod" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="SampledCubeArray">
-            <enable struct="VkPhysicalDeviceFeatures" feature="imageCubeArray" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="ImageMSArray">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageMultisample" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="StorageImageExtendedFormats">
-            <enable version="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="InterpolationFunction">
-            <enable struct="VkPhysicalDeviceFeatures" feature="sampleRateShading" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="StorageImageReadWithoutFormat">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageReadWithoutFormat" requires="VK_VERSION_1_0"/>
-            <enable version="VK_VERSION_1_3"/>
-            <enable extension="VK_KHR_format_feature_flags2"/>
-        </spirvcapability>
-        <spirvcapability name="StorageImageWriteWithoutFormat">
-            <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageWriteWithoutFormat" requires="VK_VERSION_1_0"/>
-            <enable version="VK_VERSION_1_3"/>
-            <enable extension="VK_KHR_format_feature_flags2"/>
-        </spirvcapability>
-        <spirvcapability name="MultiViewport">
-            <enable struct="VkPhysicalDeviceFeatures" feature="multiViewport" requires="VK_VERSION_1_0"/>
-        </spirvcapability>
-        <spirvcapability name="DrawParameters">
-            <enable struct="VkPhysicalDeviceVulkan11Features" feature="shaderDrawParameters" requires="VK_VERSION_1_2"/>
-            <enable struct="VkPhysicalDeviceShaderDrawParametersFeatures" feature="shaderDrawParameters" requires="VK_VERSION_1_1"/>
-            <enable extension="VK_KHR_shader_draw_parameters"/>
-        </spirvcapability>
-        <spirvcapability name="MultiView">
-            <enable struct="VkPhysicalDeviceVulkan11Features" feature="multiview" requires="VK_VERSION_1_2"/>
-            <enable struct="VkPhysicalDeviceMultiviewFeatures" feature="multiview" requires="VK_KHR_multiview"/>
-        </spirvcapability>
-        <spirvcapability name="DeviceGroup">
-            <enable version="VK_VERSION_1_1"/>
-            <enable extension="VK_KHR_device_group"/>
-        </spirvcapability>
-        <spirvcapability name="VariablePointersStorageBuffer">
-            <enable struct="VkPhysicalDeviceVulkan11Features" feature="variablePointersStorageBuffer" requires="VK_VERSION_1_2"/>
-            <enable struct="VkPhysicalDeviceVariablePointersFeatures" feature="variablePointersStorageBuffer" requires="VK_KHR_variable_pointers"/>
-        </spirvcapability>
-        <spirvcapability name="VariablePointers">
-            <enable struct="VkPhysicalDeviceVulkan11Features" feature="variablePointers" requires="VK_VERSION_1_2"/>
-            <enable struct="VkPhysicalDeviceVariablePointersFeatures" feature="variablePointers" requires="VK_KHR_variable_pointers"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderClockKHR">
-            <enable extension="VK_KHR_shader_clock"/>
-        </spirvcapability>
-        <spirvcapability name="StencilExportEXT">
-            <enable extension="VK_EXT_shader_stencil_export"/>
-        </spirvcapability>
-        <spirvcapability name="SubgroupBallotKHR">
-            <enable extension="VK_EXT_shader_subgroup_ballot"/>
-        </spirvcapability>
-        <spirvcapability name="SubgroupVoteKHR">
-            <enable extension="VK_EXT_shader_subgroup_vote"/>
-        </spirvcapability>
-        <spirvcapability name="ImageReadWriteLodAMD">
-            <enable extension="VK_AMD_shader_image_load_store_lod"/>
-        </spirvcapability>
-        <spirvcapability name="ImageGatherBiasLodAMD">
-            <enable extension="VK_AMD_texture_gather_bias_lod"/>
-        </spirvcapability>
-        <spirvcapability name="FragmentMaskAMD">
-            <enable extension="VK_AMD_shader_fragment_mask"/>
-        </spirvcapability>
-        <spirvcapability name="SampleMaskOverrideCoverageNV">
-            <enable extension="VK_NV_sample_mask_override_coverage"/>
-        </spirvcapability>
-        <spirvcapability name="GeometryShaderPassthroughNV">
-            <enable extension="VK_NV_geometry_shader_passthrough"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderViewportIndex">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderOutputViewportIndex" requires="VK_VERSION_1_2"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderLayer">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderOutputLayer" requires="VK_VERSION_1_2"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderViewportIndexLayerEXT">
-            <enable extension="VK_EXT_shader_viewport_index_layer"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderViewportIndexLayerNV">
-            <enable extension="VK_NV_viewport_array2"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderViewportMaskNV">
-            <enable extension="VK_NV_viewport_array2"/>
-        </spirvcapability>
-        <spirvcapability name="PerViewAttributesNV">
-            <enable extension="VK_NVX_multiview_per_view_attributes"/>
-        </spirvcapability>
-        <spirvcapability name="StorageBuffer16BitAccess">
-            <enable struct="VkPhysicalDeviceVulkan11Features" feature="storageBuffer16BitAccess" requires="VK_VERSION_1_2"/>
-            <enable struct="VkPhysicalDevice16BitStorageFeatures" feature="storageBuffer16BitAccess" requires="VK_KHR_16bit_storage"/>
-        </spirvcapability>
-        <spirvcapability name="UniformAndStorageBuffer16BitAccess">
-            <enable struct="VkPhysicalDeviceVulkan11Features" feature="uniformAndStorageBuffer16BitAccess" requires="VK_VERSION_1_2"/>
-            <enable struct="VkPhysicalDevice16BitStorageFeatures" feature="uniformAndStorageBuffer16BitAccess" requires="VK_KHR_16bit_storage"/>
-        </spirvcapability>
-        <spirvcapability name="StoragePushConstant16">
-            <enable struct="VkPhysicalDeviceVulkan11Features" feature="storagePushConstant16" requires="VK_VERSION_1_2"/>
-            <enable struct="VkPhysicalDevice16BitStorageFeatures" feature="storagePushConstant16" requires="VK_KHR_16bit_storage"/>
-        </spirvcapability>
-        <spirvcapability name="StorageInputOutput16">
-            <enable struct="VkPhysicalDeviceVulkan11Features" feature="storageInputOutput16" requires="VK_VERSION_1_2"/>
-            <enable struct="VkPhysicalDevice16BitStorageFeatures" feature="storageInputOutput16" requires="VK_KHR_16bit_storage"/>
-        </spirvcapability>
-        <spirvcapability name="GroupNonUniform">
-            <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_BASIC_BIT" requires="VK_VERSION_1_1"/>
-        </spirvcapability>
-        <spirvcapability name="GroupNonUniformVote">
-            <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_VOTE_BIT" requires="VK_VERSION_1_1"/>
-        </spirvcapability>
-        <spirvcapability name="GroupNonUniformArithmetic">
-            <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_ARITHMETIC_BIT" requires="VK_VERSION_1_1"/>
-        </spirvcapability>
-        <spirvcapability name="GroupNonUniformBallot">
-            <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_BALLOT_BIT" requires="VK_VERSION_1_1"/>
-        </spirvcapability>
-        <spirvcapability name="GroupNonUniformShuffle">
-            <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_SHUFFLE_BIT" requires="VK_VERSION_1_1"/>
-        </spirvcapability>
-        <spirvcapability name="GroupNonUniformShuffleRelative">
-            <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT" requires="VK_VERSION_1_1"/>
-        </spirvcapability>
-        <spirvcapability name="GroupNonUniformClustered">
-            <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_CLUSTERED_BIT" requires="VK_VERSION_1_1"/>
-        </spirvcapability>
-        <spirvcapability name="GroupNonUniformQuad">
-            <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_QUAD_BIT" requires="VK_VERSION_1_1"/>
-        </spirvcapability>
-        <spirvcapability name="GroupNonUniformPartitionedNV">
-            <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV" requires="VK_NV_shader_subgroup_partitioned"/>
-        </spirvcapability>
-        <spirvcapability name="SampleMaskPostDepthCoverage">
-            <enable extension="VK_EXT_post_depth_coverage"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderNonUniform">
-            <enable version="VK_VERSION_1_2"/>
-            <enable extension="VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="RuntimeDescriptorArray">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="runtimeDescriptorArray" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="InputAttachmentArrayDynamicIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderInputAttachmentArrayDynamicIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="UniformTexelBufferArrayDynamicIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderUniformTexelBufferArrayDynamicIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="StorageTexelBufferArrayDynamicIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageTexelBufferArrayDynamicIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="UniformBufferArrayNonUniformIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderUniformBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="SampledImageArrayNonUniformIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderSampledImageArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="StorageBufferArrayNonUniformIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="StorageImageArrayNonUniformIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageImageArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="InputAttachmentArrayNonUniformIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderInputAttachmentArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="UniformTexelBufferArrayNonUniformIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderUniformTexelBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="StorageTexelBufferArrayNonUniformIndexing">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageTexelBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
-        </spirvcapability>
-        <spirvcapability name="FragmentFullyCoveredEXT">
-            <enable extension="VK_EXT_conservative_rasterization"/>
-        </spirvcapability>
-        <spirvcapability name="Float16">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderFloat16" requires="VK_VERSION_1_2,VK_KHR_shader_float16_int8"/>
-            <enable extension="VK_AMD_gpu_shader_half_float"/>
-        </spirvcapability>
-        <spirvcapability name="Int8">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderInt8" requires="VK_VERSION_1_2,VK_KHR_shader_float16_int8"/>
-        </spirvcapability>
-        <spirvcapability name="StorageBuffer8BitAccess">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="storageBuffer8BitAccess" requires="VK_VERSION_1_2,VK_KHR_8bit_storage"/>
-        </spirvcapability>
-        <spirvcapability name="UniformAndStorageBuffer8BitAccess">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="uniformAndStorageBuffer8BitAccess" requires="VK_VERSION_1_2,VK_KHR_8bit_storage"/>
-        </spirvcapability>
-        <spirvcapability name="StoragePushConstant8">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="storagePushConstant8" requires="VK_VERSION_1_2,VK_KHR_8bit_storage"/>
-        </spirvcapability>
-        <spirvcapability name="VulkanMemoryModel">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="vulkanMemoryModel" requires="VK_VERSION_1_2,VK_KHR_vulkan_memory_model"/>
-        </spirvcapability>
-        <spirvcapability name="VulkanMemoryModelDeviceScope">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="vulkanMemoryModelDeviceScope" requires="VK_VERSION_1_2,VK_KHR_vulkan_memory_model"/>
-        </spirvcapability>
-        <spirvcapability name="DenormPreserve">
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-        </spirvcapability>
-        <spirvcapability name="DenormFlushToZero">
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormFlushToZeroFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormFlushToZeroFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormFlushToZeroFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-        </spirvcapability>
-        <spirvcapability name="SignedZeroInfNanPreserve">
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderSignedZeroInfNanPreserveFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderSignedZeroInfNanPreserveFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderSignedZeroInfNanPreserveFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-        </spirvcapability>
-        <spirvcapability name="RoundingModeRTE">
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTEFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTEFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTEFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-        </spirvcapability>
-        <spirvcapability name="RoundingModeRTZ">
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTZFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTZFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-            <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTZFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-        </spirvcapability>
-        <spirvcapability name="ComputeDerivativeGroupQuadsNV">
-            <enable struct="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV" feature="computeDerivativeGroupQuads" requires="VK_NV_compute_shader_derivatives"/>
-        </spirvcapability>
-        <spirvcapability name="ComputeDerivativeGroupLinearNV">
-            <enable struct="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV" feature="computeDerivativeGroupLinear" requires="VK_NV_compute_shader_derivatives"/>
-        </spirvcapability>
-        <spirvcapability name="FragmentBarycentricNV">
-            <enable struct="VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV" feature="fragmentShaderBarycentric" requires="VK_NV_fragment_shader_barycentric"/>
-        </spirvcapability>
-        <spirvcapability name="ImageFootprintNV">
-            <enable struct="VkPhysicalDeviceShaderImageFootprintFeaturesNV" feature="imageFootprint" requires="VK_NV_shader_image_footprint"/>
-        </spirvcapability>
-        <spirvcapability name="ShadingRateNV">
-            <enable struct="VkPhysicalDeviceShadingRateImageFeaturesNV" feature="shadingRateImage" requires="VK_NV_shading_rate_image"/>
-        </spirvcapability>
-        <spirvcapability name="MeshShadingNV">
-            <enable extension="VK_NV_mesh_shader"/>
-        </spirvcapability>
-        <spirvcapability name="RayTracingKHR">
-            <enable struct="VkPhysicalDeviceRayTracingPipelineFeaturesKHR" feature="rayTracingPipeline" requires="VK_KHR_ray_tracing_pipeline"/>
-        </spirvcapability>
-        <spirvcapability name="RayQueryKHR">
-            <enable struct="VkPhysicalDeviceRayQueryFeaturesKHR" feature="rayQuery" requires="VK_KHR_ray_query"/>
-        </spirvcapability>
-        <spirvcapability name="RayTraversalPrimitiveCullingKHR">
-            <enable struct="VkPhysicalDeviceRayTracingPipelineFeaturesKHR" feature="rayTraversalPrimitiveCulling" requires="VK_KHR_ray_tracing_pipeline"/>
-            <enable struct="VkPhysicalDeviceRayQueryFeaturesKHR" feature="rayQuery" requires="VK_KHR_ray_query"/>
-        </spirvcapability>
-        <spirvcapability name="RayCullMaskKHR">
-            <enable struct="VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR" feature="rayTracingMaintenance1" requires="VK_KHR_ray_tracing_maintenance1"/>
-        </spirvcapability>
-        <spirvcapability name="RayTracingNV">
-            <enable extension="VK_NV_ray_tracing"/>
-        </spirvcapability>
-        <spirvcapability name="RayTracingMotionBlurNV">
-            <enable struct="VkPhysicalDeviceRayTracingMotionBlurFeaturesNV" feature="rayTracingMotionBlur" requires="VK_NV_ray_tracing_motion_blur"/>
-        </spirvcapability>
-        <spirvcapability name="TransformFeedback">
-            <enable struct="VkPhysicalDeviceTransformFeedbackFeaturesEXT" feature="transformFeedback" requires="VK_EXT_transform_feedback"/>
-        </spirvcapability>
-        <spirvcapability name="GeometryStreams">
-            <enable struct="VkPhysicalDeviceTransformFeedbackFeaturesEXT" feature="geometryStreams" requires="VK_EXT_transform_feedback"/>
-        </spirvcapability>
-        <spirvcapability name="FragmentDensityEXT">
-            <enable struct="VkPhysicalDeviceFragmentDensityMapFeaturesEXT" feature="fragmentDensityMap" requires="VK_EXT_fragment_density_map"/>
-        </spirvcapability>
-        <spirvcapability name="PhysicalStorageBufferAddresses">
-            <enable struct="VkPhysicalDeviceVulkan12Features" feature="bufferDeviceAddress" requires="VK_VERSION_1_2,VK_KHR_buffer_device_address"/>
-            <enable struct="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT" feature="bufferDeviceAddress" requires="VK_EXT_buffer_device_address" alias="bufferDeviceAddressEXT"/>
-        </spirvcapability>
-        <spirvcapability name="CooperativeMatrixNV">
-            <enable struct="VkPhysicalDeviceCooperativeMatrixFeaturesNV" feature="cooperativeMatrix" requires="VK_NV_cooperative_matrix"/>
-        </spirvcapability>
-        <spirvcapability name="IntegerFunctions2INTEL">
-            <enable struct="VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL" feature="shaderIntegerFunctions2" requires="VK_INTEL_shader_integer_functions2"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderSMBuiltinsNV">
-            <enable struct="VkPhysicalDeviceShaderSMBuiltinsFeaturesNV" feature="shaderSMBuiltins" requires="VK_NV_shader_sm_builtins"/>
-        </spirvcapability>
-        <spirvcapability name="FragmentShaderSampleInterlockEXT">
-            <enable struct="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" feature="fragmentShaderSampleInterlock" requires="VK_EXT_fragment_shader_interlock"/>
-        </spirvcapability>
-        <spirvcapability name="FragmentShaderPixelInterlockEXT">
-            <enable struct="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" feature="fragmentShaderPixelInterlock" requires="VK_EXT_fragment_shader_interlock"/>
-        </spirvcapability>
-        <spirvcapability name="FragmentShaderShadingRateInterlockEXT">
-            <enable struct="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" feature="fragmentShaderShadingRateInterlock" requires="VK_EXT_fragment_shader_interlock"/>
-            <enable struct="VkPhysicalDeviceShadingRateImageFeaturesNV" feature="shadingRateImage" requires="VK_NV_shading_rate_image"/>
-        </spirvcapability>
-        <spirvcapability name="DemoteToHelperInvocationEXT">
-            <enable struct="VkPhysicalDeviceVulkan13Features" feature="shaderDemoteToHelperInvocation" requires="VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation"/>
-            <enable struct="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT" feature="shaderDemoteToHelperInvocation" requires="VK_EXT_shader_demote_to_helper_invocation"/>
-        </spirvcapability>
-        <spirvcapability name="FragmentShadingRateKHR">
-            <enable struct="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" feature="pipelineFragmentShadingRate" requires="VK_KHR_fragment_shading_rate"/>
-            <enable struct="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" feature="primitiveFragmentShadingRate" requires="VK_KHR_fragment_shading_rate"/>
-            <enable struct="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" feature="attachmentFragmentShadingRate" requires="VK_KHR_fragment_shading_rate"/>
-        </spirvcapability>
-        <spirvcapability name="WorkgroupMemoryExplicitLayoutKHR">
-            <enable struct="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR" feature="workgroupMemoryExplicitLayout" requires="VK_KHR_workgroup_memory_explicit_layout"/>
-        </spirvcapability>
-        <spirvcapability name="WorkgroupMemoryExplicitLayout8BitAccessKHR">
-            <enable struct="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR" feature="workgroupMemoryExplicitLayout8BitAccess" requires="VK_KHR_workgroup_memory_explicit_layout"/>
-        </spirvcapability>
-        <spirvcapability name="WorkgroupMemoryExplicitLayout16BitAccessKHR">
-            <enable struct="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR" feature="workgroupMemoryExplicitLayout16BitAccess" requires="VK_KHR_workgroup_memory_explicit_layout"/>
-        </spirvcapability>
-        <spirvcapability name="DotProductInputAllKHR">
-            <enable struct="VkPhysicalDeviceVulkan13Features" feature="shaderIntegerDotProduct" requires="VK_VERSION_1_3,VK_KHR_shader_integer_dot_product"/>
-            <enable struct="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" feature="shaderIntegerDotProduct" requires="VK_KHR_shader_integer_dot_product"/>
-        </spirvcapability>
-        <spirvcapability name="DotProductInput4x8BitKHR">
-            <enable struct="VkPhysicalDeviceVulkan13Features" feature="shaderIntegerDotProduct" requires="VK_VERSION_1_3,VK_KHR_shader_integer_dot_product"/>
-            <enable struct="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" feature="shaderIntegerDotProduct" requires="VK_KHR_shader_integer_dot_product"/>
-        </spirvcapability>
-        <spirvcapability name="DotProductInput4x8BitPackedKHR">
-            <enable struct="VkPhysicalDeviceVulkan13Features" feature="shaderIntegerDotProduct" requires="VK_VERSION_1_3,VK_KHR_shader_integer_dot_product"/>
-            <enable struct="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" feature="shaderIntegerDotProduct" requires="VK_KHR_shader_integer_dot_product"/>
-        </spirvcapability>
-        <spirvcapability name="DotProductKHR">
-            <enable struct="VkPhysicalDeviceVulkan13Features" feature="shaderIntegerDotProduct" requires="VK_VERSION_1_3,VK_KHR_shader_integer_dot_product"/>
-            <enable struct="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" feature="shaderIntegerDotProduct" requires="VK_KHR_shader_integer_dot_product"/>
-        </spirvcapability>
-        <spirvcapability name="FragmentBarycentricKHR">
-            <enable struct="VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR" feature="fragmentShaderBarycentric" requires="VK_KHR_fragment_shader_barycentric"/>
-        </spirvcapability>
-        <spirvcapability name="TextureSampleWeightedQCOM">
-            <enable struct="VkPhysicalDeviceImageProcessingFeaturesQCOM" feature="textureSampleWeighted" requires="VK_QCOM_image_processing"/>
-        </spirvcapability>
-        <spirvcapability name="TextureBoxFilterQCOM">
-            <enable struct="VkPhysicalDeviceImageProcessingFeaturesQCOM" feature="textureBoxFilter" requires="VK_QCOM_image_processing"/>
-        </spirvcapability>
-        <spirvcapability name="TextureBlockMatchQCOM">
-            <enable struct="VkPhysicalDeviceImageProcessingFeaturesQCOM" feature="textureBlockMatch" requires="VK_QCOM_image_processing"/>
-        </spirvcapability>
-        <spirvcapability name="TextureBlockMatch2QCOM">
-            <enable struct="VkPhysicalDeviceImageProcessing2FeaturesQCOM" feature="textureBlockMatch2" requires="VK_QCOM_image_processing2"/>
-        </spirvcapability>
-        <spirvcapability name="MeshShadingEXT">
-            <enable extension="VK_EXT_mesh_shader"/>
-        </spirvcapability>
-        <spirvcapability name="RayTracingOpacityMicromapEXT">
-            <enable extension="VK_EXT_opacity_micromap"/>
-        </spirvcapability>
-        <spirvcapability name="CoreBuiltinsARM">
-            <enable struct="VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM" feature="shaderCoreBuiltins" requires="VK_ARM_shader_core_builtins"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderInvocationReorderNV">
-            <enable extension="VK_NV_ray_tracing_invocation_reorder"/>
-        </spirvcapability>
-        <spirvcapability name="ClusterCullingShadingHUAWEI">
-            <enable struct="VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI" feature="clustercullingShader" requires="VK_HUAWEI_cluster_culling_shader"/>
-        </spirvcapability>
-        <spirvcapability name="RayTracingPositionFetchKHR">
-            <enable struct="VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR" feature="rayTracingPositionFetch" requires="VK_KHR_ray_tracing_position_fetch"/>
-        </spirvcapability>
-        <spirvcapability name="TileImageColorReadAccessEXT">
-            <enable struct="VkPhysicalDeviceShaderTileImageFeaturesEXT" feature="shaderTileImageColorReadAccess" requires="VK_EXT_shader_tile_image"/>
-        </spirvcapability>
-        <spirvcapability name="TileImageDepthReadAccessEXT">
-            <enable struct="VkPhysicalDeviceShaderTileImageFeaturesEXT" feature="shaderTileImageDepthReadAccess" requires="VK_EXT_shader_tile_image"/>
-        </spirvcapability>
-        <spirvcapability name="TileImageStencilReadAccessEXT">
-            <enable struct="VkPhysicalDeviceShaderTileImageFeaturesEXT" feature="shaderTileImageStencilReadAccess" requires="VK_EXT_shader_tile_image"/>
-        </spirvcapability>
-        <spirvcapability name="CooperativeMatrixKHR">
-            <enable struct="VkPhysicalDeviceCooperativeMatrixFeaturesKHR" feature="cooperativeMatrix" requires="VK_KHR_cooperative_matrix"/>
-        </spirvcapability>
-        <spirvcapability name="ShaderEnqueueAMDX">
-            <enable struct="VkPhysicalDeviceShaderEnqueueFeaturesAMDX" feature="shaderEnqueue" requires="VK_AMDX_shader_enqueue"/>
-        </spirvcapability>
-    </spirvcapabilities>
-    <sync comment="Machine readable representation of the synchronization objects and their mappings">
-        <syncstage name="VK_PIPELINE_STAGE_2_NONE" alias="VK_PIPELINE_STAGE_NONE">
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT" alias="VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT">
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT" alias="VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT">
-            <syncsupport queues="graphics,compute"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT" alias="VK_PIPELINE_STAGE_VERTEX_INPUT_BIT">
-            <syncsupport queues="graphics"/>
-            <syncequivalent stage="VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT,VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT" alias="VK_PIPELINE_STAGE_VERTEX_SHADER_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT" alias="VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT" alias="VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT" alias="VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT" alias="VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT" alias="VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT" alias="VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT" alias="VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT" alias="VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT">
-            <syncsupport queues="compute"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT" alias="VK_PIPELINE_STAGE_TRANSFER_BIT">
-            <syncsupport queues="graphics,compute,transfer"/>
-            <syncequivalent stage="VK_PIPELINE_STAGE_2_COPY_BIT,VK_PIPELINE_STAGE_2_BLIT_BIT,VK_PIPELINE_STAGE_2_RESOLVE_BIT,VK_PIPELINE_STAGE_2_CLEAR_BIT,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT" alias="VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT">
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_HOST_BIT" alias="VK_PIPELINE_STAGE_HOST_BIT">
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT" alias="VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT">
-            <syncsupport queues="graphics"/>
-            <syncequivalent stage="VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT,VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT,VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT,VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT,VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT,VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT" alias="VK_PIPELINE_STAGE_ALL_COMMANDS_BIT">
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_COPY_BIT">
-            <syncsupport queues="graphics,compute,transfer"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_RESOLVE_BIT">
-            <syncsupport queues="graphics,compute,transfer"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_BLIT_BIT">
-            <syncsupport queues="graphics,compute,transfer"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_CLEAR_BIT">
-            <syncsupport queues="graphics,compute,transfer"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT">
-            <syncsupport queues="graphics"/>
-            <syncequivalent stage="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR">
-            <syncsupport queues="decode"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR">
-            <syncsupport queues="encode"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT" alias="VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT" alias="VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT">
-            <syncsupport queues="graphics,compute"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV" alias="VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV">
-            <syncsupport queues="graphics,compute"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR" alias="VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR" alias="VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR">
-            <syncsupport queues="compute"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR" alias="VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR">
-            <syncsupport queues="compute"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT" alias="VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT" alias="VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT" alias="VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR">
-            <syncsupport queues="graphics,compute,transfer"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT">
-            <syncsupport queues="compute"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI">
-            <syncsupport queues="graphics"/>
-        </syncstage>
-        <syncstage name="VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV">
-            <syncsupport queues="opticalflow"/>
-        </syncstage>
-        <syncaccess name="VK_ACCESS_2_NONE" alias="VK_ACCESS_NONE">
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT" alias="VK_ACCESS_INDIRECT_COMMAND_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_INDEX_READ_BIT" alias="VK_ACCESS_INDEX_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT,VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT" alias="VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT,VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_UNIFORM_READ_BIT" alias="VK_ACCESS_UNIFORM_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT" alias="VK_ACCESS_INPUT_ATTACHMENT_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_SHADER_READ_BIT" alias="VK_ACCESS_SHADER_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT,VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-            <syncequivalent access="VK_ACCESS_2_SHADER_SAMPLED_READ_BIT,VK_ACCESS_2_SHADER_STORAGE_READ_BIT,VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_SHADER_WRITE_BIT" alias="VK_ACCESS_SHADER_WRITE_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-            <syncequivalent access="VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT" alias="VK_ACCESS_COLOR_ATTACHMENT_READ_BIT">
-            <comment>Fragment shader stage is added by the VK_EXT_shader_tile_image extension</comment>
-            <syncsupport stage="VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT" alias="VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT" alias="VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT">
-            <comment>Fragment shader stage is added by the VK_EXT_shader_tile_image extension</comment>
-            <syncsupport stage="VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT,VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT" alias="VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT,VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_TRANSFER_READ_BIT" alias="VK_ACCESS_TRANSFER_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT,VK_PIPELINE_STAGE_2_COPY_BIT,VK_PIPELINE_STAGE_2_RESOLVE_BIT,VK_PIPELINE_STAGE_2_BLIT_BIT,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_TRANSFER_WRITE_BIT" alias="VK_ACCESS_TRANSFER_WRITE_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT,VK_PIPELINE_STAGE_2_COPY_BIT,VK_PIPELINE_STAGE_2_RESOLVE_BIT,VK_PIPELINE_STAGE_2_BLIT_BIT,VK_PIPELINE_STAGE_2_CLEAR_BIT,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_HOST_READ_BIT" alias="VK_ACCESS_HOST_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_HOST_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_HOST_WRITE_BIT" alias="VK_ACCESS_HOST_WRITE_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_HOST_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_MEMORY_READ_BIT" alias="VK_ACCESS_MEMORY_READ_BIT">
-            <comment>TODO/Suggestion. Introduce 'synclist' (could be a different name) element
-            that specifies the list of stages, accesses, etc. This list can be used by
-            'syncaccess' or 'syncstage' elements. For example, 'syncsupport' in addition to the
-            'stage' attribute can support 'list' attribute to reference 'synclist'.
-            We can have the lists defined for ALL stages and it can be shared between MEMORY_READ
-            and MEMORY_WRITE accesses. Similarly, ALL shader stages list is often used. This proposal
-            is a way to fix duplication problem. When new stage is added multiple places needs to be
-            updated. It is potential source of bugs. The expectation such setup will produce more
-            robust system and also more simple structure to review and validate.
-            </comment>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_MEMORY_WRITE_BIT" alias="VK_ACCESS_MEMORY_WRITE_BIT">
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_SHADER_SAMPLED_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_SHADER_STORAGE_READ_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT" alias="VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT" alias="VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT,VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT" alias="VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT" alias="VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV" alias="VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV" alias="VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR" alias="VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR" alias="VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR" alias="VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT" alias="VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT" alias="VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_MICROMAP_READ_BIT_EXT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT,VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV"/>
-        </syncaccess>
-        <syncaccess name="VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV">
-            <syncsupport stage="VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV"/>
-        </syncaccess>
-        <syncpipeline name="graphics primitive">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</syncpipelinestage>
-            <syncpipelinestage order="None" before="VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT">VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</syncpipelinestage>
-            <syncpipelinestage order="None">VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="graphics mesh" depends="VK_NV_mesh_shader,VK_EXT_mesh_shader">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</syncpipelinestage>
-            <syncpipelinestage order="None" before="VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT">VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</syncpipelinestage>
-            <syncpipelinestage order="None">VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="compute">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT</syncpipelinestage>
-            <syncpipelinestage order="None">VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="transfer">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_TRANSFER_BIT</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="host">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_HOST_BIT</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="subpass shading" depends="VK_HUAWEI_subpass_shading">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="command preprocessing" depends="VK_NV_device_generated_commands">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="acceleration structure build" depends="VK_KHR_acceleration_structure,VK_NV_ray_tracing">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="acceleration structure copy" depends="VK_KHR_acceleration_structure,VK_NV_ray_tracing">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="opacity micromap" depends="VK_EXT_opacity_micromap">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="ray tracing" depends="VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</syncpipelinestage>
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="video decode" depends="VK_KHR_video_decode_queue">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="video encode" depends="VK_KHR_video_encode_queue">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</syncpipelinestage>
-        </syncpipeline>
-        <syncpipeline name="optical flow" depends="VK_NV_optical_flow">
-            <syncpipelinestage>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</syncpipelinestage>
-        </syncpipeline>
-    </sync>
-</registry>
diff --git a/codegen/vulkan/vulkan-docs-next/xml/vk_gfxstream.xml b/codegen/vulkan/vulkan-docs-next/xml/vk_gfxstream.xml
deleted file mode 100644
index d1599b7..0000000
--- a/codegen/vulkan/vulkan-docs-next/xml/vk_gfxstream.xml
+++ /dev/null
@@ -1,286 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<registry>
-    <comment>
-Copyright 2023 Google LLC
-SPDX-License-Identifier: MIT
-    </comment>
-
-    <comment>
-This file, vk_gfxstream.xml, is the Vulkan API Registry for gfxstream
-specific entries.
-    </comment>
-        <types comment="Vulkan type definitions">
-        <!-- b/295587347 VkNativeBufferANDROID diverged from upstream -->
-        <type category="struct" name="VkNativeBufferANDROID" structextends="VkImageCreateInfo">
-            <member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>* <name>pNext</name></member>
-            <member noautovalidity="true">const <type>uint32_t</type>* <name>handle</name></member>
-            <member><type>int</type> <name>stride</name></member>
-            <member><type>int</type> <name>format</name></member>
-            <member><type>int</type> <name>usage</name></member>
-            <member><type>VkNativeBufferUsage2ANDROID</type> <name>usage2</name></member>
-        </type>
-        <type category="struct" name="VkImportColorBufferGOOGLE" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
-            <member><type>void</type>*                  <name>pNext</name></member>
-            <member><type>uint32_t</type>   <name>colorBuffer</name></member>
-        </type>
-        <type category="struct" name="VkImportBufferGOOGLE" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
-            <member><type>void</type>*                  <name>pNext</name></member>
-            <member><type>uint32_t</type>   <name>buffer</name></member>
-        </type>
-        <type category="struct" name="VkCreateBlobGOOGLE" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
-            <member><type>void</type>*                  <name>pNext</name></member>
-            <member><type>uint32_t</type>   <name>blobMem</name></member>
-            <member><type>uint32_t</type>   <name>blobFlags</name></member>
-            <member><type>uint64_t</type>   <name>blobId</name></member>
-        </type>
-    </types>
-
-    <commands comment="Vulkan command definitions">
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED">
-            <proto><type>VkResult</type> <name>vkMapMemoryIntoAddressSpaceGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param optional="false,true"><type>uint64_t</type>* <name>pAddress</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkUpdateDescriptorSetWithTemplateSizedGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDescriptorSet</type> <name>descriptorSet</name></param>
-            <param><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param>
-            <param><type>uint32_t</type> <name>imageInfoCount</name></param>
-            <param><type>uint32_t</type> <name>bufferInfoCount</name></param>
-            <param><type>uint32_t</type> <name>bufferViewCount</name></param>
-            <param optional="true" len="imageInfoCount">const <type>uint32_t</type>* <name>pImageInfoEntryIndices</name></param>
-            <param optional="true" len="bufferInfoCount">const <type>uint32_t</type>* <name>pBufferInfoEntryIndices</name></param>
-            <param optional="true" len="bufferViewCount">const <type>uint32_t</type>* <name>pBufferViewEntryIndices</name></param>
-            <param optional="true" len="imageInfoCount">const <type>VkDescriptorImageInfo</type>* <name>pImageInfos</name></param>
-            <param optional="true" len="bufferInfoCount">const <type>VkDescriptorBufferInfo</type>* <name>pBufferInfos</name></param>
-            <param optional="true" len="bufferViewCount">const <type>VkBufferView</type>* <name>pBufferViews</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkUpdateDescriptorSetWithTemplateSized2GOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDescriptorSet</type> <name>descriptorSet</name></param>
-            <param><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param>
-            <param><type>uint32_t</type> <name>imageInfoCount</name></param>
-            <param><type>uint32_t</type> <name>bufferInfoCount</name></param>
-            <param><type>uint32_t</type> <name>bufferViewCount</name></param>
-            <param><type>uint32_t</type> <name>inlineUniformBlockCount</name></param>
-            <param optional="true" len="imageInfoCount">const <type>uint32_t</type>* <name>pImageInfoEntryIndices</name></param>
-            <param optional="true" len="bufferInfoCount">const <type>uint32_t</type>* <name>pBufferInfoEntryIndices</name></param>
-            <param optional="true" len="bufferViewCount">const <type>uint32_t</type>* <name>pBufferViewEntryIndices</name></param>
-            <param optional="true" len="imageInfoCount">const <type>VkDescriptorImageInfo</type>* <name>pImageInfos</name></param>
-            <param optional="true" len="bufferInfoCount">const <type>VkDescriptorBufferInfo</type>* <name>pBufferInfos</name></param>
-            <param optional="true" len="bufferViewCount">const <type>VkBufferView</type>* <name>pBufferViews</name></param>
-            <param optional="true" len="inlineUniformBlockCount">const <type>uint8_t</type>* <name>pInlineUniformBlockData</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkBeginCommandBufferAsyncGOOGLE</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param>const <type>VkCommandBufferBeginInfo</type>* <name>pBeginInfo</name></param>
-            <implicitexternsyncparams>
-                <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
-            </implicitexternsyncparams>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkEndCommandBufferAsyncGOOGLE</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <implicitexternsyncparams>
-                <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
-            </implicitexternsyncparams>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkResetCommandBufferAsyncGOOGLE</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param optional="true"><type>VkCommandBufferResetFlags</type> <name>flags</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkCommandBufferHostSyncGOOGLE</name></proto>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>uint32_t</type> <name>needHostSync</name></param>
-            <param><type>uint32_t</type> <name>sequenceNumber</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>vkCreateImageWithRequirementsGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImageCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkImage</type>* <name>pImage</name></param>
-            <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</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>vkCreateBufferWithRequirementsGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkBufferCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-            <param><type>VkBuffer</type>* <name>pBuffer</name></param>
-            <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetMemoryHostAddressInfoGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param optional="false,true"><type>uint64_t</type>* <name>pAddress</name></param>
-            <param optional="false,true"><type>uint64_t</type>* <name>pSize</name></param>
-            <param optional="false,true"><type>uint64_t</type>* <name>pHostmemId</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>vkFreeMemorySyncGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param optional="true" externsync="true"><type>VkDeviceMemory</type> <name>memory</name></param>
-            <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueHostSyncGOOGLE</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-            <param><type>uint32_t</type> <name>needHostSync</name></param>
-            <param><type>uint32_t</type> <name>sequenceNumber</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueSubmitAsyncGOOGLE</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-            <param optional="true"><type>uint32_t</type> <name>submitCount</name></param>
-            <param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param>
-            <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueSubmitAsync2GOOGLE</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-            <param optional="true"><type>uint32_t</type> <name>submitCount</name></param>
-            <param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo2</type>* <name>pSubmits</name></param>
-            <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueWaitIdleAsyncGOOGLE</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-        </command>
-        <command queues="sparse_binding">
-            <proto><type>void</type> <name>vkQueueBindSparseAsyncGOOGLE</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-            <param optional="true"><type>uint32_t</type> <name>bindInfoCount</name></param>
-            <param len="bindInfoCount" externsync="pBindInfo[].pWaitSemaphores[],pBindInfo[].pSignalSemaphores[],pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image">const <type>VkBindSparseInfo</type>* <name>pBindInfo</name></param>
-            <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetLinearImageLayoutGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkFormat</type> <name>format</name></param>
-            <param><type>VkDeviceSize</type>* <name>pOffset</name></param>
-            <param><type>VkDeviceSize</type>* <name>pRowPitchAlignment</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkGetLinearImageLayout2GOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param>const <type>VkImageCreateInfo</type>* <name>pCreateInfo</name></param>
-            <param><type>VkDeviceSize</type>* <name>pOffset</name></param>
-            <param><type>VkDeviceSize</type>* <name>pRowPitchAlignment</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueFlushCommandsGOOGLE</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-            <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
-            <param><type>VkDeviceSize</type> <name>dataSize</name></param>
-            <param len="dataSize">const <type>void</type>* <name>pData</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
-            <proto><type>VkResult</type> <name>vkGetBlobGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDeviceMemory</type> <name>memory</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueCommitDescriptorSetUpdatesGOOGLE</name></proto>
-            <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
-            <param externsync="true"><type>uint32_t</type> <name>descriptorPoolCount</name></param>
-            <param len="descriptorPoolCount" externsync="true">const <type>VkDescriptorPool</type>* <name>pDescriptorPools</name></param>
-            <param externsync="true"><type>uint32_t</type> <name>descriptorSetCount</name></param>
-            <param len="descriptorSetCount" externsync="true">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name></param>
-            <param len="descriptorSetCount" externsync="true">const <type>uint64_t</type>* <name>pDescriptorSetPoolIds</name></param>
-            <param len="descriptorSetCount" externsync="true">const <type>uint32_t</type>* <name>pDescriptorSetWhichPool</name></param>
-            <param len="descriptorSetCount" externsync="true">const <type>uint32_t</type>* <name>pDescriptorSetPendingAllocation</name></param>
-            <param len="descriptorSetCount" externsync="true">const <type>uint32_t</type>* <name>pDescriptorWriteStartingIndices</name></param>
-            <param externsync="true"><type>uint32_t</type> <name>pendingDescriptorWriteCount</name></param>
-            <param len="pendingDescriptorWriteCount" externsync="true">const <type>VkWriteDescriptorSet</type>* <name>pPendingDescriptorWrites</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkCollectDescriptorPoolIdsGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param>
-            <param optiona="false,true"><type>uint32_t</type>* <name>pPoolIdCount</name></param>
-            <param optional="true" len="pPoolIdCount"><type>uint64_t</type>* <name>pPoolIds</name></param>
-        </command>
-        <command>
-            <proto><type>void</type> <name>vkQueueSignalReleaseImageANDROIDAsyncGOOGLE</name></proto>
-            <param><type>VkQueue</type> <name>queue</name></param>
-            <param optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></param>
-            <param noautovalidity="true&